@etherisc/gif-next 0.0.2-a9ccad5-356 → 0.0.2-a9f5983-610

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 (347) hide show
  1. package/README.md +73 -1
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
  3. package/artifacts/contracts/components/Component.sol/Component.json +774 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +758 -192
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/components/{BaseComponent.sol/BaseComponent.json → IComponent.sol/IComponent.json} +103 -109
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +725 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +814 -60
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +592 -9
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +833 -321
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +461 -149
  18. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  19. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +38 -49
  20. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
  21. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  22. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +911 -115
  23. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  24. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +178 -165
  25. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  26. package/artifacts/contracts/instance/Instance.sol/Instance.json +797 -1007
  27. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  28. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +211 -144
  29. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  30. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +70 -101
  31. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  32. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +395 -330
  33. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +297 -116
  35. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  36. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +8 -19
  37. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  38. package/artifacts/contracts/instance/base/{ComponentServiceBase.sol/ComponentServiceBase.json → ComponentService.sol/ComponentService.json} +181 -180
  39. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  40. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  41. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  42. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +2 -2
  43. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  44. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
  45. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  46. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +59 -16
  47. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  48. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  49. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  50. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  51. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  52. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  53. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  54. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +858 -0
  55. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  56. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +657 -0
  57. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  58. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1085 -0
  59. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  60. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +661 -0
  61. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  62. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +743 -0
  63. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  64. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +637 -0
  65. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  66. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +434 -215
  67. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  68. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +316 -83
  69. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  70. package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IApplicationService.sol/IApplicationService.json} +200 -204
  71. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  72. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +622 -0
  73. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  74. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → instance/service/IClaimService.sol/IClaimService.json} +154 -124
  75. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  76. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +197 -163
  77. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  78. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +572 -0
  79. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  80. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +24 -416
  81. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  82. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +30 -417
  83. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  84. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1109 -0
  85. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  86. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +717 -0
  87. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  88. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +178 -511
  89. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  90. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +293 -108
  91. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  92. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +190 -571
  93. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  94. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +286 -125
  95. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  96. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  97. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  98. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +225 -133
  99. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  100. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +149 -217
  101. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  102. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  103. package/artifacts/contracts/registry/Registry.sol/Registry.json +238 -235
  104. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  105. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  106. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  107. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +195 -322
  108. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  109. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +298 -145
  110. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  111. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
  112. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  113. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +141 -53
  114. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  115. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  116. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  117. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  118. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +40 -29
  119. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  120. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
  121. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  122. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +21 -34
  123. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  124. package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
  125. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  126. package/artifacts/contracts/shared/IService.sol/IService.json +23 -186
  127. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  128. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  129. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  130. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +120 -27
  131. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  132. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
  133. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  134. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +294 -61
  135. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  136. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +129 -51
  137. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  138. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
  139. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  140. package/artifacts/contracts/shared/Service.sol/Service.json +120 -174
  141. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  142. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  143. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  144. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  145. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  146. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  147. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  148. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +129 -51
  149. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  150. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
  151. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  152. package/artifacts/contracts/test/TestService.sol/TestService.json +141 -231
  153. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  154. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  155. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  156. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -190
  157. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  158. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  159. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  160. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  161. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  162. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
  163. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  164. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
  165. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  166. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  167. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
  168. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  169. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  170. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  171. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  172. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  173. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  174. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  175. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  176. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
  177. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  178. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +2 -2
  179. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  180. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  181. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  182. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  183. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  184. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  185. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  186. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  187. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +25 -7
  188. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  189. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  190. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  191. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  192. package/contracts/components/Component.sol +221 -0
  193. package/contracts/components/Distribution.sol +209 -64
  194. package/contracts/components/IComponent.sol +68 -0
  195. package/contracts/components/IDistributionComponent.sol +59 -3
  196. package/contracts/components/IPoolComponent.sol +124 -39
  197. package/contracts/components/IProductComponent.sol +10 -5
  198. package/contracts/components/Pool.sol +283 -172
  199. package/contracts/components/Product.sol +125 -121
  200. package/contracts/instance/BundleManager.sol +8 -12
  201. package/contracts/instance/IInstance.sol +46 -10
  202. package/contracts/instance/IInstanceService.sol +30 -3
  203. package/contracts/instance/Instance.sol +99 -262
  204. package/contracts/instance/InstanceAccessManager.sol +87 -78
  205. package/contracts/instance/InstanceReader.sol +3 -25
  206. package/contracts/instance/InstanceService.sol +381 -123
  207. package/contracts/instance/InstanceServiceManager.sol +6 -9
  208. package/contracts/instance/ObjectManager.sol +8 -19
  209. package/contracts/instance/base/ComponentService.sol +134 -0
  210. package/contracts/instance/module/IAccess.sol +27 -18
  211. package/contracts/instance/module/IBundle.sol +2 -1
  212. package/contracts/instance/module/IPolicy.sol +6 -3
  213. package/contracts/instance/module/ISetup.sol +6 -4
  214. package/contracts/instance/service/ApplicationService.sol +269 -0
  215. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  216. package/contracts/instance/service/BundleService.sol +299 -0
  217. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  218. package/contracts/instance/service/ClaimService.sol +151 -0
  219. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  220. package/contracts/instance/service/DistributionService.sol +216 -27
  221. package/contracts/instance/service/DistributionServiceManager.sol +7 -10
  222. package/contracts/instance/service/IApplicationService.sol +83 -0
  223. package/contracts/instance/service/IBundleService.sol +55 -0
  224. package/contracts/instance/service/IClaimService.sol +61 -0
  225. package/contracts/instance/service/IDistributionService.sol +53 -0
  226. package/contracts/instance/service/IPolicyService.sol +90 -0
  227. package/contracts/instance/service/IPoolService.sol +2 -33
  228. package/contracts/instance/service/IProductService.sol +2 -72
  229. package/contracts/instance/service/PolicyService.sol +476 -0
  230. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  231. package/contracts/instance/service/PoolService.sol +34 -212
  232. package/contracts/instance/service/PoolServiceManager.sol +6 -9
  233. package/contracts/instance/service/ProductService.sol +123 -460
  234. package/contracts/instance/service/ProductServiceManager.sol +2 -2
  235. package/contracts/registry/ChainNft.sol +1 -1
  236. package/contracts/registry/IRegistry.sol +37 -19
  237. package/contracts/registry/IRegistryService.sol +30 -13
  238. package/contracts/registry/Registry.sol +233 -217
  239. package/contracts/registry/RegistryAccessManager.sol +216 -0
  240. package/contracts/registry/RegistryService.sol +96 -171
  241. package/contracts/registry/RegistryServiceManager.sol +21 -39
  242. package/contracts/registry/ReleaseManager.sol +322 -0
  243. package/contracts/registry/TokenRegistry.sol +22 -17
  244. package/contracts/shared/ERC165.sol +14 -12
  245. package/contracts/shared/INftOwnable.sol +11 -10
  246. package/contracts/shared/IPolicyHolder.sol +26 -0
  247. package/contracts/shared/IRegisterable.sol +4 -6
  248. package/contracts/shared/IRegistryLinked.sol +12 -0
  249. package/contracts/shared/IService.sol +2 -1
  250. package/contracts/shared/IVersionable.sol +4 -47
  251. package/contracts/shared/NftOwnable.sol +66 -80
  252. package/contracts/shared/PolicyHolder.sol +81 -0
  253. package/contracts/shared/ProxyManager.sol +100 -25
  254. package/contracts/shared/Registerable.sol +16 -32
  255. package/contracts/shared/RegistryLinked.sol +48 -0
  256. package/contracts/shared/Service.sol +25 -22
  257. package/contracts/shared/Versionable.sol +4 -92
  258. package/contracts/test/TestRegisterable.sol +1 -1
  259. package/contracts/test/TestService.sol +4 -3
  260. package/contracts/types/ClaimId.sol +52 -0
  261. package/contracts/types/DistributorType.sol +2 -2
  262. package/contracts/types/ObjectType.sol +9 -5
  263. package/contracts/types/PayoutId.sol +54 -0
  264. package/contracts/types/RoleId.sol +19 -14
  265. package/contracts/types/Seconds.sol +54 -0
  266. package/contracts/types/Timestamp.sol +12 -13
  267. package/package.json +3 -3
  268. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  269. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  270. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  271. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  272. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  273. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  274. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  275. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  276. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  277. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  278. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  279. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  280. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  281. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  282. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  283. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  284. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  285. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  286. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  287. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  288. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  289. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  290. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  291. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  292. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  293. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  294. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  295. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  296. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  297. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  298. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  299. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  300. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  301. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  302. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  303. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  304. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  305. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  306. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  307. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  308. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  309. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  310. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.json +0 -101
  311. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  312. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  313. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  314. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
  315. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  316. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  317. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  318. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  319. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  320. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  321. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  322. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  323. package/contracts/components/BaseComponent.sol +0 -129
  324. package/contracts/components/IBaseComponent.sol +0 -31
  325. package/contracts/experiment/cloning/Cloner.sol +0 -47
  326. package/contracts/experiment/errors/Require.sol +0 -38
  327. package/contracts/experiment/errors/Revert.sol +0 -44
  328. package/contracts/experiment/inheritance/A.sol +0 -53
  329. package/contracts/experiment/inheritance/B.sol +0 -28
  330. package/contracts/experiment/inheritance/C.sol +0 -34
  331. package/contracts/experiment/inheritance/IA.sol +0 -13
  332. package/contracts/experiment/inheritance/IB.sol +0 -10
  333. package/contracts/experiment/inheritance/IC.sol +0 -12
  334. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  335. package/contracts/experiment/statemachine/ISM.sol +0 -25
  336. package/contracts/experiment/statemachine/SM.sol +0 -57
  337. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  338. package/contracts/experiment/types/TypeA.sol +0 -47
  339. package/contracts/experiment/types/TypeB.sol +0 -29
  340. package/contracts/instance/AccessManagedSimple.sol +0 -115
  341. package/contracts/instance/AccessManagerSimple.sol +0 -692
  342. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  343. package/contracts/instance/base/ComponentServiceBase.sol +0 -134
  344. package/contracts/instance/base/IInstanceBase.sol +0 -23
  345. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  346. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  347. package/contracts/shared/RegisterableUpgradable.sol +0 -16
@@ -3,27 +3,6 @@
3
3
  "contractName": "Instance",
4
4
  "sourceName": "contracts/instance/Instance.sol",
5
5
  "abi": [
6
- {
7
- "inputs": [
8
- {
9
- "internalType": "address",
10
- "name": "accessManagerAddress",
11
- "type": "address"
12
- },
13
- {
14
- "internalType": "address",
15
- "name": "registryAddress",
16
- "type": "address"
17
- },
18
- {
19
- "internalType": "NftId",
20
- "name": "registryNftId",
21
- "type": "uint96"
22
- }
23
- ],
24
- "stateMutability": "nonpayable",
25
- "type": "constructor"
26
- },
27
6
  {
28
7
  "inputs": [
29
8
  {
@@ -62,44 +41,6 @@
62
41
  "name": "AccessManagedUnauthorized",
63
42
  "type": "error"
64
43
  },
65
- {
66
- "inputs": [
67
- {
68
- "internalType": "address",
69
- "name": "registry",
70
- "type": "address"
71
- },
72
- {
73
- "internalType": "NftId",
74
- "name": "nftId",
75
- "type": "uint96"
76
- }
77
- ],
78
- "name": "ErrorAlreadyLinked",
79
- "type": "error"
80
- },
81
- {
82
- "inputs": [
83
- {
84
- "internalType": "address",
85
- "name": "contractAddress",
86
- "type": "address"
87
- }
88
- ],
89
- "name": "ErrorContractNotRegistered",
90
- "type": "error"
91
- },
92
- {
93
- "inputs": [
94
- {
95
- "internalType": "RoleId",
96
- "name": "roleId",
97
- "type": "uint64"
98
- }
99
- ],
100
- "name": "ErrorGrantNonexstentRole",
101
- "type": "error"
102
- },
103
44
  {
104
45
  "inputs": [
105
46
  {
@@ -127,172 +68,63 @@
127
68
  "internalType": "NftId",
128
69
  "name": "nftId",
129
70
  "type": "uint96"
130
- },
131
- {
132
- "internalType": "ObjectType",
133
- "name": "objectType",
134
- "type": "uint8"
135
- }
136
- ],
137
- "name": "ErrorNoLifecycle",
138
- "type": "error"
139
- },
140
- {
141
- "inputs": [
142
- {
143
- "internalType": "address",
144
- "name": "account",
145
- "type": "address"
146
- }
147
- ],
148
- "name": "ErrorNotOwner",
149
- "type": "error"
150
- },
151
- {
152
- "inputs": [
153
- {
154
- "internalType": "address",
155
- "name": "registryAddress",
156
- "type": "address"
157
71
  }
158
72
  ],
159
- "name": "ErrorNotRegistry",
73
+ "name": "ErrorNftOwnableAlreadyLinked",
160
74
  "type": "error"
161
75
  },
162
76
  {
163
77
  "inputs": [
164
78
  {
165
79
  "internalType": "address",
166
- "name": "registryAddress",
80
+ "name": "contractAddress",
167
81
  "type": "address"
168
82
  }
169
83
  ],
170
- "name": "ErrorRegisterableNotRegistry",
84
+ "name": "ErrorNftOwnableContractNotRegistered",
171
85
  "type": "error"
172
86
  },
173
87
  {
174
88
  "inputs": [],
175
- "name": "ErrorRegistryAddressZero",
89
+ "name": "ErrorNftOwnableInitialOwnerZero",
176
90
  "type": "error"
177
91
  },
178
92
  {
179
93
  "inputs": [
180
94
  {
181
95
  "internalType": "address",
182
- "name": "registry",
96
+ "name": "account",
183
97
  "type": "address"
184
98
  }
185
99
  ],
186
- "name": "ErrorRegistryAlreadyInitialized",
187
- "type": "error"
188
- },
189
- {
190
- "inputs": [],
191
- "name": "ErrorRegistryNotInitialized",
192
- "type": "error"
193
- },
194
- {
195
- "inputs": [
196
- {
197
- "internalType": "RoleId",
198
- "name": "roleId",
199
- "type": "uint64"
200
- }
201
- ],
202
- "name": "ErrorRenounceNonexstentRole",
203
- "type": "error"
204
- },
205
- {
206
- "inputs": [
207
- {
208
- "internalType": "RoleId",
209
- "name": "roleId",
210
- "type": "uint64"
211
- }
212
- ],
213
- "name": "ErrorRevokeNonexstentRole",
214
- "type": "error"
215
- },
216
- {
217
- "inputs": [
218
- {
219
- "internalType": "RoleId",
220
- "name": "roleId",
221
- "type": "uint64"
222
- }
223
- ],
224
- "name": "ErrorRoleIdInvalid",
225
- "type": "error"
226
- },
227
- {
228
- "inputs": [
229
- {
230
- "internalType": "RoleId",
231
- "name": "roleId",
232
- "type": "uint64"
233
- }
234
- ],
235
- "name": "ErrorRoleIdNotActive",
236
- "type": "error"
237
- },
238
- {
239
- "inputs": [
240
- {
241
- "internalType": "RoleId",
242
- "name": "roleId",
243
- "type": "uint64"
244
- }
245
- ],
246
- "name": "ErrorRoleIdTooBig",
247
- "type": "error"
248
- },
249
- {
250
- "inputs": [
251
- {
252
- "internalType": "RoleId",
253
- "name": "roleId",
254
- "type": "uint64"
255
- }
256
- ],
257
- "name": "ErrorRoleIdTooSmall",
258
- "type": "error"
259
- },
260
- {
261
- "inputs": [
262
- {
263
- "internalType": "RoleId",
264
- "name": "roleId",
265
- "type": "uint64"
266
- }
267
- ],
268
- "name": "ErrorRoleNameEmpty",
100
+ "name": "ErrorNftOwnableNotOwner",
269
101
  "type": "error"
270
102
  },
271
103
  {
272
104
  "inputs": [
273
105
  {
274
- "internalType": "RoleId",
275
- "name": "roleId",
276
- "type": "uint64"
106
+ "internalType": "NftId",
107
+ "name": "nftId",
108
+ "type": "uint96"
277
109
  },
278
110
  {
279
- "internalType": "ShortString",
280
- "name": "name",
281
- "type": "bytes32"
111
+ "internalType": "ObjectType",
112
+ "name": "objectType",
113
+ "type": "uint8"
282
114
  }
283
115
  ],
284
- "name": "ErrorRoleNameNotUnique",
116
+ "name": "ErrorNoLifecycle",
285
117
  "type": "error"
286
118
  },
287
119
  {
288
120
  "inputs": [
289
121
  {
290
122
  "internalType": "address",
291
- "name": "target",
123
+ "name": "registryAddress",
292
124
  "type": "address"
293
125
  }
294
126
  ],
295
- "name": "ErrorTargetDoesNotExist",
127
+ "name": "ErrorNotRegistry",
296
128
  "type": "error"
297
129
  },
298
130
  {
@@ -300,27 +132,11 @@
300
132
  "name": "InvalidInitialization",
301
133
  "type": "error"
302
134
  },
303
- {
304
- "inputs": [],
305
- "name": "InvalidShortString",
306
- "type": "error"
307
- },
308
135
  {
309
136
  "inputs": [],
310
137
  "name": "NotInitializing",
311
138
  "type": "error"
312
139
  },
313
- {
314
- "inputs": [
315
- {
316
- "internalType": "string",
317
- "name": "str",
318
- "type": "string"
319
- }
320
- ],
321
- "name": "StringTooLong",
322
- "type": "error"
323
- },
324
140
  {
325
141
  "anonymous": false,
326
142
  "inputs": [
@@ -515,6 +331,32 @@
515
331
  "stateMutability": "view",
516
332
  "type": "function"
517
333
  },
334
+ {
335
+ "inputs": [],
336
+ "name": "GIF_MAJOR_VERSION",
337
+ "outputs": [
338
+ {
339
+ "internalType": "uint256",
340
+ "name": "",
341
+ "type": "uint256"
342
+ }
343
+ ],
344
+ "stateMutability": "view",
345
+ "type": "function"
346
+ },
347
+ {
348
+ "inputs": [],
349
+ "name": "NFT_OWNABLE_STORAGE_LOCATION_V1",
350
+ "outputs": [
351
+ {
352
+ "internalType": "bytes32",
353
+ "name": "",
354
+ "type": "bytes32"
355
+ }
356
+ ],
357
+ "stateMutability": "view",
358
+ "type": "function"
359
+ },
518
360
  {
519
361
  "inputs": [],
520
362
  "name": "PUBLIC_ROLE",
@@ -581,66 +423,166 @@
581
423
  "inputs": [
582
424
  {
583
425
  "internalType": "NftId",
584
- "name": "bundleNftId",
426
+ "name": "applicationNftId",
585
427
  "type": "uint96"
586
428
  },
587
429
  {
588
430
  "components": [
589
431
  {
590
432
  "internalType": "NftId",
591
- "name": "poolNftId",
433
+ "name": "productNftId",
592
434
  "type": "uint96"
593
435
  },
594
436
  {
595
- "components": [
596
- {
597
- "internalType": "UFixed",
598
- "name": "fractionalFee",
599
- "type": "uint256"
600
- },
601
- {
602
- "internalType": "uint256",
603
- "name": "fixedFee",
604
- "type": "uint256"
605
- }
606
- ],
607
- "internalType": "struct Fee",
608
- "name": "fee",
609
- "type": "tuple"
437
+ "internalType": "NftId",
438
+ "name": "bundleNftId",
439
+ "type": "uint96"
610
440
  },
611
441
  {
612
- "internalType": "bytes",
613
- "name": "filter",
614
- "type": "bytes"
442
+ "internalType": "ReferralId",
443
+ "name": "referralId",
444
+ "type": "bytes8"
445
+ },
446
+ {
447
+ "internalType": "RiskId",
448
+ "name": "riskId",
449
+ "type": "bytes8"
615
450
  },
616
451
  {
617
452
  "internalType": "uint256",
618
- "name": "capitalAmount",
453
+ "name": "sumInsuredAmount",
619
454
  "type": "uint256"
620
455
  },
621
456
  {
622
457
  "internalType": "uint256",
623
- "name": "lockedAmount",
458
+ "name": "premiumAmount",
624
459
  "type": "uint256"
625
460
  },
626
461
  {
627
462
  "internalType": "uint256",
628
- "name": "balanceAmount",
463
+ "name": "premiumPaidAmount",
629
464
  "type": "uint256"
630
465
  },
631
466
  {
632
- "internalType": "uint256",
467
+ "internalType": "Seconds",
633
468
  "name": "lifetime",
469
+ "type": "uint40"
470
+ },
471
+ {
472
+ "internalType": "bytes",
473
+ "name": "applicationData",
474
+ "type": "bytes"
475
+ },
476
+ {
477
+ "internalType": "bytes",
478
+ "name": "policyData",
479
+ "type": "bytes"
480
+ },
481
+ {
482
+ "internalType": "uint16",
483
+ "name": "claimsCount",
484
+ "type": "uint16"
485
+ },
486
+ {
487
+ "internalType": "uint16",
488
+ "name": "openClaimsCount",
489
+ "type": "uint16"
490
+ },
491
+ {
492
+ "internalType": "uint256",
493
+ "name": "payoutAmount",
634
494
  "type": "uint256"
635
495
  },
636
496
  {
637
497
  "internalType": "Timestamp",
638
- "name": "expiredAt",
498
+ "name": "activatedAt",
639
499
  "type": "uint40"
640
500
  },
641
501
  {
642
502
  "internalType": "Timestamp",
643
- "name": "closedAt",
503
+ "name": "expiredAt",
504
+ "type": "uint40"
505
+ },
506
+ {
507
+ "internalType": "Timestamp",
508
+ "name": "closedAt",
509
+ "type": "uint40"
510
+ }
511
+ ],
512
+ "internalType": "struct IPolicy.PolicyInfo",
513
+ "name": "policy",
514
+ "type": "tuple"
515
+ }
516
+ ],
517
+ "name": "createApplication",
518
+ "outputs": [],
519
+ "stateMutability": "nonpayable",
520
+ "type": "function"
521
+ },
522
+ {
523
+ "inputs": [
524
+ {
525
+ "internalType": "NftId",
526
+ "name": "bundleNftId",
527
+ "type": "uint96"
528
+ },
529
+ {
530
+ "components": [
531
+ {
532
+ "internalType": "NftId",
533
+ "name": "poolNftId",
534
+ "type": "uint96"
535
+ },
536
+ {
537
+ "components": [
538
+ {
539
+ "internalType": "UFixed",
540
+ "name": "fractionalFee",
541
+ "type": "uint256"
542
+ },
543
+ {
544
+ "internalType": "uint256",
545
+ "name": "fixedFee",
546
+ "type": "uint256"
547
+ }
548
+ ],
549
+ "internalType": "struct Fee",
550
+ "name": "fee",
551
+ "type": "tuple"
552
+ },
553
+ {
554
+ "internalType": "bytes",
555
+ "name": "filter",
556
+ "type": "bytes"
557
+ },
558
+ {
559
+ "internalType": "uint256",
560
+ "name": "capitalAmount",
561
+ "type": "uint256"
562
+ },
563
+ {
564
+ "internalType": "uint256",
565
+ "name": "lockedAmount",
566
+ "type": "uint256"
567
+ },
568
+ {
569
+ "internalType": "uint256",
570
+ "name": "balanceAmount",
571
+ "type": "uint256"
572
+ },
573
+ {
574
+ "internalType": "Seconds",
575
+ "name": "lifetime",
576
+ "type": "uint40"
577
+ },
578
+ {
579
+ "internalType": "Timestamp",
580
+ "name": "expiredAt",
581
+ "type": "uint40"
582
+ },
583
+ {
584
+ "internalType": "Timestamp",
585
+ "name": "closedAt",
644
586
  "type": "uint40"
645
587
  }
646
588
  ],
@@ -662,9 +604,9 @@
662
604
  "type": "uint96"
663
605
  },
664
606
  {
665
- "internalType": "NumberId",
607
+ "internalType": "ClaimId",
666
608
  "name": "claimId",
667
- "type": "uint32"
609
+ "type": "uint16"
668
610
  },
669
611
  {
670
612
  "components": [
@@ -699,24 +641,6 @@
699
641
  "stateMutability": "nonpayable",
700
642
  "type": "function"
701
643
  },
702
- {
703
- "inputs": [
704
- {
705
- "internalType": "RoleId",
706
- "name": "roleId",
707
- "type": "uint64"
708
- },
709
- {
710
- "internalType": "string",
711
- "name": "name",
712
- "type": "string"
713
- }
714
- ],
715
- "name": "createCustomRole",
716
- "outputs": [],
717
- "stateMutability": "nonpayable",
718
- "type": "function"
719
- },
720
644
  {
721
645
  "inputs": [
722
646
  {
@@ -753,11 +677,6 @@
753
677
  "name": "distributionFee",
754
678
  "type": "tuple"
755
679
  },
756
- {
757
- "internalType": "bool",
758
- "name": "isIntercepting",
759
- "type": "bool"
760
- },
761
680
  {
762
681
  "internalType": "address",
763
682
  "name": "wallet",
@@ -778,39 +697,29 @@
778
697
  "inputs": [
779
698
  {
780
699
  "internalType": "NftId",
781
- "name": "policyNftId",
700
+ "name": "nftId",
782
701
  "type": "uint96"
783
702
  },
784
- {
785
- "internalType": "NumberId",
786
- "name": "payoutId",
787
- "type": "uint32"
788
- },
789
703
  {
790
704
  "components": [
791
705
  {
792
- "internalType": "NumberId",
793
- "name": "claimId",
794
- "type": "uint32"
706
+ "internalType": "DistributorType",
707
+ "name": "distributorType",
708
+ "type": "bytes8"
795
709
  },
796
710
  {
797
- "internalType": "uint256",
798
- "name": "amount",
799
- "type": "uint256"
711
+ "internalType": "bool",
712
+ "name": "active",
713
+ "type": "bool"
800
714
  },
801
715
  {
802
716
  "internalType": "bytes",
803
717
  "name": "data",
804
718
  "type": "bytes"
805
- },
806
- {
807
- "internalType": "Timestamp",
808
- "name": "paidAt",
809
- "type": "uint40"
810
719
  }
811
720
  ],
812
- "internalType": "struct IPolicy.PayoutInfo",
813
- "name": "payout",
721
+ "internalType": "struct IDistribution.DistributorInfo",
722
+ "name": "info",
814
723
  "type": "tuple"
815
724
  }
816
725
  ],
@@ -822,40 +731,60 @@
822
731
  {
823
732
  "inputs": [
824
733
  {
825
- "internalType": "NftId",
826
- "name": "policyNftId",
827
- "type": "uint96"
828
- },
829
- {
830
- "internalType": "NumberId",
831
- "name": "payoutId",
832
- "type": "uint32"
734
+ "internalType": "Key32",
735
+ "name": "distributorKey",
736
+ "type": "bytes32"
833
737
  },
834
738
  {
835
739
  "components": [
836
740
  {
837
- "internalType": "NumberId",
838
- "name": "claimId",
839
- "type": "uint32"
741
+ "internalType": "string",
742
+ "name": "name",
743
+ "type": "string"
840
744
  },
841
745
  {
842
- "internalType": "uint256",
843
- "name": "amount",
746
+ "internalType": "UFixed",
747
+ "name": "minDiscountPercentage",
748
+ "type": "uint256"
749
+ },
750
+ {
751
+ "internalType": "UFixed",
752
+ "name": "maxDiscountPercentage",
753
+ "type": "uint256"
754
+ },
755
+ {
756
+ "internalType": "UFixed",
757
+ "name": "commissionPercentage",
844
758
  "type": "uint256"
845
759
  },
760
+ {
761
+ "internalType": "uint32",
762
+ "name": "maxReferralCount",
763
+ "type": "uint32"
764
+ },
765
+ {
766
+ "internalType": "uint32",
767
+ "name": "maxReferralLifetime",
768
+ "type": "uint32"
769
+ },
770
+ {
771
+ "internalType": "bool",
772
+ "name": "allowSelfReferrals",
773
+ "type": "bool"
774
+ },
775
+ {
776
+ "internalType": "bool",
777
+ "name": "allowRenewals",
778
+ "type": "bool"
779
+ },
846
780
  {
847
781
  "internalType": "bytes",
848
782
  "name": "data",
849
783
  "type": "bytes"
850
- },
851
- {
852
- "internalType": "Timestamp",
853
- "name": "paidAt",
854
- "type": "uint40"
855
784
  }
856
785
  ],
857
- "internalType": "struct IPolicy.PayoutInfo",
858
- "name": "payout",
786
+ "internalType": "struct IDistribution.DistributorTypeInfo",
787
+ "name": "info",
859
788
  "type": "tuple"
860
789
  }
861
790
  ],
@@ -879,9 +808,9 @@
879
808
  {
880
809
  "components": [
881
810
  {
882
- "internalType": "NumberId",
811
+ "internalType": "ClaimId",
883
812
  "name": "claimId",
884
- "type": "uint32"
813
+ "type": "uint16"
885
814
  },
886
815
  {
887
816
  "internalType": "uint256",
@@ -913,7 +842,7 @@
913
842
  "inputs": [
914
843
  {
915
844
  "internalType": "NftId",
916
- "name": "policyNftId",
845
+ "name": "poolNftId",
917
846
  "type": "uint96"
918
847
  },
919
848
  {
@@ -924,113 +853,38 @@
924
853
  "type": "uint96"
925
854
  },
926
855
  {
927
- "internalType": "NftId",
928
- "name": "bundleNftId",
929
- "type": "uint96"
930
- },
931
- {
932
- "internalType": "ReferralId",
933
- "name": "referralId",
934
- "type": "bytes8"
935
- },
936
- {
937
- "internalType": "RiskId",
938
- "name": "riskId",
939
- "type": "bytes8"
940
- },
941
- {
942
- "internalType": "uint256",
943
- "name": "sumInsuredAmount",
944
- "type": "uint256"
945
- },
946
- {
947
- "internalType": "uint256",
948
- "name": "premiumAmount",
949
- "type": "uint256"
950
- },
951
- {
952
- "internalType": "uint256",
953
- "name": "premiumPaidAmount",
954
- "type": "uint256"
856
+ "internalType": "contract TokenHandler",
857
+ "name": "tokenHandler",
858
+ "type": "address"
955
859
  },
956
860
  {
957
861
  "internalType": "uint256",
958
- "name": "lifetime",
862
+ "name": "maxCapitalAmount",
959
863
  "type": "uint256"
960
864
  },
961
865
  {
962
- "internalType": "bytes",
963
- "name": "applicationData",
964
- "type": "bytes"
965
- },
966
- {
967
- "internalType": "bytes",
968
- "name": "policyData",
969
- "type": "bytes"
866
+ "internalType": "bool",
867
+ "name": "isInterceptingBundleTransfers",
868
+ "type": "bool"
970
869
  },
971
870
  {
972
- "internalType": "uint16",
973
- "name": "claimsCount",
974
- "type": "uint16"
871
+ "internalType": "bool",
872
+ "name": "isExternallyManaged",
873
+ "type": "bool"
975
874
  },
976
875
  {
977
- "internalType": "uint16",
978
- "name": "openClaimsCount",
979
- "type": "uint16"
876
+ "internalType": "bool",
877
+ "name": "isVerifyingApplications",
878
+ "type": "bool"
980
879
  },
981
880
  {
982
- "internalType": "uint256",
983
- "name": "payoutAmount",
881
+ "internalType": "UFixed",
882
+ "name": "collateralizationLevel",
984
883
  "type": "uint256"
985
884
  },
986
- {
987
- "internalType": "Timestamp",
988
- "name": "activatedAt",
989
- "type": "uint40"
990
- },
991
- {
992
- "internalType": "Timestamp",
993
- "name": "expiredAt",
994
- "type": "uint40"
995
- },
996
- {
997
- "internalType": "Timestamp",
998
- "name": "closedAt",
999
- "type": "uint40"
1000
- }
1001
- ],
1002
- "internalType": "struct IPolicy.PolicyInfo",
1003
- "name": "policy",
1004
- "type": "tuple"
1005
- }
1006
- ],
1007
- "name": "createPolicy",
1008
- "outputs": [],
1009
- "stateMutability": "nonpayable",
1010
- "type": "function"
1011
- },
1012
- {
1013
- "inputs": [
1014
- {
1015
- "internalType": "NftId",
1016
- "name": "poolNftId",
1017
- "type": "uint96"
1018
- },
1019
- {
1020
- "components": [
1021
- {
1022
- "internalType": "NftId",
1023
- "name": "productNftId",
1024
- "type": "uint96"
1025
- },
1026
- {
1027
- "internalType": "contract TokenHandler",
1028
- "name": "tokenHandler",
1029
- "type": "address"
1030
- },
1031
885
  {
1032
886
  "internalType": "UFixed",
1033
- "name": "collateralizationLevel",
887
+ "name": "retentionLevel",
1034
888
  "type": "uint256"
1035
889
  },
1036
890
  {
@@ -1084,16 +938,6 @@
1084
938
  "name": "performanceFee",
1085
939
  "type": "tuple"
1086
940
  },
1087
- {
1088
- "internalType": "bool",
1089
- "name": "isIntercepting",
1090
- "type": "bool"
1091
- },
1092
- {
1093
- "internalType": "bool",
1094
- "name": "isConfirmingApplication",
1095
- "type": "bool"
1096
- },
1097
941
  {
1098
942
  "internalType": "address",
1099
943
  "name": "wallet",
@@ -1265,40 +1109,50 @@
1265
1109
  {
1266
1110
  "inputs": [
1267
1111
  {
1268
- "internalType": "NftId",
1269
- "name": "policyNftId",
1270
- "type": "uint96"
1271
- },
1272
- {
1273
- "internalType": "NumberId",
1274
- "name": "payoutId",
1275
- "type": "uint32"
1112
+ "internalType": "Key32",
1113
+ "name": "referralKey",
1114
+ "type": "bytes32"
1276
1115
  },
1277
1116
  {
1278
1117
  "components": [
1279
1118
  {
1280
- "internalType": "NumberId",
1281
- "name": "claimId",
1282
- "type": "uint32"
1119
+ "internalType": "NftId",
1120
+ "name": "distributorNftId",
1121
+ "type": "uint96"
1283
1122
  },
1284
1123
  {
1285
- "internalType": "uint256",
1286
- "name": "amount",
1124
+ "internalType": "string",
1125
+ "name": "referralCode",
1126
+ "type": "string"
1127
+ },
1128
+ {
1129
+ "internalType": "UFixed",
1130
+ "name": "discountPercentage",
1287
1131
  "type": "uint256"
1288
1132
  },
1289
1133
  {
1290
- "internalType": "bytes",
1291
- "name": "data",
1292
- "type": "bytes"
1134
+ "internalType": "uint32",
1135
+ "name": "maxReferrals",
1136
+ "type": "uint32"
1137
+ },
1138
+ {
1139
+ "internalType": "uint32",
1140
+ "name": "usedReferrals",
1141
+ "type": "uint32"
1293
1142
  },
1294
1143
  {
1295
1144
  "internalType": "Timestamp",
1296
- "name": "paidAt",
1145
+ "name": "expiryAt",
1297
1146
  "type": "uint40"
1147
+ },
1148
+ {
1149
+ "internalType": "bytes",
1150
+ "name": "data",
1151
+ "type": "bytes"
1298
1152
  }
1299
1153
  ],
1300
- "internalType": "struct IPolicy.PayoutInfo",
1301
- "name": "payout",
1154
+ "internalType": "struct IDistribution.ReferralInfo",
1155
+ "name": "referralInfo",
1302
1156
  "type": "tuple"
1303
1157
  }
1304
1158
  ],
@@ -1337,54 +1191,6 @@
1337
1191
  "stateMutability": "nonpayable",
1338
1192
  "type": "function"
1339
1193
  },
1340
- {
1341
- "inputs": [
1342
- {
1343
- "internalType": "RoleId",
1344
- "name": "roleId",
1345
- "type": "uint64"
1346
- },
1347
- {
1348
- "internalType": "string",
1349
- "name": "name",
1350
- "type": "string"
1351
- }
1352
- ],
1353
- "name": "createStandardRole",
1354
- "outputs": [],
1355
- "stateMutability": "nonpayable",
1356
- "type": "function"
1357
- },
1358
- {
1359
- "inputs": [
1360
- {
1361
- "internalType": "address",
1362
- "name": "target",
1363
- "type": "address"
1364
- },
1365
- {
1366
- "components": [
1367
- {
1368
- "internalType": "ShortString",
1369
- "name": "name",
1370
- "type": "bytes32"
1371
- },
1372
- {
1373
- "internalType": "bool",
1374
- "name": "isCustom",
1375
- "type": "bool"
1376
- }
1377
- ],
1378
- "internalType": "struct IAccess.TargetInfo",
1379
- "name": "targetInfo",
1380
- "type": "tuple"
1381
- }
1382
- ],
1383
- "name": "createTarget",
1384
- "outputs": [],
1385
- "stateMutability": "nonpayable",
1386
- "type": "function"
1387
- },
1388
1194
  {
1389
1195
  "inputs": [
1390
1196
  {
@@ -1477,10 +1283,10 @@
1477
1283
  },
1478
1284
  {
1479
1285
  "inputs": [],
1480
- "name": "getComponentOwnerService",
1286
+ "name": "getBundleService",
1481
1287
  "outputs": [
1482
1288
  {
1483
- "internalType": "contract IComponentOwnerService",
1289
+ "internalType": "contract IBundleService",
1484
1290
  "name": "",
1485
1291
  "type": "address"
1486
1292
  }
@@ -1563,13 +1369,8 @@
1563
1369
  }
1564
1370
  ],
1565
1371
  "internalType": "struct IRegistry.ObjectInfo",
1566
- "name": "",
1372
+ "name": "info",
1567
1373
  "type": "tuple"
1568
- },
1569
- {
1570
- "internalType": "bytes",
1571
- "name": "data",
1572
- "type": "bytes"
1573
1374
  }
1574
1375
  ],
1575
1376
  "stateMutability": "view",
@@ -1596,15 +1397,28 @@
1596
1397
  },
1597
1398
  {
1598
1399
  "inputs": [],
1599
- "name": "getInstanceReader",
1400
+ "name": "getInstanceReader",
1401
+ "outputs": [
1402
+ {
1403
+ "internalType": "contract InstanceReader",
1404
+ "name": "",
1405
+ "type": "address"
1406
+ }
1407
+ ],
1408
+ "stateMutability": "view",
1409
+ "type": "function"
1410
+ },
1411
+ {
1412
+ "inputs": [],
1413
+ "name": "getMajorVersion",
1600
1414
  "outputs": [
1601
1415
  {
1602
- "internalType": "contract InstanceReader",
1603
- "name": "",
1604
- "type": "address"
1416
+ "internalType": "VersionPart",
1417
+ "name": "majorVersion",
1418
+ "type": "uint8"
1605
1419
  }
1606
1420
  ],
1607
- "stateMutability": "view",
1421
+ "stateMutability": "pure",
1608
1422
  "type": "function"
1609
1423
  },
1610
1424
  {
@@ -1681,10 +1495,10 @@
1681
1495
  },
1682
1496
  {
1683
1497
  "inputs": [],
1684
- "name": "getPoolService",
1498
+ "name": "getPolicyService",
1685
1499
  "outputs": [
1686
1500
  {
1687
- "internalType": "contract IPoolService",
1501
+ "internalType": "contract IPolicyService",
1688
1502
  "name": "",
1689
1503
  "type": "address"
1690
1504
  }
@@ -1694,10 +1508,10 @@
1694
1508
  },
1695
1509
  {
1696
1510
  "inputs": [],
1697
- "name": "getProductService",
1511
+ "name": "getPoolService",
1698
1512
  "outputs": [
1699
1513
  {
1700
- "internalType": "contract IProductService",
1514
+ "internalType": "contract IPoolService",
1701
1515
  "name": "",
1702
1516
  "type": "address"
1703
1517
  }
@@ -1707,10 +1521,10 @@
1707
1521
  },
1708
1522
  {
1709
1523
  "inputs": [],
1710
- "name": "getRegistry",
1524
+ "name": "getProductService",
1711
1525
  "outputs": [
1712
1526
  {
1713
- "internalType": "contract IRegistry",
1527
+ "internalType": "contract IProductService",
1714
1528
  "name": "",
1715
1529
  "type": "address"
1716
1530
  }
@@ -1719,73 +1533,25 @@
1719
1533
  "type": "function"
1720
1534
  },
1721
1535
  {
1722
- "inputs": [
1723
- {
1724
- "internalType": "RoleId",
1725
- "name": "roleId",
1726
- "type": "uint64"
1727
- }
1728
- ],
1729
- "name": "getRole",
1730
- "outputs": [
1731
- {
1732
- "components": [
1733
- {
1734
- "internalType": "ShortString",
1735
- "name": "name",
1736
- "type": "bytes32"
1737
- },
1738
- {
1739
- "internalType": "bool",
1740
- "name": "isCustom",
1741
- "type": "bool"
1742
- }
1743
- ],
1744
- "internalType": "struct IAccess.RoleInfo",
1745
- "name": "role",
1746
- "type": "tuple"
1747
- }
1748
- ],
1749
- "stateMutability": "view",
1750
- "type": "function"
1751
- },
1752
- {
1753
- "inputs": [
1754
- {
1755
- "internalType": "uint256",
1756
- "name": "idx",
1757
- "type": "uint256"
1758
- }
1759
- ],
1760
- "name": "getRoleId",
1536
+ "inputs": [],
1537
+ "name": "getRegistry",
1761
1538
  "outputs": [
1762
1539
  {
1763
- "internalType": "RoleId",
1764
- "name": "roleId",
1765
- "type": "uint64"
1540
+ "internalType": "contract IRegistry",
1541
+ "name": "",
1542
+ "type": "address"
1766
1543
  }
1767
1544
  ],
1768
1545
  "stateMutability": "view",
1769
1546
  "type": "function"
1770
1547
  },
1771
1548
  {
1772
- "inputs": [
1773
- {
1774
- "internalType": "RoleId",
1775
- "name": "roleId",
1776
- "type": "uint64"
1777
- },
1778
- {
1779
- "internalType": "uint256",
1780
- "name": "idx",
1781
- "type": "uint256"
1782
- }
1783
- ],
1784
- "name": "getRoleMember",
1549
+ "inputs": [],
1550
+ "name": "getRegistryAddress",
1785
1551
  "outputs": [
1786
1552
  {
1787
1553
  "internalType": "address",
1788
- "name": "roleMember",
1554
+ "name": "",
1789
1555
  "type": "address"
1790
1556
  }
1791
1557
  ],
@@ -1811,30 +1577,6 @@
1811
1577
  "stateMutability": "view",
1812
1578
  "type": "function"
1813
1579
  },
1814
- {
1815
- "inputs": [
1816
- {
1817
- "internalType": "RoleId",
1818
- "name": "roleId",
1819
- "type": "uint64"
1820
- },
1821
- {
1822
- "internalType": "address",
1823
- "name": "member",
1824
- "type": "address"
1825
- }
1826
- ],
1827
- "name": "grantRole",
1828
- "outputs": [
1829
- {
1830
- "internalType": "bool",
1831
- "name": "granted",
1832
- "type": "bool"
1833
- }
1834
- ],
1835
- "stateMutability": "nonpayable",
1836
- "type": "function"
1837
- },
1838
1580
  {
1839
1581
  "inputs": [
1840
1582
  {
@@ -1884,49 +1626,63 @@
1884
1626
  },
1885
1627
  {
1886
1628
  "inputs": [],
1887
- "name": "isConsumingScheduledOp",
1888
- "outputs": [
1629
+ "name": "initializeERC165",
1630
+ "outputs": [],
1631
+ "stateMutability": "nonpayable",
1632
+ "type": "function"
1633
+ },
1634
+ {
1635
+ "inputs": [
1889
1636
  {
1890
- "internalType": "bytes4",
1891
- "name": "",
1892
- "type": "bytes4"
1637
+ "internalType": "address",
1638
+ "name": "initialOwner",
1639
+ "type": "address"
1640
+ },
1641
+ {
1642
+ "internalType": "address",
1643
+ "name": "registryAddress",
1644
+ "type": "address"
1893
1645
  }
1894
1646
  ],
1895
- "stateMutability": "view",
1647
+ "name": "initializeNftOwnable",
1648
+ "outputs": [],
1649
+ "stateMutability": "nonpayable",
1896
1650
  "type": "function"
1897
1651
  },
1898
1652
  {
1899
1653
  "inputs": [
1900
1654
  {
1901
- "internalType": "ObjectType",
1902
- "name": "objectType",
1903
- "type": "uint8"
1655
+ "internalType": "address",
1656
+ "name": "registryAddress",
1657
+ "type": "address"
1904
1658
  },
1905
1659
  {
1906
- "internalType": "StateId",
1907
- "name": "fromId",
1908
- "type": "uint8"
1660
+ "internalType": "NftId",
1661
+ "name": "parentNftId",
1662
+ "type": "uint96"
1909
1663
  },
1910
1664
  {
1911
- "internalType": "StateId",
1912
- "name": "toId",
1665
+ "internalType": "ObjectType",
1666
+ "name": "objectType",
1913
1667
  "type": "uint8"
1914
- }
1915
- ],
1916
- "name": "isValidTransition",
1917
- "outputs": [
1668
+ },
1918
1669
  {
1919
1670
  "internalType": "bool",
1920
- "name": "",
1671
+ "name": "isInterceptor",
1921
1672
  "type": "bool"
1673
+ },
1674
+ {
1675
+ "internalType": "address",
1676
+ "name": "initialOwner",
1677
+ "type": "address"
1678
+ },
1679
+ {
1680
+ "internalType": "bytes",
1681
+ "name": "registryData",
1682
+ "type": "bytes"
1922
1683
  }
1923
1684
  ],
1924
- "stateMutability": "view",
1925
- "type": "function"
1926
- },
1927
- {
1928
- "inputs": [],
1929
- "name": "linkToRegisteredNftId",
1685
+ "name": "initializeRegisterable",
1930
1686
  "outputs": [],
1931
1687
  "stateMutability": "nonpayable",
1932
1688
  "type": "function"
@@ -1934,76 +1690,76 @@
1934
1690
  {
1935
1691
  "inputs": [
1936
1692
  {
1937
- "internalType": "RoleId",
1938
- "name": "roleId",
1939
- "type": "uint64"
1693
+ "internalType": "address",
1694
+ "name": "registryAddress",
1695
+ "type": "address"
1940
1696
  }
1941
1697
  ],
1942
- "name": "renounceRole",
1698
+ "name": "initializeRegistryLinked",
1699
+ "outputs": [],
1700
+ "stateMutability": "nonpayable",
1701
+ "type": "function"
1702
+ },
1703
+ {
1704
+ "inputs": [],
1705
+ "name": "isConsumingScheduledOp",
1943
1706
  "outputs": [
1944
1707
  {
1945
- "internalType": "bool",
1946
- "name": "revoked",
1947
- "type": "bool"
1708
+ "internalType": "bytes4",
1709
+ "name": "",
1710
+ "type": "bytes4"
1948
1711
  }
1949
1712
  ],
1950
- "stateMutability": "nonpayable",
1713
+ "stateMutability": "view",
1951
1714
  "type": "function"
1952
1715
  },
1953
1716
  {
1954
1717
  "inputs": [
1955
1718
  {
1956
- "internalType": "RoleId",
1957
- "name": "roleId",
1958
- "type": "uint64"
1719
+ "internalType": "ObjectType",
1720
+ "name": "objectType",
1721
+ "type": "uint8"
1959
1722
  },
1960
1723
  {
1961
- "internalType": "address",
1962
- "name": "member",
1963
- "type": "address"
1724
+ "internalType": "StateId",
1725
+ "name": "fromId",
1726
+ "type": "uint8"
1727
+ },
1728
+ {
1729
+ "internalType": "StateId",
1730
+ "name": "toId",
1731
+ "type": "uint8"
1964
1732
  }
1965
1733
  ],
1966
- "name": "revokeRole",
1734
+ "name": "isValidTransition",
1967
1735
  "outputs": [
1968
1736
  {
1969
1737
  "internalType": "bool",
1970
- "name": "revoked",
1738
+ "name": "",
1971
1739
  "type": "bool"
1972
1740
  }
1973
1741
  ],
1974
- "stateMutability": "nonpayable",
1742
+ "stateMutability": "view",
1975
1743
  "type": "function"
1976
1744
  },
1977
1745
  {
1978
- "inputs": [
1979
- {
1980
- "internalType": "RoleId",
1981
- "name": "roleId",
1982
- "type": "uint64"
1983
- }
1984
- ],
1985
- "name": "roleMembers",
1986
- "outputs": [
1987
- {
1988
- "internalType": "uint256",
1989
- "name": "numberOfMembers",
1990
- "type": "uint256"
1991
- }
1992
- ],
1993
- "stateMutability": "view",
1746
+ "inputs": [],
1747
+ "name": "linkToRegisteredNftId",
1748
+ "outputs": [],
1749
+ "stateMutability": "nonpayable",
1994
1750
  "type": "function"
1995
1751
  },
1996
1752
  {
1997
- "inputs": [],
1998
- "name": "roles",
1999
- "outputs": [
1753
+ "inputs": [
2000
1754
  {
2001
- "internalType": "uint256",
2002
- "name": "numberOfRoles",
2003
- "type": "uint256"
1755
+ "internalType": "bytes4",
1756
+ "name": "interfaceId",
1757
+ "type": "bytes4"
2004
1758
  }
2005
1759
  ],
2006
- "stateMutability": "view",
1760
+ "name": "registerInterface",
1761
+ "outputs": [],
1762
+ "stateMutability": "nonpayable",
2007
1763
  "type": "function"
2008
1764
  },
2009
1765
  {
@@ -2048,49 +1804,88 @@
2048
1804
  {
2049
1805
  "inputs": [
2050
1806
  {
2051
- "internalType": "address",
2052
- "name": "target",
2053
- "type": "address"
2054
- },
1807
+ "internalType": "bytes4",
1808
+ "name": "interfaceId",
1809
+ "type": "bytes4"
1810
+ }
1811
+ ],
1812
+ "name": "supportsInterface",
1813
+ "outputs": [
2055
1814
  {
2056
1815
  "internalType": "bool",
2057
- "name": "closed",
1816
+ "name": "",
2058
1817
  "type": "bool"
2059
1818
  }
2060
1819
  ],
2061
- "name": "setTargetClosed",
2062
- "outputs": [],
2063
- "stateMutability": "nonpayable",
1820
+ "stateMutability": "view",
2064
1821
  "type": "function"
2065
1822
  },
2066
1823
  {
2067
1824
  "inputs": [
2068
1825
  {
2069
- "internalType": "bytes4",
2070
- "name": "interfaceId",
2071
- "type": "bytes4"
1826
+ "internalType": "NftId",
1827
+ "name": "bundleNftId",
1828
+ "type": "uint96"
1829
+ }
1830
+ ],
1831
+ "name": "toBundleKey32",
1832
+ "outputs": [
1833
+ {
1834
+ "internalType": "Key32",
1835
+ "name": "",
1836
+ "type": "bytes32"
1837
+ }
1838
+ ],
1839
+ "stateMutability": "pure",
1840
+ "type": "function"
1841
+ },
1842
+ {
1843
+ "inputs": [
1844
+ {
1845
+ "internalType": "NftId",
1846
+ "name": "distNftId",
1847
+ "type": "uint96"
1848
+ }
1849
+ ],
1850
+ "name": "toDistributionKey32",
1851
+ "outputs": [
1852
+ {
1853
+ "internalType": "Key32",
1854
+ "name": "",
1855
+ "type": "bytes32"
1856
+ }
1857
+ ],
1858
+ "stateMutability": "pure",
1859
+ "type": "function"
1860
+ },
1861
+ {
1862
+ "inputs": [
1863
+ {
1864
+ "internalType": "NftId",
1865
+ "name": "distNftId",
1866
+ "type": "uint96"
2072
1867
  }
2073
1868
  ],
2074
- "name": "supportsInterface",
1869
+ "name": "toDistributorKey32",
2075
1870
  "outputs": [
2076
1871
  {
2077
- "internalType": "bool",
1872
+ "internalType": "Key32",
2078
1873
  "name": "",
2079
- "type": "bool"
1874
+ "type": "bytes32"
2080
1875
  }
2081
1876
  ],
2082
- "stateMutability": "view",
1877
+ "stateMutability": "pure",
2083
1878
  "type": "function"
2084
1879
  },
2085
1880
  {
2086
1881
  "inputs": [
2087
1882
  {
2088
1883
  "internalType": "NftId",
2089
- "name": "bundleNftId",
1884
+ "name": "distNftId",
2090
1885
  "type": "uint96"
2091
1886
  }
2092
1887
  ],
2093
- "name": "toBundleKey32",
1888
+ "name": "toDistributorTypeKey32",
2094
1889
  "outputs": [
2095
1890
  {
2096
1891
  "internalType": "Key32",
@@ -2147,39 +1942,124 @@
2147
1942
  {
2148
1943
  "inputs": [
2149
1944
  {
2150
- "internalType": "RoleId",
2151
- "name": "roleId",
2152
- "type": "uint64"
2153
- }
2154
- ],
2155
- "name": "toRoleKey32",
2156
- "outputs": [
1945
+ "internalType": "NftId",
1946
+ "name": "applicationNftId",
1947
+ "type": "uint96"
1948
+ },
2157
1949
  {
2158
- "internalType": "Key32",
2159
- "name": "",
2160
- "type": "bytes32"
1950
+ "components": [
1951
+ {
1952
+ "internalType": "NftId",
1953
+ "name": "productNftId",
1954
+ "type": "uint96"
1955
+ },
1956
+ {
1957
+ "internalType": "NftId",
1958
+ "name": "bundleNftId",
1959
+ "type": "uint96"
1960
+ },
1961
+ {
1962
+ "internalType": "ReferralId",
1963
+ "name": "referralId",
1964
+ "type": "bytes8"
1965
+ },
1966
+ {
1967
+ "internalType": "RiskId",
1968
+ "name": "riskId",
1969
+ "type": "bytes8"
1970
+ },
1971
+ {
1972
+ "internalType": "uint256",
1973
+ "name": "sumInsuredAmount",
1974
+ "type": "uint256"
1975
+ },
1976
+ {
1977
+ "internalType": "uint256",
1978
+ "name": "premiumAmount",
1979
+ "type": "uint256"
1980
+ },
1981
+ {
1982
+ "internalType": "uint256",
1983
+ "name": "premiumPaidAmount",
1984
+ "type": "uint256"
1985
+ },
1986
+ {
1987
+ "internalType": "Seconds",
1988
+ "name": "lifetime",
1989
+ "type": "uint40"
1990
+ },
1991
+ {
1992
+ "internalType": "bytes",
1993
+ "name": "applicationData",
1994
+ "type": "bytes"
1995
+ },
1996
+ {
1997
+ "internalType": "bytes",
1998
+ "name": "policyData",
1999
+ "type": "bytes"
2000
+ },
2001
+ {
2002
+ "internalType": "uint16",
2003
+ "name": "claimsCount",
2004
+ "type": "uint16"
2005
+ },
2006
+ {
2007
+ "internalType": "uint16",
2008
+ "name": "openClaimsCount",
2009
+ "type": "uint16"
2010
+ },
2011
+ {
2012
+ "internalType": "uint256",
2013
+ "name": "payoutAmount",
2014
+ "type": "uint256"
2015
+ },
2016
+ {
2017
+ "internalType": "Timestamp",
2018
+ "name": "activatedAt",
2019
+ "type": "uint40"
2020
+ },
2021
+ {
2022
+ "internalType": "Timestamp",
2023
+ "name": "expiredAt",
2024
+ "type": "uint40"
2025
+ },
2026
+ {
2027
+ "internalType": "Timestamp",
2028
+ "name": "closedAt",
2029
+ "type": "uint40"
2030
+ }
2031
+ ],
2032
+ "internalType": "struct IPolicy.PolicyInfo",
2033
+ "name": "policy",
2034
+ "type": "tuple"
2035
+ },
2036
+ {
2037
+ "internalType": "StateId",
2038
+ "name": "newState",
2039
+ "type": "uint8"
2161
2040
  }
2162
2041
  ],
2163
- "stateMutability": "pure",
2042
+ "name": "updateApplication",
2043
+ "outputs": [],
2044
+ "stateMutability": "nonpayable",
2164
2045
  "type": "function"
2165
2046
  },
2166
2047
  {
2167
2048
  "inputs": [
2168
2049
  {
2169
- "internalType": "address",
2170
- "name": "target",
2171
- "type": "address"
2172
- }
2173
- ],
2174
- "name": "toTargetKey32",
2175
- "outputs": [
2050
+ "internalType": "NftId",
2051
+ "name": "applicationNftId",
2052
+ "type": "uint96"
2053
+ },
2176
2054
  {
2177
- "internalType": "Key32",
2178
- "name": "",
2179
- "type": "bytes32"
2055
+ "internalType": "StateId",
2056
+ "name": "newState",
2057
+ "type": "uint8"
2180
2058
  }
2181
2059
  ],
2182
- "stateMutability": "pure",
2060
+ "name": "updateApplicationState",
2061
+ "outputs": [],
2062
+ "stateMutability": "nonpayable",
2183
2063
  "type": "function"
2184
2064
  },
2185
2065
  {
@@ -2234,9 +2114,9 @@
2234
2114
  "type": "uint256"
2235
2115
  },
2236
2116
  {
2237
- "internalType": "uint256",
2117
+ "internalType": "Seconds",
2238
2118
  "name": "lifetime",
2239
- "type": "uint256"
2119
+ "type": "uint40"
2240
2120
  },
2241
2121
  {
2242
2122
  "internalType": "Timestamp",
@@ -2290,9 +2170,9 @@
2290
2170
  "type": "uint96"
2291
2171
  },
2292
2172
  {
2293
- "internalType": "NumberId",
2173
+ "internalType": "ClaimId",
2294
2174
  "name": "claimId",
2295
- "type": "uint32"
2175
+ "type": "uint16"
2296
2176
  },
2297
2177
  {
2298
2178
  "components": [
@@ -2340,54 +2220,9 @@
2340
2220
  "type": "uint96"
2341
2221
  },
2342
2222
  {
2343
- "internalType": "NumberId",
2344
- "name": "payoutId",
2345
- "type": "uint32"
2346
- },
2347
- {
2348
- "components": [
2349
- {
2350
- "internalType": "NumberId",
2351
- "name": "claimId",
2352
- "type": "uint32"
2353
- },
2354
- {
2355
- "internalType": "uint256",
2356
- "name": "amount",
2357
- "type": "uint256"
2358
- },
2359
- {
2360
- "internalType": "bytes",
2361
- "name": "data",
2362
- "type": "bytes"
2363
- },
2364
- {
2365
- "internalType": "Timestamp",
2366
- "name": "paidAt",
2367
- "type": "uint40"
2368
- }
2369
- ],
2370
- "internalType": "struct IPolicy.PayoutInfo",
2371
- "name": "payout",
2372
- "type": "tuple"
2373
- },
2374
- {
2375
- "internalType": "StateId",
2376
- "name": "newState",
2377
- "type": "uint8"
2378
- }
2379
- ],
2380
- "name": "updateClaim",
2381
- "outputs": [],
2382
- "stateMutability": "nonpayable",
2383
- "type": "function"
2384
- },
2385
- {
2386
- "inputs": [
2387
- {
2388
- "internalType": "NftId",
2389
- "name": "policyNftId",
2390
- "type": "uint96"
2223
+ "internalType": "ClaimId",
2224
+ "name": "claimId",
2225
+ "type": "uint16"
2391
2226
  },
2392
2227
  {
2393
2228
  "internalType": "StateId",
@@ -2436,11 +2271,6 @@
2436
2271
  "name": "distributionFee",
2437
2272
  "type": "tuple"
2438
2273
  },
2439
- {
2440
- "internalType": "bool",
2441
- "name": "isIntercepting",
2442
- "type": "bool"
2443
- },
2444
2274
  {
2445
2275
  "internalType": "address",
2446
2276
  "name": "wallet",
@@ -2484,39 +2314,117 @@
2484
2314
  "inputs": [
2485
2315
  {
2486
2316
  "internalType": "NftId",
2487
- "name": "policyNftId",
2317
+ "name": "nftId",
2488
2318
  "type": "uint96"
2489
2319
  },
2490
2320
  {
2491
- "internalType": "NumberId",
2492
- "name": "payoutId",
2493
- "type": "uint32"
2321
+ "components": [
2322
+ {
2323
+ "internalType": "DistributorType",
2324
+ "name": "distributorType",
2325
+ "type": "bytes8"
2326
+ },
2327
+ {
2328
+ "internalType": "bool",
2329
+ "name": "active",
2330
+ "type": "bool"
2331
+ },
2332
+ {
2333
+ "internalType": "bytes",
2334
+ "name": "data",
2335
+ "type": "bytes"
2336
+ }
2337
+ ],
2338
+ "internalType": "struct IDistribution.DistributorInfo",
2339
+ "name": "info",
2340
+ "type": "tuple"
2341
+ },
2342
+ {
2343
+ "internalType": "StateId",
2344
+ "name": "newState",
2345
+ "type": "uint8"
2346
+ }
2347
+ ],
2348
+ "name": "updateDistributor",
2349
+ "outputs": [],
2350
+ "stateMutability": "nonpayable",
2351
+ "type": "function"
2352
+ },
2353
+ {
2354
+ "inputs": [
2355
+ {
2356
+ "internalType": "NftId",
2357
+ "name": "nftId",
2358
+ "type": "uint96"
2359
+ },
2360
+ {
2361
+ "internalType": "StateId",
2362
+ "name": "newState",
2363
+ "type": "uint8"
2364
+ }
2365
+ ],
2366
+ "name": "updateDistributorState",
2367
+ "outputs": [],
2368
+ "stateMutability": "nonpayable",
2369
+ "type": "function"
2370
+ },
2371
+ {
2372
+ "inputs": [
2373
+ {
2374
+ "internalType": "Key32",
2375
+ "name": "distributorKey",
2376
+ "type": "bytes32"
2494
2377
  },
2495
2378
  {
2496
2379
  "components": [
2497
2380
  {
2498
- "internalType": "NumberId",
2499
- "name": "claimId",
2381
+ "internalType": "string",
2382
+ "name": "name",
2383
+ "type": "string"
2384
+ },
2385
+ {
2386
+ "internalType": "UFixed",
2387
+ "name": "minDiscountPercentage",
2388
+ "type": "uint256"
2389
+ },
2390
+ {
2391
+ "internalType": "UFixed",
2392
+ "name": "maxDiscountPercentage",
2393
+ "type": "uint256"
2394
+ },
2395
+ {
2396
+ "internalType": "UFixed",
2397
+ "name": "commissionPercentage",
2398
+ "type": "uint256"
2399
+ },
2400
+ {
2401
+ "internalType": "uint32",
2402
+ "name": "maxReferralCount",
2500
2403
  "type": "uint32"
2501
2404
  },
2502
2405
  {
2503
- "internalType": "uint256",
2504
- "name": "amount",
2505
- "type": "uint256"
2406
+ "internalType": "uint32",
2407
+ "name": "maxReferralLifetime",
2408
+ "type": "uint32"
2409
+ },
2410
+ {
2411
+ "internalType": "bool",
2412
+ "name": "allowSelfReferrals",
2413
+ "type": "bool"
2414
+ },
2415
+ {
2416
+ "internalType": "bool",
2417
+ "name": "allowRenewals",
2418
+ "type": "bool"
2506
2419
  },
2507
2420
  {
2508
2421
  "internalType": "bytes",
2509
2422
  "name": "data",
2510
2423
  "type": "bytes"
2511
- },
2512
- {
2513
- "internalType": "Timestamp",
2514
- "name": "paidAt",
2515
- "type": "uint40"
2516
2424
  }
2517
2425
  ],
2518
- "internalType": "struct IPolicy.PayoutInfo",
2519
- "name": "payout",
2426
+ "internalType": "struct IDistribution.DistributorTypeInfo",
2427
+ "name": "info",
2520
2428
  "type": "tuple"
2521
2429
  },
2522
2430
  {
@@ -2525,7 +2433,7 @@
2525
2433
  "type": "uint8"
2526
2434
  }
2527
2435
  ],
2528
- "name": "updateDistributor",
2436
+ "name": "updateDistributorType",
2529
2437
  "outputs": [],
2530
2438
  "stateMutability": "nonpayable",
2531
2439
  "type": "function"
@@ -2533,9 +2441,9 @@
2533
2441
  {
2534
2442
  "inputs": [
2535
2443
  {
2536
- "internalType": "NftId",
2537
- "name": "policyNftId",
2538
- "type": "uint96"
2444
+ "internalType": "Key32",
2445
+ "name": "distributorKey",
2446
+ "type": "bytes32"
2539
2447
  },
2540
2448
  {
2541
2449
  "internalType": "StateId",
@@ -2543,7 +2451,7 @@
2543
2451
  "type": "uint8"
2544
2452
  }
2545
2453
  ],
2546
- "name": "updateDistributorState",
2454
+ "name": "updateDistributorTypeState",
2547
2455
  "outputs": [],
2548
2456
  "stateMutability": "nonpayable",
2549
2457
  "type": "function"
@@ -2563,9 +2471,9 @@
2563
2471
  {
2564
2472
  "components": [
2565
2473
  {
2566
- "internalType": "NumberId",
2474
+ "internalType": "ClaimId",
2567
2475
  "name": "claimId",
2568
- "type": "uint32"
2476
+ "type": "uint16"
2569
2477
  },
2570
2478
  {
2571
2479
  "internalType": "uint256",
@@ -2593,25 +2501,7 @@
2593
2501
  "type": "uint8"
2594
2502
  }
2595
2503
  ],
2596
- "name": "updateDistributorType",
2597
- "outputs": [],
2598
- "stateMutability": "nonpayable",
2599
- "type": "function"
2600
- },
2601
- {
2602
- "inputs": [
2603
- {
2604
- "internalType": "NftId",
2605
- "name": "policyNftId",
2606
- "type": "uint96"
2607
- },
2608
- {
2609
- "internalType": "StateId",
2610
- "name": "newState",
2611
- "type": "uint8"
2612
- }
2613
- ],
2614
- "name": "updateDistributorTypeState",
2504
+ "name": "updatePayout",
2615
2505
  "outputs": [],
2616
2506
  "stateMutability": "nonpayable",
2617
2507
  "type": "function"
@@ -2679,9 +2569,9 @@
2679
2569
  "type": "uint256"
2680
2570
  },
2681
2571
  {
2682
- "internalType": "uint256",
2572
+ "internalType": "Seconds",
2683
2573
  "name": "lifetime",
2684
- "type": "uint256"
2574
+ "type": "uint40"
2685
2575
  },
2686
2576
  {
2687
2577
  "internalType": "bytes",
@@ -2776,11 +2666,36 @@
2776
2666
  "name": "tokenHandler",
2777
2667
  "type": "address"
2778
2668
  },
2669
+ {
2670
+ "internalType": "uint256",
2671
+ "name": "maxCapitalAmount",
2672
+ "type": "uint256"
2673
+ },
2674
+ {
2675
+ "internalType": "bool",
2676
+ "name": "isInterceptingBundleTransfers",
2677
+ "type": "bool"
2678
+ },
2679
+ {
2680
+ "internalType": "bool",
2681
+ "name": "isExternallyManaged",
2682
+ "type": "bool"
2683
+ },
2684
+ {
2685
+ "internalType": "bool",
2686
+ "name": "isVerifyingApplications",
2687
+ "type": "bool"
2688
+ },
2779
2689
  {
2780
2690
  "internalType": "UFixed",
2781
2691
  "name": "collateralizationLevel",
2782
2692
  "type": "uint256"
2783
2693
  },
2694
+ {
2695
+ "internalType": "UFixed",
2696
+ "name": "retentionLevel",
2697
+ "type": "uint256"
2698
+ },
2784
2699
  {
2785
2700
  "components": [
2786
2701
  {
@@ -2832,16 +2747,6 @@
2832
2747
  "name": "performanceFee",
2833
2748
  "type": "tuple"
2834
2749
  },
2835
- {
2836
- "internalType": "bool",
2837
- "name": "isIntercepting",
2838
- "type": "bool"
2839
- },
2840
- {
2841
- "internalType": "bool",
2842
- "name": "isConfirmingApplication",
2843
- "type": "bool"
2844
- },
2845
2750
  {
2846
2751
  "internalType": "address",
2847
2752
  "name": "wallet",
@@ -3059,40 +2964,50 @@
3059
2964
  {
3060
2965
  "inputs": [
3061
2966
  {
3062
- "internalType": "NftId",
3063
- "name": "policyNftId",
3064
- "type": "uint96"
3065
- },
3066
- {
3067
- "internalType": "NumberId",
3068
- "name": "payoutId",
3069
- "type": "uint32"
2967
+ "internalType": "Key32",
2968
+ "name": "referralKey",
2969
+ "type": "bytes32"
3070
2970
  },
3071
2971
  {
3072
2972
  "components": [
3073
2973
  {
3074
- "internalType": "NumberId",
3075
- "name": "claimId",
3076
- "type": "uint32"
2974
+ "internalType": "NftId",
2975
+ "name": "distributorNftId",
2976
+ "type": "uint96"
3077
2977
  },
3078
2978
  {
3079
- "internalType": "uint256",
3080
- "name": "amount",
2979
+ "internalType": "string",
2980
+ "name": "referralCode",
2981
+ "type": "string"
2982
+ },
2983
+ {
2984
+ "internalType": "UFixed",
2985
+ "name": "discountPercentage",
3081
2986
  "type": "uint256"
3082
2987
  },
3083
2988
  {
3084
- "internalType": "bytes",
3085
- "name": "data",
3086
- "type": "bytes"
2989
+ "internalType": "uint32",
2990
+ "name": "maxReferrals",
2991
+ "type": "uint32"
2992
+ },
2993
+ {
2994
+ "internalType": "uint32",
2995
+ "name": "usedReferrals",
2996
+ "type": "uint32"
3087
2997
  },
3088
2998
  {
3089
2999
  "internalType": "Timestamp",
3090
- "name": "paidAt",
3000
+ "name": "expiryAt",
3091
3001
  "type": "uint40"
3002
+ },
3003
+ {
3004
+ "internalType": "bytes",
3005
+ "name": "data",
3006
+ "type": "bytes"
3092
3007
  }
3093
3008
  ],
3094
- "internalType": "struct IPolicy.PayoutInfo",
3095
- "name": "payout",
3009
+ "internalType": "struct IDistribution.ReferralInfo",
3010
+ "name": "referralInfo",
3096
3011
  "type": "tuple"
3097
3012
  },
3098
3013
  {
@@ -3109,9 +3024,9 @@
3109
3024
  {
3110
3025
  "inputs": [
3111
3026
  {
3112
- "internalType": "NftId",
3113
- "name": "policyNftId",
3114
- "type": "uint96"
3027
+ "internalType": "Key32",
3028
+ "name": "referralKey",
3029
+ "type": "bytes32"
3115
3030
  },
3116
3031
  {
3117
3032
  "internalType": "StateId",
@@ -3176,133 +3091,88 @@
3176
3091
  "outputs": [],
3177
3092
  "stateMutability": "nonpayable",
3178
3093
  "type": "function"
3179
- },
3180
- {
3181
- "inputs": [
3182
- {
3183
- "internalType": "RoleId",
3184
- "name": "roleId",
3185
- "type": "uint64"
3186
- },
3187
- {
3188
- "internalType": "string",
3189
- "name": "name",
3190
- "type": "string"
3191
- },
3192
- {
3193
- "internalType": "StateId",
3194
- "name": "newState",
3195
- "type": "uint8"
3196
- }
3197
- ],
3198
- "name": "updateRole",
3199
- "outputs": [],
3200
- "stateMutability": "nonpayable",
3201
- "type": "function"
3202
- },
3203
- {
3204
- "inputs": [
3205
- {
3206
- "internalType": "RoleId",
3207
- "name": "roleId",
3208
- "type": "uint64"
3209
- },
3210
- {
3211
- "internalType": "StateId",
3212
- "name": "newState",
3213
- "type": "uint8"
3214
- }
3215
- ],
3216
- "name": "updateRoleState",
3217
- "outputs": [],
3218
- "stateMutability": "nonpayable",
3219
- "type": "function"
3220
3094
  }
3221
3095
  ],
3222
- "bytecode": "0x60806040523480156200001157600080fd5b506040516200755b3803806200755b833981016040819052620000349162001867565b6200003e620000cd565b6200004862000284565b62000052620003be565b6200005c6200062b565b6200009e6301ffc9a760e01b60005260046020527f9fe05126d2d9ecf60592e254dead906a4b2e492f36cca727682c38e9008c6ac1805460ff19166001179055565b600680546001600160a01b03191633908117909155620000c49084908490849062000772565b50505062001bc6565b60dc6000908152600160208190527f81c2bf9f7c6e8ac9bd8bcd9d323e94b867d2f5054aff8759d884773c680ec1ec805460ff19166064179055906002906200011460dc90565b60ff1660ff16815260200190815260200160002060006200013a620009dc60201b60201c565b60ff1660ff168152602001908152602001600020600062000160620009e160201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906002906200019460dc90565b60ff1660ff1681526020019081526020016000206000620001ba620009e160201b60201c565b60ff1660ff1681526020019081526020016000206000620001e0620009dc60201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906002906200021460dc90565b60ff1660ff16815260200190815260200160002060006200023a620009e160201b60201c565b60ff1660ff168152602001908152602001600020600062000260620009e660201b60201c565b60ff1681526020810191909152604001600020805460ff1916911515919091179055565b7f1bd07f61ef326b4de236f5b68f225f46ff76ee2c375ae31a06da201c49c70c128054606460ff1991821681179092557f879b65b464eb639409179c76c21acf6fbada740970e2300d47ea857d08cacd3c8054909116600190811790915560009182526002602052907f7673bcbb3401a7cbae68f81d40eea2cf35afdaf7ecd016ebf3f02857fcc1260a9062000318606e90565b60ff1660ff16815260200190815260200160002060006200033e620009dc60201b60201c565b60ff16815260208101919091526040016000908120805460ff19169215159290921790915560019060029062000372606490565b60ff1660ff168152602001908152602001600020600062000398620009e160201b60201c565b60ff1660ff168152602001908152602001600020600062000260620009eb60201b60201c565b60d26000908152600160208190527fcfa08e49dd9e66a4af3cdf0c2ef56f411154768307cac6dc23ee77c0386825be805460ff1916600a179055906002906200040560d290565b60ff1660ff16815260200190815260200160002060006200042b620009f060201b60201c565b60ff1660ff168152602001908152602001600020600062000451620009f560201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906002906200048560d290565b60ff1660ff1681526020019081526020016000206000620004ab620009f060201b60201c565b60ff1660ff1681526020019081526020016000206000620004d1620009fa60201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906002906200050560d290565b60ff1660ff16815260200190815260200160002060006200052b620009f060201b60201c565b60ff1660ff168152602001908152602001600020600062000551620009ff60201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906002906200058560d290565b60ff1660ff1681526020019081526020016000206000620005ab620009ff60201b60201c565b60ff1660ff1681526020019081526020016000206000620005d1620009dc60201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906002906200060560d290565b60ff1660ff16815260200190815260200160002060006200023a620009dc60201b60201c565b60c86000908152600160208190527f345f7c6c888721344af4147de0834159e0b302300ba13c4e7b6c0b60d8f2314e805460ff19166064179055906002906200067260c890565b60ff1660ff168152602001908152602001600020600062000698620009dc60201b60201c565b60ff1660ff1681526020019081526020016000206000620006be620009e160201b60201c565b60ff16815260208101919091526040016000908120805460ff191692151592909217909155600190600290620006f260c890565b60ff1660ff168152602001908152602001600020600062000718620009e160201b60201c565b60ff1660ff16815260200190815260200160002060006200073e620009dc60201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906002906200037260c890565b600654600160a01b900460ff1615620007e95760405162461bcd60e51b815260206004820152602e60248201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560448201526d195b881a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b620007f48462000a04565b600b80546001600160a01b0319166001600160a01b0386161790556040516368aebf7b60e01b815260006004820152620008b49073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b90602401602060405180830381865af415801562000865573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200088b9190620018c1565b60408051808201909152600981526841646d696e526f6c6560b81b602082015260008062000a7f565b6040516368aebf7b60e01b81526001600160401b036004820152620009609073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b90602401602060405180830381865af415801562000910573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009369190620018c1565b60408051808201909152600a8152695075626c6963526f6c6560b01b602082015260008062000a7f565b62000987838360466000856040518060200160405280600081525062000b6560201b60201c565b63cb92195b60e01b60005260046020527ff6a0e96c22fa775faf2353eb2fd224f66992988c5f74839180503f7d3fdad9b7805460ff1916600117905550506006805460ff60a01b1916600160a01b1790555050565b606490565b606e90565b60c890565b60d290565b600a90565b601490565b601e90565b602890565b60005460ff161562000a645760405162461bcd60e51b815260206004820152602260248201527f4163636573734d616e616765643a20616c726561647920696e697469616c697a604482015261195960f21b6064820152608401620007e0565b62000a6f8162000c78565b506000805460ff19166001179055565b801562000a965762000a9384848462000cd4565b50505b600062000aa585858562000f5e565b8051600090815260076020526040812080546001600160401b0319166001600160401b038981169182179092556009805460018101825593527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af6004840401805460039094166008026101000a928302199093169102179055905062000b5e62000b2f8662000f9a565b604080518451602080830191909152850151151581830152815180820383018152606090910190915262001022565b5050505050565b62000ba76301ffc9a760e01b60005260046020527f9fe05126d2d9ecf60592e254dead906a4b2e492f36cca727682c38e9008c6ac1805460ff19166001179055565b62000bb3828762001032565b60007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166001600160681b0319909116176c0100000000000000000000000060ff8816021760ff60681b19166d01000000000000000000000000008615150217815590506001810162000c32838262001998565b506303fb044760e21b60005260046020527f91a409085efa2cad9dad64790cb14ef1d9b61e9173e901d74242d27ef0ced4a1805460ff1916600117905550505050505050565b60008054610100600160a81b0319166101006001600160a01b038416908102919091179091556040519081527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9060200160405180910390a150565b6000808062000ce38662000f9a565b905062000cf081620010b0565b9250821562000d255762000d04816200113e565b80602001905181019062000d19919062001a75565b60200151915062000d29565b8391505b856001600160401b038116158062000d4957506001600160401b03818116145b1562000d745760405163981bf42160e01b81526001600160401b0388166004820152602401620007e0565b82801562000d8c57506127106001600160401b038216105b1562000db757604051633119b9df60e21b81526001600160401b0388166004820152602401620007e0565b82801562000dd057506127106001600160401b03821610155b1562000dfb5760405163094fb39160e01b81526001600160401b0388166004820152602401620007e0565b600062000e0887620011eb565b905062000e15816200122e565b60000362000e42576040516321ab17ab60e01b81526001600160401b0389166004820152602401620007e0565b60008181526007602090815260409182902054825163bc1b392d60e01b8152925162000ee9936001600160401b039092169273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9263bc1b392d92600480830193928290030181865af415801562000eb1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ed79190620018c1565b6001600160401b039081169116141590565b801562000f1057506000818152600760205260409020546001600160401b03898116911614155b1562000f535760008181526007602052604090819020549051631660fb9360e21b81526001600160401b03909116600482015260248101829052604401620007e0565b505050935093915050565b604080518082018252600080825260208201528151808301909252908062000f8685620011eb565b815260200183151581525090509392505050565b604051630f37f38f60e41b81526001600160401b038216600482015260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063f37f38f090602401602060405180830381865af415801562000ff6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200101c919062001ace565b92915050565b6200102e828262001257565b5050565b6001600160a01b0382166200108a5760405162461bcd60e51b815260206004820152601e60248201527f4e66744f776e61626c653a20696e697469616c206f776e6572206973203000006044820152606401620007e0565b600680546001600160a01b0319166001600160a01b0384161790556200102e816200168f565b60008181526003602052604080822054905163b2466acf60e01b815261010090910460ff16600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf906024015b602060405180830381865af415801562001118573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200101c919062001ae8565b6000818152600360205260409020600101805460609190620011609062001909565b80601f01602080910402602001604051908101604052809291908181526020018280546200118e9062001909565b8015620011df5780601f10620011b357610100808354040283529160200191620011df565b820191906000526020600020905b815481529060010190602001808311620011c157829003601f168201915b50505050509050919050565b600080829050601f8151111562001219578260405163305a27a960e01b8152600401620007e0919062001b06565b8051620012268262001b56565b179392505050565b600060ff8216601f8111156200101c57604051632cd44ac360e21b815260040160405180910390fd5b604051634b00e98f60e11b81526004810183905260009073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015620012ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012d1919062001b7b565b60405163b2466acf60e01b815260ff8216600482015290915073__$fb4566b39bd2075cb32f600f6f40bfaef2$__9063b2466acf90602401602060405180830381865af415801562001327573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200134d919062001ae8565b6200139b5760405162461bcd60e51b815260206004820152601c60248201527f4552524f523a4b56532d3031303a545950455f554e444546494e4544000000006044820152606401620007e0565b600083815260036020526040908190208054915163037c8cb160e51b815261010090920460ff1660048301529073__$2a12cf1a40369f689f3a67e70f4b31dadc$__90636f91962090602401602060405180830381865af415801562001405573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200142b919062001ae8565b620014795760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3031323a414c52454144595f435245415445440000006044820152606401620007e0565b334360006200148885620017fc565b62001495576064620014ab565b60ff808616600090815260016020526040902054165b845460ff87811661ffff1990921691909117610100918316919091021762010000600160d01b031916620100006001600160a01b0386160263ffffffff60b01b191617600160b01b63ffffffff85169081029190911763ffffffff60d01b1916600160d01b91909102178555600088815260036020526040902090915060010162001537878262001998565b50604051634b00e98f60e11b8152600481018890527ffcb75eb7b317145f986c763e1a3eab5f9b4dbaf7955504f70f986d799c3ab39d9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015620015ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015d1919062001b7b565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af415801562001622573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001648919062001ba0565b6040805160ff938416815260ff19929092166020830152918416818301526001600160a01b038616606082015232608082015290519081900360a00190a150505050505050565b6005546001600160a01b031615620016ca5760055460405163fcdbf2d960e01b81526001600160a01b039091166004820152602401620007e0565b6001600160a01b038116620016f25760405163f5c4d07d60e01b815260040160405180910390fd5b806001600160a01b03163b6000036200172a5760405163fdeac91f60e01b81526001600160a01b0382166004820152602401620007e0565b600580546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b8152632eaf856d60e11b60048201526301ffc9a790602401602060405180830381865afa925050508015620017a7575060408051601f3d908101601f19168201909252620017a49181019062001ae8565b60015b620017d15760405163fdeac91f60e01b81526001600160a01b0382166004820152602401620007e0565b806200102e5760405163fdeac91f60e01b81526001600160a01b0383166004820152602401620007e0565b60ff81811660009081526001602052604080822054905163b2466acf60e01b8152921660048301529073__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401620010fa565b80516001600160a01b03811681146200186257600080fd5b919050565b6000806000606084860312156200187d57600080fd5b62001888846200184a565b925062001898602085016200184a565b60408501519092506001600160601b0381168114620018b657600080fd5b809150509250925092565b600060208284031215620018d457600080fd5b81516001600160401b0381168114620018ec57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200191e57607f821691505b6020821081036200193f57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200199357600081815260208120601f850160051c810160208610156200196e5750805b601f850160051c820191505b818110156200198f578281556001016200197a565b5050505b505050565b81516001600160401b03811115620019b457620019b4620018f3565b620019cc81620019c5845462001909565b8462001945565b602080601f83116001811462001a045760008415620019eb5750858301515b600019600386901b1c1916600185901b1785556200198f565b600085815260208120601f198616915b8281101562001a355788860151825594840194600190910190840162001a14565b508582101562001a545787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b805180151581146200186257600080fd5b60006040828403121562001a8857600080fd5b604080519081016001600160401b038111828210171562001aad5762001aad620018f3565b6040528251815262001ac26020840162001a64565b60208201529392505050565b60006020828403121562001ae157600080fd5b5051919050565b60006020828403121562001afb57600080fd5b620018ec8262001a64565b600060208083528351808285015260005b8181101562001b355785810183015185820160400152820162001b17565b506000604082860101526040601f19601f8301168501019250505092915050565b805160208083015191908110156200193f5760001960209190910360031b1b16919050565b60006020828403121562001b8e57600080fd5b815160ff81168114620018ec57600080fd5b60006020828403121562001bb357600080fd5b815160ff1981168114620018ec57600080fd5b6159858062001bd66000396000f3fe608060405234801561001057600080fd5b50600436106104ac5760003560e01c80637a9e5e4b1161026d578063b428b0b011610151578063d2f21a29116100ce578063e8951ee611610092578063e8951ee6146105d7578063e9e96c7014610b17578063f48016ce14610b55578063f7bc431c14610b68578063f8b648ac1461068b578063fe1f18d614610b7b57600080fd5b8063d2f21a2914610acb578063d5b221bd14610605578063d78a83b114610ade578063dee3262314610af1578063e7cd37d414610b0457600080fd5b8063bf1db3f911610115578063bf1db3f914610a87578063bf7e214f14610a9a578063c2f1a2d214610605578063ca600b1c14610ab0578063cd50b97e14610ab857600080fd5b8063b428b0b014610a3b578063b68ec1461461068b578063b7d2b16214610a4e578063bc8d400014610a61578063bd5947e314610a7457600080fd5b806391ff6eaa116101ea5780639df0280b116101ae5780639df0280b146105d7578063a13df2ab1461093e578063a5961b4c14610951578063a76ee01814610a02578063a898967514610a15578063a9cea14214610a2857600080fd5b806391ff6eaa146108df578063950ad70b146108f2578063976b0a77146109055780639a960d52146109185780639d7421f41461092b57600080fd5b80638793a9ac116102315780638793a9ac14610883578063893d20e8146108965780638dc77f42146105d75780638eaa6ac01461089e5780638fb36037146108be57600080fd5b80637a9e5e4b1461082a5780637cef48421461083d57806382f65adb1461068b578063835933c91461085057806386f0c47b1461086357600080fd5b8063392f5f64116103945780635d4345cc11610311578063644c45e0116102d5578063644c45e0146107d45780636b9bf08b146107ff5780636fa298531461080757806375b238fc1461080f57806375c82776146108175780637a4158021461060557600080fd5b80635d4345cc146105d75780635dfa73db146107945780636071a68e1461079d57806360aa32aa146107b057806361f5f420146107c357600080fd5b8063422c9d0011610358578063422c9d00146107355780634288121d14610748578063468a18671461075057806354f6127f146107635780635ab1bd531461078357600080fd5b8063392f5f64146106e15780633ca7c02a146106e95780633fc5ab981461070f5780633fd855611461072257806340529b0f146105d757600080fd5b8063167bd3951161042d5780632f61088a116103f15780632f61088a1461066557806331d311a71461067857806333bb0a971461068b57806337f135d71461069e578063384c9a57146106bb57806338a699a4146106ce57600080fd5b8063167bd395146105f25780631c45fe7a146106055780631e23a2f5146106185780631eff4b221461062b57806322f46b841461065257600080fd5b80630d358181116104745780630d358181146105885780630f526f7d146105ae5780630fec111c146105c157806310203d2c146105d7578063138461e0146105ea57600080fd5b806301ffc9a7146104b157806302cd3071146104f3578063030149741461051857806309648a9d146105395780630b24cf5f14610573575b600080fd5b6104de6104bf366004613f10565b6001600160e01b03191660009081526004602052604090205460ff1690565b60405190151581526020015b60405180910390f35b600c546001600160a01b03165b6040516001600160a01b0390911681526020016104ea565b61052b610526366004613f4f565b610b8e565b6040519081526020016104ea565b610561610547366004613f6c565b600090815260036020526040902054610100900460ff1690565b60405160ff90911681526020016104ea565b610586610581366004614176565b610bb5565b005b6105616105963660046141bb565b60ff9081166000908152600160205260409020541690565b6105866105bc3660046141d8565b610bf9565b6105c9610c16565b6040516104ea929190614261565b6105866105e53660046141d8565b610d98565b610586610dad565b610586610600366004614308565b610fcf565b61058661061336600461445e565b611077565b6105866106263660046144d2565b6110b8565b61052b7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b610586610660366004614533565b6110de565b6105866106733660046145fd565b6110f4565b61052b610686366004614642565b61118f565b61058661069936600461465f565b611220565b6106a6600081565b60405163ffffffff90911681526020016104ea565b6104de6106c9366004613f4f565b61124b565b6104de6106dc366004613f6c565b6113e1565b60095461052b565b6106f76001600160401b0381565b6040516001600160401b0390911681526020016104ea565b61058661071d366004614777565b61146c565b6106f7610730366004613f6c565b611492565b610586610743366004614642565b6114d7565b610500611552565b61052b61075e3660046147da565b6115ed565b610776610771366004613f6c565b61164a565b6040516104ea91906147f7565b6005546001600160a01b0316610500565b6106f761271081565b6105866107ab36600461480a565b6116ef565b6105866107be366004614905565b611715565b600d546001600160a01b0316610500565b600554600160a01b90046001600160601b03166040516001600160601b0390911681526020016104ea565b61050061173d565b610500611793565b6106f7600081565b610586610825366004614989565b6117f3565b610586610838366004614642565b611819565b61058661084b3660046149e1565b611894565b61052b61085e366004613f4f565b61191e565b610876610871366004613f4f565b611961565b6040516104ea91906149ff565b610586610891366004614a18565b611a06565b610500611a1b565b6108b16108ac366004613f6c565b611af8565b6040516104ea9190614a80565b6108c6611c39565b6040516001600160e01b031990911681526020016104ea565b6105866108ed366004614bac565b611c5d565b610586610900366004614bda565b611c85565b610586610913366004614c21565b611ce7565b610586610926366004614dbf565b611f0f565b610586610939366004614e06565b611f35565b61052b61094c3660046147da565b611f5b565b6109f561095f366004613f6c565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915250600090815260036020908152604091829020825160a081018452905460ff8082168352610100820416928201929092526001600160a01b03620100008304169281019290925263ffffffff600160b01b820481166060840152600160d01b90910416608082015290565b6040516104ea9190614e5d565b610586610a10366004614e6b565b611f88565b610586610a23366004614eb2565b612023565b610586610a36366004614ef2565b612114565b6104de610a49366004614f33565b61213c565b6104de610a5c366004614f33565b612330565b610586610a6f366004614f61565b6124bb565b610586610a82366004614fa6565b6124e1565b6104de610a953660046141bb565b612509565b60005461010090046001600160a01b0316610500565b610500612556565b610586610ac6366004614533565b6125b4565b610586610ad93660046141d8565b6125cb565b610500610aec366004614fe6565b6125e2565b610586610aff3660046141d8565b61260b565b610586610b12366004615012565b612622565b6104de610b25366004614eb2565b60ff9283166000908152600260209081526040808320948616835293815283822092851682529190915220541690565b61052b610b63366004615050565b61264a565b610586610b76366004614642565b6126ce565b610586610b893660046141d8565b61274a565b6001600160401b0381166000908152600860205260408120610baf9061275f565b92915050565b610bc2335b600036612769565b610bf5610bd083607861287c565b82604051602001610be1919061507e565b6040516020818303038152906040526128c8565b5050565b610c0233610bba565b610bf5610c1083608c61287c565b826128d2565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820181905290917f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e00160405280610c996005546001600160601b03600160a01b9091041690565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a001610ce1611a1b565b6001600160a01b03168152602001826001018054610cfe906150de565b80601f0160208091040260200160405190810160405280929190818152602001828054610d2a906150de565b8015610d775780601f10610d4c57610100808354040283529160200191610d77565b820191906000526020600020905b815481529060010190602001808311610d5a57829003601f168201915b50505050508152506040518060200160405280600081525092509250509091565b610da133610bba565b610bf5610c10836115ed565b6005546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015610e0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e339190615118565b15610e7a576005546040516316322c0f60e31b81526001600160a01b0382166004820152600160a01b9091046001600160601b031660248201526044015b60405180910390fd5b6005546001600160a01b0316610ea35760405163cf29926160e01b815260040160405180910390fd5b60055460405163c3c5a54760e01b81523060048201819052916001600160a01b03169063c3c5a54790602401602060405180830381865afa158015610eec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f109190615118565b610f38576040516372657a5160e01b81526001600160a01b0382166004820152602401610e71565b600554604051636939560f60e11b81526001600160a01b0383811660048301529091169063d272ac1e90602401602060405180830381865afa158015610f82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa69190615135565b600560146101000a8154816001600160601b0302191690836001600160601b0316021790555050565b610fd833610bba565b610fe46106dc8361118f565b61100c576040516325b6f39560e21b81526001600160a01b0383166004820152602401610e71565b600b5460405163167bd39560e01b81526001600160a01b03848116600483015283151560248301529091169063167bd39590604401600060405180830381600087803b15801561105b57600080fd5b505af115801561106f573d6000803e3d6000fd5b505050505050565b61108033610bba565b6110b261108c856115ed565b8360405160200161109d9190615152565b604051602081830303815290604052836128dc565b50505050565b6110c133610bba565b610bf56110cd8361118f565b82604051602001610be191906149ff565b6110e733610bba565b610bf582826001806128e7565b6110fd33610bba565b6040516355ee627560e01b81526001600160c01b031983166004820152610bf59073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af415801561115a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117e91906151a5565b82604051602001610be191906151be565b604051637a400b6760e11b8152601e6004820152606082901b6bffffffffffffffffffffffff1916602482015260009073__$c8f743efd2b4f0c9300f2558c784479d3e$__9063f48016ce906044015b602060405180830381865af41580156111fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baf91906151a5565b61122933610bba565b611246611235846115ed565b82604051602001610be19190615152565b505050565b600033816112588461191e565b9050611263816113e1565b61128a57604051627a416f60e01b81526001600160401b0385166004820152602401610e71565b6001600160401b03841660009081526008602052604090206112ac9083612990565b156113d757600b54604051631517388760e21b81526001600160401b03861660048201526001600160a01b039091169063fe0776f59073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af415801561131e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134291906151ec565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201526001600160a01b0385166024820152604401600060405180830381600087803b15801561139257600080fd5b505af11580156113a6573d6000803e3d6000fd5b5050506001600160401b03851660009081526008602052604090206113cc9150836129b2565b506001949350505050565b5060009392505050565b60008181526003602052604080822054905163b2466acf60e01b815261010090910460ff16600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf906024015b602060405180830381865af4158015611448573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baf9190615118565b61147533610bba565b61124661148184611f5b565b8360405160200161109d9190615209565b6000600982815481106114a7576114a76152bd565b90600052602060002090600491828204019190066008029054906101000a90046001600160401b03169050919050565b6114e033610bba565b600d546001600160a01b0316156115305760405162461bcd60e51b8152602060048201526014602482015273109d5b991b1953585b9859d95c881a5cc81cd95d60621b6044820152606401610e71565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546040805163a3bcd81d60e01b81526004810191909152600e60448201526d50726f647563745365727669636560901b6064820152600360248201526000916001600160a01b03169063a3bcd81d906084015b602060405180830381865afa1580156115c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e891906152d3565b905090565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660d25b6040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff1660248201526044016111df565b600081815260036020526040902060010180546060919061166a906150de565b80601f0160208091040260200160405190810160405280929190818152602001828054611696906150de565b80156116e35780601f106116b8576101008083540402835291602001916116e3565b820191906000526020600020905b8154815290600101906020018083116116c657829003601f168201915b50505050509050919050565b6116f833610bba565b610bf561170483611f5b565b82604051602001610be19190615209565b61171e33610bba565b61124661172c84608c61287c565b8360405160200161109d91906152f0565b6005546040805163a3bcd81d60e01b81526004810191909152600b60448201526a506f6f6c5365727669636560a81b6064820152600360248201526000916001600160a01b03169063a3bcd81d906084016115a7565b6005546040805163a3bcd81d60e01b815260048101919091526015604482015274436f6d706f6e656e744f776e65725365727669636560581b6064820152600360248201526000916001600160a01b03169063a3bcd81d906084016115a7565b6117fc33610bba565b6110b2611808856115ed565b8360405160200161109d91906153ad565b600054339061010090046001600160a01b031681146118555760405162d1953b60e31b81526001600160a01b0382166004820152602401610e71565b816001600160a01b03163b60000361188b576040516361798f2f60e11b81526001600160a01b0383166004820152602401610e71565b610bf5826129c7565b61189d33610bba565b6040516355ee627560e01b81526001600160c01b031983166004820152610bf59073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af41580156118fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1091906151a5565b604051630f37f38f60e41b81526001600160401b038216600482015260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063f37f38f0906024016111df565b604080518082018252600080825260208201529051630f37f38f60e41b81526001600160401b03831660048201526119f39073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063f37f38f090602401602060405180830381865af41580156119cf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077191906151a5565b806020019051810190610baf91906153dd565b611a0f33610bba565b610bf5610c108361191e565b6005546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015260009073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015611a80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa49190615118565b15611ae857600554604051631c5da14d60e11b8152600160a01b82046001600160601b031660048201526001600160a01b03909116906338bb429a906024016115a7565b506006546001600160a01b031690565b6040805160e081018252600091810182815260608083018490526080830184905260a0830184905260c083019390935281526020810191909152600082815260036020908152604091829020825160e081018452815460ff80821695830195865261010082041660608301526001600160a01b0362010000820416608083015263ffffffff600160b01b8204811660a0840152600160d01b9091041660c08201529283526001810180549192840191611bb0906150de565b80601f0160208091040260200160405190810160405280929190818152602001828054611bdc906150de565b8015611c295780601f10611bfe57610100808354040283529160200191611c29565b820191906000526020600020905b815481529060010190602001808311611c0c57829003601f168201915b5050505050815250509050919050565b60008054600160a81b900460ff16611c515750600090565b50638fb3603760e01b90565b611c6633610bba565b610bf5611c7483606e61287c565b82604051602001610be19190615415565b611c8e33610bba565b6000611c9c84846000612a23565b5090506000611cac858584612c8e565b9050611ce0611cba8661191e565b82604051602001611ccb91906149ff565b604051602081830303815290604052856128dc565b5050505050565b600654600160a01b900460ff1615611d585760405162461bcd60e51b815260206004820152602e60248201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560448201526d195b881a5b9a5d1a585b1a5e995960921b6064820152608401610e71565b611d6184612cca565b600b80546001600160a01b0319166001600160a01b0386161790556040516368aebf7b60e01b815260006004820152611e1e9073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b90602401602060405180830381865af4158015611dd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df491906151ec565b6040518060400160405280600981526020016841646d696e526f6c6560b81b8152506000806128e7565b6040516368aebf7b60e01b81526001600160401b036004820152611ec79073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b90602401602060405180830381865af4158015611e78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e9c91906151ec565b6040518060400160405280600a8152602001695075626c6963526f6c6560b01b8152506000806128e7565b611ee68383604660008560405180602001604052806000815250612d41565b611ef663cb92195b60e01b612e16565b50506006805460ff60a01b1916600160a01b1790555050565b611f1833610bba565b611246611f24846115ed565b8360405160200161109d919061553f565b611f3e33610bba565b611246611f4a846115ed565b82604051602001610be191906153ad565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660dc611616565b611f9133610bba565b6040516355ee627560e01b81526001600160c01b0319841660048201526112469073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015611fee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201291906151a5565b8360405160200161109d91906151be565b60ff8381166000908152600160205260409081902054905163037c8cb160e51b81529116600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__90636f91962090602401602060405180830381865af4158015612088573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ac9190615118565b156120b657505050565b60ff80841660009081526002602090815260408083208685168452825280832085851684529091529020541661124657604051636bb20ea760e01b815260ff8085166004830152808416602483015282166044820152606401610e71565b61211d33610bba565b61124661212b84606e61287c565b8360405160200161109d9190615415565b600061214733610bba565b60006121528461191e565b905061215d816113e1565b61218557604051636777365b60e01b81526001600160401b0385166004820152602401610e71565b6000818152600360205260409020546121b490610100900460ff166121a8606490565b60ff9081169116141590565b156121dd5760405163fe229d5d60e01b81526001600160401b0385166004820152602401610e71565b6001600160401b03841660009081526008602052604090206121ff9084612990565b6113d757600b54604051631517388760e21b81526001600160401b03861660048201526001600160a01b03909116906325c471a09073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015612270573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229491906151ec565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201526001600160a01b038616602482015260006044820152606401600060405180830381600087803b1580156122eb57600080fd5b505af11580156122ff573d6000803e3d6000fd5b5050506001600160401b0385166000908152600860205260409020612325915084612e3b565b506001915050610baf565b600061233b33610bba565b60006123468461191e565b9050612351816113e1565b61237957604051634cee277360e11b81526001600160401b0385166004820152602401610e71565b6001600160401b038416600090815260086020526040902061239b9084612990565b156113d757600b54604051631517388760e21b81526001600160401b03861660048201526001600160a01b039091169063b7d2b1629073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af415801561240d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061243191906151ec565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201526001600160a01b0386166024820152604401600060405180830381600087803b15801561248157600080fd5b505af1158015612495573d6000803e3d6000fd5b5050506001600160401b03851660009081526008602052604090206123259150846129b2565b6124c433610bba565b610bf56124d0836115ed565b82604051602001610be1919061553f565b6124ea33610bba565b6112466124f884607861287c565b8360405160200161109d919061507e565b60ff81811660009081526001602052604080822054905163b2466acf60e01b8152921660048301529073__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf9060240161142b565b6005546040805163a3bcd81d60e01b815260048101919091526013604482015272446973747269627574696f6e5365727669636560681b6064820152600360248201526000916001600160a01b03169063a3bcd81d906084016115a7565b6125bd33610bba565b610bf58282600060016128e7565b6125d433610bba565b610bf5610c1083607861287c565b6001600160401b03821660009081526008602052604081206126049083612e50565b9392505050565b61261433610bba565b610bf5610c1083606e61287c565b61262b33610bba565b610bf561263983608c61287c565b82604051602001610be191906152f0565b604051637a400b6760e11b815260ff8316600482015260ff198216602482015260009073__$c8f743efd2b4f0c9300f2558c784479d3e$__9063f48016ce906044015b602060405180830381865af41580156126aa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061260491906151a5565b6126d733610bba565b600c546001600160a01b0316156127285760405162461bcd60e51b8152602060048201526015602482015274125b9cdd185b98d954995859195c881a5cc81cd95d605a1b6044820152606401610e71565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b61275333610bba565b610bf5610c1083611f5b565b6000610baf825490565b6000806127a56127876000546001600160a01b036101009091041690565b863061279760046000898b615680565b6127a0916156aa565b612e5c565b9150915081611ce05763ffffffff811615612859576000805460ff60a81b1916600160a81b1790556127e56000546001600160a01b036101009091041690565b6001600160a01b03166394c7d7ee8686866040518463ffffffff1660e01b8152600401612814939291906156da565b600060405180830381600087803b15801561282e57600080fd5b505af1158015612842573d6000803e3d6000fd5b50506000805460ff60a81b1916905550611ce09050565b60405162d1953b60e31b81526001600160a01b0386166004820152602401610e71565b604051630711349960e31b81526001600160601b038316600482015260ff8216602482015260009073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__90633889a4c89060440161268d565b610bf58282612f68565b610bf5828261338a565b6112468383836136be565b80156128fb576128f8848484612a23565b50505b6000612908858585612c8e565b80516000908152600760205260408120805467ffffffffffffffff19166001600160401b038981169182179092556009805460018101825593527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af6004840401805460039094166008026101000a9283021990931691021790559050611ce06110cd8661191e565b6001600160a01b03811660009081526001830160205260408120541515612604565b6000612604836001600160a01b038416613b59565b60008054610100600160a81b0319166101006001600160a01b038416908102919091179091556040519081527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9060200160405180910390a150565b6000806000612a318661191e565b9050612a3c816113e1565b92508215612a6b57612a4d8161164a565b806020019051810190612a6091906153dd565b602001519150612a6f565b8391505b856001600160401b0381161580612a8e57506001600160401b03818116145b15612ab75760405163981bf42160e01b81526001600160401b0388166004820152602401610e71565b828015612ace57506127106001600160401b038216105b15612af757604051633119b9df60e21b81526001600160401b0388166004820152602401610e71565b828015612b0f57506127106001600160401b03821610155b15612b385760405163094fb39160e01b81526001600160401b0388166004820152602401610e71565b6000612b4387613c53565b9050612b4e81613c91565b600003612b79576040516321ab17ab60e01b81526001600160401b0389166004820152602401610e71565b60008181526007602090815260409182902054825163bc1b392d60e01b81529251612c1c936001600160401b039092169273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9263bc1b392d92600480830193928290030181865af4158015612be6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c0a91906151ec565b6001600160401b039081169116141590565b8015612c4257506000818152600760205260409020546001600160401b03898116911614155b15612c835760008181526007602052604090819020549051631660fb9360e21b81526001600160401b03909116600482015260248101829052604401610e71565b505050935093915050565b60408051808201909152600080825260208201526040518060400160405280612cb685613c53565b815260200183151581525090509392505050565b60005460ff1615612d285760405162461bcd60e51b815260206004820152602260248201527f4163636573734d616e616765643a20616c726561647920696e697469616c697a604482015261195960f21b6064820152608401610e71565b612d31816129c7565b506000805460ff19166001179055565b612d826301ffc9a760e01b60005260046020527f9fe05126d2d9ecf60592e254dead906a4b2e492f36cca727682c38e9008c6ac1805460ff19166001179055565b612d8c8287613cb9565b60007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166cffffffffffffffffffffffffff1990911617600160601b60ff8816021760ff60681b1916600160681b86151502178155905060018101612dfc8382615760565b50612e0d6303fb044760e21b612e16565b50505050505050565b6001600160e01b0319166000908152600460205260409020805460ff19166001179055565b6000612604836001600160a01b038416613d33565b60006126048383613d82565b6040516001600160a01b03848116602483015283811660448301526001600160e01b03198316606483015260009182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b17905251612ecb919061581f565b600060405180830381855afa9150503d8060008114612f06576040519150601f19603f3d011682016040523d82523d6000602084013e612f0b565b606091505b50915091508115612f5d576040815110612f3d5780806020019051810190612f33919061583b565b9094509250612f5d565b6020815110612f5d5780806020019051810190612f5a9190615118565b93505b505094509492505050565b604051634b00e98f60e11b81526004810183905260009073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015612fbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fdf919061586a565b60405163b2466acf60e01b815260ff8216600482015290915073__$fb4566b39bd2075cb32f600f6f40bfaef2$__9063b2466acf90602401602060405180830381865af4158015613034573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130589190615118565b6130a45760405162461bcd60e51b815260206004820152601c60248201527f4552524f523a4b56532d3031303a545950455f554e444546494e4544000000006044820152606401610e71565b600083815260036020526040908190208054915163037c8cb160e51b815261010090920460ff1660048301529073__$2a12cf1a40369f689f3a67e70f4b31dadc$__90636f91962090602401602060405180830381865af415801561310d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131319190615118565b61317d5760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3031323a414c52454144595f435245415445440000006044820152606401610e71565b3343600061318a85612509565b6131955760646131ab565b60ff808616600090815260016020526040902054165b845460ff87811661ffff1990921691909117610100918316919091021762010000600160d01b031916620100006001600160a01b0386160263ffffffff60b01b191617600160b01b63ffffffff85169081029190911763ffffffff60d01b1916600160d01b9190910217855560008881526003602052604090209091506001016132358782615760565b50604051634b00e98f60e11b8152600481018890527ffcb75eb7b317145f986c763e1a3eab5f9b4dbaf7955504f70f986d799c3ab39d9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af41580156132a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132cc919061586a565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af415801561331c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133409190615887565b6040805160ff938416815260ff199092166020830152918416918101919091526001600160a01b038516606082015232608082015260a0015b60405180910390a150505050505050565b60405163b2466acf60e01b815260ff8216600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af41580156133dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134009190615118565b61344c5760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3034303a53544154455f554e444546494e45440000006044820152606401610e71565b600082815260036020526040908190208054915163b2466acf60e01b815261010090920460ff1660048301819052909173__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af41580156134b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134dc9190615118565b6135285760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a4b56532d3034313a4e4f545f4558495354494e470000000000006044820152606401610e71565b8154620100003390810262010000600160b01b031960ff87166101000216610100600160b01b03198416171784559063ffffffff600160b01b9091041661356c4390565b845463ffffffff91909116600160b01b0263ffffffff60b01b19909116178455604051634b00e98f60e11b8152600481018790527fe41a93c15e024a0b2371127599959a8e543dd6a8d820238e906c93a3004248fa9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af41580156135fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613622919061586a565b604051630713cfad60e31b81526004810189905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015613672573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136969190615887565b87868632876040516136ae97969594939291906158a4565b60405180910390a1505050505050565b60405163b2466acf60e01b815260ff8216600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015613710573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137349190615118565b6137805760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3032303a53544154455f554e444546494e45440000006044820152606401610e71565b600083815260036020526040908190208054915163b2466acf60e01b815261010090920460ff1660048301819052909173__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af41580156137ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138109190615118565b61385c5760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a4b56532d3032313a4e4f545f4558495354494e470000000000006044820152606401610e71565b60008581526003602052604090206001016138778582615760565b508154620100003390810262010000600160b01b031960ff87166101000216610100600160b01b03198416171784559063ffffffff600160b01b909104166138bc4390565b845463ffffffff91909116600160b01b0263ffffffff60b01b19909116178455604051634b00e98f60e11b8152600481018890527fe41a93c15e024a0b2371127599959a8e543dd6a8d820238e906c93a3004248fa9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af415801561394e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613972919061586a565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af41580156139c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139e69190615887565b87868632876040516139fe97969594939291906158a4565b60405180910390a1604051634b00e98f60e11b8152600481018890527f7bd0ab7f1746bd20a814d6705a46876c84f1aa2d35c80d8c173e268bd6d4b26c9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015613a78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a9c919061586a565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015613aec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b109190615887565b6040805160ff938416815260ff199092166020830152918816918101919091526001600160a01b038416606082015232608082015263ffffffff831660a082015260c001613379565b60008181526001830160205260408120548015613c42576000613b7d6001836158f4565b8554909150600090613b91906001906158f4565b9050808214613bf6576000866000018281548110613bb157613bb16152bd565b9060005260206000200154905080876000018481548110613bd457613bd46152bd565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080613c0757613c07615915565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610baf565b6000915050610baf565b5092915050565b600080829050601f81511115613c7e578260405163305a27a960e01b8152600401610e7191906147f7565b8051613c898261592b565b179392505050565b600060ff8216601f811115610baf57604051632cd44ac360e21b815260040160405180910390fd5b6001600160a01b038216613d0f5760405162461bcd60e51b815260206004820152601e60248201527f4e66744f776e61626c653a20696e697469616c206f776e6572206973203000006044820152606401610e71565b600680546001600160a01b0319166001600160a01b038416179055610bf581613dac565b6000818152600183016020526040812054613d7a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610baf565b506000610baf565b6000826000018281548110613d9957613d996152bd565b9060005260206000200154905092915050565b6005546001600160a01b031615613de55760055460405163fcdbf2d960e01b81526001600160a01b039091166004820152602401610e71565b6001600160a01b038116613e0c5760405163f5c4d07d60e01b815260040160405180910390fd5b806001600160a01b03163b600003613e425760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610e71565b600580546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b8152632eaf856d60e11b60048201526301ffc9a790602401602060405180830381865afa925050508015613ebc575060408051601f3d908101601f19168201909252613eb991810190615118565b60015b613ee45760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610e71565b80610bf55760405163fdeac91f60e01b81526001600160a01b0383166004820152602401610e71565b50565b600060208284031215613f2257600080fd5b81356001600160e01b03198116811461260457600080fd5b6001600160401b0381168114613f0d57600080fd5b600060208284031215613f6157600080fd5b813561260481613f3a565b600060208284031215613f7e57600080fd5b5035919050565b6001600160601b0381168114613f0d57600080fd5b8035613fa581613f85565b919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715613fe257613fe2613faa565b60405290565b604051608081016001600160401b0381118282101715613fe257613fe2613faa565b60405161012081016001600160401b0381118282101715613fe257613fe2613faa565b60405161018081016001600160401b0381118282101715613fe257613fe2613faa565b60405161020081016001600160401b0381118282101715613fe257613fe2613faa565b6001600160a01b0381168114613f0d57600080fd5b8035613fa581614073565b6000604082840312156140a557600080fd5b6140ad613fc0565b9050813581526020820135602082015292915050565b8015158114613f0d57600080fd5b8035613fa5816140c3565b600060c082840312156140ee57600080fd5b60405160a081018181106001600160401b038211171561411057614110613faa565b604052905080823561412181613f85565b8152602083013561413181614073565b60208201526141438460408501614093565b60408201526080830135614156816140c3565b606082015260a083013561416981614073565b6080919091015292915050565b60008060e0838503121561418957600080fd5b823561419481613f85565b91506141a384602085016140dc565b90509250929050565b60ff81168114613f0d57600080fd5b6000602082840312156141cd57600080fd5b8135612604816141ac565b600080604083850312156141eb57600080fd5b82356141f681613f85565b91506020830135614206816141ac565b809150509250929050565b60005b8381101561422c578181015183820152602001614214565b50506000910152565b6000815180845261424d816020860160208601614211565b601f01601f19169290920160200192915050565b6040815260006001600160601b038085511660408401528060208601511660608401525060ff604085015116608083015260608401516142a560a084018215159052565b5060808401516001600160a01b03811660c08401525060a08401516001600160a01b03811660e08401525060c084015160e06101008401526142eb610120840182614235565b905082810360208401526142ff8185614235565b95945050505050565b6000806040838503121561431b57600080fd5b823561432681614073565b91506020830135614206816140c3565b63ffffffff81168114613f0d57600080fd5b600082601f83011261435957600080fd5b81356001600160401b038082111561437357614373613faa565b604051601f8301601f19908116603f0116810190828211818310171561439b5761439b613faa565b816040528381528660208588010111156143b457600080fd5b836020870160208301376000602085830101528094505050505092915050565b803564ffffffffff81168114613fa557600080fd5b6000608082840312156143fb57600080fd5b614403613fe8565b9050813561441081614336565b81526020828101359082015260408201356001600160401b0381111561443557600080fd5b61444184828501614348565b604083015250614453606083016143d4565b606082015292915050565b6000806000806080858703121561447457600080fd5b843561447f81613f85565b9350602085013561448f81614336565b925060408501356001600160401b038111156144aa57600080fd5b6144b6878288016143e9565b92505060608501356144c7816141ac565b939692955090935050565b60008082840360608112156144e657600080fd5b83356144f181614073565b92506040601f198201121561450557600080fd5b5061450e613fc0565b602084013581526040840135614523816140c3565b6020820152919491935090915050565b6000806040838503121561454657600080fd5b823561455181613f3a565b915060208301356001600160401b0381111561456c57600080fd5b61457885828601614348565b9150509250929050565b6001600160c01b031981168114613f0d57600080fd5b8035613fa581614582565b6000604082840312156145b557600080fd5b6145bd613fc0565b905081356145ca81613f85565b815260208201356001600160401b038111156145e557600080fd5b6145f184828501614348565b60208301525092915050565b6000806040838503121561461057600080fd5b823561461b81614582565b915060208301356001600160401b0381111561463657600080fd5b614578858286016145a3565b60006020828403121561465457600080fd5b813561260481614073565b60008060006060848603121561467457600080fd5b833561467f81613f85565b9250602084013561468f81614336565b915060408401356001600160401b038111156146aa57600080fd5b6146b6868287016143e9565b9150509250925092565b600061014082840312156146d357600080fd5b6146db61400a565b90506146e682613f9a565b81526146f58360208401614093565b602082015260608201356001600160401b0381111561471357600080fd5b61471f84828501614348565b6040830152506080820135606082015260a0820135608082015260c082013560a082015260e082013560c082015261010061475b8184016143d4565b60e083015261476d61012084016143d4565b9082015292915050565b60008060006060848603121561478c57600080fd5b833561479781613f85565b925060208401356001600160401b038111156147b257600080fd5b6147be868287016146c0565b92505060408401356147cf816141ac565b809150509250925092565b6000602082840312156147ec57600080fd5b813561260481613f85565b6020815260006126046020830184614235565b6000806040838503121561481d57600080fd5b823561482881613f85565b915060208301356001600160401b0381111561484357600080fd5b614578858286016146c0565b6000610180828403121561486257600080fd5b61486a61400a565b905061487582613f9a565b815261488360208301614088565b60208201526040820135604082015261489f8360608401614093565b60608201526148b18360a08401614093565b60808201526148c38360e08401614093565b60a08201526148d561012083016140d1565b60c08201526148e761014083016140d1565b60e08201526148f96101608301614088565b61010082015292915050565b60008060006101c0848603121561491b57600080fd5b833561492681613f85565b9250614935856020860161484f565b91506101a08401356147cf816141ac565b60006080828403121561495857600080fd5b614960613fe8565b9050813581526020820135602082015260408201356001600160401b0381111561443557600080fd5b6000806000806080858703121561499f57600080fd5b84356149aa81613f85565b935060208501356149ba81614336565b925060408501356001600160401b038111156149d557600080fd5b6144b687828801614946565b600080604083850312156149f457600080fd5b82356141f681614582565b8151815260208083015115159082015260408101610baf565b60008060408385031215614a2b57600080fd5b82356141f681613f3a565b60ff815116825260ff602082015116602083015260018060a01b036040820151166040830152606081015163ffffffff808216606085015280608084015116608085015250505050565b60208152614a92602082018351614a36565b6000602083015160c080840152614aac60e0840182614235565b949350505050565b60006102408284031215614ac757600080fd5b614acf61402d565b9050614ada82614088565b8152614ae860208301614088565b6020820152614af960408301613f9a565b6040820152614b0a60608301613f9a565b6060820152614b1c8360808401614093565b6080820152614b2e8360c08401614093565b60a0820152610100614b4284828501614093565b60c0830152610140614b5685828601614093565b60e0840152614b69856101808601614093565b82840152614b7b856101c08601614093565b610120840152614b8e61020085016140d1565b9083015250614ba06102208301614088565b61016082015292915050565b6000806102608385031215614bc057600080fd5b8235614bcb81613f85565b91506141a38460208501614ab4565b600080600060608486031215614bef57600080fd5b8335614bfa81613f3a565b925060208401356001600160401b03811115614c1557600080fd5b6147be86828701614348565b60008060008060808587031215614c3757600080fd5b8435614c4281614073565b93506020850135614c5281614073565b92506040850135614c6281613f85565b915060608501356144c781614073565b803561ffff81168114613fa557600080fd5b60006102008284031215614c9757600080fd5b614c9f614050565b9050614caa82613f9a565b8152614cb860208301613f9a565b6020820152614cc960408301614598565b6040820152614cda60608301614598565b60608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e0820152610100808301356001600160401b0380821115614d2357600080fd5b614d2f86838701614348565b83850152610120925082850135915080821115614d4b57600080fd5b50614d5885828601614348565b828401525050610140614d6c818401614c72565b90820152610160614d7e838201614c72565b9082015261018082810135908201526101a0614d9b8184016143d4565b908201526101c0614dad8382016143d4565b908201526101e061476d8382016143d4565b600080600060608486031215614dd457600080fd5b8335614ddf81613f85565b925060208401356001600160401b03811115614dfa57600080fd5b6147be86828701614c84565b600080600060608486031215614e1b57600080fd5b8335614e2681613f85565b92506020840135614e3681614336565b915060408401356001600160401b03811115614e5157600080fd5b6146b686828701614946565b60a08101610baf8284614a36565b600080600060608486031215614e8057600080fd5b8335614e8b81614582565b925060208401356001600160401b03811115614ea657600080fd5b6147be868287016145a3565b600080600060608486031215614ec757600080fd5b8335614ed2816141ac565b92506020840135614ee2816141ac565b915060408401356147cf816141ac565b60008060006102808486031215614f0857600080fd5b8335614f1381613f85565b9250614f228560208601614ab4565b91506102608401356147cf816141ac565b60008060408385031215614f4657600080fd5b8235614f5181613f3a565b9150602083013561420681614073565b60008060408385031215614f7457600080fd5b8235614f7f81613f85565b915060208301356001600160401b03811115614f9a57600080fd5b61457885828601614c84565b60008060006101008486031215614fbc57600080fd5b8335614fc781613f85565b9250614fd685602086016140dc565b915060e08401356147cf816141ac565b60008060408385031215614ff957600080fd5b823561500481613f3a565b946020939093013593505050565b6000806101a0838503121561502657600080fd5b823561503181613f85565b91506141a3846020850161484f565b60ff1981168114613f0d57600080fd5b6000806040838503121561506357600080fd5b823561506e816141ac565b9150602083013561420681615040565b81516001600160601b031681526020808301516001600160a01b039081168284015260408085015180519185019190915291820151606084015260c0830191906060850151151560808501528060808601511660a0850152505092915050565b600181811c908216806150f257607f821691505b60208210810361511257634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561512a57600080fd5b8151612604816140c3565b60006020828403121561514757600080fd5b815161260481613f85565b6020815263ffffffff825116602082015260208201516040820152600060408301516080606084015261518860a0840182614235565b905064ffffffffff60608501511660808401528091505092915050565b6000602082840312156151b757600080fd5b5051919050565b602081526001600160601b03825116602082015260006020830151604080840152614aac6060840182614235565b6000602082840312156151fe57600080fd5b815161260481613f3a565b602081526152236020820183516001600160601b03169052565b60006020830151615241604084018280518252602090810151910152565b50604083015161014080608085015261525e610160850183614235565b9150606085015160a0850152608085015160c085015260a085015160e085015260c0850151610100818187015260e087015191506152a661012087018364ffffffffff169052565b9095015164ffffffffff1693019290925250919050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156152e557600080fd5b815161260481614073565b81516001600160601b0316815260208083015161018083019161531d908401826001600160a01b03169052565b50604083015160408301526060830151615344606084018280518252602090810151910152565b506080830151805160a0840152602081015160c08401525060a0830151805160e084015260208101516101008401525060c08301518015156101208401525060e0830151801515610140840152506101008301516001600160a01b038116610160840152613c4c565b602081528151602082015260208201516040820152600060408301516080606084015261518860a0840182614235565b6000604082840312156153ef57600080fd5b6153f7613fc0565b825181526020830151615409816140c3565b60208201529392505050565b81516001600160a01b031681526102408101602083015161544160208401826001600160a01b03169052565b50604083015161545c60408401826001600160601b03169052565b50606083015161547760608401826001600160601b03169052565b506080830151615494608084018280518252602090810151910152565b5060a0830151805160c0840152602081015160e08401525060c08301516101006154ca8185018380518252602090810151910152565b60e085015191506101406154ea8186018480518252602090810151910152565b9085015180516101808601526020908101516101a086015261012086015180516101c087015201516101e08501528401511515610200840152506101608301516001600160a01b038116610220840152613c4c565b602081526155596020820183516001600160601b03169052565b6000602083015161557560408401826001600160601b03169052565b5060408301516001600160c01b0319811660608401525060608301516001600160c01b03198116608084015250608083015160a083015260a083015160c083015260c083015160e083015260e083015161010081818501528085015191505061020061012081818601526155ed610220860184614235565b9250808601519050610140601f19868503018187015261560d8483614235565b9350808701519150506101606156288187018361ffff169052565b860151905061018061563f8682018361ffff169052565b8601516101a08681019190915286015190506101c06156668187018364ffffffffff169052565b86015190506101e06152a68682018364ffffffffff169052565b6000808585111561569057600080fd5b8386111561569d57600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156156d25780818660040360031b1b83161692505b505092915050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b601f82111561124657600081815260208120601f850160051c810160208610156157415750805b601f850160051c820191505b8181101561106f5782815560010161574d565b81516001600160401b0381111561577957615779613faa565b61578d8161578784546150de565b8461571a565b602080601f8311600181146157c257600084156157aa5750858301515b600019600386901b1c1916600185901b17855561106f565b600085815260208120601f198616915b828110156157f1578886015182559484019460019091019084016157d2565b508582101561580f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008251615831818460208701614211565b9190910192915050565b6000806040838503121561584e57600080fd5b8251615859816140c3565b602084015190925061420681614336565b60006020828403121561587c57600080fd5b8151612604816141ac565b60006020828403121561589957600080fd5b815161260481615040565b60ff978816815260ff1996909616602087015293861660408601529190941660608401526001600160a01b03938416608084015290921660a082015263ffffffff9190911660c082015260e00190565b81810381811115610baf57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b805160208083015191908110156151125760001960209190910360031b1b1691905056fea2646970667358221220693a19cdc3b97cd5dc472a3b90bdb9556100788f99ca5a9d9062afa0dd2e730164736f6c63430008140033",
3223
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106104ac5760003560e01c80637a9e5e4b1161026d578063b428b0b011610151578063d2f21a29116100ce578063e8951ee611610092578063e8951ee6146105d7578063e9e96c7014610b17578063f48016ce14610b55578063f7bc431c14610b68578063f8b648ac1461068b578063fe1f18d614610b7b57600080fd5b8063d2f21a2914610acb578063d5b221bd14610605578063d78a83b114610ade578063dee3262314610af1578063e7cd37d414610b0457600080fd5b8063bf1db3f911610115578063bf1db3f914610a87578063bf7e214f14610a9a578063c2f1a2d214610605578063ca600b1c14610ab0578063cd50b97e14610ab857600080fd5b8063b428b0b014610a3b578063b68ec1461461068b578063b7d2b16214610a4e578063bc8d400014610a61578063bd5947e314610a7457600080fd5b806391ff6eaa116101ea5780639df0280b116101ae5780639df0280b146105d7578063a13df2ab1461093e578063a5961b4c14610951578063a76ee01814610a02578063a898967514610a15578063a9cea14214610a2857600080fd5b806391ff6eaa146108df578063950ad70b146108f2578063976b0a77146109055780639a960d52146109185780639d7421f41461092b57600080fd5b80638793a9ac116102315780638793a9ac14610883578063893d20e8146108965780638dc77f42146105d75780638eaa6ac01461089e5780638fb36037146108be57600080fd5b80637a9e5e4b1461082a5780637cef48421461083d57806382f65adb1461068b578063835933c91461085057806386f0c47b1461086357600080fd5b8063392f5f64116103945780635d4345cc11610311578063644c45e0116102d5578063644c45e0146107d45780636b9bf08b146107ff5780636fa298531461080757806375b238fc1461080f57806375c82776146108175780637a4158021461060557600080fd5b80635d4345cc146105d75780635dfa73db146107945780636071a68e1461079d57806360aa32aa146107b057806361f5f420146107c357600080fd5b8063422c9d0011610358578063422c9d00146107355780634288121d14610748578063468a18671461075057806354f6127f146107635780635ab1bd531461078357600080fd5b8063392f5f64146106e15780633ca7c02a146106e95780633fc5ab981461070f5780633fd855611461072257806340529b0f146105d757600080fd5b8063167bd3951161042d5780632f61088a116103f15780632f61088a1461066557806331d311a71461067857806333bb0a971461068b57806337f135d71461069e578063384c9a57146106bb57806338a699a4146106ce57600080fd5b8063167bd395146105f25780631c45fe7a146106055780631e23a2f5146106185780631eff4b221461062b57806322f46b841461065257600080fd5b80630d358181116104745780630d358181146105885780630f526f7d146105ae5780630fec111c146105c157806310203d2c146105d7578063138461e0146105ea57600080fd5b806301ffc9a7146104b157806302cd3071146104f3578063030149741461051857806309648a9d146105395780630b24cf5f14610573575b600080fd5b6104de6104bf366004613f10565b6001600160e01b03191660009081526004602052604090205460ff1690565b60405190151581526020015b60405180910390f35b600c546001600160a01b03165b6040516001600160a01b0390911681526020016104ea565b61052b610526366004613f4f565b610b8e565b6040519081526020016104ea565b610561610547366004613f6c565b600090815260036020526040902054610100900460ff1690565b60405160ff90911681526020016104ea565b610586610581366004614176565b610bb5565b005b6105616105963660046141bb565b60ff9081166000908152600160205260409020541690565b6105866105bc3660046141d8565b610bf9565b6105c9610c16565b6040516104ea929190614261565b6105866105e53660046141d8565b610d98565b610586610dad565b610586610600366004614308565b610fcf565b61058661061336600461445e565b611077565b6105866106263660046144d2565b6110b8565b61052b7f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b610586610660366004614533565b6110de565b6105866106733660046145fd565b6110f4565b61052b610686366004614642565b61118f565b61058661069936600461465f565b611220565b6106a6600081565b60405163ffffffff90911681526020016104ea565b6104de6106c9366004613f4f565b61124b565b6104de6106dc366004613f6c565b6113e1565b60095461052b565b6106f76001600160401b0381565b6040516001600160401b0390911681526020016104ea565b61058661071d366004614777565b61146c565b6106f7610730366004613f6c565b611492565b610586610743366004614642565b6114d7565b610500611552565b61052b61075e3660046147da565b6115ed565b610776610771366004613f6c565b61164a565b6040516104ea91906147f7565b6005546001600160a01b0316610500565b6106f761271081565b6105866107ab36600461480a565b6116ef565b6105866107be366004614905565b611715565b600d546001600160a01b0316610500565b600554600160a01b90046001600160601b03166040516001600160601b0390911681526020016104ea565b61050061173d565b610500611793565b6106f7600081565b610586610825366004614989565b6117f3565b610586610838366004614642565b611819565b61058661084b3660046149e1565b611894565b61052b61085e366004613f4f565b61191e565b610876610871366004613f4f565b611961565b6040516104ea91906149ff565b610586610891366004614a18565b611a06565b610500611a1b565b6108b16108ac366004613f6c565b611af8565b6040516104ea9190614a80565b6108c6611c39565b6040516001600160e01b031990911681526020016104ea565b6105866108ed366004614bac565b611c5d565b610586610900366004614bda565b611c85565b610586610913366004614c21565b611ce7565b610586610926366004614dbf565b611f0f565b610586610939366004614e06565b611f35565b61052b61094c3660046147da565b611f5b565b6109f561095f366004613f6c565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915250600090815260036020908152604091829020825160a081018452905460ff8082168352610100820416928201929092526001600160a01b03620100008304169281019290925263ffffffff600160b01b820481166060840152600160d01b90910416608082015290565b6040516104ea9190614e5d565b610586610a10366004614e6b565b611f88565b610586610a23366004614eb2565b612023565b610586610a36366004614ef2565b612114565b6104de610a49366004614f33565b61213c565b6104de610a5c366004614f33565b612330565b610586610a6f366004614f61565b6124bb565b610586610a82366004614fa6565b6124e1565b6104de610a953660046141bb565b612509565b60005461010090046001600160a01b0316610500565b610500612556565b610586610ac6366004614533565b6125b4565b610586610ad93660046141d8565b6125cb565b610500610aec366004614fe6565b6125e2565b610586610aff3660046141d8565b61260b565b610586610b12366004615012565b612622565b6104de610b25366004614eb2565b60ff9283166000908152600260209081526040808320948616835293815283822092851682529190915220541690565b61052b610b63366004615050565b61264a565b610586610b76366004614642565b6126ce565b610586610b893660046141d8565b61274a565b6001600160401b0381166000908152600860205260408120610baf9061275f565b92915050565b610bc2335b600036612769565b610bf5610bd083607861287c565b82604051602001610be1919061507e565b6040516020818303038152906040526128c8565b5050565b610c0233610bba565b610bf5610c1083608c61287c565b826128d2565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820181905290917f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30090506040518060e00160405280610c996005546001600160601b03600160a01b9091041690565b6001600160601b0390811682528354908116602083015260ff600160601b820481166040840152600160681b909104161515606082015230608082015260a001610ce1611a1b565b6001600160a01b03168152602001826001018054610cfe906150de565b80601f0160208091040260200160405190810160405280929190818152602001828054610d2a906150de565b8015610d775780601f10610d4c57610100808354040283529160200191610d77565b820191906000526020600020905b815481529060010190602001808311610d5a57829003601f168201915b50505050508152506040518060200160405280600081525092509250509091565b610da133610bba565b610bf5610c10836115ed565b6005546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015273__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015610e0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e339190615118565b15610e7a576005546040516316322c0f60e31b81526001600160a01b0382166004820152600160a01b9091046001600160601b031660248201526044015b60405180910390fd5b6005546001600160a01b0316610ea35760405163cf29926160e01b815260040160405180910390fd5b60055460405163c3c5a54760e01b81523060048201819052916001600160a01b03169063c3c5a54790602401602060405180830381865afa158015610eec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f109190615118565b610f38576040516372657a5160e01b81526001600160a01b0382166004820152602401610e71565b600554604051636939560f60e11b81526001600160a01b0383811660048301529091169063d272ac1e90602401602060405180830381865afa158015610f82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa69190615135565b600560146101000a8154816001600160601b0302191690836001600160601b0316021790555050565b610fd833610bba565b610fe46106dc8361118f565b61100c576040516325b6f39560e21b81526001600160a01b0383166004820152602401610e71565b600b5460405163167bd39560e01b81526001600160a01b03848116600483015283151560248301529091169063167bd39590604401600060405180830381600087803b15801561105b57600080fd5b505af115801561106f573d6000803e3d6000fd5b505050505050565b61108033610bba565b6110b261108c856115ed565b8360405160200161109d9190615152565b604051602081830303815290604052836128dc565b50505050565b6110c133610bba565b610bf56110cd8361118f565b82604051602001610be191906149ff565b6110e733610bba565b610bf582826001806128e7565b6110fd33610bba565b6040516355ee627560e01b81526001600160c01b031983166004820152610bf59073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af415801561115a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061117e91906151a5565b82604051602001610be191906151be565b604051637a400b6760e11b8152601e6004820152606082901b6bffffffffffffffffffffffff1916602482015260009073__$c8f743efd2b4f0c9300f2558c784479d3e$__9063f48016ce906044015b602060405180830381865af41580156111fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baf91906151a5565b61122933610bba565b611246611235846115ed565b82604051602001610be19190615152565b505050565b600033816112588461191e565b9050611263816113e1565b61128a57604051627a416f60e01b81526001600160401b0385166004820152602401610e71565b6001600160401b03841660009081526008602052604090206112ac9083612990565b156113d757600b54604051631517388760e21b81526001600160401b03861660048201526001600160a01b039091169063fe0776f59073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af415801561131e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134291906151ec565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201526001600160a01b0385166024820152604401600060405180830381600087803b15801561139257600080fd5b505af11580156113a6573d6000803e3d6000fd5b5050506001600160401b03851660009081526008602052604090206113cc9150836129b2565b506001949350505050565b5060009392505050565b60008181526003602052604080822054905163b2466acf60e01b815261010090910460ff16600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf906024015b602060405180830381865af4158015611448573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610baf9190615118565b61147533610bba565b61124661148184611f5b565b8360405160200161109d9190615209565b6000600982815481106114a7576114a76152bd565b90600052602060002090600491828204019190066008029054906101000a90046001600160401b03169050919050565b6114e033610bba565b600d546001600160a01b0316156115305760405162461bcd60e51b8152602060048201526014602482015273109d5b991b1953585b9859d95c881a5cc81cd95d60621b6044820152606401610e71565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546040805163a3bcd81d60e01b81526004810191909152600e60448201526d50726f647563745365727669636560901b6064820152600360248201526000916001600160a01b03169063a3bcd81d906084015b602060405180830381865afa1580156115c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e891906152d3565b905090565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660d25b6040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff1660248201526044016111df565b600081815260036020526040902060010180546060919061166a906150de565b80601f0160208091040260200160405190810160405280929190818152602001828054611696906150de565b80156116e35780601f106116b8576101008083540402835291602001916116e3565b820191906000526020600020905b8154815290600101906020018083116116c657829003601f168201915b50505050509050919050565b6116f833610bba565b610bf561170483611f5b565b82604051602001610be19190615209565b61171e33610bba565b61124661172c84608c61287c565b8360405160200161109d91906152f0565b6005546040805163a3bcd81d60e01b81526004810191909152600b60448201526a506f6f6c5365727669636560a81b6064820152600360248201526000916001600160a01b03169063a3bcd81d906084016115a7565b6005546040805163a3bcd81d60e01b815260048101919091526015604482015274436f6d706f6e656e744f776e65725365727669636560581b6064820152600360248201526000916001600160a01b03169063a3bcd81d906084016115a7565b6117fc33610bba565b6110b2611808856115ed565b8360405160200161109d91906153ad565b600054339061010090046001600160a01b031681146118555760405162d1953b60e31b81526001600160a01b0382166004820152602401610e71565b816001600160a01b03163b60000361188b576040516361798f2f60e11b81526001600160a01b0383166004820152602401610e71565b610bf5826129c7565b61189d33610bba565b6040516355ee627560e01b81526001600160c01b031983166004820152610bf59073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af41580156118fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1091906151a5565b604051630f37f38f60e41b81526001600160401b038216600482015260009073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063f37f38f0906024016111df565b604080518082018252600080825260208201529051630f37f38f60e41b81526001600160401b03831660048201526119f39073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063f37f38f090602401602060405180830381865af41580156119cf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077191906151a5565b806020019051810190610baf91906153dd565b611a0f33610bba565b610bf5610c108361191e565b6005546040516330b8415f60e01b8152600160a01b9091046001600160601b0316600482015260009073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015611a80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa49190615118565b15611ae857600554604051631c5da14d60e11b8152600160a01b82046001600160601b031660048201526001600160a01b03909116906338bb429a906024016115a7565b506006546001600160a01b031690565b6040805160e081018252600091810182815260608083018490526080830184905260a0830184905260c083019390935281526020810191909152600082815260036020908152604091829020825160e081018452815460ff80821695830195865261010082041660608301526001600160a01b0362010000820416608083015263ffffffff600160b01b8204811660a0840152600160d01b9091041660c08201529283526001810180549192840191611bb0906150de565b80601f0160208091040260200160405190810160405280929190818152602001828054611bdc906150de565b8015611c295780601f10611bfe57610100808354040283529160200191611c29565b820191906000526020600020905b815481529060010190602001808311611c0c57829003601f168201915b5050505050815250509050919050565b60008054600160a81b900460ff16611c515750600090565b50638fb3603760e01b90565b611c6633610bba565b610bf5611c7483606e61287c565b82604051602001610be19190615415565b611c8e33610bba565b6000611c9c84846000612a23565b5090506000611cac858584612c8e565b9050611ce0611cba8661191e565b82604051602001611ccb91906149ff565b604051602081830303815290604052856128dc565b5050505050565b600654600160a01b900460ff1615611d585760405162461bcd60e51b815260206004820152602e60248201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560448201526d195b881a5b9a5d1a585b1a5e995960921b6064820152608401610e71565b611d6184612cca565b600b80546001600160a01b0319166001600160a01b0386161790556040516368aebf7b60e01b815260006004820152611e1e9073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b90602401602060405180830381865af4158015611dd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df491906151ec565b6040518060400160405280600981526020016841646d696e526f6c6560b81b8152506000806128e7565b6040516368aebf7b60e01b81526001600160401b036004820152611ec79073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__906368aebf7b90602401602060405180830381865af4158015611e78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e9c91906151ec565b6040518060400160405280600a8152602001695075626c6963526f6c6560b01b8152506000806128e7565b611ee68383604660008560405180602001604052806000815250612d41565b611ef663cb92195b60e01b612e16565b50506006805460ff60a01b1916600160a01b1790555050565b611f1833610bba565b611246611f24846115ed565b8360405160200161109d919061553f565b611f3e33610bba565b611246611f4a846115ed565b82604051602001610be191906153ad565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660dc611616565b611f9133610bba565b6040516355ee627560e01b81526001600160c01b0319841660048201526112469073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015611fee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201291906151a5565b8360405160200161109d91906151be565b60ff8381166000908152600160205260409081902054905163037c8cb160e51b81529116600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__90636f91962090602401602060405180830381865af4158015612088573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ac9190615118565b156120b657505050565b60ff80841660009081526002602090815260408083208685168452825280832085851684529091529020541661124657604051636bb20ea760e01b815260ff8085166004830152808416602483015282166044820152606401610e71565b61211d33610bba565b61124661212b84606e61287c565b8360405160200161109d9190615415565b600061214733610bba565b60006121528461191e565b905061215d816113e1565b61218557604051636777365b60e01b81526001600160401b0385166004820152602401610e71565b6000818152600360205260409020546121b490610100900460ff166121a8606490565b60ff9081169116141590565b156121dd5760405163fe229d5d60e01b81526001600160401b0385166004820152602401610e71565b6001600160401b03841660009081526008602052604090206121ff9084612990565b6113d757600b54604051631517388760e21b81526001600160401b03861660048201526001600160a01b03909116906325c471a09073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af4158015612270573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229491906151ec565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201526001600160a01b038616602482015260006044820152606401600060405180830381600087803b1580156122eb57600080fd5b505af11580156122ff573d6000803e3d6000fd5b5050506001600160401b0385166000908152600860205260409020612325915084612e3b565b506001915050610baf565b600061233b33610bba565b60006123468461191e565b9050612351816113e1565b61237957604051634cee277360e11b81526001600160401b0385166004820152602401610e71565b6001600160401b038416600090815260086020526040902061239b9084612990565b156113d757600b54604051631517388760e21b81526001600160401b03861660048201526001600160a01b039091169063b7d2b1629073__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9063545ce21c90602401602060405180830381865af415801561240d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061243191906151ec565b6040516001600160e01b031960e084901b1681526001600160401b0390911660048201526001600160a01b0386166024820152604401600060405180830381600087803b15801561248157600080fd5b505af1158015612495573d6000803e3d6000fd5b5050506001600160401b03851660009081526008602052604090206123259150846129b2565b6124c433610bba565b610bf56124d0836115ed565b82604051602001610be1919061553f565b6124ea33610bba565b6112466124f884607861287c565b8360405160200161109d919061507e565b60ff81811660009081526001602052604080822054905163b2466acf60e01b8152921660048301529073__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf9060240161142b565b6005546040805163a3bcd81d60e01b815260048101919091526013604482015272446973747269627574696f6e5365727669636560681b6064820152600360248201526000916001600160a01b03169063a3bcd81d906084016115a7565b6125bd33610bba565b610bf58282600060016128e7565b6125d433610bba565b610bf5610c1083607861287c565b6001600160401b03821660009081526008602052604081206126049083612e50565b9392505050565b61261433610bba565b610bf5610c1083606e61287c565b61262b33610bba565b610bf561263983608c61287c565b82604051602001610be191906152f0565b604051637a400b6760e11b815260ff8316600482015260ff198216602482015260009073__$c8f743efd2b4f0c9300f2558c784479d3e$__9063f48016ce906044015b602060405180830381865af41580156126aa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061260491906151a5565b6126d733610bba565b600c546001600160a01b0316156127285760405162461bcd60e51b8152602060048201526015602482015274125b9cdd185b98d954995859195c881a5cc81cd95d605a1b6044820152606401610e71565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b61275333610bba565b610bf5610c1083611f5b565b6000610baf825490565b6000806127a56127876000546001600160a01b036101009091041690565b863061279760046000898b615680565b6127a0916156aa565b612e5c565b9150915081611ce05763ffffffff811615612859576000805460ff60a81b1916600160a81b1790556127e56000546001600160a01b036101009091041690565b6001600160a01b03166394c7d7ee8686866040518463ffffffff1660e01b8152600401612814939291906156da565b600060405180830381600087803b15801561282e57600080fd5b505af1158015612842573d6000803e3d6000fd5b50506000805460ff60a81b1916905550611ce09050565b60405162d1953b60e31b81526001600160a01b0386166004820152602401610e71565b604051630711349960e31b81526001600160601b038316600482015260ff8216602482015260009073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__90633889a4c89060440161268d565b610bf58282612f68565b610bf5828261338a565b6112468383836136be565b80156128fb576128f8848484612a23565b50505b6000612908858585612c8e565b80516000908152600760205260408120805467ffffffffffffffff19166001600160401b038981169182179092556009805460018101825593527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af6004840401805460039094166008026101000a9283021990931691021790559050611ce06110cd8661191e565b6001600160a01b03811660009081526001830160205260408120541515612604565b6000612604836001600160a01b038416613b59565b60008054610100600160a81b0319166101006001600160a01b038416908102919091179091556040519081527f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9060200160405180910390a150565b6000806000612a318661191e565b9050612a3c816113e1565b92508215612a6b57612a4d8161164a565b806020019051810190612a6091906153dd565b602001519150612a6f565b8391505b856001600160401b0381161580612a8e57506001600160401b03818116145b15612ab75760405163981bf42160e01b81526001600160401b0388166004820152602401610e71565b828015612ace57506127106001600160401b038216105b15612af757604051633119b9df60e21b81526001600160401b0388166004820152602401610e71565b828015612b0f57506127106001600160401b03821610155b15612b385760405163094fb39160e01b81526001600160401b0388166004820152602401610e71565b6000612b4387613c53565b9050612b4e81613c91565b600003612b79576040516321ab17ab60e01b81526001600160401b0389166004820152602401610e71565b60008181526007602090815260409182902054825163bc1b392d60e01b81529251612c1c936001600160401b039092169273__$cd131c2b3ba46b9dbe046aaf4458b9777d$__9263bc1b392d92600480830193928290030181865af4158015612be6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c0a91906151ec565b6001600160401b039081169116141590565b8015612c4257506000818152600760205260409020546001600160401b03898116911614155b15612c835760008181526007602052604090819020549051631660fb9360e21b81526001600160401b03909116600482015260248101829052604401610e71565b505050935093915050565b60408051808201909152600080825260208201526040518060400160405280612cb685613c53565b815260200183151581525090509392505050565b60005460ff1615612d285760405162461bcd60e51b815260206004820152602260248201527f4163636573734d616e616765643a20616c726561647920696e697469616c697a604482015261195960f21b6064820152608401610e71565b612d31816129c7565b506000805460ff19166001179055565b612d826301ffc9a760e01b60005260046020527f9fe05126d2d9ecf60592e254dead906a4b2e492f36cca727682c38e9008c6ac1805460ff19166001179055565b612d8c8287613cb9565b60007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166cffffffffffffffffffffffffff1990911617600160601b60ff8816021760ff60681b1916600160681b86151502178155905060018101612dfc8382615760565b50612e0d6303fb044760e21b612e16565b50505050505050565b6001600160e01b0319166000908152600460205260409020805460ff19166001179055565b6000612604836001600160a01b038416613d33565b60006126048383613d82565b6040516001600160a01b03848116602483015283811660448301526001600160e01b03198316606483015260009182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b17905251612ecb919061581f565b600060405180830381855afa9150503d8060008114612f06576040519150601f19603f3d011682016040523d82523d6000602084013e612f0b565b606091505b50915091508115612f5d576040815110612f3d5780806020019051810190612f33919061583b565b9094509250612f5d565b6020815110612f5d5780806020019051810190612f5a9190615118565b93505b505094509492505050565b604051634b00e98f60e11b81526004810183905260009073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015612fbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fdf919061586a565b60405163b2466acf60e01b815260ff8216600482015290915073__$fb4566b39bd2075cb32f600f6f40bfaef2$__9063b2466acf90602401602060405180830381865af4158015613034573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130589190615118565b6130a45760405162461bcd60e51b815260206004820152601c60248201527f4552524f523a4b56532d3031303a545950455f554e444546494e4544000000006044820152606401610e71565b600083815260036020526040908190208054915163037c8cb160e51b815261010090920460ff1660048301529073__$2a12cf1a40369f689f3a67e70f4b31dadc$__90636f91962090602401602060405180830381865af415801561310d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131319190615118565b61317d5760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3031323a414c52454144595f435245415445440000006044820152606401610e71565b3343600061318a85612509565b6131955760646131ab565b60ff808616600090815260016020526040902054165b845460ff87811661ffff1990921691909117610100918316919091021762010000600160d01b031916620100006001600160a01b0386160263ffffffff60b01b191617600160b01b63ffffffff85169081029190911763ffffffff60d01b1916600160d01b9190910217855560008881526003602052604090209091506001016132358782615760565b50604051634b00e98f60e11b8152600481018890527ffcb75eb7b317145f986c763e1a3eab5f9b4dbaf7955504f70f986d799c3ab39d9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af41580156132a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132cc919061586a565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af415801561331c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133409190615887565b6040805160ff938416815260ff199092166020830152918416918101919091526001600160a01b038516606082015232608082015260a0015b60405180910390a150505050505050565b60405163b2466acf60e01b815260ff8216600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af41580156133dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134009190615118565b61344c5760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3034303a53544154455f554e444546494e45440000006044820152606401610e71565b600082815260036020526040908190208054915163b2466acf60e01b815261010090920460ff1660048301819052909173__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af41580156134b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134dc9190615118565b6135285760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a4b56532d3034313a4e4f545f4558495354494e470000000000006044820152606401610e71565b8154620100003390810262010000600160b01b031960ff87166101000216610100600160b01b03198416171784559063ffffffff600160b01b9091041661356c4390565b845463ffffffff91909116600160b01b0263ffffffff60b01b19909116178455604051634b00e98f60e11b8152600481018790527fe41a93c15e024a0b2371127599959a8e543dd6a8d820238e906c93a3004248fa9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af41580156135fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613622919061586a565b604051630713cfad60e31b81526004810189905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015613672573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136969190615887565b87868632876040516136ae97969594939291906158a4565b60405180910390a1505050505050565b60405163b2466acf60e01b815260ff8216600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015613710573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137349190615118565b6137805760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3032303a53544154455f554e444546494e45440000006044820152606401610e71565b600083815260036020526040908190208054915163b2466acf60e01b815261010090920460ff1660048301819052909173__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af41580156137ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138109190615118565b61385c5760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a4b56532d3032313a4e4f545f4558495354494e470000000000006044820152606401610e71565b60008581526003602052604090206001016138778582615760565b508154620100003390810262010000600160b01b031960ff87166101000216610100600160b01b03198416171784559063ffffffff600160b01b909104166138bc4390565b845463ffffffff91909116600160b01b0263ffffffff60b01b19909116178455604051634b00e98f60e11b8152600481018890527fe41a93c15e024a0b2371127599959a8e543dd6a8d820238e906c93a3004248fa9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af415801561394e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613972919061586a565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af41580156139c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139e69190615887565b87868632876040516139fe97969594939291906158a4565b60405180910390a1604051634b00e98f60e11b8152600481018890527f7bd0ab7f1746bd20a814d6705a46876c84f1aa2d35c80d8c173e268bd6d4b26c9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015613a78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a9c919061586a565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015613aec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b109190615887565b6040805160ff938416815260ff199092166020830152918816918101919091526001600160a01b038416606082015232608082015263ffffffff831660a082015260c001613379565b60008181526001830160205260408120548015613c42576000613b7d6001836158f4565b8554909150600090613b91906001906158f4565b9050808214613bf6576000866000018281548110613bb157613bb16152bd565b9060005260206000200154905080876000018481548110613bd457613bd46152bd565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080613c0757613c07615915565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610baf565b6000915050610baf565b5092915050565b600080829050601f81511115613c7e578260405163305a27a960e01b8152600401610e7191906147f7565b8051613c898261592b565b179392505050565b600060ff8216601f811115610baf57604051632cd44ac360e21b815260040160405180910390fd5b6001600160a01b038216613d0f5760405162461bcd60e51b815260206004820152601e60248201527f4e66744f776e61626c653a20696e697469616c206f776e6572206973203000006044820152606401610e71565b600680546001600160a01b0319166001600160a01b038416179055610bf581613dac565b6000818152600183016020526040812054613d7a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610baf565b506000610baf565b6000826000018281548110613d9957613d996152bd565b9060005260206000200154905092915050565b6005546001600160a01b031615613de55760055460405163fcdbf2d960e01b81526001600160a01b039091166004820152602401610e71565b6001600160a01b038116613e0c5760405163f5c4d07d60e01b815260040160405180910390fd5b806001600160a01b03163b600003613e425760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610e71565b600580546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b8152632eaf856d60e11b60048201526301ffc9a790602401602060405180830381865afa925050508015613ebc575060408051601f3d908101601f19168201909252613eb991810190615118565b60015b613ee45760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610e71565b80610bf55760405163fdeac91f60e01b81526001600160a01b0383166004820152602401610e71565b50565b600060208284031215613f2257600080fd5b81356001600160e01b03198116811461260457600080fd5b6001600160401b0381168114613f0d57600080fd5b600060208284031215613f6157600080fd5b813561260481613f3a565b600060208284031215613f7e57600080fd5b5035919050565b6001600160601b0381168114613f0d57600080fd5b8035613fa581613f85565b919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715613fe257613fe2613faa565b60405290565b604051608081016001600160401b0381118282101715613fe257613fe2613faa565b60405161012081016001600160401b0381118282101715613fe257613fe2613faa565b60405161018081016001600160401b0381118282101715613fe257613fe2613faa565b60405161020081016001600160401b0381118282101715613fe257613fe2613faa565b6001600160a01b0381168114613f0d57600080fd5b8035613fa581614073565b6000604082840312156140a557600080fd5b6140ad613fc0565b9050813581526020820135602082015292915050565b8015158114613f0d57600080fd5b8035613fa5816140c3565b600060c082840312156140ee57600080fd5b60405160a081018181106001600160401b038211171561411057614110613faa565b604052905080823561412181613f85565b8152602083013561413181614073565b60208201526141438460408501614093565b60408201526080830135614156816140c3565b606082015260a083013561416981614073565b6080919091015292915050565b60008060e0838503121561418957600080fd5b823561419481613f85565b91506141a384602085016140dc565b90509250929050565b60ff81168114613f0d57600080fd5b6000602082840312156141cd57600080fd5b8135612604816141ac565b600080604083850312156141eb57600080fd5b82356141f681613f85565b91506020830135614206816141ac565b809150509250929050565b60005b8381101561422c578181015183820152602001614214565b50506000910152565b6000815180845261424d816020860160208601614211565b601f01601f19169290920160200192915050565b6040815260006001600160601b038085511660408401528060208601511660608401525060ff604085015116608083015260608401516142a560a084018215159052565b5060808401516001600160a01b03811660c08401525060a08401516001600160a01b03811660e08401525060c084015160e06101008401526142eb610120840182614235565b905082810360208401526142ff8185614235565b95945050505050565b6000806040838503121561431b57600080fd5b823561432681614073565b91506020830135614206816140c3565b63ffffffff81168114613f0d57600080fd5b600082601f83011261435957600080fd5b81356001600160401b038082111561437357614373613faa565b604051601f8301601f19908116603f0116810190828211818310171561439b5761439b613faa565b816040528381528660208588010111156143b457600080fd5b836020870160208301376000602085830101528094505050505092915050565b803564ffffffffff81168114613fa557600080fd5b6000608082840312156143fb57600080fd5b614403613fe8565b9050813561441081614336565b81526020828101359082015260408201356001600160401b0381111561443557600080fd5b61444184828501614348565b604083015250614453606083016143d4565b606082015292915050565b6000806000806080858703121561447457600080fd5b843561447f81613f85565b9350602085013561448f81614336565b925060408501356001600160401b038111156144aa57600080fd5b6144b6878288016143e9565b92505060608501356144c7816141ac565b939692955090935050565b60008082840360608112156144e657600080fd5b83356144f181614073565b92506040601f198201121561450557600080fd5b5061450e613fc0565b602084013581526040840135614523816140c3565b6020820152919491935090915050565b6000806040838503121561454657600080fd5b823561455181613f3a565b915060208301356001600160401b0381111561456c57600080fd5b61457885828601614348565b9150509250929050565b6001600160c01b031981168114613f0d57600080fd5b8035613fa581614582565b6000604082840312156145b557600080fd5b6145bd613fc0565b905081356145ca81613f85565b815260208201356001600160401b038111156145e557600080fd5b6145f184828501614348565b60208301525092915050565b6000806040838503121561461057600080fd5b823561461b81614582565b915060208301356001600160401b0381111561463657600080fd5b614578858286016145a3565b60006020828403121561465457600080fd5b813561260481614073565b60008060006060848603121561467457600080fd5b833561467f81613f85565b9250602084013561468f81614336565b915060408401356001600160401b038111156146aa57600080fd5b6146b6868287016143e9565b9150509250925092565b600061014082840312156146d357600080fd5b6146db61400a565b90506146e682613f9a565b81526146f58360208401614093565b602082015260608201356001600160401b0381111561471357600080fd5b61471f84828501614348565b6040830152506080820135606082015260a0820135608082015260c082013560a082015260e082013560c082015261010061475b8184016143d4565b60e083015261476d61012084016143d4565b9082015292915050565b60008060006060848603121561478c57600080fd5b833561479781613f85565b925060208401356001600160401b038111156147b257600080fd5b6147be868287016146c0565b92505060408401356147cf816141ac565b809150509250925092565b6000602082840312156147ec57600080fd5b813561260481613f85565b6020815260006126046020830184614235565b6000806040838503121561481d57600080fd5b823561482881613f85565b915060208301356001600160401b0381111561484357600080fd5b614578858286016146c0565b6000610180828403121561486257600080fd5b61486a61400a565b905061487582613f9a565b815261488360208301614088565b60208201526040820135604082015261489f8360608401614093565b60608201526148b18360a08401614093565b60808201526148c38360e08401614093565b60a08201526148d561012083016140d1565b60c08201526148e761014083016140d1565b60e08201526148f96101608301614088565b61010082015292915050565b60008060006101c0848603121561491b57600080fd5b833561492681613f85565b9250614935856020860161484f565b91506101a08401356147cf816141ac565b60006080828403121561495857600080fd5b614960613fe8565b9050813581526020820135602082015260408201356001600160401b0381111561443557600080fd5b6000806000806080858703121561499f57600080fd5b84356149aa81613f85565b935060208501356149ba81614336565b925060408501356001600160401b038111156149d557600080fd5b6144b687828801614946565b600080604083850312156149f457600080fd5b82356141f681614582565b8151815260208083015115159082015260408101610baf565b60008060408385031215614a2b57600080fd5b82356141f681613f3a565b60ff815116825260ff602082015116602083015260018060a01b036040820151166040830152606081015163ffffffff808216606085015280608084015116608085015250505050565b60208152614a92602082018351614a36565b6000602083015160c080840152614aac60e0840182614235565b949350505050565b60006102408284031215614ac757600080fd5b614acf61402d565b9050614ada82614088565b8152614ae860208301614088565b6020820152614af960408301613f9a565b6040820152614b0a60608301613f9a565b6060820152614b1c8360808401614093565b6080820152614b2e8360c08401614093565b60a0820152610100614b4284828501614093565b60c0830152610140614b5685828601614093565b60e0840152614b69856101808601614093565b82840152614b7b856101c08601614093565b610120840152614b8e61020085016140d1565b9083015250614ba06102208301614088565b61016082015292915050565b6000806102608385031215614bc057600080fd5b8235614bcb81613f85565b91506141a38460208501614ab4565b600080600060608486031215614bef57600080fd5b8335614bfa81613f3a565b925060208401356001600160401b03811115614c1557600080fd5b6147be86828701614348565b60008060008060808587031215614c3757600080fd5b8435614c4281614073565b93506020850135614c5281614073565b92506040850135614c6281613f85565b915060608501356144c781614073565b803561ffff81168114613fa557600080fd5b60006102008284031215614c9757600080fd5b614c9f614050565b9050614caa82613f9a565b8152614cb860208301613f9a565b6020820152614cc960408301614598565b6040820152614cda60608301614598565b60608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e0820152610100808301356001600160401b0380821115614d2357600080fd5b614d2f86838701614348565b83850152610120925082850135915080821115614d4b57600080fd5b50614d5885828601614348565b828401525050610140614d6c818401614c72565b90820152610160614d7e838201614c72565b9082015261018082810135908201526101a0614d9b8184016143d4565b908201526101c0614dad8382016143d4565b908201526101e061476d8382016143d4565b600080600060608486031215614dd457600080fd5b8335614ddf81613f85565b925060208401356001600160401b03811115614dfa57600080fd5b6147be86828701614c84565b600080600060608486031215614e1b57600080fd5b8335614e2681613f85565b92506020840135614e3681614336565b915060408401356001600160401b03811115614e5157600080fd5b6146b686828701614946565b60a08101610baf8284614a36565b600080600060608486031215614e8057600080fd5b8335614e8b81614582565b925060208401356001600160401b03811115614ea657600080fd5b6147be868287016145a3565b600080600060608486031215614ec757600080fd5b8335614ed2816141ac565b92506020840135614ee2816141ac565b915060408401356147cf816141ac565b60008060006102808486031215614f0857600080fd5b8335614f1381613f85565b9250614f228560208601614ab4565b91506102608401356147cf816141ac565b60008060408385031215614f4657600080fd5b8235614f5181613f3a565b9150602083013561420681614073565b60008060408385031215614f7457600080fd5b8235614f7f81613f85565b915060208301356001600160401b03811115614f9a57600080fd5b61457885828601614c84565b60008060006101008486031215614fbc57600080fd5b8335614fc781613f85565b9250614fd685602086016140dc565b915060e08401356147cf816141ac565b60008060408385031215614ff957600080fd5b823561500481613f3a565b946020939093013593505050565b6000806101a0838503121561502657600080fd5b823561503181613f85565b91506141a3846020850161484f565b60ff1981168114613f0d57600080fd5b6000806040838503121561506357600080fd5b823561506e816141ac565b9150602083013561420681615040565b81516001600160601b031681526020808301516001600160a01b039081168284015260408085015180519185019190915291820151606084015260c0830191906060850151151560808501528060808601511660a0850152505092915050565b600181811c908216806150f257607f821691505b60208210810361511257634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561512a57600080fd5b8151612604816140c3565b60006020828403121561514757600080fd5b815161260481613f85565b6020815263ffffffff825116602082015260208201516040820152600060408301516080606084015261518860a0840182614235565b905064ffffffffff60608501511660808401528091505092915050565b6000602082840312156151b757600080fd5b5051919050565b602081526001600160601b03825116602082015260006020830151604080840152614aac6060840182614235565b6000602082840312156151fe57600080fd5b815161260481613f3a565b602081526152236020820183516001600160601b03169052565b60006020830151615241604084018280518252602090810151910152565b50604083015161014080608085015261525e610160850183614235565b9150606085015160a0850152608085015160c085015260a085015160e085015260c0850151610100818187015260e087015191506152a661012087018364ffffffffff169052565b9095015164ffffffffff1693019290925250919050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156152e557600080fd5b815161260481614073565b81516001600160601b0316815260208083015161018083019161531d908401826001600160a01b03169052565b50604083015160408301526060830151615344606084018280518252602090810151910152565b506080830151805160a0840152602081015160c08401525060a0830151805160e084015260208101516101008401525060c08301518015156101208401525060e0830151801515610140840152506101008301516001600160a01b038116610160840152613c4c565b602081528151602082015260208201516040820152600060408301516080606084015261518860a0840182614235565b6000604082840312156153ef57600080fd5b6153f7613fc0565b825181526020830151615409816140c3565b60208201529392505050565b81516001600160a01b031681526102408101602083015161544160208401826001600160a01b03169052565b50604083015161545c60408401826001600160601b03169052565b50606083015161547760608401826001600160601b03169052565b506080830151615494608084018280518252602090810151910152565b5060a0830151805160c0840152602081015160e08401525060c08301516101006154ca8185018380518252602090810151910152565b60e085015191506101406154ea8186018480518252602090810151910152565b9085015180516101808601526020908101516101a086015261012086015180516101c087015201516101e08501528401511515610200840152506101608301516001600160a01b038116610220840152613c4c565b602081526155596020820183516001600160601b03169052565b6000602083015161557560408401826001600160601b03169052565b5060408301516001600160c01b0319811660608401525060608301516001600160c01b03198116608084015250608083015160a083015260a083015160c083015260c083015160e083015260e083015161010081818501528085015191505061020061012081818601526155ed610220860184614235565b9250808601519050610140601f19868503018187015261560d8483614235565b9350808701519150506101606156288187018361ffff169052565b860151905061018061563f8682018361ffff169052565b8601516101a08681019190915286015190506101c06156668187018364ffffffffff169052565b86015190506101e06152a68682018364ffffffffff169052565b6000808585111561569057600080fd5b8386111561569d57600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156156d25780818660040360031b1b83161692505b505092915050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b601f82111561124657600081815260208120601f850160051c810160208610156157415750805b601f850160051c820191505b8181101561106f5782815560010161574d565b81516001600160401b0381111561577957615779613faa565b61578d8161578784546150de565b8461571a565b602080601f8311600181146157c257600084156157aa5750858301515b600019600386901b1c1916600185901b17855561106f565b600085815260208120601f198616915b828110156157f1578886015182559484019460019091019084016157d2565b508582101561580f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008251615831818460208701614211565b9190910192915050565b6000806040838503121561584e57600080fd5b8251615859816140c3565b602084015190925061420681614336565b60006020828403121561587c57600080fd5b8151612604816141ac565b60006020828403121561589957600080fd5b815161260481615040565b60ff978816815260ff1996909616602087015293861660408601529190941660608401526001600160a01b03938416608084015290921660a082015263ffffffff9190911660c082015260e00190565b81810381811115610baf57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b805160208083015191908110156151125760001960209190910360031b1b1691905056fea2646970667358221220693a19cdc3b97cd5dc472a3b90bdb9556100788f99ca5a9d9062afa0dd2e730164736f6c63430008140033",
3096
+ "bytecode": "0x60806040523480156200001157600080fd5b506200001c62000040565b62000026620001f7565b6200003062000331565b6200003a6200059e565b62000717565b60dc600090815260026020527f4bee8dc518469fb8c73831886b94afa96b3ef3e3ee55b9076720259192220ef0805460ff191660641790556001906003906200008760dc90565b60ff1660ff1681526020019081526020016000206000620000ad620006e560201b60201c565b60ff1660ff1681526020019081526020016000206000620000d3620006ef60201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906003906200010760dc90565b60ff1660ff16815260200190815260200160002060006200012d620006ef60201b60201c565b60ff1660ff168152602001908152602001600020600062000153620006e560201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906003906200018760dc90565b60ff1660ff1681526020019081526020016000206000620001ad620006ef60201b60201c565b60ff1660ff1681526020019081526020016000206000620001d3620006f460201b60201c565b60ff1681526020810191909152604001600020805460ff1916911515919091179055565b7f7673bcbb3401a7cbae68f81d40eea2cf35afdaf7ecd016ebf3f02857fcc1260a8054606460ff1991821681179092557fa1c69de77e78d12e062170d002ba111ba52c8f452f3b0ca326991b7298fd7aaf8054909116600190811790915560009182526003602052907f6b16ef514f22b74729cbea5cc7babfecbdc2309e530ca716643d11fe929eed2e906200028b606e90565b60ff1660ff1681526020019081526020016000206000620002b1620006e560201b60201c565b60ff16815260208101919091526040016000908120805460ff191692151592909217909155600190600390620002e5606490565b60ff1660ff16815260200190815260200160002060006200030b620006ef60201b60201c565b60ff1660ff1681526020019081526020016000206000620001d3620006f960201b60201c565b60d3600090815260026020527feb6856e0ae0d71a8a9e0bc42aca98fe96c3be13699c5c2d551c94a190e39043d805460ff1916600a1790556001906003906200037860d390565b60ff1660ff16815260200190815260200160002060006200039e620006fe60201b60201c565b60ff1660ff1681526020019081526020016000206000620003c46200070360201b60201c565b60ff16815260208101919091526040016000908120805460ff191692151592909217909155600190600390620003f860d390565b60ff1660ff16815260200190815260200160002060006200041e620006fe60201b60201c565b60ff1660ff1681526020019081526020016000206000620004446200070860201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906003906200047860d390565b60ff1660ff16815260200190815260200160002060006200049e620006fe60201b60201c565b60ff1660ff1681526020019081526020016000206000620004c46200070d60201b60201c565b60ff16815260208101919091526040016000908120805460ff191692151592909217909155600190600390620004f860d390565b60ff1660ff16815260200190815260200160002060006200051e6200070d60201b60201c565b60ff1660ff168152602001908152602001600020600062000544620006e560201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906003906200057860d390565b60ff1660ff1681526020019081526020016000206000620001ad620006e560201b60201c565b60c8600090815260026020527fec56eb74d500f9b1bf8f0c5cc42ff5ed51e8d9e3a2ebb6e83a26383f297e0f1e805460ff19166064179055600190600390620005e560c890565b60ff1660ff16815260200190815260200160002060006200060b620006e560201b60201c565b60ff1660ff168152602001908152602001600020600062000631620006ef60201b60201c565b60ff16815260208101919091526040016000908120805460ff1916921515929092179091556001906003906200066560c890565b60ff1660ff16815260200190815260200160002060006200068b620006ef60201b60201c565b60ff1660ff1681526020019081526020016000206000620006b1620006e560201b60201c565b60ff16815260208101919091526040016000908120805460ff191692151592909217909155600190600390620002e560c890565b606490565b905090565b606e90565b60c890565b60d290565b600a90565b601490565b601e90565b60006028620006ea565b6151fd80620007276000396000f3fe608060405234801561001057600080fd5b50600436106104a15760003560e01c8063675393bf1161026d578063b405b76f11610151578063dee32623116100ce578063f651dcac11610092578063f651dcac14610b3d578063f7bc431c14610b50578063f7c34ee014610b63578063fa145b6d14610b76578063fe1f18d614610b89578063fed3d63f14610b9c57600080fd5b8063dee3262314610ad1578063e1033e7d14610ae4578063e9e96c7014610aec578063f21de1e8146107f1578063f48016ce14610b2a57600080fd5b8063ca600b1c11610115578063ca600b1c14610a88578063ccdcd37f14610a90578063cde749f414610aa3578063cf947d2014610aab578063d2f21a2914610abe57600080fd5b8063b405b76f14610a47578063b6d7cd6214610a5a578063bf1db3f914610a6d578063bf7e214f14610a80578063c29948fc146105fe57600080fd5b8063976b0a77116101ea578063a8989675116101ae578063a8989675146109e6578063a9cea142146109f9578063ada9652e14610a0c578063afa5e13014610798578063afcc743914610a21578063b3260e9314610a3457600080fd5b8063976b0a77146108fc5780639df0280b146105a8578063a13df2ab1461090f578063a5961b4c14610922578063a76ee018146109d357600080fd5b80637cef4842116102315780637cef48421461088d578063893d20e8146108a05780638eaa6ac0146108a85780638fb36037146108c857806391ff6eaa146108e957600080fd5b8063675393bf146108445780636b9bf08b1461085757806375b238fc1461085f5780637a9e5e4b146108675780637b8c388f1461087a57600080fd5b806336fc697e11610394578063468a1867116103115780635772b101116102d55780635772b101146107de5780635ab1bd53146107f15780635d4345cc146105a85780635dfa73db1461080257806361f5f4201461080b578063644c45e01461081c57600080fd5b8063468a18671461077257806351cf2fd0146107855780635378cd3c1461079857806354d747a8146107ab57806354f6127f146107be57600080fd5b80633e35aba8116103585780633e35aba81461071e57806340529b0f14610731578063422c9d00146107445780634288121d14610757578063447fc48f1461075f57600080fd5b806336fc697e146106ad57806337f135d7146106b557806338a699a4146106d25780633c0d6a41146106e55780633ca7c02a146106f857600080fd5b806312aa0b2a11610422578063214cdb80116103e6578063214cdb80146106595780632781d4431461066c57806327953f481461067457806327bb7a33146106875780632f61088a1461069a57600080fd5b806312aa0b2a146105e3578063138461e0146105f65780631518afb9146105fe5780631b38d5f4146106115780631eff4b221461063257600080fd5b80630f03144a116104695780630f03144a146105825780630f526f7d146105955780630fad0eb1146105a85780630fec111c146105bb5780631204b553146105d057600080fd5b806301ffc9a7146104a657806302cd3071146104e857806309648a9d1461050d57806309fb1d08146105475780630d3581811461055c575b600080fd5b6104d36104b4366004613365565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b6006546001600160a01b03165b6040516001600160a01b0390911681526020016104df565b61053561051b36600461338f565b600090815260046020526040902054610100900460ff1690565b60405160ff90911681526020016104df565b61055a61055536600461360d565b610ba4565b005b61053561056a366004613659565b60ff9081166000908152600260205260409020541690565b61055a6105903660046137de565b610bea565b61055a6105a336600461382d565b610c28565b61055a6105b636600461382d565b610c45565b6105c3610c5a565b6040516104df91906138b6565b61055a6105de366004613941565b610e09565b61055a6105f1366004613999565b610e2f565b61055a610e57565b61055a61060c366004613b4e565b61105e565b61062461061f366004613b95565b611084565b6040519081526020016104df565b6106247f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b61055a610667366004613365565b611123565b610624600381565b61055a610682366004613ca2565b611150565b61055a610695366004613cde565b61116e565b61055a6106a8366004613dd0565b6111fa565b61055a611295565b6106bd600081565b60405163ffffffff90911681526020016104df565b6104d36106e036600461338f565b6112db565b61055a6106f3366004613e8c565b61136a565b6107066001600160401b0381565b6040516001600160401b0390911681526020016104df565b61062461072c366004613b95565b611390565b61055a61073f36600461382d565b6113bd565b61055a610752366004613eed565b6113d2565b6104f561150f565b61055a61076d366004613f0a565b6115a2565b610624610780366004613b95565b6115ce565b61055a61079336600461400d565b6115fb565b61055a6107a6366004614054565b611621565b61055a6107b9366004614135565b611634565b6107d16107cc36600461338f565b611652565b6040516104df9190614171565b61055a6107ec3660046141c7565b6116f7565b6001546001600160a01b03166104f5565b61070661271081565b6007546001600160a01b03166104f5565b600080516020615188833981519152546040516001600160601b0390911681526020016104df565b61055a610852366004613eed565b61171d565b6104f5611829565b610706600081565b61055a610875366004613eed565b611852565b610624610888366004613b95565b6118d5565b61055a61089b36600461421f565b611902565b6104f561198c565b6108bb6108b636600461338f565b611ac3565b6040516104df9190614287565b6108d0611c04565b6040516001600160e01b031990911681526020016104df565b61055a6108f736600461439f565b611c3c565b61055a61090a3660046143cd565b611c64565b61062461091d366004613b95565b611da4565b6109c661093036600461338f565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915250600090815260046020908152604091829020825160a081018452905460ff8082168352610100820416928201929092526001600160a01b03620100008304169281019290925263ffffffff600160b01b820481166060840152600160d01b90910416608082015290565b6040516104df919061441e565b61055a6109e136600461442c565b611dd1565b61055a6109f4366004614473565b611e6c565b61055a610a073660046144b3565b611f5d565b61062460008051602061518883398151915281565b61055a610a2f3660046144f4565b611f85565b61055a610a42366004614539565b611fab565b61055a610a55366004614577565b611fc9565b61055a610a683660046145bc565b611fef565b6104d3610a7b366004613659565b612004565b6104f5612051565b6104f561206d565b61055a610a9e366004614648565b612096565b6105356120be565b61055a610ab9366004614687565b612135565b61055a610acc36600461382d565b612153565b61055a610adf36600461382d565b61216a565b6104f5612181565b6104d3610afa366004614473565b60ff9283166000908152600360209081526040808320948616835293815283822092851682529190915220541690565b610624610b383660046146d5565b6121aa565b61055a610b4b366004614703565b612235565b61055a610b5e366004613eed565b61225d565b61055a610b71366004614730565b61234a565b61055a610b8436600461475e565b6123c1565b61055a610b9736600461382d565b6123e7565b6104f56123fc565b610bb1335b600036612425565b610be5610bbf84608c61252b565b83604051602001610bd091906147b5565b60405160208183030381529060405283612577565b505050565b610bf333610ba9565b610c24610bff83611da4565b82604051602001610c1091906148ae565b604051602081830303815290604052612582565b5050565b610c3133610ba9565b610c24610c3f83608c61252b565b8261258c565b610c4e33610ba9565b610c24610c3f836115ce565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820152907f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa3006040805160808101825282546001600160601b038116825260ff600160601b820481166020840152600160681b90910416151591810191909152600182018054919291606084019190610d059061496a565b80601f0160208091040260200160405190810160405280929190818152602001828054610d319061496a565b8015610d7e5780601f10610d5357610100808354040283529160200191610d7e565b820191906000526020600020905b815481529060010190602001808311610d6157829003601f168201915b50505050508152505090506040518060e00160405280610d9c600090565b6001600160601b0316815260200182600001516001600160601b03168152602001826020015160ff168152602001826040015115158152602001306001600160a01b03168152602001610ded61198c565b6001600160a01b03168152602001826060015181525091505090565b610e1233610ba9565b610be5610e1e84611da4565b83604051602001610bd091906148ae565b610e3833610ba9565b610c24610e4683608c61252b565b82604051602001610c1091906147b5565b600060008051602061518883398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015610ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eea91906149a4565b15610f1b5780546040516301ab8b6760e21b81526001600160601b0390911660048201526024015b60405180910390fd5b30610f2e6001546001600160a01b031690565b60405163c3c5a54760e01b81526001600160a01b038381166004830152919091169063c3c5a54790602401602060405180830381865afa158015610f76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9a91906149a4565b610fc25760405163b9304b0d60e01b81526001600160a01b0382166004820152602401610f12565b6001546001600160a01b0316604051636939560f60e11b81526001600160a01b038381166004830152919091169063d272ac1e90602401602060405180830381865afa158015611016573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103a91906149c1565b82546bffffffffffffffffffffffff19166001600160601b03919091161790915550565b61106733610ba9565b610be5611073846115ce565b83604051602001610bd091906149de565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660795b6040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865af41580156110f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111d9190614b2c565b92915050565b61112b612596565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b61115933610ba9565b610c248282604051602001610c109190614b45565b611176612596565b611180828761234a565b60007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166cffffffffffffffffffffffffff1990911617600160601b60ff8816021760ff60681b1916600160681b861515021781559050600181016111f08382614c3b565b5050505050505050565b61120333610ba9565b6040516355ee627560e01b81526001600160c01b031983166004820152610c249073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015611260573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112849190614b2c565b82604051602001610c109190614cfa565b61129d612596565b6301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b600081815260046020819052604080832054905163b2466acf60e01b815261010090910460ff169181019190915273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf906024015b602060405180830381865af4158015611346573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111d91906149a4565b61137333610ba9565b610be561137f846115ce565b82604051602001610c109190614d28565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660786110ad565b6113c633610ba9565b610c24610c3f836118d5565b6113db33610ba9565b6007546001600160a01b03161561142b5760405162461bcd60e51b8152602060048201526014602482015273109d5b991b1953585b9859d95c881a5cc81cd95d60621b6044820152606401610f12565b306001600160a01b0316816001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611473573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114979190614d79565b6001600160a01b0316146114ed5760405162461bcd60e51b815260206004820152601f60248201527f42756e646c654d616e6167657220696e7374616e6365206d69736d61746368006044820152606401610f12565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b60006115236001546001600160a01b031690565b6001600160a01b031663d39e6043606e5b6040516001600160e01b031960e084901b16815260ff909116600482015260036024820152604401602060405180830381865afa158015611579573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159d9190614d79565b905090565b6115ab33610ba9565b6115c86115b7856115ce565b83604051602001610bd09190614d28565b50505050565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660d36110ad565b61160433610ba9565b610be5611610846118d5565b83604051602001610bd09190614d96565b61162a33610ba9565b610c24828261258c565b61163d33610ba9565b610c248282604051602001610c109190614dd3565b60008181526004602052604090206001018054606091906116729061496a565b80601f016020809104026020016040519081016040528092919081815260200182805461169e9061496a565b80156116eb5780601f106116c0576101008083540402835291602001916116eb565b820191906000526020600020905b8154815290600101906020018083116116ce57829003601f168201915b50505050509050919050565b61170033610ba9565b6115c861170c856115ce565b83604051602001610bd09190614e6e565b611725612596565b806001600160a01b03163b60000361175b5760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610f12565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b815263230c0c8160e11b60048201526301ffc9a790602401602060405180830381865afa9250505080156117d5575060408051601f3d908101601f191682019092526117d2918101906149a4565b60015b6117fd5760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610f12565b80610c245760405163fdeac91f60e01b81526001600160a01b0383166004820152602401610f12565b50565b600061183d6001546001600160a01b031690565b6001600160a01b031663d39e6043608c611534565b3361185b612051565b6001600160a01b0316816001600160a01b0316146118965760405162d1953b60e31b81526001600160a01b0382166004820152602401610f12565b816001600160a01b03163b6000036118cc576040516361798f2f60e11b81526001600160a01b0383166004820152602401610f12565b610c24826125e1565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b038416607a6110ad565b61190b33610ba9565b6040516355ee627560e01b81526001600160c01b031983166004820152610c249073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015611968573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3f9190614b2c565b60008060008051602061518883398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af41580156119fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2091906149a4565b15611aad576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015611a83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa79190614d79565b91505090565b54600160601b90046001600160a01b0316919050565b6040805160e081018252600091810182815260608083018490526080830184905260a0830184905260c083019390935281526020810191909152600082815260046020908152604091829020825160e081018452815460ff80821695830195865261010082041660608301526001600160a01b0362010000820416608083015263ffffffff600160b01b8204811660a0840152600160d01b9091041660c08201529283526001810180549192840191611b7b9061496a565b80601f0160208091040260200160405190810160405280929190818152602001828054611ba79061496a565b8015611bf45780601f10611bc957610100808354040283529160200191611bf4565b820191906000526020600020905b815481529060010190602001808311611bd757829003601f168201915b5050505050815250509050919050565b6000805160206151a8833981519152805460009190600160a01b900460ff16611c2e576000611aa7565b638fb3603760e01b91505090565b611c4533610ba9565b610c24611c5383606e61252b565b82604051602001610c109190614e9e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015611ca95750825b90506000826001600160401b03166001148015611cc55750303b155b905081158015611cd3575080155b15611cf15760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611d1b57845460ff60401b1916600160401b1785555b611d2489612642565b611d438888604660008a6040518060200160405280600081525061116e565b611d5363119e767960e11b611123565b8315611d9957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660dc6110ad565b611dda33610ba9565b6040516355ee627560e01b81526001600160c01b031984166004820152610be59073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015611e37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5b9190614b2c565b83604051602001610bd09190614cfa565b60ff8381166000908152600260205260409081902054905163037c8cb160e51b81529116600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__90636f91962090602401602060405180830381865af4158015611ed1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef591906149a4565b15611eff57505050565b60ff808416600090815260036020908152604080832086851684528252808320858516845290915290205416610be557604051636bb20ea760e01b815260ff8085166004830152808416602483015282166044820152606401610f12565b611f6633610ba9565b610be5611f7484606e61252b565b83604051602001610bd09190614e9e565b611f8e33610ba9565b610c24611f9a836115ce565b82604051602001610c1091906149de565b611fb433610ba9565b610be58383604051602001610bd09190614b45565b611fd233610ba9565b610c24611fde836118d5565b82604051602001610c109190614d96565b611ff833610ba9565b610be5610c3f846115ce565b60ff81811660009081526002602052604080822054905163b2466acf60e01b8152921660048301529073__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401611329565b6000805160206151a8833981519152546001600160a01b031690565b60006120816001546001600160a01b031690565b6001600160a01b031663d39e60436078611534565b61209f33610ba9565b610be56120ad84607861252b565b83604051602001610bd09190614fc8565b604051632392b61b60e21b81526003600482015260009073__$9dab98ad7ae1a426029e5739f922230a41$__90638e4ad86c90602401602060405180830381865af4158015612111573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159d9190615018565b61213e33610ba9565b610be58383604051602001610bd09190614dd3565b61215c33610ba9565b610c24610c3f83607861252b565b61217333610ba9565b610c24610c3f83606e61252b565b60006121956001546001600160a01b031690565b6001600160a01b031663d39e604360d3611534565b604051637a400b6760e11b815260ff8316600482015260ff198216602482015260009073__$c8f743efd2b4f0c9300f2558c784479d3e$__9063f48016ce906044015b602060405180830381865af415801561220a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061222e9190614b2c565b9392505050565b61223e33610ba9565b610c2461224c83607861252b565b82604051602001610c109190614fc8565b61226633610ba9565b306001600160a01b0316816001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d29190614d79565b6001600160a01b0316146123285760405162461bcd60e51b815260206004820181905260248201527f496e7374616e636552656164657220696e7374616e6365206d69736d617463686044820152606401610f12565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b612352612596565b61235b8161171d565b612363611295565b6001600160a01b03821661238a5760405163f17ef42d60e01b815260040160405180910390fd5b5060008051602061518883398151915280546001600160601b0316600160601b6001600160a01b0390931692909202919091179055565b6123ca33610ba9565b610be56123d6846115ce565b82604051602001610c109190614e6e565b6123f033610ba9565b610c24610c3f83611da4565b60006124106001546001600160a01b031690565b6001600160a01b031663d39e604360dc611534565b6000805160206151a8833981519152600080612460612442612051565b8730612452600460008a8c615035565b61245b9161505f565b612653565b91509150816125235763ffffffff81161561250057825460ff60a01b1916600160a01b17835561248e612051565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b81526004016124bd9392919061508f565b600060405180830381600087803b1580156124d757600080fd5b505af11580156124eb573d6000803e3d6000fd5b5050845460ff60a01b19168555506125239050565b60405162d1953b60e31b81526001600160a01b0387166004820152602401610f12565b505050505050565b604051630711349960e31b81526001600160601b038316600482015260ff8216602482015260009073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__90633889a4c8906044016121ed565b610be583838361275f565b610c248282612c07565b610c248282613020565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166125df57604051631afcd79f60e31b815260040160405180910390fd5b565b6000805160206151a883398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b61264a612596565b61182681613354565b6040516001600160a01b03848116602483015283811660448301526001600160e01b03198316606483015260009182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b179052516126c291906150cf565b600060405180830381855afa9150503d80600081146126fd576040519150601f19603f3d011682016040523d82523d6000602084013e612702565b606091505b50915091508115612754576040815110612734578080602001905181019061272a91906150eb565b9094509250612754565b6020815110612754578080602001905181019061275191906149a4565b93505b505094509492505050565b60405163b2466acf60e01b815260ff8216600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af41580156127b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127d591906149a4565b6128215760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3032303a53544154455f554e444546494e45440000006044820152606401610f12565b6000838152600460208190526040918290208054925163b2466acf60e01b815261010090930460ff169183018290529173__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af415801561288d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b191906149a4565b6128fd5760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a4b56532d3032313a4e4f545f4558495354494e470000000000006044820152606401610f12565b60008581526004602052604090206001016129188582614c3b565b508154620100003390810262010000600160b01b031960ff87166101000216610100600160b01b03198416171784559063ffffffff600160b01b9091041661295d4390565b845463ffffffff91909116600160b01b0263ffffffff60b01b19909116178455604051634b00e98f60e11b8152600481018890527fe41a93c15e024a0b2371127599959a8e543dd6a8d820238e906c93a3004248fa9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af41580156129ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a139190615018565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015612a63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a87919061511a565b8786863287604051612a9f9796959493929190615137565b60405180910390a1604051634b00e98f60e11b8152600481018890527f7bd0ab7f1746bd20a814d6705a46876c84f1aa2d35c80d8c173e268bd6d4b26c9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015612b19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b3d9190615018565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015612b8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bb1919061511a565b6040805160ff938416815260ff199092166020830152918816918101919091526001600160a01b038416606082015232608082015263ffffffff831660a082015260c0015b60405180910390a150505050505050565b604051634b00e98f60e11b81526004810183905260009073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015612c5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c7e9190615018565b60405163b2466acf60e01b815260ff8216600482015290915073__$fb4566b39bd2075cb32f600f6f40bfaef2$__9063b2466acf90602401602060405180830381865af4158015612cd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf791906149a4565b612d435760405162461bcd60e51b815260206004820152601c60248201527f4552524f523a4b56532d3031303a545950455f554e444546494e4544000000006044820152606401610f12565b6000838152600460208190526040918290208054925163037c8cb160e51b815261010090930460ff16918301919091529073__$2a12cf1a40369f689f3a67e70f4b31dadc$__90636f91962090602401602060405180830381865af4158015612db0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd491906149a4565b612e205760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3031323a414c52454144595f435245415445440000006044820152606401610f12565b33436000612e2d85612004565b612e38576064612e4e565b60ff808616600090815260026020526040902054165b845460ff87811661ffff1990921691909117610100918316919091021762010000600160d01b031916620100006001600160a01b0386160263ffffffff60b01b191617600160b01b63ffffffff85169081029190911763ffffffff60d01b1916600160d01b919091021785556000888152600460205260409020909150600101612ed88782614c3b565b50604051634b00e98f60e11b8152600481018890527ffcb75eb7b317145f986c763e1a3eab5f9b4dbaf7955504f70f986d799c3ab39d9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015612f4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f6f9190615018565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015612fbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fe3919061511a565b6040805160ff938416815260ff199092166020830152918416918101919091526001600160a01b038516606082015232608082015260a001612bf6565b60405163b2466acf60e01b815260ff8216600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015613072573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061309691906149a4565b6130e25760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3034303a53544154455f554e444546494e45440000006044820152606401610f12565b6000828152600460208190526040918290208054925163b2466acf60e01b815261010090930460ff169183018290529173__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af415801561314e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061317291906149a4565b6131be5760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a4b56532d3034313a4e4f545f4558495354494e470000000000006044820152606401610f12565b8154620100003390810262010000600160b01b031960ff87166101000216610100600160b01b03198416171784559063ffffffff600160b01b909104166132024390565b845463ffffffff91909116600160b01b0263ffffffff60b01b19909116178455604051634b00e98f60e11b8152600481018790527fe41a93c15e024a0b2371127599959a8e543dd6a8d820238e906c93a3004248fa9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015613294573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132b89190615018565b604051630713cfad60e31b81526004810189905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015613308573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061332c919061511a565b87868632876040516133449796959493929190615137565b60405180910390a1505050505050565b61335c612596565b611826816125e1565b60006020828403121561337757600080fd5b81356001600160e01b03198116811461222e57600080fd5b6000602082840312156133a157600080fd5b5035919050565b6001600160601b038116811461182657600080fd5b80356133c8816133a8565b919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715613405576134056133cd565b60405290565b60405161018081016001600160401b0381118282101715613405576134056133cd565b60405161012081016001600160401b0381118282101715613405576134056133cd565b60405161020081016001600160401b0381118282101715613405576134056133cd565b604051608081016001600160401b0381118282101715613405576134056133cd565b60405160e081016001600160401b0381118282101715613405576134056133cd565b6001600160a01b038116811461182657600080fd5b80356133c8816134b8565b801515811461182657600080fd5b80356133c8816134d8565b60006040828403121561350357600080fd5b61350b6133e3565b9050813581526020820135602082015292915050565b60006101e0828403121561353457600080fd5b61353c61340b565b9050613547826133bd565b8152613555602083016134cd565b602082015260408201356040820152613570606083016134e6565b6060820152613581608083016134e6565b608082015261359260a083016134e6565b60a082015260c082013560c082015260e082013560e08201526101006135ba848285016134f1565b908201526101406135cd848483016134f1565b6101208301526135e18461018085016134f1565b908201526135f26101c083016134cd565b61016082015292915050565b60ff8116811461182657600080fd5b6000806000610220848603121561362357600080fd5b833561362e816133a8565b925061363d8560208601613521565b915061020084013561364e816135fe565b809150509250925092565b60006020828403121561366b57600080fd5b813561222e816135fe565b600082601f83011261368757600080fd5b81356001600160401b03808211156136a1576136a16133cd565b604051601f8301601f19908116603f011681019082821181831017156136c9576136c96133cd565b816040528381528660208588010111156136e257600080fd5b836020870160208301376000602085830101528094505050505092915050565b64ffffffffff8116811461182657600080fd5b80356133c881613702565b6000610140828403121561373357600080fd5b61373b61342e565b9050613746826133bd565b815261375583602084016134f1565b602082015260608201356001600160401b0381111561377357600080fd5b61377f84828501613676565b6040830152506080820135606082015260a0820135608082015260c082013560a08201526137af60e08301613715565b60c08201526101006137c2818401613715565b60e08301526137d46101208401613715565b9082015292915050565b600080604083850312156137f157600080fd5b82356137fc816133a8565b915060208301356001600160401b0381111561381757600080fd5b61382385828601613720565b9150509250929050565b6000806040838503121561384057600080fd5b823561384b816133a8565b9150602083013561385b816135fe565b809150509250929050565b60005b83811015613881578181015183820152602001613869565b50506000910152565b600081518084526138a2816020860160208601613866565b601f01601f19169290920160200192915050565b6020815260006001600160601b038084511660208401528060208501511660408401525060ff604084015116606083015260608301511515608083015260018060a01b0360808401511660a083015260a083015161391f60c08401826001600160a01b03169052565b5060c083015160e08084015261393961010084018261388a565b949350505050565b60008060006060848603121561395657600080fd5b8335613961816133a8565b925060208401356001600160401b0381111561397c57600080fd5b61398886828701613720565b925050604084013561364e816135fe565b60008061020083850312156139ad57600080fd5b82356139b8816133a8565b91506139c78460208501613521565b90509250929050565b6001600160c01b03198116811461182657600080fd5b80356133c8816139d0565b61ffff8116811461182657600080fd5b80356133c8816139f1565b60006102008284031215613a1f57600080fd5b613a27613451565b9050613a32826133bd565b8152613a40602083016133bd565b6020820152613a51604083016139e6565b6040820152613a62606083016139e6565b60608201526080820135608082015260a082013560a082015260c082013560c0820152613a9160e08301613715565b60e0820152610100808301356001600160401b0380821115613ab257600080fd5b613abe86838701613676565b83850152610120925082850135915080821115613ada57600080fd5b50613ae785828601613676565b828401525050610140613afb818401613a01565b90820152610160613b0d838201613a01565b9082015261018082810135908201526101a0613b2a818401613715565b908201526101c0613b3c838201613715565b908201526101e06137d4838201613715565b600080600060608486031215613b6357600080fd5b8335613b6e816133a8565b925060208401356001600160401b03811115613b8957600080fd5b61398886828701613a0c565b600060208284031215613ba757600080fd5b813561222e816133a8565b63ffffffff8116811461182657600080fd5b80356133c881613bb2565b60006101208284031215613be257600080fd5b613bea61342e565b905081356001600160401b0380821115613c0357600080fd5b613c0f85838601613676565b8352602084013560208401526040840135604084015260608401356060840152613c3b60808501613bc4565b6080840152613c4c60a08501613bc4565b60a0840152613c5d60c085016134e6565b60c0840152613c6e60e085016134e6565b60e084015261010091508184013581811115613c8957600080fd5b613c9586828701613676565b8385015250505092915050565b60008060408385031215613cb557600080fd5b8235915060208301356001600160401b03811115613cd257600080fd5b61382385828601613bcf565b60008060008060008060c08789031215613cf757600080fd5b8635613d02816134b8565b95506020870135613d12816133a8565b94506040870135613d22816135fe565b93506060870135613d32816134d8565b92506080870135613d42816134b8565b915060a08701356001600160401b03811115613d5d57600080fd5b613d6989828a01613676565b9150509295509295509295565b600060408284031215613d8857600080fd5b613d906133e3565b90508135613d9d816133a8565b815260208201356001600160401b03811115613db857600080fd5b613dc484828501613676565b60208301525092915050565b60008060408385031215613de357600080fd5b8235613dee816139d0565b915060208301356001600160401b03811115613e0957600080fd5b61382385828601613d76565b600060808284031215613e2757600080fd5b613e2f613474565b90508135613e3c816139f1565b81526020828101359082015260408201356001600160401b03811115613e6157600080fd5b613e6d84828501613676565b6040830152506060820135613e8181613702565b606082015292915050565b600080600060608486031215613ea157600080fd5b8335613eac816133a8565b92506020840135613ebc81613bb2565b915060408401356001600160401b03811115613ed757600080fd5b613ee386828701613e15565b9150509250925092565b600060208284031215613eff57600080fd5b813561222e816134b8565b60008060008060808587031215613f2057600080fd5b8435613f2b816133a8565b93506020850135613f3b81613bb2565b925060408501356001600160401b03811115613f5657600080fd5b613f6287828801613e15565b9250506060850135613f73816135fe565b939692955090935050565b600060608284031215613f9057600080fd5b604051606081016001600160401b038282108183111715613fb357613fb36133cd565b8160405282935084359150613fc7826139d0565b908252602084013590613fd9826134d8565b8160208401526040850135915080821115613ff357600080fd5b5061400085828601613676565b6040830152505092915050565b60008060006060848603121561402257600080fd5b833561402d816133a8565b925060208401356001600160401b0381111561404857600080fd5b61398886828701613f7e565b6000806040838503121561406757600080fd5b82359150602083013561385b816135fe565b600060e0828403121561408b57600080fd5b614093613496565b905061409e826133bd565b815260208201356001600160401b03808211156140ba57600080fd5b6140c685838601613676565b6020840152604084013560408401526140e160608501613bc4565b60608401526140f260808501613bc4565b608084015261410360a08501613715565b60a084015260c084013591508082111561411c57600080fd5b5061412984828501613676565b60c08301525092915050565b6000806040838503121561414857600080fd5b8235915060208301356001600160401b0381111561416557600080fd5b61382385828601614079565b60208152600061222e602083018461388a565b60006080828403121561419657600080fd5b61419e613474565b9050813581526020820135602082015260408201356001600160401b03811115613e6157600080fd5b600080600080608085870312156141dd57600080fd5b84356141e8816133a8565b935060208501356141f8816139f1565b925060408501356001600160401b0381111561421357600080fd5b613f6287828801614184565b6000806040838503121561423257600080fd5b823561384b816139d0565b60ff815116825260ff602082015116602083015260018060a01b036040820151166040830152606081015163ffffffff808216606085015280608084015116608085015250505050565b6020815261429960208201835161423d565b6000602083015160c08084015261393960e084018261388a565b600061024082840312156142c657600080fd5b6142ce61340b565b90506142d9826134cd565b81526142e7602083016134cd565b60208201526142f8604083016133bd565b6040820152614309606083016133bd565b606082015261431b83608084016134f1565b608082015261432d8360c084016134f1565b60a0820152610100614341848285016134f1565b60c0830152610140614355858286016134f1565b60e08401526143688561018086016134f1565b8284015261437a856101c086016134f1565b61012084015261438d61020085016134e6565b90830152506135f261022083016134cd565b60008061026083850312156143b357600080fd5b82356143be816133a8565b91506139c784602085016142b3565b600080600080608085870312156143e357600080fd5b84356143ee816134b8565b935060208501356143fe816134b8565b9250604085013561440e816133a8565b91506060850135613f73816134b8565b60a0810161111d828461423d565b60008060006060848603121561444157600080fd5b833561444c816139d0565b925060208401356001600160401b0381111561446757600080fd5b61398886828701613d76565b60008060006060848603121561448857600080fd5b8335614493816135fe565b925060208401356144a3816135fe565b9150604084013561364e816135fe565b600080600061028084860312156144c957600080fd5b83356144d4816133a8565b92506144e385602086016142b3565b915061026084013561364e816135fe565b6000806040838503121561450757600080fd5b8235614512816133a8565b915060208301356001600160401b0381111561452d57600080fd5b61382385828601613a0c565b60008060006060848603121561454e57600080fd5b8335925060208401356001600160401b0381111561456b57600080fd5b61398886828701613bcf565b6000806040838503121561458a57600080fd5b8235614595816133a8565b915060208301356001600160401b038111156145b057600080fd5b61382385828601613f7e565b6000806000606084860312156145d157600080fd5b83356145dc816133a8565b925060208401356144a3816139f1565b600060a082840312156145fe57600080fd5b614606613474565b90508135614613816133a8565b81526020820135614623816134b8565b602082015261463583604084016134f1565b60408201526080820135613e81816134b8565b600080600060e0848603121561465d57600080fd5b8335614668816133a8565b925061467785602086016145ec565b915060c084013561364e816135fe565b60008060006060848603121561469c57600080fd5b8335925060208401356001600160401b038111156146b957600080fd5b61398886828701614079565b60ff198116811461182657600080fd5b600080604083850312156146e857600080fd5b82356146f3816135fe565b9150602083013561385b816146c5565b60008060c0838503121561471657600080fd5b8235614721816133a8565b91506139c784602085016145ec565b6000806040838503121561474357600080fd5b823561474e816134b8565b9150602083013561385b816134b8565b60008060006060848603121561477357600080fd5b833561477e816133a8565b9250602084013561478e816139f1565b915060408401356001600160401b038111156147a957600080fd5b613ee386828701614184565b81516001600160601b031681526101e0810160208301516147e160208401826001600160a01b03169052565b506040830151604083015260608301516147ff606084018215159052565b506080830151614813608084018215159052565b5060a083015161482760a084018215159052565b5060c083015160c083015260e083015160e0830152610100808401516148598285018280518252602090810151910152565b505061012083015161014061487a8185018380518252602090810151910152565b8401518051610180850152602001516101a0840152506101608301516001600160a01b0381166101c08401525b5092915050565b602081526148c86020820183516001600160601b03169052565b600060208301516148e6604084018280518252602090810151910152565b50604083015161014080608085015261490361016085018361388a565b9150606085015160a0850152608085015160c085015260a085015160e085015260c085015161010061493d8187018364ffffffffff169052565b60e087015164ffffffffff811661012088015291505b9095015164ffffffffff1693019290925250919050565b600181811c9082168061497e57607f821691505b60208210810361499e57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156149b657600080fd5b815161222e816134d8565b6000602082840312156149d357600080fd5b815161222e816133a8565b602081526149f86020820183516001600160601b03169052565b60006020830151614a1460408401826001600160601b03169052565b5060408301516001600160c01b0319811660608401525060608301516001600160c01b03198116608084015250608083015160a083015260a083015160c083015260c083015160e083015260e0830151610100614a798185018364ffffffffff169052565b808501519150506102006101208181860152614a9961022086018461388a565b9250808601519050610140601f198685030181870152614ab9848361388a565b935080870151915050610160614ad48187018361ffff169052565b8601519050610180614aeb8682018361ffff169052565b8601516101a08681019190915286015190506101c0614b128187018364ffffffffff169052565b86015190506101e06149538682018364ffffffffff169052565b600060208284031215614b3e57600080fd5b5051919050565b6020815260008251610120806020850152614b6461014085018361388a565b91506020850151604085015260408501516060850152606085015160808501526080850151614b9b60a086018263ffffffff169052565b5060a085015163ffffffff811660c08601525060c085015180151560e08601525060e0850151610100614bd18187018315159052565b860151858403601f1901838701529050614beb838261388a565b9695505050505050565b601f821115610be557600081815260208120601f850160051c81016020861015614c1c5750805b601f850160051c820191505b8181101561252357828155600101614c28565b81516001600160401b03811115614c5457614c546133cd565b614c6881614c62845461496a565b84614bf5565b602080601f831160018114614c9d5760008415614c855750858301515b600019600386901b1c1916600185901b178555612523565b600085815260208120601f198616915b82811015614ccc57888601518255948401946001909101908401614cad565b5085821015614cea5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b602081526001600160601b03825116602082015260006020830151604080840152613939606084018261388a565b6020815261ffff8251166020820152602082015160408201526000604083015160806060840152614d5c60a084018261388a565b905064ffffffffff60608501511660808401528091505092915050565b600060208284031215614d8b57600080fd5b815161222e816134b8565b602081526001600160401b0360c01b825116602082015260208201511515604082015260006040830151606080840152613939608084018261388a565b602081526001600160601b0382511660208201526000602083015160e06040840152614e0361010084018261388a565b90506040840151606084015263ffffffff60608501511660808401526080840151614e3660a085018263ffffffff169052565b5060a084015164ffffffffff811660c08501525060c0840151838203601f190160e0850152614e65828261388a565b95945050505050565b6020815281516020820152602082015160408201526000604083015160806060840152614d5c60a084018261388a565b81516001600160a01b0316815261024081016020830151614eca60208401826001600160a01b03169052565b506040830151614ee560408401826001600160601b03169052565b506060830151614f0060608401826001600160601b03169052565b506080830151614f1d608084018280518252602090810151910152565b5060a0830151805160c0840152602081015160e08401525060c0830151610100614f538185018380518252602090810151910152565b60e08501519150610140614f738186018480518252602090810151910152565b9085015180516101808601526020908101516101a086015261012086015180516101c087015201516101e08501528401511515610200840152506101608301516001600160a01b0381166102208401526148a7565b81516001600160601b031681526020808301516001600160a01b03908116828401526040808501518051918501919091529091015160608084019190915290920151909116608082015260a00190565b60006020828403121561502a57600080fd5b815161222e816135fe565b6000808585111561504557600080fd5b8386111561505257600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156150875780818660040360031b1b83161692505b505092915050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b600082516150e1818460208701613866565b9190910192915050565b600080604083850312156150fe57600080fd5b8251615109816134d8565b602084015190925061385b81613bb2565b60006020828403121561512c57600080fd5b815161222e816146c5565b60ff978816815260ff1996909616602087015293861660408601529190941660608401526001600160a01b03938416608084015290921660a082015263ffffffff9190911660c082015260e0019056fe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00a26469706673582212202fb04525236ebfa8db99a62d333f0350b5e3d8c8d5dbbc227704ece249b65e8564736f6c63430008140033",
3097
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106104a15760003560e01c8063675393bf1161026d578063b405b76f11610151578063dee32623116100ce578063f651dcac11610092578063f651dcac14610b3d578063f7bc431c14610b50578063f7c34ee014610b63578063fa145b6d14610b76578063fe1f18d614610b89578063fed3d63f14610b9c57600080fd5b8063dee3262314610ad1578063e1033e7d14610ae4578063e9e96c7014610aec578063f21de1e8146107f1578063f48016ce14610b2a57600080fd5b8063ca600b1c11610115578063ca600b1c14610a88578063ccdcd37f14610a90578063cde749f414610aa3578063cf947d2014610aab578063d2f21a2914610abe57600080fd5b8063b405b76f14610a47578063b6d7cd6214610a5a578063bf1db3f914610a6d578063bf7e214f14610a80578063c29948fc146105fe57600080fd5b8063976b0a77116101ea578063a8989675116101ae578063a8989675146109e6578063a9cea142146109f9578063ada9652e14610a0c578063afa5e13014610798578063afcc743914610a21578063b3260e9314610a3457600080fd5b8063976b0a77146108fc5780639df0280b146105a8578063a13df2ab1461090f578063a5961b4c14610922578063a76ee018146109d357600080fd5b80637cef4842116102315780637cef48421461088d578063893d20e8146108a05780638eaa6ac0146108a85780638fb36037146108c857806391ff6eaa146108e957600080fd5b8063675393bf146108445780636b9bf08b1461085757806375b238fc1461085f5780637a9e5e4b146108675780637b8c388f1461087a57600080fd5b806336fc697e11610394578063468a1867116103115780635772b101116102d55780635772b101146107de5780635ab1bd53146107f15780635d4345cc146105a85780635dfa73db1461080257806361f5f4201461080b578063644c45e01461081c57600080fd5b8063468a18671461077257806351cf2fd0146107855780635378cd3c1461079857806354d747a8146107ab57806354f6127f146107be57600080fd5b80633e35aba8116103585780633e35aba81461071e57806340529b0f14610731578063422c9d00146107445780634288121d14610757578063447fc48f1461075f57600080fd5b806336fc697e146106ad57806337f135d7146106b557806338a699a4146106d25780633c0d6a41146106e55780633ca7c02a146106f857600080fd5b806312aa0b2a11610422578063214cdb80116103e6578063214cdb80146106595780632781d4431461066c57806327953f481461067457806327bb7a33146106875780632f61088a1461069a57600080fd5b806312aa0b2a146105e3578063138461e0146105f65780631518afb9146105fe5780631b38d5f4146106115780631eff4b221461063257600080fd5b80630f03144a116104695780630f03144a146105825780630f526f7d146105955780630fad0eb1146105a85780630fec111c146105bb5780631204b553146105d057600080fd5b806301ffc9a7146104a657806302cd3071146104e857806309648a9d1461050d57806309fb1d08146105475780630d3581811461055c575b600080fd5b6104d36104b4366004613365565b6001600160e01b03191660009081526020819052604090205460ff1690565b60405190151581526020015b60405180910390f35b6006546001600160a01b03165b6040516001600160a01b0390911681526020016104df565b61053561051b36600461338f565b600090815260046020526040902054610100900460ff1690565b60405160ff90911681526020016104df565b61055a61055536600461360d565b610ba4565b005b61053561056a366004613659565b60ff9081166000908152600260205260409020541690565b61055a6105903660046137de565b610bea565b61055a6105a336600461382d565b610c28565b61055a6105b636600461382d565b610c45565b6105c3610c5a565b6040516104df91906138b6565b61055a6105de366004613941565b610e09565b61055a6105f1366004613999565b610e2f565b61055a610e57565b61055a61060c366004613b4e565b61105e565b61062461061f366004613b95565b611084565b6040519081526020016104df565b6106247f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30081565b61055a610667366004613365565b611123565b610624600381565b61055a610682366004613ca2565b611150565b61055a610695366004613cde565b61116e565b61055a6106a8366004613dd0565b6111fa565b61055a611295565b6106bd600081565b60405163ffffffff90911681526020016104df565b6104d36106e036600461338f565b6112db565b61055a6106f3366004613e8c565b61136a565b6107066001600160401b0381565b6040516001600160401b0390911681526020016104df565b61062461072c366004613b95565b611390565b61055a61073f36600461382d565b6113bd565b61055a610752366004613eed565b6113d2565b6104f561150f565b61055a61076d366004613f0a565b6115a2565b610624610780366004613b95565b6115ce565b61055a61079336600461400d565b6115fb565b61055a6107a6366004614054565b611621565b61055a6107b9366004614135565b611634565b6107d16107cc36600461338f565b611652565b6040516104df9190614171565b61055a6107ec3660046141c7565b6116f7565b6001546001600160a01b03166104f5565b61070661271081565b6007546001600160a01b03166104f5565b600080516020615188833981519152546040516001600160601b0390911681526020016104df565b61055a610852366004613eed565b61171d565b6104f5611829565b610706600081565b61055a610875366004613eed565b611852565b610624610888366004613b95565b6118d5565b61055a61089b36600461421f565b611902565b6104f561198c565b6108bb6108b636600461338f565b611ac3565b6040516104df9190614287565b6108d0611c04565b6040516001600160e01b031990911681526020016104df565b61055a6108f736600461439f565b611c3c565b61055a61090a3660046143cd565b611c64565b61062461091d366004613b95565b611da4565b6109c661093036600461338f565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915250600090815260046020908152604091829020825160a081018452905460ff8082168352610100820416928201929092526001600160a01b03620100008304169281019290925263ffffffff600160b01b820481166060840152600160d01b90910416608082015290565b6040516104df919061441e565b61055a6109e136600461442c565b611dd1565b61055a6109f4366004614473565b611e6c565b61055a610a073660046144b3565b611f5d565b61062460008051602061518883398151915281565b61055a610a2f3660046144f4565b611f85565b61055a610a42366004614539565b611fab565b61055a610a55366004614577565b611fc9565b61055a610a683660046145bc565b611fef565b6104d3610a7b366004613659565b612004565b6104f5612051565b6104f561206d565b61055a610a9e366004614648565b612096565b6105356120be565b61055a610ab9366004614687565b612135565b61055a610acc36600461382d565b612153565b61055a610adf36600461382d565b61216a565b6104f5612181565b6104d3610afa366004614473565b60ff9283166000908152600360209081526040808320948616835293815283822092851682529190915220541690565b610624610b383660046146d5565b6121aa565b61055a610b4b366004614703565b612235565b61055a610b5e366004613eed565b61225d565b61055a610b71366004614730565b61234a565b61055a610b8436600461475e565b6123c1565b61055a610b9736600461382d565b6123e7565b6104f56123fc565b610bb1335b600036612425565b610be5610bbf84608c61252b565b83604051602001610bd091906147b5565b60405160208183030381529060405283612577565b505050565b610bf333610ba9565b610c24610bff83611da4565b82604051602001610c1091906148ae565b604051602081830303815290604052612582565b5050565b610c3133610ba9565b610c24610c3f83608c61252b565b8261258c565b610c4e33610ba9565b610c24610c3f836115ce565b6040805160e08101825260008082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820152907f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa3006040805160808101825282546001600160601b038116825260ff600160601b820481166020840152600160681b90910416151591810191909152600182018054919291606084019190610d059061496a565b80601f0160208091040260200160405190810160405280929190818152602001828054610d319061496a565b8015610d7e5780601f10610d5357610100808354040283529160200191610d7e565b820191906000526020600020905b815481529060010190602001808311610d6157829003601f168201915b50505050508152505090506040518060e00160405280610d9c600090565b6001600160601b0316815260200182600001516001600160601b03168152602001826020015160ff168152602001826040015115158152602001306001600160a01b03168152602001610ded61198c565b6001600160a01b03168152602001826060015181525091505090565b610e1233610ba9565b610be5610e1e84611da4565b83604051602001610bd091906148ae565b610e3833610ba9565b610c24610e4683608c61252b565b82604051602001610c1091906147b5565b600060008051602061518883398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af4158015610ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eea91906149a4565b15610f1b5780546040516301ab8b6760e21b81526001600160601b0390911660048201526024015b60405180910390fd5b30610f2e6001546001600160a01b031690565b60405163c3c5a54760e01b81526001600160a01b038381166004830152919091169063c3c5a54790602401602060405180830381865afa158015610f76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9a91906149a4565b610fc25760405163b9304b0d60e01b81526001600160a01b0382166004820152602401610f12565b6001546001600160a01b0316604051636939560f60e11b81526001600160a01b038381166004830152919091169063d272ac1e90602401602060405180830381865afa158015611016573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103a91906149c1565b82546bffffffffffffffffffffffff19166001600160601b03919091161790915550565b61106733610ba9565b610be5611073846115ce565b83604051602001610bd091906149de565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660795b6040516001600160e01b031960e085901b1681526001600160601b03909216600483015260ff166024820152604401602060405180830381865af41580156110f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111d9190614b2c565b92915050565b61112b612596565b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b61115933610ba9565b610c248282604051602001610c109190614b45565b611176612596565b611180828761234a565b60007f6548007c3f4340f82f348c576c0ff69f4f529cadd5ad41f96aae61abceeaa30080546001600160601b0388166cffffffffffffffffffffffffff1990911617600160601b60ff8816021760ff60681b1916600160681b861515021781559050600181016111f08382614c3b565b5050505050505050565b61120333610ba9565b6040516355ee627560e01b81526001600160c01b031983166004820152610c249073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015611260573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112849190614b2c565b82604051602001610c109190614cfa565b61129d612596565b6301ffc9a760e01b60009081526020527f67be87c3ff9960ca1e9cfac5cab2ff4747269cf9ed20c9b7306235ac35a491c5805460ff19166001179055565b600081815260046020819052604080832054905163b2466acf60e01b815261010090910460ff169181019190915273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf906024015b602060405180830381865af4158015611346573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111d91906149a4565b61137333610ba9565b610be561137f846115ce565b82604051602001610c109190614d28565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660786110ad565b6113c633610ba9565b610c24610c3f836118d5565b6113db33610ba9565b6007546001600160a01b03161561142b5760405162461bcd60e51b8152602060048201526014602482015273109d5b991b1953585b9859d95c881a5cc81cd95d60621b6044820152606401610f12565b306001600160a01b0316816001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611473573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114979190614d79565b6001600160a01b0316146114ed5760405162461bcd60e51b815260206004820152601f60248201527f42756e646c654d616e6167657220696e7374616e6365206d69736d61746368006044820152606401610f12565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b60006115236001546001600160a01b031690565b6001600160a01b031663d39e6043606e5b6040516001600160e01b031960e084901b16815260ff909116600482015260036024820152604401602060405180830381865afa158015611579573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159d9190614d79565b905090565b6115ab33610ba9565b6115c86115b7856115ce565b83604051602001610bd09190614d28565b50505050565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660d36110ad565b61160433610ba9565b610be5611610846118d5565b83604051602001610bd09190614d96565b61162a33610ba9565b610c24828261258c565b61163d33610ba9565b610c248282604051602001610c109190614dd3565b60008181526004602052604090206001018054606091906116729061496a565b80601f016020809104026020016040519081016040528092919081815260200182805461169e9061496a565b80156116eb5780601f106116c0576101008083540402835291602001916116eb565b820191906000526020600020905b8154815290600101906020018083116116ce57829003601f168201915b50505050509050919050565b61170033610ba9565b6115c861170c856115ce565b83604051602001610bd09190614e6e565b611725612596565b806001600160a01b03163b60000361175b5760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610f12565b600180546001600160a01b0319166001600160a01b0383169081179091556040516301ffc9a760e01b815263230c0c8160e11b60048201526301ffc9a790602401602060405180830381865afa9250505080156117d5575060408051601f3d908101601f191682019092526117d2918101906149a4565b60015b6117fd5760405163fdeac91f60e01b81526001600160a01b0382166004820152602401610f12565b80610c245760405163fdeac91f60e01b81526001600160a01b0383166004820152602401610f12565b50565b600061183d6001546001600160a01b031690565b6001600160a01b031663d39e6043608c611534565b3361185b612051565b6001600160a01b0316816001600160a01b0316146118965760405162d1953b60e31b81526001600160a01b0382166004820152602401610f12565b816001600160a01b03163b6000036118cc576040516361798f2f60e11b81526001600160a01b0383166004820152602401610f12565b610c24826125e1565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b038416607a6110ad565b61190b33610ba9565b6040516355ee627560e01b81526001600160c01b031983166004820152610c249073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015611968573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3f9190614b2c565b60008060008051602061518883398151915280546040516330b8415f60e01b81526001600160601b03909116600482015290915073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__906330b8415f90602401602060405180830381865af41580156119fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2091906149a4565b15611aad576001546001600160a01b03168154604051631c5da14d60e11b81526001600160601b0390911660048201526001600160a01b0391909116906338bb429a90602401602060405180830381865afa158015611a83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa79190614d79565b91505090565b54600160601b90046001600160a01b0316919050565b6040805160e081018252600091810182815260608083018490526080830184905260a0830184905260c083019390935281526020810191909152600082815260046020908152604091829020825160e081018452815460ff80821695830195865261010082041660608301526001600160a01b0362010000820416608083015263ffffffff600160b01b8204811660a0840152600160d01b9091041660c08201529283526001810180549192840191611b7b9061496a565b80601f0160208091040260200160405190810160405280929190818152602001828054611ba79061496a565b8015611bf45780601f10611bc957610100808354040283529160200191611bf4565b820191906000526020600020905b815481529060010190602001808311611bd757829003601f168201915b5050505050815250509050919050565b6000805160206151a8833981519152805460009190600160a01b900460ff16611c2e576000611aa7565b638fb3603760e01b91505090565b611c4533610ba9565b610c24611c5383606e61252b565b82604051602001610c109190614e9e565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015611ca95750825b90506000826001600160401b03166001148015611cc55750303b155b905081158015611cd3575080155b15611cf15760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611d1b57845460ff60401b1916600160401b1785555b611d2489612642565b611d438888604660008a6040518060200160405280600081525061116e565b611d5363119e767960e11b611123565b8315611d9957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b600073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__633889a4c86001600160601b03841660dc6110ad565b611dda33610ba9565b6040516355ee627560e01b81526001600160c01b031984166004820152610be59073__$19a201e37be2e25dc57bd4aa563a0edb25$__906355ee627590602401602060405180830381865af4158015611e37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5b9190614b2c565b83604051602001610bd09190614cfa565b60ff8381166000908152600260205260409081902054905163037c8cb160e51b81529116600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__90636f91962090602401602060405180830381865af4158015611ed1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef591906149a4565b15611eff57505050565b60ff808416600090815260036020908152604080832086851684528252808320858516845290915290205416610be557604051636bb20ea760e01b815260ff8085166004830152808416602483015282166044820152606401610f12565b611f6633610ba9565b610be5611f7484606e61252b565b83604051602001610bd09190614e9e565b611f8e33610ba9565b610c24611f9a836115ce565b82604051602001610c1091906149de565b611fb433610ba9565b610be58383604051602001610bd09190614b45565b611fd233610ba9565b610c24611fde836118d5565b82604051602001610c109190614d96565b611ff833610ba9565b610be5610c3f846115ce565b60ff81811660009081526002602052604080822054905163b2466acf60e01b8152921660048301529073__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401611329565b6000805160206151a8833981519152546001600160a01b031690565b60006120816001546001600160a01b031690565b6001600160a01b031663d39e60436078611534565b61209f33610ba9565b610be56120ad84607861252b565b83604051602001610bd09190614fc8565b604051632392b61b60e21b81526003600482015260009073__$9dab98ad7ae1a426029e5739f922230a41$__90638e4ad86c90602401602060405180830381865af4158015612111573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159d9190615018565b61213e33610ba9565b610be58383604051602001610bd09190614dd3565b61215c33610ba9565b610c24610c3f83607861252b565b61217333610ba9565b610c24610c3f83606e61252b565b60006121956001546001600160a01b031690565b6001600160a01b031663d39e604360d3611534565b604051637a400b6760e11b815260ff8316600482015260ff198216602482015260009073__$c8f743efd2b4f0c9300f2558c784479d3e$__9063f48016ce906044015b602060405180830381865af415801561220a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061222e9190614b2c565b9392505050565b61223e33610ba9565b610c2461224c83607861252b565b82604051602001610c109190614fc8565b61226633610ba9565b306001600160a01b0316816001600160a01b031663de7b5d146040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d29190614d79565b6001600160a01b0316146123285760405162461bcd60e51b815260206004820181905260248201527f496e7374616e636552656164657220696e7374616e6365206d69736d617463686044820152606401610f12565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b612352612596565b61235b8161171d565b612363611295565b6001600160a01b03821661238a5760405163f17ef42d60e01b815260040160405180910390fd5b5060008051602061518883398151915280546001600160601b0316600160601b6001600160a01b0390931692909202919091179055565b6123ca33610ba9565b610be56123d6846115ce565b82604051602001610c109190614e6e565b6123f033610ba9565b610c24610c3f83611da4565b60006124106001546001600160a01b031690565b6001600160a01b031663d39e604360dc611534565b6000805160206151a8833981519152600080612460612442612051565b8730612452600460008a8c615035565b61245b9161505f565b612653565b91509150816125235763ffffffff81161561250057825460ff60a01b1916600160a01b17835561248e612051565b6001600160a01b03166394c7d7ee8787876040518463ffffffff1660e01b81526004016124bd9392919061508f565b600060405180830381600087803b1580156124d757600080fd5b505af11580156124eb573d6000803e3d6000fd5b5050845460ff60a01b19168555506125239050565b60405162d1953b60e31b81526001600160a01b0387166004820152602401610f12565b505050505050565b604051630711349960e31b81526001600160601b038316600482015260ff8216602482015260009073__$6facc32ab6029a5f5de2a1d5e55ea9da0e$__90633889a4c8906044016121ed565b610be583838361275f565b610c248282612c07565b610c248282613020565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166125df57604051631afcd79f60e31b815260040160405180910390fd5b565b6000805160206151a883398151915280546001600160a01b0383166001600160a01b03199091168117825560408051918252517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad9181900360200190a15050565b61264a612596565b61182681613354565b6040516001600160a01b03848116602483015283811660448301526001600160e01b03198316606483015260009182918291829189169060840160408051601f198184030181529181526020820180516001600160e01b031663b700961360e01b179052516126c291906150cf565b600060405180830381855afa9150503d80600081146126fd576040519150601f19603f3d011682016040523d82523d6000602084013e612702565b606091505b50915091508115612754576040815110612734578080602001905181019061272a91906150eb565b9094509250612754565b6020815110612754578080602001905181019061275191906149a4565b93505b505094509492505050565b60405163b2466acf60e01b815260ff8216600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af41580156127b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127d591906149a4565b6128215760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3032303a53544154455f554e444546494e45440000006044820152606401610f12565b6000838152600460208190526040918290208054925163b2466acf60e01b815261010090930460ff169183018290529173__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af415801561288d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b191906149a4565b6128fd5760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a4b56532d3032313a4e4f545f4558495354494e470000000000006044820152606401610f12565b60008581526004602052604090206001016129188582614c3b565b508154620100003390810262010000600160b01b031960ff87166101000216610100600160b01b03198416171784559063ffffffff600160b01b9091041661295d4390565b845463ffffffff91909116600160b01b0263ffffffff60b01b19909116178455604051634b00e98f60e11b8152600481018890527fe41a93c15e024a0b2371127599959a8e543dd6a8d820238e906c93a3004248fa9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af41580156129ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a139190615018565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015612a63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a87919061511a565b8786863287604051612a9f9796959493929190615137565b60405180910390a1604051634b00e98f60e11b8152600481018890527f7bd0ab7f1746bd20a814d6705a46876c84f1aa2d35c80d8c173e268bd6d4b26c9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015612b19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b3d9190615018565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015612b8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bb1919061511a565b6040805160ff938416815260ff199092166020830152918816918101919091526001600160a01b038416606082015232608082015263ffffffff831660a082015260c0015b60405180910390a150505050505050565b604051634b00e98f60e11b81526004810183905260009073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015612c5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c7e9190615018565b60405163b2466acf60e01b815260ff8216600482015290915073__$fb4566b39bd2075cb32f600f6f40bfaef2$__9063b2466acf90602401602060405180830381865af4158015612cd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf791906149a4565b612d435760405162461bcd60e51b815260206004820152601c60248201527f4552524f523a4b56532d3031303a545950455f554e444546494e4544000000006044820152606401610f12565b6000838152600460208190526040918290208054925163037c8cb160e51b815261010090930460ff16918301919091529073__$2a12cf1a40369f689f3a67e70f4b31dadc$__90636f91962090602401602060405180830381865af4158015612db0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd491906149a4565b612e205760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3031323a414c52454144595f435245415445440000006044820152606401610f12565b33436000612e2d85612004565b612e38576064612e4e565b60ff808616600090815260026020526040902054165b845460ff87811661ffff1990921691909117610100918316919091021762010000600160d01b031916620100006001600160a01b0386160263ffffffff60b01b191617600160b01b63ffffffff85169081029190911763ffffffff60d01b1916600160d01b919091021785556000888152600460205260409020909150600101612ed88782614c3b565b50604051634b00e98f60e11b8152600481018890527ffcb75eb7b317145f986c763e1a3eab5f9b4dbaf7955504f70f986d799c3ab39d9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015612f4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f6f9190615018565b604051630713cfad60e31b8152600481018a905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015612fbf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fe3919061511a565b6040805160ff938416815260ff199092166020830152918416918101919091526001600160a01b038516606082015232608082015260a001612bf6565b60405163b2466acf60e01b815260ff8216600482015273__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af4158015613072573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061309691906149a4565b6130e25760405162461bcd60e51b815260206004820152601d60248201527f4552524f523a4b56532d3034303a53544154455f554e444546494e45440000006044820152606401610f12565b6000828152600460208190526040918290208054925163b2466acf60e01b815261010090930460ff169183018290529173__$2a12cf1a40369f689f3a67e70f4b31dadc$__9063b2466acf90602401602060405180830381865af415801561314e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061317291906149a4565b6131be5760405162461bcd60e51b815260206004820152601a60248201527f4552524f523a4b56532d3034313a4e4f545f4558495354494e470000000000006044820152606401610f12565b8154620100003390810262010000600160b01b031960ff87166101000216610100600160b01b03198416171784559063ffffffff600160b01b909104166132024390565b845463ffffffff91909116600160b01b0263ffffffff60b01b19909116178455604051634b00e98f60e11b8152600481018790527fe41a93c15e024a0b2371127599959a8e543dd6a8d820238e906c93a3004248fa9073__$c8f743efd2b4f0c9300f2558c784479d3e$__90639601d31e90602401602060405180830381865af4158015613294573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132b89190615018565b604051630713cfad60e31b81526004810189905273__$c8f743efd2b4f0c9300f2558c784479d3e$__9063389e7d6890602401602060405180830381865af4158015613308573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061332c919061511a565b87868632876040516133449796959493929190615137565b60405180910390a1505050505050565b61335c612596565b611826816125e1565b60006020828403121561337757600080fd5b81356001600160e01b03198116811461222e57600080fd5b6000602082840312156133a157600080fd5b5035919050565b6001600160601b038116811461182657600080fd5b80356133c8816133a8565b919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715613405576134056133cd565b60405290565b60405161018081016001600160401b0381118282101715613405576134056133cd565b60405161012081016001600160401b0381118282101715613405576134056133cd565b60405161020081016001600160401b0381118282101715613405576134056133cd565b604051608081016001600160401b0381118282101715613405576134056133cd565b60405160e081016001600160401b0381118282101715613405576134056133cd565b6001600160a01b038116811461182657600080fd5b80356133c8816134b8565b801515811461182657600080fd5b80356133c8816134d8565b60006040828403121561350357600080fd5b61350b6133e3565b9050813581526020820135602082015292915050565b60006101e0828403121561353457600080fd5b61353c61340b565b9050613547826133bd565b8152613555602083016134cd565b602082015260408201356040820152613570606083016134e6565b6060820152613581608083016134e6565b608082015261359260a083016134e6565b60a082015260c082013560c082015260e082013560e08201526101006135ba848285016134f1565b908201526101406135cd848483016134f1565b6101208301526135e18461018085016134f1565b908201526135f26101c083016134cd565b61016082015292915050565b60ff8116811461182657600080fd5b6000806000610220848603121561362357600080fd5b833561362e816133a8565b925061363d8560208601613521565b915061020084013561364e816135fe565b809150509250925092565b60006020828403121561366b57600080fd5b813561222e816135fe565b600082601f83011261368757600080fd5b81356001600160401b03808211156136a1576136a16133cd565b604051601f8301601f19908116603f011681019082821181831017156136c9576136c96133cd565b816040528381528660208588010111156136e257600080fd5b836020870160208301376000602085830101528094505050505092915050565b64ffffffffff8116811461182657600080fd5b80356133c881613702565b6000610140828403121561373357600080fd5b61373b61342e565b9050613746826133bd565b815261375583602084016134f1565b602082015260608201356001600160401b0381111561377357600080fd5b61377f84828501613676565b6040830152506080820135606082015260a0820135608082015260c082013560a08201526137af60e08301613715565b60c08201526101006137c2818401613715565b60e08301526137d46101208401613715565b9082015292915050565b600080604083850312156137f157600080fd5b82356137fc816133a8565b915060208301356001600160401b0381111561381757600080fd5b61382385828601613720565b9150509250929050565b6000806040838503121561384057600080fd5b823561384b816133a8565b9150602083013561385b816135fe565b809150509250929050565b60005b83811015613881578181015183820152602001613869565b50506000910152565b600081518084526138a2816020860160208601613866565b601f01601f19169290920160200192915050565b6020815260006001600160601b038084511660208401528060208501511660408401525060ff604084015116606083015260608301511515608083015260018060a01b0360808401511660a083015260a083015161391f60c08401826001600160a01b03169052565b5060c083015160e08084015261393961010084018261388a565b949350505050565b60008060006060848603121561395657600080fd5b8335613961816133a8565b925060208401356001600160401b0381111561397c57600080fd5b61398886828701613720565b925050604084013561364e816135fe565b60008061020083850312156139ad57600080fd5b82356139b8816133a8565b91506139c78460208501613521565b90509250929050565b6001600160c01b03198116811461182657600080fd5b80356133c8816139d0565b61ffff8116811461182657600080fd5b80356133c8816139f1565b60006102008284031215613a1f57600080fd5b613a27613451565b9050613a32826133bd565b8152613a40602083016133bd565b6020820152613a51604083016139e6565b6040820152613a62606083016139e6565b60608201526080820135608082015260a082013560a082015260c082013560c0820152613a9160e08301613715565b60e0820152610100808301356001600160401b0380821115613ab257600080fd5b613abe86838701613676565b83850152610120925082850135915080821115613ada57600080fd5b50613ae785828601613676565b828401525050610140613afb818401613a01565b90820152610160613b0d838201613a01565b9082015261018082810135908201526101a0613b2a818401613715565b908201526101c0613b3c838201613715565b908201526101e06137d4838201613715565b600080600060608486031215613b6357600080fd5b8335613b6e816133a8565b925060208401356001600160401b03811115613b8957600080fd5b61398886828701613a0c565b600060208284031215613ba757600080fd5b813561222e816133a8565b63ffffffff8116811461182657600080fd5b80356133c881613bb2565b60006101208284031215613be257600080fd5b613bea61342e565b905081356001600160401b0380821115613c0357600080fd5b613c0f85838601613676565b8352602084013560208401526040840135604084015260608401356060840152613c3b60808501613bc4565b6080840152613c4c60a08501613bc4565b60a0840152613c5d60c085016134e6565b60c0840152613c6e60e085016134e6565b60e084015261010091508184013581811115613c8957600080fd5b613c9586828701613676565b8385015250505092915050565b60008060408385031215613cb557600080fd5b8235915060208301356001600160401b03811115613cd257600080fd5b61382385828601613bcf565b60008060008060008060c08789031215613cf757600080fd5b8635613d02816134b8565b95506020870135613d12816133a8565b94506040870135613d22816135fe565b93506060870135613d32816134d8565b92506080870135613d42816134b8565b915060a08701356001600160401b03811115613d5d57600080fd5b613d6989828a01613676565b9150509295509295509295565b600060408284031215613d8857600080fd5b613d906133e3565b90508135613d9d816133a8565b815260208201356001600160401b03811115613db857600080fd5b613dc484828501613676565b60208301525092915050565b60008060408385031215613de357600080fd5b8235613dee816139d0565b915060208301356001600160401b03811115613e0957600080fd5b61382385828601613d76565b600060808284031215613e2757600080fd5b613e2f613474565b90508135613e3c816139f1565b81526020828101359082015260408201356001600160401b03811115613e6157600080fd5b613e6d84828501613676565b6040830152506060820135613e8181613702565b606082015292915050565b600080600060608486031215613ea157600080fd5b8335613eac816133a8565b92506020840135613ebc81613bb2565b915060408401356001600160401b03811115613ed757600080fd5b613ee386828701613e15565b9150509250925092565b600060208284031215613eff57600080fd5b813561222e816134b8565b60008060008060808587031215613f2057600080fd5b8435613f2b816133a8565b93506020850135613f3b81613bb2565b925060408501356001600160401b03811115613f5657600080fd5b613f6287828801613e15565b9250506060850135613f73816135fe565b939692955090935050565b600060608284031215613f9057600080fd5b604051606081016001600160401b038282108183111715613fb357613fb36133cd565b8160405282935084359150613fc7826139d0565b908252602084013590613fd9826134d8565b8160208401526040850135915080821115613ff357600080fd5b5061400085828601613676565b6040830152505092915050565b60008060006060848603121561402257600080fd5b833561402d816133a8565b925060208401356001600160401b0381111561404857600080fd5b61398886828701613f7e565b6000806040838503121561406757600080fd5b82359150602083013561385b816135fe565b600060e0828403121561408b57600080fd5b614093613496565b905061409e826133bd565b815260208201356001600160401b03808211156140ba57600080fd5b6140c685838601613676565b6020840152604084013560408401526140e160608501613bc4565b60608401526140f260808501613bc4565b608084015261410360a08501613715565b60a084015260c084013591508082111561411c57600080fd5b5061412984828501613676565b60c08301525092915050565b6000806040838503121561414857600080fd5b8235915060208301356001600160401b0381111561416557600080fd5b61382385828601614079565b60208152600061222e602083018461388a565b60006080828403121561419657600080fd5b61419e613474565b9050813581526020820135602082015260408201356001600160401b03811115613e6157600080fd5b600080600080608085870312156141dd57600080fd5b84356141e8816133a8565b935060208501356141f8816139f1565b925060408501356001600160401b0381111561421357600080fd5b613f6287828801614184565b6000806040838503121561423257600080fd5b823561384b816139d0565b60ff815116825260ff602082015116602083015260018060a01b036040820151166040830152606081015163ffffffff808216606085015280608084015116608085015250505050565b6020815261429960208201835161423d565b6000602083015160c08084015261393960e084018261388a565b600061024082840312156142c657600080fd5b6142ce61340b565b90506142d9826134cd565b81526142e7602083016134cd565b60208201526142f8604083016133bd565b6040820152614309606083016133bd565b606082015261431b83608084016134f1565b608082015261432d8360c084016134f1565b60a0820152610100614341848285016134f1565b60c0830152610140614355858286016134f1565b60e08401526143688561018086016134f1565b8284015261437a856101c086016134f1565b61012084015261438d61020085016134e6565b90830152506135f261022083016134cd565b60008061026083850312156143b357600080fd5b82356143be816133a8565b91506139c784602085016142b3565b600080600080608085870312156143e357600080fd5b84356143ee816134b8565b935060208501356143fe816134b8565b9250604085013561440e816133a8565b91506060850135613f73816134b8565b60a0810161111d828461423d565b60008060006060848603121561444157600080fd5b833561444c816139d0565b925060208401356001600160401b0381111561446757600080fd5b61398886828701613d76565b60008060006060848603121561448857600080fd5b8335614493816135fe565b925060208401356144a3816135fe565b9150604084013561364e816135fe565b600080600061028084860312156144c957600080fd5b83356144d4816133a8565b92506144e385602086016142b3565b915061026084013561364e816135fe565b6000806040838503121561450757600080fd5b8235614512816133a8565b915060208301356001600160401b0381111561452d57600080fd5b61382385828601613a0c565b60008060006060848603121561454e57600080fd5b8335925060208401356001600160401b0381111561456b57600080fd5b61398886828701613bcf565b6000806040838503121561458a57600080fd5b8235614595816133a8565b915060208301356001600160401b038111156145b057600080fd5b61382385828601613f7e565b6000806000606084860312156145d157600080fd5b83356145dc816133a8565b925060208401356144a3816139f1565b600060a082840312156145fe57600080fd5b614606613474565b90508135614613816133a8565b81526020820135614623816134b8565b602082015261463583604084016134f1565b60408201526080820135613e81816134b8565b600080600060e0848603121561465d57600080fd5b8335614668816133a8565b925061467785602086016145ec565b915060c084013561364e816135fe565b60008060006060848603121561469c57600080fd5b8335925060208401356001600160401b038111156146b957600080fd5b61398886828701614079565b60ff198116811461182657600080fd5b600080604083850312156146e857600080fd5b82356146f3816135fe565b9150602083013561385b816146c5565b60008060c0838503121561471657600080fd5b8235614721816133a8565b91506139c784602085016145ec565b6000806040838503121561474357600080fd5b823561474e816134b8565b9150602083013561385b816134b8565b60008060006060848603121561477357600080fd5b833561477e816133a8565b9250602084013561478e816139f1565b915060408401356001600160401b038111156147a957600080fd5b613ee386828701614184565b81516001600160601b031681526101e0810160208301516147e160208401826001600160a01b03169052565b506040830151604083015260608301516147ff606084018215159052565b506080830151614813608084018215159052565b5060a083015161482760a084018215159052565b5060c083015160c083015260e083015160e0830152610100808401516148598285018280518252602090810151910152565b505061012083015161014061487a8185018380518252602090810151910152565b8401518051610180850152602001516101a0840152506101608301516001600160a01b0381166101c08401525b5092915050565b602081526148c86020820183516001600160601b03169052565b600060208301516148e6604084018280518252602090810151910152565b50604083015161014080608085015261490361016085018361388a565b9150606085015160a0850152608085015160c085015260a085015160e085015260c085015161010061493d8187018364ffffffffff169052565b60e087015164ffffffffff811661012088015291505b9095015164ffffffffff1693019290925250919050565b600181811c9082168061497e57607f821691505b60208210810361499e57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156149b657600080fd5b815161222e816134d8565b6000602082840312156149d357600080fd5b815161222e816133a8565b602081526149f86020820183516001600160601b03169052565b60006020830151614a1460408401826001600160601b03169052565b5060408301516001600160c01b0319811660608401525060608301516001600160c01b03198116608084015250608083015160a083015260a083015160c083015260c083015160e083015260e0830151610100614a798185018364ffffffffff169052565b808501519150506102006101208181860152614a9961022086018461388a565b9250808601519050610140601f198685030181870152614ab9848361388a565b935080870151915050610160614ad48187018361ffff169052565b8601519050610180614aeb8682018361ffff169052565b8601516101a08681019190915286015190506101c0614b128187018364ffffffffff169052565b86015190506101e06149538682018364ffffffffff169052565b600060208284031215614b3e57600080fd5b5051919050565b6020815260008251610120806020850152614b6461014085018361388a565b91506020850151604085015260408501516060850152606085015160808501526080850151614b9b60a086018263ffffffff169052565b5060a085015163ffffffff811660c08601525060c085015180151560e08601525060e0850151610100614bd18187018315159052565b860151858403601f1901838701529050614beb838261388a565b9695505050505050565b601f821115610be557600081815260208120601f850160051c81016020861015614c1c5750805b601f850160051c820191505b8181101561252357828155600101614c28565b81516001600160401b03811115614c5457614c546133cd565b614c6881614c62845461496a565b84614bf5565b602080601f831160018114614c9d5760008415614c855750858301515b600019600386901b1c1916600185901b178555612523565b600085815260208120601f198616915b82811015614ccc57888601518255948401946001909101908401614cad565b5085821015614cea5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b602081526001600160601b03825116602082015260006020830151604080840152613939606084018261388a565b6020815261ffff8251166020820152602082015160408201526000604083015160806060840152614d5c60a084018261388a565b905064ffffffffff60608501511660808401528091505092915050565b600060208284031215614d8b57600080fd5b815161222e816134b8565b602081526001600160401b0360c01b825116602082015260208201511515604082015260006040830151606080840152613939608084018261388a565b602081526001600160601b0382511660208201526000602083015160e06040840152614e0361010084018261388a565b90506040840151606084015263ffffffff60608501511660808401526080840151614e3660a085018263ffffffff169052565b5060a084015164ffffffffff811660c08501525060c0840151838203601f190160e0850152614e65828261388a565b95945050505050565b6020815281516020820152602082015160408201526000604083015160806060840152614d5c60a084018261388a565b81516001600160a01b0316815261024081016020830151614eca60208401826001600160a01b03169052565b506040830151614ee560408401826001600160601b03169052565b506060830151614f0060608401826001600160601b03169052565b506080830151614f1d608084018280518252602090810151910152565b5060a0830151805160c0840152602081015160e08401525060c0830151610100614f538185018380518252602090810151910152565b60e08501519150610140614f738186018480518252602090810151910152565b9085015180516101808601526020908101516101a086015261012086015180516101c087015201516101e08501528401511515610200840152506101608301516001600160a01b0381166102208401526148a7565b81516001600160601b031681526020808301516001600160a01b03908116828401526040808501518051918501919091529091015160608084019190915290920151909116608082015260a00190565b60006020828403121561502a57600080fd5b815161222e816135fe565b6000808585111561504557600080fd5b8386111561505257600080fd5b5050820193919092039150565b6001600160e01b031981358181169160048510156150875780818660040360031b1b83161692505b505092915050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f1916010192915050565b600082516150e1818460208701613866565b9190910192915050565b600080604083850312156150fe57600080fd5b8251615109816134d8565b602084015190925061385b81613bb2565b60006020828403121561512c57600080fd5b815161222e816146c5565b60ff978816815260ff1996909616602087015293861660408601529190941660608401526001600160a01b03938416608084015290921660a082015263ffffffff9190911660c082015260e0019056fe07ebcf49758b6ed3af50fa146bec0abe157c0218fe65dc0874c286e9d5da4f00f3177357ab46d8af007ab3fdb9af81da189e1068fefdc0073dca88a2cab40a00a26469706673582212202fb04525236ebfa8db99a62d333f0350b5e3d8c8d5dbbc227704ece249b65e8564736f6c63430008140033",
3224
3098
  "linkReferences": {
3225
3099
  "contracts/types/Key32.sol": {
3226
3100
  "Key32Lib": [
3227
3101
  {
3228
3102
  "length": 20,
3229
- "start": 4720
3103
+ "start": 10486
3230
3104
  },
3231
3105
  {
3232
3106
  "length": 20,
3233
- "start": 5488
3107
+ "start": 12508
3234
3108
  },
3235
3109
  {
3236
3110
  "length": 20,
3237
- "start": 5607
3111
+ "start": 12624
3238
3112
  },
3239
3113
  {
3240
3114
  "length": 20,
3241
- "start": 11671
3115
+ "start": 12806
3242
3116
  },
3243
3117
  {
3244
3118
  "length": 20,
3245
- "start": 16965
3119
+ "start": 12922
3246
3120
  },
3247
3121
  {
3248
3122
  "length": 20,
3249
- "start": 19287
3123
+ "start": 13127
3250
3124
  },
3251
3125
  {
3252
3126
  "length": 20,
3253
- "start": 20036
3127
+ "start": 13880
3254
3128
  },
3255
3129
  {
3256
3130
  "length": 20,
3257
- "start": 20152
3131
+ "start": 13996
3258
3132
  },
3259
3133
  {
3260
3134
  "length": 20,
3261
- "start": 20890
3135
+ "start": 14721
3262
3136
  },
3263
3137
  {
3264
3138
  "length": 20,
3265
- "start": 21006
3266
- },
3139
+ "start": 14837
3140
+ }
3141
+ ]
3142
+ },
3143
+ "contracts/types/NftId.sol": {
3144
+ "NftIdLib": [
3267
3145
  {
3268
3146
  "length": 20,
3269
- "start": 21738
3147
+ "start": 5555
3270
3148
  },
3271
3149
  {
3272
3150
  "length": 20,
3273
- "start": 21854
3151
+ "start": 6063
3274
3152
  },
3275
3153
  {
3276
3154
  "length": 20,
3277
- "start": 22036
3155
+ "start": 6843
3278
3156
  },
3279
3157
  {
3280
3158
  "length": 20,
3281
- "start": 22152
3282
- }
3283
- ]
3284
- },
3285
- "contracts/types/NftId.sol": {
3286
- "NftIdLib": [
3287
- {
3288
- "length": 20,
3289
- "start": 10667
3159
+ "start": 7417
3290
3160
  },
3291
3161
  {
3292
3162
  "length": 20,
3293
- "start": 12743
3163
+ "start": 8192
3294
3164
  },
3295
3165
  {
3296
3166
  "length": 20,
3297
- "start": 13852
3167
+ "start": 8425
3298
3168
  },
3299
3169
  {
3300
3170
  "length": 20,
3301
- "start": 15157
3171
+ "start": 9423
3302
3172
  },
3303
3173
  {
3304
3174
  "length": 20,
3305
- "start": 17532
3175
+ "start": 11388
3306
3176
  }
3307
3177
  ]
3308
3178
  },
@@ -3310,11 +3180,7 @@
3310
3180
  "ObjectTypeLib": [
3311
3181
  {
3312
3182
  "length": 20,
3313
- "start": 4844
3314
- },
3315
- {
3316
- "length": 20,
3317
- "start": 19408
3183
+ "start": 13248
3318
3184
  }
3319
3185
  ]
3320
3186
  },
@@ -3322,115 +3188,59 @@
3322
3188
  "RiskIdLib": [
3323
3189
  {
3324
3190
  "length": 20,
3325
- "start": 11510
3191
+ "start": 6477
3326
3192
  },
3327
3193
  {
3328
3194
  "length": 20,
3329
- "start": 13462
3195
+ "start": 8277
3330
3196
  },
3331
3197
  {
3332
3198
  "length": 20,
3333
- "start": 15242
3199
+ "start": 9508
3334
3200
  }
3335
3201
  ]
3336
3202
  },
3337
- "contracts/types/RoleId.sol": {
3338
- "RoleIdLib": [
3339
- {
3340
- "length": 20,
3341
- "start": 2090
3342
- },
3343
- {
3344
- "length": 20,
3345
- "start": 2261
3346
- },
3347
- {
3348
- "length": 20,
3349
- "start": 3702
3350
- },
3351
- {
3352
- "length": 20,
3353
- "start": 4027
3354
- },
3203
+ "contracts/types/StateId.sol": {
3204
+ "StateIdLib": [
3355
3205
  {
3356
3206
  "length": 20,
3357
- "start": 11962
3207
+ "start": 6706
3358
3208
  },
3359
3209
  {
3360
3210
  "length": 20,
3361
- "start": 13589
3211
+ "start": 9662
3362
3212
  },
3363
3213
  {
3364
3214
  "length": 20,
3365
- "start": 13675
3215
+ "start": 10070
3366
3216
  },
3367
3217
  {
3368
3218
  "length": 20,
3369
- "start": 14700
3219
+ "start": 11934
3370
3220
  },
3371
3221
  {
3372
3222
  "length": 20,
3373
- "start": 14868
3223
+ "start": 12154
3374
3224
  },
3375
3225
  {
3376
3226
  "length": 20,
3377
- "start": 15884
3227
+ "start": 13469
3378
3228
  },
3379
3229
  {
3380
3230
  "length": 20,
3381
- "start": 16297
3231
+ "start": 14175
3382
3232
  },
3383
3233
  {
3384
3234
  "length": 20,
3385
- "start": 18306
3235
+ "start": 14395
3386
3236
  }
3387
3237
  ]
3388
3238
  },
3389
- "contracts/types/StateId.sol": {
3390
- "StateIdLib": [
3391
- {
3392
- "length": 20,
3393
- "start": 4316
3394
- },
3395
- {
3396
- "length": 20,
3397
- "start": 5066
3398
- },
3399
- {
3400
- "length": 20,
3401
- "start": 6183
3402
- },
3403
- {
3404
- "length": 20,
3405
- "start": 12259
3406
- },
3407
- {
3408
- "length": 20,
3409
- "start": 15396
3410
- },
3411
- {
3412
- "length": 20,
3413
- "start": 16650
3414
- },
3415
- {
3416
- "length": 20,
3417
- "start": 19625
3418
- },
3419
- {
3420
- "length": 20,
3421
- "start": 20344
3422
- },
3423
- {
3424
- "length": 20,
3425
- "start": 20564
3426
- },
3427
- {
3428
- "length": 20,
3429
- "start": 21164
3430
- },
3239
+ "contracts/types/Version.sol": {
3240
+ "VersionPartLib": [
3431
3241
  {
3432
3242
  "length": 20,
3433
- "start": 21384
3243
+ "start": 10238
3434
3244
  }
3435
3245
  ]
3436
3246
  }
@@ -3440,47 +3250,43 @@
3440
3250
  "Key32Lib": [
3441
3251
  {
3442
3252
  "length": 20,
3443
- "start": 4545
3444
- },
3445
- {
3446
- "length": 20,
3447
- "start": 9839
3253
+ "start": 8655
3448
3254
  },
3449
3255
  {
3450
3256
  "length": 20,
3451
- "start": 12161
3257
+ "start": 10677
3452
3258
  },
3453
3259
  {
3454
3260
  "length": 20,
3455
- "start": 12910
3261
+ "start": 10793
3456
3262
  },
3457
3263
  {
3458
3264
  "length": 20,
3459
- "start": 13026
3265
+ "start": 10975
3460
3266
  },
3461
3267
  {
3462
3268
  "length": 20,
3463
- "start": 13764
3269
+ "start": 11091
3464
3270
  },
3465
3271
  {
3466
3272
  "length": 20,
3467
- "start": 13880
3273
+ "start": 11296
3468
3274
  },
3469
3275
  {
3470
3276
  "length": 20,
3471
- "start": 14612
3277
+ "start": 12049
3472
3278
  },
3473
3279
  {
3474
3280
  "length": 20,
3475
- "start": 14728
3281
+ "start": 12165
3476
3282
  },
3477
3283
  {
3478
3284
  "length": 20,
3479
- "start": 14910
3285
+ "start": 12890
3480
3286
  },
3481
3287
  {
3482
3288
  "length": 20,
3483
- "start": 15026
3289
+ "start": 13006
3484
3290
  }
3485
3291
  ]
3486
3292
  },
@@ -3488,23 +3294,35 @@
3488
3294
  "NftIdLib": [
3489
3295
  {
3490
3296
  "length": 20,
3491
- "start": 3541
3297
+ "start": 3724
3298
+ },
3299
+ {
3300
+ "length": 20,
3301
+ "start": 4232
3302
+ },
3303
+ {
3304
+ "length": 20,
3305
+ "start": 5012
3492
3306
  },
3493
3307
  {
3494
3308
  "length": 20,
3495
- "start": 5617
3309
+ "start": 5586
3496
3310
  },
3497
3311
  {
3498
3312
  "length": 20,
3499
- "start": 6726
3313
+ "start": 6361
3500
3314
  },
3501
3315
  {
3502
3316
  "length": 20,
3503
- "start": 8031
3317
+ "start": 6594
3504
3318
  },
3505
3319
  {
3506
3320
  "length": 20,
3507
- "start": 10406
3321
+ "start": 7592
3322
+ },
3323
+ {
3324
+ "length": 20,
3325
+ "start": 9557
3508
3326
  }
3509
3327
  ]
3510
3328
  },
@@ -3512,7 +3330,7 @@
3512
3330
  "ObjectTypeLib": [
3513
3331
  {
3514
3332
  "length": 20,
3515
- "start": 12282
3333
+ "start": 11417
3516
3334
  }
3517
3335
  ]
3518
3336
  },
@@ -3520,87 +3338,59 @@
3520
3338
  "RiskIdLib": [
3521
3339
  {
3522
3340
  "length": 20,
3523
- "start": 4384
3341
+ "start": 4646
3524
3342
  },
3525
3343
  {
3526
3344
  "length": 20,
3527
- "start": 6336
3345
+ "start": 6446
3528
3346
  },
3529
3347
  {
3530
3348
  "length": 20,
3531
- "start": 8116
3349
+ "start": 7677
3532
3350
  }
3533
3351
  ]
3534
3352
  },
3535
- "contracts/types/RoleId.sol": {
3536
- "RoleIdLib": [
3353
+ "contracts/types/StateId.sol": {
3354
+ "StateIdLib": [
3537
3355
  {
3538
3356
  "length": 20,
3539
- "start": 4836
3357
+ "start": 4875
3540
3358
  },
3541
3359
  {
3542
3360
  "length": 20,
3543
- "start": 6463
3361
+ "start": 7831
3544
3362
  },
3545
3363
  {
3546
3364
  "length": 20,
3547
- "start": 6549
3365
+ "start": 8239
3548
3366
  },
3549
3367
  {
3550
3368
  "length": 20,
3551
- "start": 7574
3369
+ "start": 10103
3552
3370
  },
3553
3371
  {
3554
3372
  "length": 20,
3555
- "start": 7742
3373
+ "start": 10323
3556
3374
  },
3557
3375
  {
3558
3376
  "length": 20,
3559
- "start": 8758
3377
+ "start": 11638
3560
3378
  },
3561
3379
  {
3562
3380
  "length": 20,
3563
- "start": 9171
3381
+ "start": 12344
3564
3382
  },
3565
3383
  {
3566
3384
  "length": 20,
3567
- "start": 11180
3385
+ "start": 12564
3568
3386
  }
3569
3387
  ]
3570
3388
  },
3571
- "contracts/types/StateId.sol": {
3572
- "StateIdLib": [
3573
- {
3574
- "length": 20,
3575
- "start": 5133
3576
- },
3577
- {
3578
- "length": 20,
3579
- "start": 8270
3580
- },
3581
- {
3582
- "length": 20,
3583
- "start": 9524
3584
- },
3585
- {
3586
- "length": 20,
3587
- "start": 12499
3588
- },
3589
- {
3590
- "length": 20,
3591
- "start": 13218
3592
- },
3593
- {
3594
- "length": 20,
3595
- "start": 13438
3596
- },
3597
- {
3598
- "length": 20,
3599
- "start": 14038
3600
- },
3389
+ "contracts/types/Version.sol": {
3390
+ "VersionPartLib": [
3601
3391
  {
3602
3392
  "length": 20,
3603
- "start": 14258
3393
+ "start": 8407
3604
3394
  }
3605
3395
  ]
3606
3396
  }