@superfluid-finance/ethereum-contracts 1.7.1-dev.44eb210.0 → 1.7.1-dev.95c01d3.0

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 (410) hide show
  1. package/LICENSE +5 -41
  2. package/README.md +7 -17
  3. package/artifacts/contracts/agreements/AgreementLibrary.sol/AgreementLibrary.json +2 -2
  4. package/artifacts/contracts/agreements/ConstantFlowAgreementV1.sol/ConstantFlowAgreementV1.json +2 -2
  5. package/artifacts/contracts/agreements/InstantDistributionAgreementV1.sol/InstantDistributionAgreementV1.json +2 -2
  6. package/artifacts/contracts/apps/CFAv1Library.sol/CFAv1Library.json +2 -2
  7. package/artifacts/contracts/apps/IDAv1Library.sol/IDAv1Library.json +2 -2
  8. package/artifacts/contracts/apps/SuperTokenV1Library.sol/SuperTokenV1Library.json +2 -2
  9. package/artifacts/contracts/apps/SuperfluidLoaderLibrary.sol/SuperfluidLoaderLibrary.json +2 -2
  10. package/artifacts/contracts/gov/SuperfluidGovernanceII.sol/SuperfluidGovernanceII.json +2 -2
  11. package/artifacts/contracts/gov/SuperfluidGovernanceII.sol/SuperfluidGovernanceIIProxy.json +2 -2
  12. package/artifacts/contracts/interfaces/superfluid/Definitions.sol/BatchOperation.json +2 -2
  13. package/artifacts/contracts/interfaces/superfluid/Definitions.sol/ContextDefinitions.json +2 -2
  14. package/artifacts/contracts/interfaces/superfluid/Definitions.sol/FlowOperatorDefinitions.json +2 -2
  15. package/artifacts/contracts/interfaces/superfluid/Definitions.sol/SuperAppDefinitions.json +2 -2
  16. package/artifacts/contracts/interfaces/superfluid/Definitions.sol/SuperfluidGovernanceConfigs.json +2 -2
  17. package/artifacts/contracts/libs/SlotsBitmapLibrary.sol/SlotsBitmapLibrary.json +2 -2
  18. package/artifacts/contracts/mocks/AgreementMock.sol/AgreementMock.json +2 -2
  19. package/artifacts/contracts/mocks/CFAAppMocks.sol/ClosingOnUpdateFlowTestApp.json +2 -2
  20. package/artifacts/contracts/mocks/CFAAppMocks.sol/ExclusiveInflowTestApp.json +2 -2
  21. package/artifacts/contracts/mocks/CFAAppMocks.sol/FlowExchangeTestApp.json +2 -2
  22. package/artifacts/contracts/mocks/CFAAppMocks.sol/NonClosableOutflowTestApp.json +2 -2
  23. package/artifacts/contracts/mocks/CFAAppMocks.sol/SelfDeletingFlowTestApp.json +2 -2
  24. package/artifacts/contracts/mocks/CFALibraryMock.sol/CFALibraryMock.json +2 -2
  25. package/artifacts/contracts/mocks/CFALibraryMock.sol/CFALibrarySuperAppMock.json +2 -2
  26. package/artifacts/contracts/mocks/CFAv1NFTMock.sol/ConstantInflowNFTMock.json +2 -2
  27. package/artifacts/contracts/mocks/CFAv1NFTMock.sol/ConstantOutflowNFTMock.json +2 -2
  28. package/artifacts/contracts/mocks/CFAv1NFTMock.sol/NoNFTSuperTokenMock.json +2 -2
  29. package/artifacts/contracts/mocks/CFAv1NFTUpgradabilityMock.sol/ConstantInflowNFTStorageLayoutMock.json +2 -2
  30. package/artifacts/contracts/mocks/CFAv1NFTUpgradabilityMock.sol/ConstantOutflowNFTStorageLayoutMock.json +2 -2
  31. package/artifacts/contracts/mocks/CFAv1NFTUpgradabilityMock.sol/FlowNFTBaseStorageLayoutMock.json +2 -2
  32. package/artifacts/contracts/mocks/CustomSuperTokenMock.sol/CustomSuperTokenProxyMock.json +2 -2
  33. package/artifacts/contracts/mocks/ERC777SenderRecipientMock.sol/ERC777RecipientDrainingGas.json +2 -2
  34. package/artifacts/contracts/mocks/ERC777SenderRecipientMock.sol/ERC777RecipientReverting.json +2 -2
  35. package/artifacts/contracts/mocks/ERC777SenderRecipientMock.sol/ERC777SenderRecipientMock.json +2 -2
  36. package/artifacts/contracts/mocks/ForwarderMock.sol/ForwarderMock.json +2 -2
  37. package/artifacts/contracts/mocks/IDASuperAppTester.sol/IDASuperAppTester.json +2 -2
  38. package/artifacts/contracts/mocks/IDAv1LibraryMock.sol/IDAv1LibraryMock.json +2 -2
  39. package/artifacts/contracts/mocks/IDAv1LibraryMock.sol/IDAv1LibrarySuperAppMock.json +2 -2
  40. package/artifacts/contracts/mocks/MockSmartWallet.sol/MockSmartWallet.json +2 -2
  41. package/artifacts/contracts/mocks/MultiFlowTesterApp.sol/MultiFlowTesterApp.json +2 -2
  42. package/artifacts/contracts/mocks/StreamRedirector.sol/StreamRedirector.json +2 -2
  43. package/artifacts/contracts/mocks/SuperAppBaseFlowTester.sol/SuperAppBaseFlowTester.json +2 -2
  44. package/artifacts/contracts/mocks/SuperAppMocks.sol/SuperAppFactoryMock.json +2 -2
  45. package/artifacts/contracts/mocks/SuperAppMocks.sol/SuperAppMock.json +2 -2
  46. package/artifacts/contracts/mocks/SuperAppMocks.sol/SuperAppMock2ndLevel.json +2 -2
  47. package/artifacts/contracts/mocks/SuperAppMocks.sol/SuperAppMockAux.json +2 -2
  48. package/artifacts/contracts/mocks/SuperAppMocks.sol/SuperAppMockNotSelfRegistering.json +2 -2
  49. package/artifacts/contracts/mocks/SuperAppMocks.sol/SuperAppMockReturningEmptyCtx.json +2 -2
  50. package/artifacts/contracts/mocks/SuperAppMocks.sol/SuperAppMockReturningInvalidCtx.json +2 -2
  51. package/artifacts/contracts/mocks/SuperAppMocks.sol/SuperAppMockUsingDeprecatedRegisterApp.json +2 -2
  52. package/artifacts/contracts/mocks/SuperAppMocks.sol/SuperAppMockWithRegistrationKey.json +2 -2
  53. package/artifacts/contracts/mocks/SuperTokenFactoryMock.sol/SuperTokenFactoryMock.json +2 -2
  54. package/artifacts/contracts/mocks/SuperTokenFactoryMock.sol/SuperTokenFactoryMock42.json +2 -2
  55. package/artifacts/contracts/mocks/SuperTokenFactoryMock.sol/SuperTokenFactoryStorageLayoutTester.json +2 -2
  56. package/artifacts/contracts/mocks/SuperTokenFactoryMock.sol/SuperTokenFactoryUpdateLogicContractsTester.json +2 -2
  57. package/artifacts/contracts/mocks/SuperTokenLibraryV1Mock.sol/SuperTokenLibraryCFAMock.json +2 -2
  58. package/artifacts/contracts/mocks/SuperTokenLibraryV1Mock.sol/SuperTokenLibraryCFASuperAppMock.json +2 -2
  59. package/artifacts/contracts/mocks/SuperTokenLibraryV1Mock.sol/SuperTokenLibraryIDAMock.json +2 -2
  60. package/artifacts/contracts/mocks/SuperTokenLibraryV1Mock.sol/SuperTokenLibraryIDASuperAppMock.json +2 -2
  61. package/artifacts/contracts/mocks/SuperTokenMock.sol/SuperTokenMock.json +2 -2
  62. package/artifacts/contracts/mocks/SuperTokenMock.sol/SuperTokenStorageLayoutTester.json +2 -2
  63. package/artifacts/contracts/mocks/SuperfluidGovernanceIIMock.sol/SuperfluidGovernanceIIUpgradabilityTester.json +2 -2
  64. package/artifacts/contracts/mocks/SuperfluidMock.sol/SuperfluidMock.json +2 -2
  65. package/artifacts/contracts/mocks/SuperfluidMock.sol/SuperfluidUpgradabilityTester.json +2 -2
  66. package/artifacts/contracts/superfluid/ConstantInflowNFT.sol/ConstantInflowNFT.json +2 -2
  67. package/artifacts/contracts/superfluid/ConstantOutflowNFT.sol/ConstantOutflowNFT.json +2 -2
  68. package/artifacts/contracts/superfluid/FullUpgradableSuperTokenProxy.sol/FullUpgradableSuperTokenProxy.json +2 -2
  69. package/artifacts/contracts/superfluid/SuperToken.sol/SuperToken.json +2 -2
  70. package/artifacts/contracts/superfluid/SuperTokenFactory.sol/SuperTokenFactory.json +2 -2
  71. package/artifacts/contracts/superfluid/Superfluid.sol/Superfluid.json +2 -2
  72. package/artifacts/contracts/tokens/PureSuperToken.sol/PureSuperToken.json +2 -2
  73. package/artifacts/contracts/tokens/SETH.sol/SETHProxy.json +2 -2
  74. package/artifacts/contracts/utils/BatchLiquidator.sol/BatchLiquidator.json +2 -2
  75. package/artifacts/contracts/utils/CFAv1Forwarder.sol/CFAv1Forwarder.json +2 -2
  76. package/artifacts/contracts/utils/IDAv1Forwarder.sol/IDAv1Forwarder.json +2 -2
  77. package/artifacts/contracts/utils/Resolver.sol/Resolver.json +2 -2
  78. package/artifacts/contracts/utils/SuperUpgrader.sol/SuperUpgrader.json +2 -2
  79. package/artifacts/contracts/utils/SuperfluidFrameworkDeployer.sol/SuperfluidFrameworkDeployer.json +2 -2
  80. package/artifacts/contracts/utils/SuperfluidFrameworkDeploymentSteps.sol/CFAv1ForwarderDeployerLibrary.json +2 -2
  81. package/artifacts/contracts/utils/SuperfluidFrameworkDeploymentSteps.sol/IDAv1ForwarderDeployerLibrary.json +2 -2
  82. package/artifacts/contracts/utils/SuperfluidFrameworkDeploymentSteps.sol/ProxyDeployerLibrary.json +2 -2
  83. package/artifacts/contracts/utils/SuperfluidFrameworkDeploymentSteps.sol/SuperTokenDeployerLibrary.json +2 -2
  84. package/artifacts/contracts/utils/SuperfluidFrameworkDeploymentSteps.sol/SuperfluidCFAv1DeployerLibrary.json +2 -2
  85. package/artifacts/contracts/utils/SuperfluidFrameworkDeploymentSteps.sol/SuperfluidFrameworkDeploymentSteps.json +2 -2
  86. package/artifacts/contracts/utils/SuperfluidFrameworkDeploymentSteps.sol/SuperfluidGovDeployerLibrary.json +2 -2
  87. package/artifacts/contracts/utils/SuperfluidFrameworkDeploymentSteps.sol/SuperfluidHostDeployerLibrary.json +2 -2
  88. package/artifacts/contracts/utils/SuperfluidFrameworkDeploymentSteps.sol/SuperfluidIDAv1DeployerLibrary.json +2 -2
  89. package/artifacts/contracts/utils/SuperfluidFrameworkDeploymentSteps.sol/SuperfluidLoaderDeployerLibrary.json +2 -2
  90. package/artifacts/contracts/utils/SuperfluidFrameworkDeploymentSteps.sol/SuperfluidNFTLogicDeployerLibrary.json +2 -2
  91. package/artifacts/contracts/utils/SuperfluidFrameworkDeploymentSteps.sol/SuperfluidPeripheryDeployerLibrary.json +2 -2
  92. package/artifacts/contracts/utils/SuperfluidFrameworkDeploymentSteps.sol/TokenDeployerLibrary.json +2 -2
  93. package/artifacts/contracts/utils/SuperfluidLoader.sol/SuperfluidLoader.json +2 -2
  94. package/artifacts/contracts/utils/TOGA.sol/TOGA.json +2 -2
  95. package/artifacts/contracts/utils/TestGovernance.sol/TestGovernance.json +2 -2
  96. package/artifacts/contracts/utils/TestResolver.sol/TestResolver.json +2 -2
  97. package/artifacts/contracts/utils/TestToken.sol/TestToken.json +2 -2
  98. package/build/contracts/AccessControl.json +1 -1
  99. package/build/contracts/AccessControlEnumerable.json +1 -1
  100. package/build/contracts/Address.json +1 -1
  101. package/build/contracts/AgreementBase.json +2 -2
  102. package/build/contracts/AgreementLibrary.json +4 -4
  103. package/build/contracts/BaseRelayRecipient.json +2 -2
  104. package/build/contracts/BatchLiquidator.json +4 -4
  105. package/build/contracts/BatchOperation.json +566 -566
  106. package/build/contracts/CFAv1Forwarder.json +512 -512
  107. package/build/contracts/CFAv1ForwarderDeployerLibrary.json +1539 -1539
  108. package/build/contracts/CFAv1Library.json +1564 -1564
  109. package/build/contracts/CallUtils.json +1 -1
  110. package/build/contracts/ClosingOnUpdateFlowTestApp.json +5 -5
  111. package/build/contracts/ConstantFlowAgreementV1.json +5 -5
  112. package/build/contracts/ConstantInflowNFT.json +4 -4
  113. package/build/contracts/ConstantOutflowNFT.json +4 -4
  114. package/build/contracts/Context.json +1 -1
  115. package/build/contracts/ContextDefinitions.json +566 -566
  116. package/build/contracts/CustomSuperTokenBase.json +16 -16
  117. package/build/contracts/ERC165.json +1 -1
  118. package/build/contracts/ERC1820Implementer.json +1 -1
  119. package/build/contracts/ERC1820RegistryCompiled.json +1 -1
  120. package/build/contracts/ERC20.json +1 -1
  121. package/build/contracts/ERC20WithTokenInfo.json +19 -19
  122. package/build/contracts/ERC777Helper.json +1 -1
  123. package/build/contracts/ERC777RecipientDrainingGas.json +4 -4
  124. package/build/contracts/ERC777RecipientReverting.json +4 -4
  125. package/build/contracts/EnumerableSet.json +1 -1
  126. package/build/contracts/EventsEmitter.json +1 -1
  127. package/build/contracts/ExclusiveInflowTestApp.json +5 -5
  128. package/build/contracts/FixedSizeData.json +1 -1
  129. package/build/contracts/FlowExchangeTestApp.json +5 -5
  130. package/build/contracts/FlowNFTBase.json +2 -2
  131. package/build/contracts/FlowOperatorDefinitions.json +566 -566
  132. package/build/contracts/ForwarderBase.json +133 -132
  133. package/build/contracts/FullUpgradableSuperTokenProxy.json +4 -4
  134. package/build/contracts/IAccessControl.json +1 -1
  135. package/build/contracts/IAccessControlEnumerable.json +1 -1
  136. package/build/contracts/IConstantFlowAgreementV1.json +599 -599
  137. package/build/contracts/IConstantInflowNFT.json +37 -37
  138. package/build/contracts/IConstantOutflowNFT.json +81 -81
  139. package/build/contracts/IDAv1Forwarder.json +6 -6
  140. package/build/contracts/IDAv1ForwarderDeployerLibrary.json +1539 -1539
  141. package/build/contracts/IDAv1Library.json +1793 -1793
  142. package/build/contracts/IERC165.json +1 -1
  143. package/build/contracts/IERC1820Implementer.json +1 -1
  144. package/build/contracts/IERC1820Registry.json +1 -1
  145. package/build/contracts/IERC20.json +1 -1
  146. package/build/contracts/IERC20Metadata.json +1 -1
  147. package/build/contracts/IERC20Permit.json +1 -1
  148. package/build/contracts/IERC721.json +1 -1
  149. package/build/contracts/IERC721Metadata.json +1 -1
  150. package/build/contracts/IERC777.json +1 -1
  151. package/build/contracts/IERC777Recipient.json +1 -1
  152. package/build/contracts/IERC777Sender.json +1 -1
  153. package/build/contracts/IFlowNFTBase.json +109 -109
  154. package/build/contracts/IInstantDistributionAgreementV1.json +597 -597
  155. package/build/contracts/IMultiSigWallet.json +1 -1
  156. package/build/contracts/IPoolAdminNFT.json +8 -8
  157. package/build/contracts/IPoolMemberNFT.json +8 -8
  158. package/build/contracts/IPureSuperToken.json +33 -33
  159. package/build/contracts/IPureSuperTokenCustom.json +33 -33
  160. package/build/contracts/IRelayRecipient.json +26 -26
  161. package/build/contracts/IResolver.json +39 -39
  162. package/build/contracts/ISETH.json +38 -38
  163. package/build/contracts/ISETHCustom.json +38 -38
  164. package/build/contracts/ISuperAgreement.json +43 -43
  165. package/build/contracts/ISuperApp.json +170 -170
  166. package/build/contracts/ISuperToken.json +654 -654
  167. package/build/contracts/ISuperTokenFactory.json +192 -192
  168. package/build/contracts/ISuperfluid.json +753 -753
  169. package/build/contracts/ISuperfluidGovernance.json +190 -190
  170. package/build/contracts/ISuperfluidToken.json +408 -408
  171. package/build/contracts/ITOGAv1.json +2 -2
  172. package/build/contracts/ITOGAv2.json +2 -2
  173. package/build/contracts/ITOGAv3.json +2 -2
  174. package/build/contracts/Initializable.json +1 -1
  175. package/build/contracts/InstantDistributionAgreementV1.json +5 -5
  176. package/build/contracts/Math.json +1 -1
  177. package/build/contracts/NonClosableOutflowTestApp.json +5 -5
  178. package/build/contracts/Ownable.json +1 -1
  179. package/build/contracts/Proxy.json +1 -1
  180. package/build/contracts/ProxyDeployerLibrary.json +1539 -1539
  181. package/build/contracts/PureSuperToken.json +4 -4
  182. package/build/contracts/Resolver.json +87 -88
  183. package/build/contracts/SETHProxy.json +4 -4
  184. package/build/contracts/SafeCast.json +1 -1
  185. package/build/contracts/SafeERC20.json +1 -1
  186. package/build/contracts/SafeGasLibrary.json +1 -1
  187. package/build/contracts/SafeMath.json +1 -1
  188. package/build/contracts/SelfDeletingFlowTestApp.json +5 -5
  189. package/build/contracts/SlotsBitmapLibrary.json +4 -4
  190. package/build/contracts/StreamRedirector.json +5 -5
  191. package/build/contracts/Strings.json +1 -1
  192. package/build/contracts/SuperAppBase.json +167 -167
  193. package/build/contracts/SuperAppBaseFlow.json +681 -681
  194. package/build/contracts/SuperAppDefinitions.json +566 -566
  195. package/build/contracts/SuperToken.json +4 -4
  196. package/build/contracts/SuperTokenDeployerLibrary.json +1539 -1539
  197. package/build/contracts/SuperTokenFactory.json +4 -4
  198. package/build/contracts/SuperTokenFactoryBase.json +2 -2
  199. package/build/contracts/SuperTokenV1Library.json +3782 -3782
  200. package/build/contracts/SuperUpgrader.json +4 -4
  201. package/build/contracts/Superfluid.json +5 -5
  202. package/build/contracts/SuperfluidCFAv1DeployerLibrary.json +1539 -1539
  203. package/build/contracts/SuperfluidFrameworkDeployer.json +890 -890
  204. package/build/contracts/SuperfluidFrameworkDeploymentSteps.json +1539 -1539
  205. package/build/contracts/SuperfluidGovDeployerLibrary.json +1539 -1539
  206. package/build/contracts/SuperfluidGovernanceBase.json +2 -2
  207. package/build/contracts/SuperfluidGovernanceConfigs.json +566 -566
  208. package/build/contracts/SuperfluidGovernanceII.json +5 -5
  209. package/build/contracts/SuperfluidGovernanceIIProxy.json +4 -4
  210. package/build/contracts/SuperfluidHostDeployerLibrary.json +1539 -1539
  211. package/build/contracts/SuperfluidIDAv1DeployerLibrary.json +1539 -1539
  212. package/build/contracts/SuperfluidLoader.json +131 -132
  213. package/build/contracts/SuperfluidLoaderDeployerLibrary.json +1539 -1539
  214. package/build/contracts/SuperfluidLoaderLibrary.json +221 -221
  215. package/build/contracts/SuperfluidNFTLogicDeployerLibrary.json +1539 -1539
  216. package/build/contracts/SuperfluidPeripheryDeployerLibrary.json +1539 -1539
  217. package/build/contracts/SuperfluidToken.json +2 -2
  218. package/build/contracts/TOGA.json +4 -4
  219. package/build/contracts/TestGovernance.json +159 -160
  220. package/build/contracts/TestResolver.json +44 -45
  221. package/build/contracts/TestToken.json +93 -94
  222. package/build/contracts/TokenDeployerLibrary.json +1539 -1539
  223. package/build/contracts/TokenInfo.json +30 -30
  224. package/build/contracts/UUPSProxiable.json +1 -1
  225. package/build/contracts/UUPSProxy.json +1 -1
  226. package/build/contracts/UUPSUtils.json +1 -1
  227. package/build/typechain/factories/contracts/agreements/ConstantFlowAgreementV1__factory.d.ts +1 -1
  228. package/build/typechain/factories/contracts/agreements/ConstantFlowAgreementV1__factory.js +1 -1
  229. package/build/typechain/factories/contracts/agreements/InstantDistributionAgreementV1__factory.d.ts +1 -1
  230. package/build/typechain/factories/contracts/agreements/InstantDistributionAgreementV1__factory.js +1 -1
  231. package/build/typechain/factories/contracts/apps/SuperfluidLoaderLibrary__factory.d.ts +1 -1
  232. package/build/typechain/factories/contracts/apps/SuperfluidLoaderLibrary__factory.js +1 -1
  233. package/build/typechain/factories/contracts/gov/SuperfluidGovernanceII.sol/SuperfluidGovernanceIIProxy__factory.d.ts +1 -1
  234. package/build/typechain/factories/contracts/gov/SuperfluidGovernanceII.sol/SuperfluidGovernanceIIProxy__factory.js +1 -1
  235. package/build/typechain/factories/contracts/gov/SuperfluidGovernanceII.sol/SuperfluidGovernanceII__factory.d.ts +1 -1
  236. package/build/typechain/factories/contracts/gov/SuperfluidGovernanceII.sol/SuperfluidGovernanceII__factory.js +1 -1
  237. package/build/typechain/factories/contracts/libs/SlotsBitmapLibrary__factory.d.ts +1 -1
  238. package/build/typechain/factories/contracts/libs/SlotsBitmapLibrary__factory.js +1 -1
  239. package/build/typechain/factories/contracts/mocks/AgreementMock__factory.d.ts +1 -1
  240. package/build/typechain/factories/contracts/mocks/AgreementMock__factory.js +1 -1
  241. package/build/typechain/factories/contracts/mocks/CFAAppMocks.sol/ClosingOnUpdateFlowTestApp__factory.d.ts +1 -1
  242. package/build/typechain/factories/contracts/mocks/CFAAppMocks.sol/ClosingOnUpdateFlowTestApp__factory.js +1 -1
  243. package/build/typechain/factories/contracts/mocks/CFAAppMocks.sol/ExclusiveInflowTestApp__factory.d.ts +1 -1
  244. package/build/typechain/factories/contracts/mocks/CFAAppMocks.sol/ExclusiveInflowTestApp__factory.js +1 -1
  245. package/build/typechain/factories/contracts/mocks/CFAAppMocks.sol/FlowExchangeTestApp__factory.d.ts +1 -1
  246. package/build/typechain/factories/contracts/mocks/CFAAppMocks.sol/FlowExchangeTestApp__factory.js +1 -1
  247. package/build/typechain/factories/contracts/mocks/CFAAppMocks.sol/NonClosableOutflowTestApp__factory.d.ts +1 -1
  248. package/build/typechain/factories/contracts/mocks/CFAAppMocks.sol/NonClosableOutflowTestApp__factory.js +1 -1
  249. package/build/typechain/factories/contracts/mocks/CFAAppMocks.sol/SelfDeletingFlowTestApp__factory.d.ts +1 -1
  250. package/build/typechain/factories/contracts/mocks/CFAAppMocks.sol/SelfDeletingFlowTestApp__factory.js +1 -1
  251. package/build/typechain/factories/contracts/mocks/CFALibraryMock.sol/CFALibraryMock__factory.d.ts +1 -1
  252. package/build/typechain/factories/contracts/mocks/CFALibraryMock.sol/CFALibraryMock__factory.js +1 -1
  253. package/build/typechain/factories/contracts/mocks/CFALibraryMock.sol/CFALibrarySuperAppMock__factory.d.ts +1 -1
  254. package/build/typechain/factories/contracts/mocks/CFALibraryMock.sol/CFALibrarySuperAppMock__factory.js +1 -1
  255. package/build/typechain/factories/contracts/mocks/CFAv1NFTMock.sol/ConstantInflowNFTMock__factory.d.ts +1 -1
  256. package/build/typechain/factories/contracts/mocks/CFAv1NFTMock.sol/ConstantInflowNFTMock__factory.js +1 -1
  257. package/build/typechain/factories/contracts/mocks/CFAv1NFTMock.sol/ConstantOutflowNFTMock__factory.d.ts +1 -1
  258. package/build/typechain/factories/contracts/mocks/CFAv1NFTMock.sol/ConstantOutflowNFTMock__factory.js +1 -1
  259. package/build/typechain/factories/contracts/mocks/CFAv1NFTMock.sol/NoNFTSuperTokenMock__factory.d.ts +1 -1
  260. package/build/typechain/factories/contracts/mocks/CFAv1NFTMock.sol/NoNFTSuperTokenMock__factory.js +1 -1
  261. package/build/typechain/factories/contracts/mocks/CFAv1NFTUpgradabilityMock.sol/ConstantInflowNFTStorageLayoutMock__factory.d.ts +1 -1
  262. package/build/typechain/factories/contracts/mocks/CFAv1NFTUpgradabilityMock.sol/ConstantInflowNFTStorageLayoutMock__factory.js +1 -1
  263. package/build/typechain/factories/contracts/mocks/CFAv1NFTUpgradabilityMock.sol/ConstantOutflowNFTStorageLayoutMock__factory.d.ts +1 -1
  264. package/build/typechain/factories/contracts/mocks/CFAv1NFTUpgradabilityMock.sol/ConstantOutflowNFTStorageLayoutMock__factory.js +1 -1
  265. package/build/typechain/factories/contracts/mocks/CFAv1NFTUpgradabilityMock.sol/FlowNFTBaseStorageLayoutMock__factory.d.ts +1 -1
  266. package/build/typechain/factories/contracts/mocks/CFAv1NFTUpgradabilityMock.sol/FlowNFTBaseStorageLayoutMock__factory.js +1 -1
  267. package/build/typechain/factories/contracts/mocks/CustomSuperTokenMock.sol/CustomSuperTokenProxyMock__factory.d.ts +1 -1
  268. package/build/typechain/factories/contracts/mocks/CustomSuperTokenMock.sol/CustomSuperTokenProxyMock__factory.js +1 -1
  269. package/build/typechain/factories/contracts/mocks/ERC777SenderRecipientMock.sol/ERC777RecipientDrainingGas__factory.d.ts +1 -1
  270. package/build/typechain/factories/contracts/mocks/ERC777SenderRecipientMock.sol/ERC777RecipientDrainingGas__factory.js +1 -1
  271. package/build/typechain/factories/contracts/mocks/ERC777SenderRecipientMock.sol/ERC777RecipientReverting__factory.d.ts +1 -1
  272. package/build/typechain/factories/contracts/mocks/ERC777SenderRecipientMock.sol/ERC777RecipientReverting__factory.js +1 -1
  273. package/build/typechain/factories/contracts/mocks/ERC777SenderRecipientMock.sol/ERC777SenderRecipientMock__factory.d.ts +1 -1
  274. package/build/typechain/factories/contracts/mocks/ERC777SenderRecipientMock.sol/ERC777SenderRecipientMock__factory.js +1 -1
  275. package/build/typechain/factories/contracts/mocks/ForwarderMock__factory.d.ts +1 -1
  276. package/build/typechain/factories/contracts/mocks/ForwarderMock__factory.js +1 -1
  277. package/build/typechain/factories/contracts/mocks/IDASuperAppTester__factory.d.ts +1 -1
  278. package/build/typechain/factories/contracts/mocks/IDASuperAppTester__factory.js +1 -1
  279. package/build/typechain/factories/contracts/mocks/IDAv1LibraryMock.sol/IDAv1LibraryMock__factory.d.ts +1 -1
  280. package/build/typechain/factories/contracts/mocks/IDAv1LibraryMock.sol/IDAv1LibraryMock__factory.js +1 -1
  281. package/build/typechain/factories/contracts/mocks/IDAv1LibraryMock.sol/IDAv1LibrarySuperAppMock__factory.d.ts +1 -1
  282. package/build/typechain/factories/contracts/mocks/IDAv1LibraryMock.sol/IDAv1LibrarySuperAppMock__factory.js +1 -1
  283. package/build/typechain/factories/contracts/mocks/MockSmartWallet__factory.d.ts +1 -1
  284. package/build/typechain/factories/contracts/mocks/MockSmartWallet__factory.js +1 -1
  285. package/build/typechain/factories/contracts/mocks/MultiFlowTesterApp__factory.d.ts +1 -1
  286. package/build/typechain/factories/contracts/mocks/MultiFlowTesterApp__factory.js +1 -1
  287. package/build/typechain/factories/contracts/mocks/StreamRedirector__factory.d.ts +1 -1
  288. package/build/typechain/factories/contracts/mocks/StreamRedirector__factory.js +1 -1
  289. package/build/typechain/factories/contracts/mocks/SuperAppBaseFlowTester__factory.d.ts +1 -1
  290. package/build/typechain/factories/contracts/mocks/SuperAppBaseFlowTester__factory.js +1 -1
  291. package/build/typechain/factories/contracts/mocks/SuperAppMocks.sol/SuperAppFactoryMock__factory.d.ts +1 -1
  292. package/build/typechain/factories/contracts/mocks/SuperAppMocks.sol/SuperAppFactoryMock__factory.js +1 -1
  293. package/build/typechain/factories/contracts/mocks/SuperAppMocks.sol/SuperAppMock2ndLevel__factory.d.ts +1 -1
  294. package/build/typechain/factories/contracts/mocks/SuperAppMocks.sol/SuperAppMock2ndLevel__factory.js +1 -1
  295. package/build/typechain/factories/contracts/mocks/SuperAppMocks.sol/SuperAppMockAux__factory.d.ts +1 -1
  296. package/build/typechain/factories/contracts/mocks/SuperAppMocks.sol/SuperAppMockAux__factory.js +1 -1
  297. package/build/typechain/factories/contracts/mocks/SuperAppMocks.sol/SuperAppMockReturningEmptyCtx__factory.d.ts +1 -1
  298. package/build/typechain/factories/contracts/mocks/SuperAppMocks.sol/SuperAppMockReturningEmptyCtx__factory.js +1 -1
  299. package/build/typechain/factories/contracts/mocks/SuperAppMocks.sol/SuperAppMockReturningInvalidCtx__factory.d.ts +1 -1
  300. package/build/typechain/factories/contracts/mocks/SuperAppMocks.sol/SuperAppMockReturningInvalidCtx__factory.js +1 -1
  301. package/build/typechain/factories/contracts/mocks/SuperAppMocks.sol/SuperAppMockUsingDeprecatedRegisterApp__factory.d.ts +1 -1
  302. package/build/typechain/factories/contracts/mocks/SuperAppMocks.sol/SuperAppMockUsingDeprecatedRegisterApp__factory.js +1 -1
  303. package/build/typechain/factories/contracts/mocks/SuperAppMocks.sol/SuperAppMockWithRegistrationKey__factory.d.ts +1 -1
  304. package/build/typechain/factories/contracts/mocks/SuperAppMocks.sol/SuperAppMockWithRegistrationKey__factory.js +1 -1
  305. package/build/typechain/factories/contracts/mocks/SuperAppMocks.sol/SuperAppMock__factory.d.ts +1 -1
  306. package/build/typechain/factories/contracts/mocks/SuperAppMocks.sol/SuperAppMock__factory.js +1 -1
  307. package/build/typechain/factories/contracts/mocks/SuperTokenFactoryMock.sol/SuperTokenFactoryMock42__factory.d.ts +1 -1
  308. package/build/typechain/factories/contracts/mocks/SuperTokenFactoryMock.sol/SuperTokenFactoryMock42__factory.js +1 -1
  309. package/build/typechain/factories/contracts/mocks/SuperTokenFactoryMock.sol/SuperTokenFactoryMock__factory.d.ts +1 -1
  310. package/build/typechain/factories/contracts/mocks/SuperTokenFactoryMock.sol/SuperTokenFactoryMock__factory.js +1 -1
  311. package/build/typechain/factories/contracts/mocks/SuperTokenFactoryMock.sol/SuperTokenFactoryStorageLayoutTester__factory.d.ts +1 -1
  312. package/build/typechain/factories/contracts/mocks/SuperTokenFactoryMock.sol/SuperTokenFactoryStorageLayoutTester__factory.js +1 -1
  313. package/build/typechain/factories/contracts/mocks/SuperTokenFactoryMock.sol/SuperTokenFactoryUpdateLogicContractsTester__factory.d.ts +1 -1
  314. package/build/typechain/factories/contracts/mocks/SuperTokenFactoryMock.sol/SuperTokenFactoryUpdateLogicContractsTester__factory.js +1 -1
  315. package/build/typechain/factories/contracts/mocks/SuperTokenLibraryV1Mock.sol/SuperTokenLibraryCFAMock__factory.d.ts +1 -1
  316. package/build/typechain/factories/contracts/mocks/SuperTokenLibraryV1Mock.sol/SuperTokenLibraryCFAMock__factory.js +1 -1
  317. package/build/typechain/factories/contracts/mocks/SuperTokenLibraryV1Mock.sol/SuperTokenLibraryCFASuperAppMock__factory.d.ts +1 -1
  318. package/build/typechain/factories/contracts/mocks/SuperTokenLibraryV1Mock.sol/SuperTokenLibraryCFASuperAppMock__factory.js +1 -1
  319. package/build/typechain/factories/contracts/mocks/SuperTokenLibraryV1Mock.sol/SuperTokenLibraryIDAMock__factory.d.ts +1 -1
  320. package/build/typechain/factories/contracts/mocks/SuperTokenLibraryV1Mock.sol/SuperTokenLibraryIDAMock__factory.js +1 -1
  321. package/build/typechain/factories/contracts/mocks/SuperTokenLibraryV1Mock.sol/SuperTokenLibraryIDASuperAppMock__factory.d.ts +1 -1
  322. package/build/typechain/factories/contracts/mocks/SuperTokenLibraryV1Mock.sol/SuperTokenLibraryIDASuperAppMock__factory.js +1 -1
  323. package/build/typechain/factories/contracts/mocks/SuperTokenMock.sol/SuperTokenMock__factory.d.ts +1 -1
  324. package/build/typechain/factories/contracts/mocks/SuperTokenMock.sol/SuperTokenMock__factory.js +1 -1
  325. package/build/typechain/factories/contracts/mocks/SuperTokenMock.sol/SuperTokenStorageLayoutTester__factory.d.ts +1 -1
  326. package/build/typechain/factories/contracts/mocks/SuperTokenMock.sol/SuperTokenStorageLayoutTester__factory.js +1 -1
  327. package/build/typechain/factories/contracts/mocks/SuperfluidGovernanceIIMock.sol/SuperfluidGovernanceIIUpgradabilityTester__factory.d.ts +1 -1
  328. package/build/typechain/factories/contracts/mocks/SuperfluidGovernanceIIMock.sol/SuperfluidGovernanceIIUpgradabilityTester__factory.js +1 -1
  329. package/build/typechain/factories/contracts/mocks/SuperfluidMock.sol/SuperfluidMock__factory.d.ts +1 -1
  330. package/build/typechain/factories/contracts/mocks/SuperfluidMock.sol/SuperfluidMock__factory.js +1 -1
  331. package/build/typechain/factories/contracts/mocks/SuperfluidMock.sol/SuperfluidUpgradabilityTester__factory.d.ts +1 -1
  332. package/build/typechain/factories/contracts/mocks/SuperfluidMock.sol/SuperfluidUpgradabilityTester__factory.js +1 -1
  333. package/build/typechain/factories/contracts/superfluid/ConstantInflowNFT__factory.d.ts +1 -1
  334. package/build/typechain/factories/contracts/superfluid/ConstantInflowNFT__factory.js +1 -1
  335. package/build/typechain/factories/contracts/superfluid/ConstantOutflowNFT__factory.d.ts +1 -1
  336. package/build/typechain/factories/contracts/superfluid/ConstantOutflowNFT__factory.js +1 -1
  337. package/build/typechain/factories/contracts/superfluid/FullUpgradableSuperTokenProxy__factory.d.ts +1 -1
  338. package/build/typechain/factories/contracts/superfluid/FullUpgradableSuperTokenProxy__factory.js +1 -1
  339. package/build/typechain/factories/contracts/superfluid/SuperTokenFactory.sol/SuperTokenFactory__factory.d.ts +1 -1
  340. package/build/typechain/factories/contracts/superfluid/SuperTokenFactory.sol/SuperTokenFactory__factory.js +1 -1
  341. package/build/typechain/factories/contracts/superfluid/SuperToken__factory.d.ts +1 -1
  342. package/build/typechain/factories/contracts/superfluid/SuperToken__factory.js +1 -1
  343. package/build/typechain/factories/contracts/superfluid/Superfluid__factory.d.ts +1 -1
  344. package/build/typechain/factories/contracts/superfluid/Superfluid__factory.js +1 -1
  345. package/build/typechain/factories/contracts/tokens/PureSuperToken__factory.d.ts +1 -1
  346. package/build/typechain/factories/contracts/tokens/PureSuperToken__factory.js +1 -1
  347. package/build/typechain/factories/contracts/tokens/SETH.sol/SETHProxy__factory.d.ts +1 -1
  348. package/build/typechain/factories/contracts/tokens/SETH.sol/SETHProxy__factory.js +1 -1
  349. package/build/typechain/factories/contracts/utils/BatchLiquidator__factory.d.ts +1 -1
  350. package/build/typechain/factories/contracts/utils/BatchLiquidator__factory.js +1 -1
  351. package/build/typechain/factories/contracts/utils/CFAv1Forwarder__factory.d.ts +1 -1
  352. package/build/typechain/factories/contracts/utils/CFAv1Forwarder__factory.js +1 -1
  353. package/build/typechain/factories/contracts/utils/IDAv1Forwarder__factory.d.ts +1 -1
  354. package/build/typechain/factories/contracts/utils/IDAv1Forwarder__factory.js +1 -1
  355. package/build/typechain/factories/contracts/utils/Resolver__factory.d.ts +1 -1
  356. package/build/typechain/factories/contracts/utils/Resolver__factory.js +1 -1
  357. package/build/typechain/factories/contracts/utils/SuperUpgrader__factory.d.ts +1 -1
  358. package/build/typechain/factories/contracts/utils/SuperUpgrader__factory.js +1 -1
  359. package/build/typechain/factories/contracts/utils/SuperfluidFrameworkDeployer__factory.d.ts +1 -1
  360. package/build/typechain/factories/contracts/utils/SuperfluidFrameworkDeployer__factory.js +1 -1
  361. package/build/typechain/factories/contracts/utils/SuperfluidFrameworkDeploymentSteps__factory.d.ts +1 -1
  362. package/build/typechain/factories/contracts/utils/SuperfluidFrameworkDeploymentSteps__factory.js +1 -1
  363. package/build/typechain/factories/contracts/utils/SuperfluidLoader__factory.d.ts +1 -1
  364. package/build/typechain/factories/contracts/utils/SuperfluidLoader__factory.js +1 -1
  365. package/build/typechain/factories/contracts/utils/TOGA.sol/TOGA__factory.d.ts +1 -1
  366. package/build/typechain/factories/contracts/utils/TOGA.sol/TOGA__factory.js +1 -1
  367. package/build/typechain/factories/contracts/utils/TestGovernance__factory.d.ts +1 -1
  368. package/build/typechain/factories/contracts/utils/TestGovernance__factory.js +1 -1
  369. package/build/typechain/factories/contracts/utils/TestResolver__factory.d.ts +1 -1
  370. package/build/typechain/factories/contracts/utils/TestResolver__factory.js +1 -1
  371. package/build/typechain/factories/contracts/utils/TestToken__factory.d.ts +1 -1
  372. package/build/typechain/factories/contracts/utils/TestToken__factory.js +1 -1
  373. package/contracts/apps/CFAv1Library.sol +2 -2
  374. package/contracts/apps/IDAv1Library.sol +2 -2
  375. package/contracts/apps/SuperAppBase.sol +2 -2
  376. package/contracts/apps/SuperAppBaseFlow.sol +2 -2
  377. package/contracts/apps/SuperTokenV1Library.sol +2 -2
  378. package/contracts/apps/SuperfluidLoaderLibrary.sol +1 -1
  379. package/contracts/interfaces/agreements/IConstantFlowAgreementV1.sol +1 -1
  380. package/contracts/interfaces/agreements/IInstantDistributionAgreementV1.sol +1 -1
  381. package/contracts/interfaces/superfluid/CustomSuperTokenBase.sol +1 -1
  382. package/contracts/interfaces/superfluid/Definitions.sol +1 -1
  383. package/contracts/interfaces/superfluid/IConstantInflowNFT.sol +1 -1
  384. package/contracts/interfaces/superfluid/IConstantOutflowNFT.sol +1 -1
  385. package/contracts/interfaces/superfluid/IFlowNFTBase.sol +1 -1
  386. package/contracts/interfaces/superfluid/IPoolAdminNFT.sol +1 -1
  387. package/contracts/interfaces/superfluid/IPoolMemberNFT.sol +1 -1
  388. package/contracts/interfaces/superfluid/ISuperAgreement.sol +1 -1
  389. package/contracts/interfaces/superfluid/ISuperApp.sol +1 -1
  390. package/contracts/interfaces/superfluid/ISuperToken.sol +1 -1
  391. package/contracts/interfaces/superfluid/ISuperTokenFactory.sol +1 -1
  392. package/contracts/interfaces/superfluid/ISuperfluid.sol +1 -1
  393. package/contracts/interfaces/superfluid/ISuperfluidGovernance.sol +1 -1
  394. package/contracts/interfaces/superfluid/ISuperfluidToken.sol +1 -1
  395. package/contracts/interfaces/tokens/ERC20WithTokenInfo.sol +1 -1
  396. package/contracts/interfaces/tokens/IPureSuperToken.sol +1 -1
  397. package/contracts/interfaces/tokens/ISETH.sol +1 -1
  398. package/contracts/interfaces/tokens/TokenInfo.sol +1 -1
  399. package/contracts/interfaces/utils/IRelayRecipient.sol +1 -1
  400. package/contracts/interfaces/utils/IResolver.sol +1 -1
  401. package/contracts/utils/CFAv1Forwarder.sol +1 -1
  402. package/contracts/utils/ForwarderBase.sol +1 -1
  403. package/contracts/utils/Resolver.sol +2 -2
  404. package/contracts/utils/SuperfluidFrameworkDeployer.sol +2 -2
  405. package/contracts/utils/SuperfluidFrameworkDeploymentSteps.sol +2 -2
  406. package/contracts/utils/SuperfluidLoader.sol +2 -2
  407. package/contracts/utils/TestGovernance.sol +2 -2
  408. package/contracts/utils/TestResolver.sol +2 -2
  409. package/contracts/utils/TestToken.sol +2 -2
  410. package/package.json +3 -3
package/LICENSE CHANGED
@@ -1,45 +1,9 @@
1
- This file contains two licenses (AGPLv3 and MIT, each source file of this
2
- package shall state its license type explicitly.
1
+ Superfluid Protocol
3
2
 
4
- --------------------------------------------------------------------------------
3
+ Copyright @ 2020-2022 Superfluid Finance Ltd
5
4
 
6
- Superfluid Protocol Core Contracts
5
+ This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
7
6
 
8
- Copyright @ 2020-2023 Superfluid Finance Ltd
7
+ This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
9
8
 
10
- This program is free software: you can redistribute it and/or modify it under
11
- the terms of the GNU Affero General Public License as published by the Free
12
- Software Foundation, either version 3 of the License, or (at your option) any
13
- later version.
14
-
15
- This program is distributed in the hope that it will be useful, but WITHOUT ANY
16
- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
17
- PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
18
-
19
- You should have received a copy of the GNU Affero General Public License along
20
- with this program. If not, see <https://www.gnu.org/licenses/>.
21
-
22
- --------------------------------------------------------------------------------
23
-
24
- Superfluid Protocol Development Interfaces
25
-
26
- MIT License
27
-
28
- Copyright © 2020-2023 Superfluid Finance Ltd
29
-
30
- Permission is hereby granted, free of charge, to any person obtaining a copy of
31
- this software and associated documentation files (the "Software"), to deal in
32
- the Software without restriction, including without limitation the rights to
33
- use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
34
- the Software, and to permit persons to whom the Software is furnished to do so,
35
- subject to the following conditions:
36
-
37
- The above copyright notice and this permission notice shall be included in all
38
- copies or substantial portions of the Software.
39
-
40
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
41
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
42
- FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
43
- COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
44
- IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
45
- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
9
+ You should have received a copy of the GNU Affero General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
package/README.md CHANGED
@@ -34,7 +34,7 @@ If you're building a smart contract that uses Superfluid protocol, or even your
34
34
 
35
35
  ### Installation
36
36
 
37
- Prerequisites:
37
+ Prerequisites:
38
38
  - [node.js v12+](https://nodejs.org/en/download)
39
39
  - [yarn](https://classic.yarnpkg.com/en/docs/install)
40
40
  - [forge](https://book.getfoundry.sh/getting-started/installation)
@@ -63,9 +63,9 @@ import { IConstantFlowAgreementV1 } from "@superfluid-finance/ethereum-contracts
63
63
  ```
64
64
  The paths in the npm package are the same as in this repository.
65
65
 
66
- ### Writing Tests
66
+ ### Writing Tests
67
67
 
68
- For all future tests, we will be using Foundry as the main framework for writing property, integration and invariant tests.
68
+ For all future tests, we will be using Foundry as the main framework for writing property, integration and invariant tests.
69
69
  Please read this section if you would like to contribute to the test suite.
70
70
 
71
71
  #### Testing Principles
@@ -96,7 +96,7 @@ Tests should be placed in the `test/foundry` folder. The folder structure must f
96
96
 
97
97
  #### Test Contract Naming
98
98
 
99
- The naming convention for test contracts is taken from:
99
+ The naming convention for test contracts is taken from:
100
100
  - The contract you are testing (e.g. `ConstantFlowAgreementV1.sol`)
101
101
  - The type of test you are writing (e.g. `property, integration, invariant`)
102
102
  - The name of the contract will follow the format: `ContractName.(Property|Integration|Invariant)Test`
@@ -116,7 +116,7 @@ The reason for this naming convention is for multiple reasons:
116
116
 
117
117
  The naming convention for test functions must use camelCase and should be descriptive enough so the reader can have a good idea of what the test is doing before even reading the actual test code.
118
118
 
119
- There are two primary type of tests written for unit and integration tests:
119
+ There are two primary type of tests written for unit and integration tests:
120
120
  - tests that are expected to pass
121
121
  - tests that are expected to revert
122
122
 
@@ -174,7 +174,7 @@ _assertFlowOperatorData(
174
174
  ```
175
175
 
176
176
  Additionally, we use foundry's assert functions to make debugging easier by providing a descriptive and unique error message. For example:
177
-
177
+
178
178
  ```solidity
179
179
  assertEq(newFlowRateAllowance, expectedFlowRateAllowance, "CFAv1 ACL: unexpected flow rate allowance");
180
180
  ```
@@ -189,7 +189,7 @@ Clone a project, modify and play!
189
189
  > NOTE: you must deploy erc1820 registry before deploying the Superfluid protocol. You can do this by running `npx hardhat run dev-scripts/deploy-erc1820.js --network localhost` in the terminal.
190
190
 
191
191
  #### Hardhat
192
- You can import the `deployContractsAndToken` function from the `dev-scripts/deploy-contracts-and-token.js` file and use it in your testing scripts. It will deploy the Superfluid protocol and deploy Wrapper, Native Asset and Pure SuperToken's for you.
192
+ You can import the `deployContractsAndToken` function from the `dev-scripts/deploy-contracts-and-token.js` file and use it in your testing scripts. It will deploy the Superfluid protocol and deploy Wrapper, Native Asset and Pure SuperToken's for you.
193
193
  Alternatively, you can execute `npx hardhat run dev-scripts/run-deploy-contracts-and-token.js --network localhost` to deploy the contracts and tokens to a local hardhat node, you will know this worked if you see the terminal window with your local hardhat node running spit out a bunch of things.
194
194
 
195
195
  #### Foundry
@@ -359,16 +359,6 @@ In the [scripts folder](/scripts) you can find several scripts for deploying/con
359
359
 
360
360
  Give a ⭐️ if this project helped you!
361
361
 
362
- # License
363
-
364
- The primary license for Superfluid Protocol is the GNU Affero General Public License v3 (`AGPL-v3`), see [LICENSE](https://github.com/superfluid-finance/protocol-monorepo/blob/dev/packages/ethereum-contracts/LICENSE). Minus the following exceptions:
365
-
366
- - [Interfaces](./contracts/interfaces) have a MIT license.
367
- - [Libraries for Super Apps development](./contracts/apps) have a MIT license.
368
- - [Some of the utils](./contracts/utils) have a MIT license.
369
-
370
- Each of these files states their license type.
371
-
372
362
  ---
373
363
 
374
364
  _This README was generated with ❤️ by [readme-md-generator](https://github.com/kefranabg/readme-md-generator)_
@@ -3,8 +3,8 @@
3
3
  "contractName": "AgreementLibrary",
4
4
  "sourceName": "contracts/agreements/AgreementLibrary.sol",
5
5
  "abi": [],
6
- "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122073089d2a936bb333878728af785c87e8aad90fbf4519f0119ee788f6b43e090f64736f6c63430008130033",
7
- "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122073089d2a936bb333878728af785c87e8aad90fbf4519f0119ee788f6b43e090f64736f6c63430008130033",
6
+ "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122028aef613b3c4530c355624c0f1d7bfa31e5e125679647df83c75bb7af9af979264736f6c63430008130033",
7
+ "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122028aef613b3c4530c355624c0f1d7bfa31e5e125679647df83c75bb7af9af979264736f6c63430008130033",
8
8
  "linkReferences": {},
9
9
  "deployedLinkReferences": {}
10
10
  }
@@ -1122,8 +1122,8 @@
1122
1122
  "type": "function"
1123
1123
  }
1124
1124
  ],
1125
- "bytecode": "0x60a06040523480156200001157600080fd5b506040516200550838038062005508833981016040819052620000349162000046565b6001600160a01b031660805262000078565b6000602082840312156200005957600080fd5b81516001600160a01b03811681146200007157600080fd5b9392505050565b60805161544a620000be600039600081816107a2015281816109b301528181611028015281816110bd015281816111720152818161186201526118f7015261544a6000f3fe608060405234801561001057600080fd5b50600436106101e45760003560e01c806354b770e31161010f5780639b2e48bc116100a2578063b4b333c611610071578063b4b333c6146104ab578063bf3fbc28146104be578063e6a1e888146104e1578063e8e7e2d1146104f457600080fd5b80639b2e48bc146104575780639cb28b72146102e6578063aabd266814610485578063ac5f5d001461049857600080fd5b8063811b3d40116100de578063811b3d40146104165780638d997f6e1461042957806394229ecb1461043c5780639903ad381461044f57600080fd5b806354b770e3146103b75780635f51fb23146103ca57806362fc305e146103dd5780637730599e146103f057600080fd5b8063354b9590116101875780634fe9c291116101565780634fe9c2911461035257806350209a621461037c57806350d75d251461038f57806352d1902d146103af57600080fd5b8063354b9590146102f457806346951954146103075780634b839e0b1461031c5780634c8b181f1461033f57600080fd5b8063062e56ec116101c3578063062e56ec1461026157806309d256ef146102815780630f1ac495146102b057806326b0f536146102e657600080fd5b8062422bbe146101e957806304aafa49146102215780630602f7db1461023b575b600080fd5b6101fc6101f73660046147ad565b610507565b6040805193845260ff9092166020840152600b0b908201526060015b60405180910390f35b61022d64010000000081565b604051908152602001610218565b61024e6102493660046147f8565b61053d565b604051600b9190910b8152602001610218565b61027461026f366004614866565b61055e565b604051610218919061491b565b61029461028f3660046147f8565b610578565b6040805160ff9093168352600b9190910b602083015201610218565b6102c36102be36600461492e565b61059c565b60408051948552600b9390930b6020850152918301526060820152608001610218565b61022d60016001605f1b0381565b610274610302366004614979565b6105d2565b61031a610315366004614a05565b610797565b005b61032f61032a366004614a22565b6107ec565b6040519015158152602001610218565b61027461034d366004614a63565b6108c3565b61036561036036600461492e565b6109ae565b604080519215158352602083019190915201610218565b61027461038a366004614adf565b610a49565b610397610b1c565b6040516001600160a01b039091168152602001610218565b61022d610b4b565b6102746103c5366004614866565b610baf565b6102746103d8366004614adf565b610bc7565b6102746103eb366004614adf565b610d5f565b7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd361022d565b610274610424366004614b2f565b610e12565b61022d610437366004614b73565b61100f565b61027461044a366004614979565b611237565b61031a6113ba565b61046a610465366004614a22565b6114c8565b60408051938452602084019290925290820152606001610218565b6102c36104933660046147f8565b611522565b6102746104a6366004614adf565b611534565b6102746104b9366004614a63565b611642565b6104c86203d09081565b60405167ffffffffffffffff9091168152602001610218565b6102c36104ef3660046147ad565b6116d6565b61024e61050236600461492e565b611711565b6000806000610516858561172b565b925060006105248785611796565b8051602090910151959990985094965093945050505050565b6000806105498461185b565b50905061055681846119af565b949350505050565b606061056f85856000808787610e12565b95945050505050565b60008060006105878585611796565b80516020909101519097909650945050505050565b60008060008060006105ae87876119ef565b805160208201516040830151606090930151919b909a509198509650945050505050565b606060006106168885858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611aa892505050565b9050866001600160a01b031681606001516001600160a01b03160361064e5760405163edfa0d3b60e01b815260040160405180910390fd5b6000806106648a61065f8b8b611c6c565b611c94565b91509150600080600061067c8d8d8860600151610507565b92509250925061068d826001611cdb565b6106aa5760405163ac434b5f60e01b815260040160405180910390fd5b6000600b82900b60016001605f1b0314806106cf57508a600b0b8560200151600b0b12155b6106f15760208501516106e2908c614bbe565b6106ec9083614bbe565b6106f3565b815b9050600081600b0b121561071a5760405163a0645c1f60e01b815260040160405180910390fd5b6107268e858584611d36565b5050505061075460408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b03808c1682528a8116602083015289166040820152600b88900b60608201526107888183858a8a89611dbf565b9b9a5050505050505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107e057604051630b00ec8f60e11b815260040160405180910390fd5b6107e981611f2a565b50565b604051633acd4df360e21b81526001600160a01b03838116600483015260248201839052600091829186169063eb3537cc90604401606060405180830381865afa15801561083e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108629190614bf0565b50509050600081126108785760019150506108bc565b6000806108848761185b565b91509150600061089488886119ef565b91505060006108a68260400151612132565b90506108b4858286866121a0565b955050505050505b9392505050565b606060006109078785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611aa892505050565b9050600061091a88888460600151610507565b50915050600061092b826002611cdb565b90508061094b5760405163e30f1bff60e01b815260040160405180910390fd5b6040805160808101825260008082526020820181905291810182905260608101919091525b6001600160a01b03808b168252898116602083015288166040820152600060608201526109a081838989886121ee565b9a9950505050505050505050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a339190614c1e565b9050610a408484836107ec565b91509250929050565b60606000610a8d8785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611aa892505050565b9050610ab960408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b03808916825260608084015182166020840181905291891660408401819052600b89900b91840191909152600091610af791611c6c565b9050600080610b0a846000015184611c94565b915091506107888482848b8b8a611dbf565b6000610b467f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b6000306001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b469190614c1e565b606061056f8585600760016001605f1b038787610e12565b606082828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080516020601f8a018190048102820181019092528881529596509094610c4394508b935091508790879081908401838280828437600092019190915250611aa892505050565b9050856001600160a01b031681606001516001600160a01b031603610c7b5760405163b0ed394d60e01b815260040160405180910390fd5b600085600b0b1215610ca0576040516386e0377d60e01b815260040160405180910390fd5b6000806000610cb48a85606001518b610507565b919450925090506000610cc78983614bbe565b9050600081600b0b1215610cee576040516386e0377d60e01b815260040160405180910390fd5b610cfa8b858584611d36565b60608501516040805160ff86168152600b84900b60208201526001600160a01b03808e1693811692908f16917fc0d5d3a6ac18cc1769788c925e6e7fc89cd47e4270a42884736fa9b3ec09f3a8910160405180910390a4505050505095945050505050565b60606000610da38785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611aa892505050565b9050610dcf60408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b038089168252606080840151821660208401529088166040830152600b87900b90820152610e06818686856128e0565b98975050505050505050565b606082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929350610e599250879150612a619050565b610e7657604051631e4e759b60e21b815260040160405180910390fd5b6000610eb88885858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611aa892505050565b9050866001600160a01b031681606001516001600160a01b031603610ef05760405163b0ed394d60e01b815260040160405180910390fd5b600085600b0b1215610f15576040516386e0377d60e01b815260040160405180910390fd5b6040805180820190915260ff87168152600b86900b60208201526060820151600090610f41908a61172b565b9050896001600160a01b031663a1b2bf8b82610f5c85612a68565b6040518363ffffffff1660e01b8152600401610f79929190614c72565b600060405180830381600087803b158015610f9357600080fd5b505af1158015610fa7573d6000803e3d6000fd5b50505060608401516040805160ff8c168152600b8b900b60208201526001600160a01b03808e169450928316928e16917fc0d5d3a6ac18cc1769788c925e6e7fc89cd47e4270a42884736fa9b3ec09f3a8910160405180910390a45050509695505050505050565b600081600b0b60000361102457506000611231565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611084573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a89190614c8b565b90506000816001600160a01b03166380f70cba7f0000000000000000000000000000000000000000000000000000000000000000877feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc46040518463ffffffff1660e01b815260040161111c93929190614ca8565b602060405180830381865afa158015611139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115d9190614c1e565b90506000826001600160a01b03166380f70cba7f0000000000000000000000000000000000000000000000000000000000000000887fe420d96e81cb4a6b2abb2366c4f93312d4e2ae878a7d4b22e73472fdad891f786040518463ffffffff1660e01b81526004016111d193929190614ca8565b602060405180830381865afa1580156111ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112129190614c1e565b9050602081901c63ffffffff1661122a838288612ade565b9450505050505b92915050565b6060600061127b8885858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611aa892505050565b9050866001600160a01b031681606001516001600160a01b0316036112b3576040516325cc989b60e11b815260040160405180910390fd5b60008060006112c78b8b8660600151610507565b9250925092506112d8826000611cdb565b6112f5576040516328faadab60e21b815260040160405180910390fd5b6000600b82900b60016001605f1b0314611318576113138983614bbe565b61131a565b815b9050600081600b0b12156113415760405163a0645c1f60e01b815260040160405180910390fd5b61134d8c858584611d36565b5050505061137b60408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b03808a168252888116602083015287166040820152600b86900b60608201526113ad818686856128e0565b9998505050505050505050565b600054610100900460ff16158080156113da5750600054600160ff909116105b806113f45750303b1580156113f4575060005460ff166001145b61145c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801561147f576000805461ff0019166101001790555b80156107e9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a150565b60008060008060006114da88886119ef565b915091508115611517578060200151600b0b8160000151876114fc9190614ccc565b6115069190614cf3565b945080604001519350806060015192505b505093509350939050565b60008060008060006105ae8787611c94565b606082828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080516020601f8a0181900481028201810190925288815295965090946115b094508b935091508790879081908401838280828437600092019190915250611aa892505050565b9050856001600160a01b031681606001516001600160a01b0316036115e85760405163b0ed394d60e01b815260040160405180910390fd5b600085600b0b121561160d576040516386e0377d60e01b815260040160405180910390fd5b60008060006116218a85606001518b610507565b9194509250905060006116348983614d23565b9050610cfa8b858584611d36565b606060006116868785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611aa892505050565b9050600061169988888460600151610507565b5091505060006116aa826002611cdb565b905061097060408051608081018252600080825260208201819052918101829052606081019190915290565b60008060008060006116ec8861065f8989611c6c565b805160208201516040830151606090930151919c909b50919950975095505050505050565b60008061171e84846119ef565b6020015195945050505050565b600082826040516020016117789291906060808252600c908201526b333637bba7b832b930ba37b960a11b60808201526001600160a01b0392831660208201529116604082015260a00190565b60405160208183030381529060405280519060200120905092915050565b6040805180820182526000808252602082018190529151636c2d9f2f60e01b8152306004820152602481018490526001604482015282906001600160a01b03861690636c2d9f2f90606401600060405180830381865afa1580156117fe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118269190810190614dc6565b905061184e8160008151811061183e5761183e614e60565b602002602001015160001c612b51565b92509250505b9250929050565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e29190614c8b565b90506000816001600160a01b03166380f70cba7f0000000000000000000000000000000000000000000000000000000000000000877fe420d96e81cb4a6b2abb2366c4f93312d4e2ae878a7d4b22e73472fdad891f786040518463ffffffff1660e01b815260040161195693929190614ca8565b602060405180830381865afa158015611973573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119979190614c1e565b63ffffffff602082901c811697911695509350505050565b600060016001605f1b038211156119d957604051631d4b0ae760e21b815260040160405180910390fd5b63ffffffff198216915060006105568484614e8c565b60006119f96146e6565b604051634b61cc3360e01b81523060048201526001600160a01b038481166024830152600060448301819052600160648401529190861690634b61cc33906084015b600060405180830381865afa158015611a58573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a809190810190614dc6565b905061184e81600081518110611a9857611a98614e60565b602002602001015160001c612b91565b611ab0614711565b336001600160a01b0316836001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015611af8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1c9190614c8b565b6001600160a01b031614611b665760405162461bcd60e51b81526020600482015260116024820152701d5b985d5d1a1bdc9a5e9959081a1bdcdd607a1b6044820152606401611453565b604051632fd0a1cd60e21b8152339063bf42873490611b8990859060040161491b565b602060405180830381865afa158015611ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bca9190614ebb565b611c045760405162461bcd60e51b815260206004820152600b60248201526a0d2dcecc2d8d2c840c6e8f60ab1b6044820152606401611453565b604051631fb6491d60e11b81523390633f6c923a90611c2790859060040161491b565b600060405180830381865afa158015611c44573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108bc9190810190614f5d565b604080516001600160a01b038085166020830152831691810191909152600090606001611778565b6000611c9e6146e6565b604051636c2d9f2f60e01b815230600482015260248101849052600160448201526000906001600160a01b03861690636c2d9f2f90606401611a3b565b600080826002811115611cf057611cf0615064565b03611d015750600182811614611231565b6001826002811115611d1557611d15615064565b03611d285750600182811c811614611231565b505060021c60019081161490565b6040805180820190915260ff83168152600b82900b60208201526001600160a01b03851663a1b2bf8b85611d6984612a68565b6040518363ffffffff1660e01b8152600401611d86929190614c72565b600060405180830381600087803b158015611da057600080fd5b505af1158015611db4573d6000803e3d6000fd5b505050505050505050565b60606000611dcd8884612bf1565b91505085611dee5760405163168cafc960e21b815260040160405180910390fd5b6040888101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015611e38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5c9190614ebb565b15611eb857611eb188604001518960000151838a89898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b925060019150612cf29050565b9150611f03565b611f008860000151828988888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250613498915050565b91505b611f16886000015189602001518561356b565b611f1f88613645565b509695505050505050565b6000611f547f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b031603611faa5760405162461bcd60e51b815260206004820152601d60248201527f5555505350726f786961626c653a206e6f742075706772616461626c650000006044820152606401611453565b806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fe8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200c9190614c1e565b612014610b4b565b1461206d5760405162461bcd60e51b815260206004820152602360248201527f5555505350726f786961626c653a206e6f7420636f6d70617469626c65206c6f60448201526267696360e81b6064820152608401611453565b6001600160a01b03811630036120c55760405162461bcd60e51b815260206004820152601960248201527f5555505350726f786961626c653a2070726f7879206c6f6f70000000000000006044820152606401611453565b6120ed817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fe011bc04c286c344a8fcbb8de77f953da762c3e25d8cdea984147fc4168a5dcc612116610b4b565b604080519182526001600160a01b0384166020830152016114bd565b60006001600160ff1b0382111561219c5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401611453565b5090565b6000836000036121b257506000610556565b60006121be858761507a565b905060006121cc85876150a2565b90506121d884866150d0565b6121e282846150a2565b13979650505050505050565b6040805160c0810182526000808252602082018190529181018290526060818101839052608082019290925260a0810182905260208701516001600160a01b031661224c57604051631ce9b06760e01b815260040160405180910390fd5b60408701516001600160a01b031661227757604051633c70159560e11b815260040160405180910390fd5b61228987602001518860400151611c6c565b8082526020808901516001600160a01b03908116918401919091526040808a01518216908401526060808601519091169083015260006080830181905260a080860151908401528851909182916122df91611c94565b91509150816123015760405163168cafc960e21b815260040160405180910390fd5b885160208a01516040808801519051633acd4df360e21b81526000936001600160a01b03169263eb3537cc9261234d926004016001600160a01b03929092168252602082015260400190565b606060405180830381865afa15801561236a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061238e9190614bf0565b5050905089602001516001600160a01b031686606001516001600160a01b0316141580156123d6575089604001516001600160a01b031686606001516001600160a01b031614155b80156123e0575088155b156124f15760208a0151604051636b4f333560e01b81526001600160a01b0390911660048201523390636b4f333590602401602060405180830381865afa15801561242f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124539190614ebb565b1580156124cb575060408a8101519051636b4f333560e01b81526001600160a01b0390911660048201523390636b4f333590602401602060405180830381865afa1580156124a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c99190614ebb565b155b156124f157600081126124f15760405163ce11b5d160e01b815260040160405180910390fd5b600081121561250f5761250f8a600001518286858a606001516136e8565b87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060208b015160608801519196506001600160a01b039081169116036126055760408a8101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa1580156125ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d29190614ebb565b156125f6576125ef8a604001518b600001518685898b6002612cf2565b94506128ca565b89516125ef908584888a613498565b89604001516001600160a01b031686606001516001600160a01b0316036127395760208a0151604051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015612670573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126949190614ebb565b156126b1576125ef8a602001518b600001518685898b6002612cf2565b60408a8101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa1580156126fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061271f9190614ebb565b156125f6576125ef60008b600001518685898b6002612cf2565b60208a0151604051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015612783573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a79190614ebb565b80156127b35750600081125b1561282d5760208a0151604051635b92108f60e11b8152339163b724211e916127e3918991600b906004016150e3565b6000604051808303816000875af1158015612802573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261282a9190810190615111565b94505b60408a8101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015612877573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289b9190614ebb565b156128b8576125ef8a604001518b600001518685898b6002612cf2565b89516128c7908584888a613498565b94505b6128d38a6138f4565b5050505095945050505050565b60606000806128ef8785612bf1565b91509150600080612904896000015185611c94565b9150915081156129275760405163801b686360e01b815260040160405180910390fd5b6040898101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015612971573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129959190614ebb565b156129ee576129e789604001518a6000015185848c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508f93509150612cf29050565b9450612a39565b612a36896000015184838b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d9250613498915050565b94505b612a4c89600001518a602001518861356b565b612a5589613963565b50505050949350505050565b60f8161590565b606060008260200151600b0b1215612a8257612a82615146565b60408051600180825281830190925290602080830190803683370190505090508160200151600b0b6080836000015160ff16901b1760001b81600081518110612acd57612acd614e60565b602002602001018181525050919050565b60008082600b0b1215612b04576040516348d6568b60e11b815260040160405180910390fd5b60016001605f1b03612b1a84600b85900b61515c565b1115612b3957604051630c9c55c160e01b815260040160405180910390fd5b6000612b4583856139d2565b905061056f8582613a16565b6040805180820190915260008082526020820152811580159190612b8c5760016001605f1b038316600b0b6020820152608083901c60ff1681525b915091565b6000612b9b6146e6565b821580159250612b8c5760e083901c8152608083901c6bffffffffffffffffffffffff16600b0b6020808301919091526bffffffffffffffff0000000084821c811660408401529084901b166060820152915091565b6040805160c08101825260008082526020820181905291810182905260608082018390526080820183905260a082015260408401516001600160a01b0316612c4c57604051633c70159560e11b815260040160405180910390fd5b612c5e84602001518560400151611c6c565b8082526020808601516001600160a01b0390811691840182905260408088015182169085018190526060808801519092168286015290870151600b0b608085015260a0808701519085015291935003612cca5760405163a47338ef60e01b815260040160405180910390fd5b60008160800151600b0b13611854576040516348d6568b60e11b815260040160405180910390fd5b82612cfb61476c565b6001600160a01b03891615612fff576000612d90898b8a600001518b602001518c60400151604051602001612d469291906001600160a01b0392831681529116602082015260400190565b60408051601f1981840301815260e08301825260006080840181905260a0840181905260c08401526001600160a01b03958616835293909416602082015292830152606082015290565b90506000846002811115612da657612da6615064565b03612dbb5764010000000060c0820152612df0565b6001846002811115612dcf57612dcf615064565b03612de45764040000000060c0820152612df0565b64100000000060c08201525b612dfa8187613a2c565b82600001819052506000336001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e669190614c8b565b9050612e7e86604001518761014001518c8c8c613be3565b5060808401525060405163407b865d60e11b81526000906001600160a01b038316906380f70cba90612ed89033908f907feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc490600401614ca8565b602060405180830381865afa158015612ef5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f199190614c1e565b905060008360800151600014612f3d57612f3864010000000083613a16565b612f40565b60005b9050808460800151612f529190615173565b608085015260608a0151612f6590612132565b60a08501526000876002811115612f7e57612f7e615064565b03612f935764020000000060c0850152612fc8565b6001876002811115612fa757612fa7615064565b03612fbc5764080000000060c0850152612fc8565b64200000000060c08501525b612fd784866000015188613fc7565b60408701919091528b51909650612fef908d90611c94565b60208701525061301d9350505050565b61301584604001518561014001518a8a8a613be3565b602084015250505b600061302c8760600151612132565b826040015161010001516130409190614ccc565b905061306681613057846020015160400151612132565b613061919061507a565b614213565b8260200151604001818152505061308881613057846020015160600151612132565b60208301805160600191909152885190516001600160a01b038b169163a1b2bf8b916130b390614265565b6040518363ffffffff1660e01b81526004016130d0929190614c72565b600060405180830381600087803b1580156130ea57600080fd5b505af11580156130fe573d6000803e3d6000fd5b5050505061311a89896020015160008460008a604001516142d6565b50613132898960400151600080858a604001516142d6565b506101408501516001600160a01b031615806131645750886001600160a01b03168561014001516001600160a01b0316145b156131d8576040516359a2914160e01b815233906359a291419061318e9086908590600401615186565b6000604051808303816000875af11580156131ad573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131d59190810190615111565b92505b6040888101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015613222573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132469190614ebb565b1561348b57604088810151868201519151633acd4df360e21b81526001600160a01b0391821660048201526024810192909252600091908b169063eb3537cc90604401606060405180830381865afa1580156132a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132ca9190614bf0565b509091505060008112156134895760028560028111156132ec576132ec615064565b0361346d576040808a01519051635b92108f60e11b8152339163b724211e9161331c918891600c906004016150e3565b6000604051808303816000875af115801561333b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526133639190810190615111565b93506000613381613373836151a8565b61337c856151a8565b614447565b90508a6001600160a01b031663cf97256d8b60200151836133a1906151a8565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156133e757600080fd5b505af11580156133fb573d6000803e3d6000fd5b5050505060408a810151905163cf97256d60e01b81526001600160a01b03918216600482015260248101839052908c169063cf97256d90604401600060405180830381600087803b15801561344f57600080fd5b505af1158015613463573d6000803e3d6000fd5b5050505050613489565b60405163a85ba64f60e01b8152600c6004820152602401611453565b505b5050979650505050505050565b606083810151156134ab576134ab615146565b60006134b56146e6565b6134cb84604001518561014001518a8a8a613be3565b6101408701519294509250506001600160a01b03808a1691160361355c576040516359a2914160e01b815233906359a291419061350e9088908690600401615186565b6000604051808303816000875af115801561352d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135559190810190615111565b9250613560565b8492505b505095945050505050565b602081015160ff1660031415806135995750826001600160a01b03168161014001516001600160a01b031614155b15613640576040808201519051633acd4df360e21b81526001600160a01b038481166004830152602482019290925260009185169063eb3537cc90604401606060405180830381865afa1580156135f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136189190614bf0565b50509050600081121561363e5760405163ea76c9b360e01b815260040160405180910390fd5b505b505050565b60005a90506000613659836000015161445c565b90506001600160a01b03811615613640578251602084015160408086015190516375aa53e560e11b81526001600160a01b0393841660048201529183166024830152821660448201529082169063eb54a7ca906064015b600060405180830381600087803b1580156136ca57600080fd5b505af19250505080156136db575060015b613640576136408261450b565b60006136f88685602001516119ef565b915050600061370a8460400151612132565b9050600061371b8360400151612132565b9050606060008061372c848b61507a565b905060008061373a8d61185b565b9150915061374a8c8784846121a0565b9350505060008112613835576000846137638388614cf3565b61376d91906150a2565b905060018361377d576001613780565b60005b6040805160ff9384166020820152929091169082015260600160405160208183030381529060405293508b6001600160a01b0316631863e8098b60000151868b878f602001516137cf88614213565b6137db89600019614cf3565b6040518863ffffffff1660e01b81526004016137fd97969594939291906151c4565b600060405180830381600087803b15801561381757600080fd5b505af115801561382b573d6000803e3d6000fd5b50505050506138e7565b6040805160016020820152600291810191909152859060600160405160208183030381529060405293508b6001600160a01b0316631863e8098b60000151868b60008f6020015161388588614213565b6138918a600019614cf3565b6040518863ffffffff1660e01b81526004016138b397969594939291906151c4565b600060405180830381600087803b1580156138cd57600080fd5b505af11580156138e1573d6000803e3d6000fd5b50505050505b5050505050505050505050565b60005a90506000613908836000015161445c565b90506001600160a01b038116156136405782516020840151604080860151905163ef1f023760e01b81526001600160a01b0393841660048201529183166024830152821660448201529082169063ef1f0237906064016136b0565b60005a90506000613977836000015161445c565b90506001600160a01b038116156136405782516020840151604080860151905163f7e3d98360e01b81526001600160a01b0393841660048201529183166024830152821660448201529082169063f7e3d983906064016136b0565b600082600b0b6000036139e757506000611231565b60016001605f1b038211156139fe576139fe615146565b613a088284615211565b600b0b90506108bc81614532565b6000818311613a2557816108bc565b5090919050565b6020820151604051633e7d48bd60e21b81526001600160a01b03909116600482015260609060009081908190339063f9f522f490602401606060405180830381865afa158015613a80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aa49190615231565b91945092509050828015613ab6575081155b15613bda576000613ac78688614566565b90508660c001518216600003613bcc576000613ae68860c001516145e4565b88516040808b015160608c015182516000815260208101909352613b129392309291906044810161526d565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417909352918a015160c08b01519251633a020f0160e11b815291935033926374041e0292613b8192918691641000000000919091149088906004016152b2565b6000604051808303816000875af1158015613ba0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613bc89190810190615111565b9550505b613bd786600061467b565b50505b50505092915050565b600080613bee6146e6565b6000806000613bfc8961185b565b5090506000336001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c639190614c8b565b60405163407b865d60e11b81529091506001600160a01b038216906380f70cba90613cb69033908e907feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc490600401614ca8565b602060405180830381865afa158015613cd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cf79190614c1e565b9250613d078960800151836139d2565b95505050613d188660600151612132565b613d258760400151612132565b613d2e86612132565b613d389190614ccc565b613d42919061507a565b9450613d55856130578860400151612132565b91508082108015613d6d575060008760800151600b0b135b15613daf57613d7f8660600151612132565b613d8c8760400151612132565b613d9583612132565b613d9f9190614ccc565b613da9919061507a565b94508091505b6001600160a01b03891615801590613dd95750876001600160a01b0316896001600160a01b031614155b15613de357600093505b604051806080016040528060008960800151600b0b13613e04576000613e06565b8b5b81526020018860800151600b0b815260200183815260200187606001518152509250876001600160a01b031663a1b2bf8b8860000151613e4586614265565b6040518363ffffffff1660e01b8152600401613e62929190614c72565b600060405180830381600087803b158015613e7c57600080fd5b505af1158015613e90573d6000803e3d6000fd5b505060408051808201909152600080825260208201529250613eb0915050565b613ed688886020015189608001518960200151613ecd9190614bbe565b8860008f6142d6565b600b0b8152604087015160208701516080890151613f05928b929091613efc9190614bbe565b6000808f6142d6565b600b0b60208083018290526040808a0151918a015160808b0151855160a08d015193516001600160a01b0395861696938616958f16947f57269d2ebcccecdcc0d9d2c0a0b80ead95f344e28ec20f50f709811f209d4e0e94613f6b9493929091906152fb565b60405180910390a486606001516001600160a01b03167f71e0c98e270fc3084227b473f176924d5303ece8c639e679998a2d7dc8e70f7483604051613fb291815260200190565b60405180910390a25050955095509592505050565b613fcf614711565b6020840151604051633e7d48bd60e21b81526001600160a01b03909116600482015260609060009081908190339063f9f522f490602401606060405180830381865afa158015614023573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140479190615231565b8896509194509250905082801561405c575081155b156142085761406b8489614566565b93508760c0015181166000036141f657600061408a8960c001516145e4565b89516040808c015160608d0151825160008152602081019093526140b89392309291908e9060448101615333565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417909352918b015160c08c0151925163079b42a160e21b81529193503392631e6d0a84926141279291869164200000000091909114908b906004016152b2565b6000604051808303816000875af1158015614146573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261416e9190810190615111565b604051631fb6491d60e11b81529095503390633f6c923a9061419490889060040161491b565b600060405180830381865afa1580156141b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526141d99190810190614f5d565b95506141ee89608001518761010001516146a3565b610100870152505b6142058686610100015161467b565b93505b505050935093915050565b60008082121561219c5760405162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f7369746976656044820152606401611453565b6040805160018082528183019092526060916020808301908036833701905050905060208260600151901c604060208460400151901c901b608084602001516bffffffffffffffffffffffff16901b60e08560000151901b17171760001b81600081518110612acd57612acd614e60565b6000806142e388886119ef565b91505060008160200151600b0b61430883600001518661430391906150d0565b612132565b6143129190614cf3565b9050801561437d5760405163cf97256d60e01b81526001600160a01b038981166004830152602482018390528a169063cf97256d90604401600060405180830381600087803b15801561436457600080fd5b505af1158015614378573d6000803e3d6000fd5b505050505b86826020015161438d9190614d23565b600b0b602083015283825260408201516143ac90879061305790612132565b604083015260608201516143c590869061305790612132565b60608301526001600160a01b03891663090c415e8960006143e586614265565b6040518463ffffffff1660e01b81526004016144039392919061538c565b600060405180830381600087803b15801561441d57600080fd5b505af1158015614431573d6000803e3d6000fd5b5050506020909201519998505050505050505050565b600081831361445657826108bc565b50919050565b60408051600481526024810182526020810180516001600160e01b03166377a1e96360e11b1790529051600091829182916001600160a01b038616916144a291906153b3565b600060405180830381855afa9150503d80600081146144dd576040519150601f19603f3d011682016040523d82523d6000602084013e6144e2565b606091505b5091509150811561450457808060200190518101906145019190614c8b565b92505b5050919050565b614514816146c1565b156107e9576040516320afada560e01b815260040160405180910390fd5b60008063ffffffff831661454757600061454a565b60015b60ff169050602061455d8285831c615173565b901b9392505050565b6020810151608082015160a08301518351604051630768fabb60e41b8152606094339463768fabb09461459d948a946004016153cf565b6000604051808303816000875af11580156145bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108bc9190810190615111565b6000640100000000820361460057506330d9c91560e01b919050565b640400000000820361461a5750630221347d60e61b919050565b64100000000082036146345750635f9e7d7760e01b919050565b640200000000820361464e575063d86ed3e560e01b919050565b6408000000008203614668575063230dbd2960e01b919050565b506353c11f9960e01b919050565b919050565b604051634c4d861f60e11b8152606090339063989b0c3e9061459d9086908690600401615186565b60006108bc60006146bc6146b686612132565b85614447565b6146d7565b60006146ce603f83614e8c565b5a111592915050565b6000818313613a2557816108bc565b6040518060800160405280600081526020016000600b0b815260200160008152602001600081525090565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a082015260c0810182905260e081018290526101008101829052610120810182905261014081019190915290565b6040518060600160405280606081526020016147866146e6565b8152602001614793614711565b905290565b6001600160a01b03811681146107e957600080fd5b6000806000606084860312156147c257600080fd5b83356147cd81614798565b925060208401356147dd81614798565b915060408401356147ed81614798565b809150509250925092565b6000806040838503121561480b57600080fd5b823561481681614798565b946020939093013593505050565b60008083601f84011261483657600080fd5b50813567ffffffffffffffff81111561484e57600080fd5b60208301915083602082850101111561185457600080fd5b6000806000806060858703121561487c57600080fd5b843561488781614798565b9350602085013561489781614798565b9250604085013567ffffffffffffffff8111156148b357600080fd5b6148bf87828801614824565b95989497509550505050565b60005b838110156148e65781810151838201526020016148ce565b50506000910152565b600081518084526149078160208601602086016148cb565b601f01601f19169290920160200192915050565b6020815260006108bc60208301846148ef565b6000806040838503121561494157600080fd5b823561494c81614798565b9150602083013561495c81614798565b809150509250929050565b8035600b81900b811461467657600080fd5b60008060008060008060a0878903121561499257600080fd5b863561499d81614798565b955060208701356149ad81614798565b945060408701356149bd81614798565b93506149cb60608801614967565b9250608087013567ffffffffffffffff8111156149e757600080fd5b6149f389828a01614824565b979a9699509497509295939492505050565b600060208284031215614a1757600080fd5b81356108bc81614798565b600080600060608486031215614a3757600080fd5b8335614a4281614798565b92506020840135614a5281614798565b929592945050506040919091013590565b600080600080600060808688031215614a7b57600080fd5b8535614a8681614798565b94506020860135614a9681614798565b93506040860135614aa681614798565b9250606086013567ffffffffffffffff811115614ac257600080fd5b614ace88828901614824565b969995985093965092949392505050565b600080600080600060808688031215614af757600080fd5b8535614b0281614798565b94506020860135614b1281614798565b9350614aa660408701614967565b60ff811681146107e957600080fd5b60008060008060008060a08789031215614b4857600080fd5b8635614b5381614798565b95506020870135614b6381614798565b945060408701356149bd81614b20565b60008060408385031215614b8657600080fd5b8235614b9181614798565b9150614b9f60208401614967565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b600b82810b9082900b036b7fffffffffffffffffffffff19811260016001605f1b038213171561123157611231614ba8565b600080600060608486031215614c0557600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215614c3057600080fd5b5051919050565b600081518084526020808501945080840160005b83811015614c6757815187529582019590820190600101614c4b565b509495945050505050565b8281526040602082015260006105566040830184614c37565b600060208284031215614c9d57600080fd5b81516108bc81614798565b6001600160a01b039384168152919092166020820152604081019190915260600190565b8181036000831280158383131683831282161715614cec57614cec614ba8565b5092915050565b80820260008212600160ff1b84141615614d0f57614d0f614ba8565b818105831482151761123157611231614ba8565b600b81810b9083900b0160016001605f1b0381136b7fffffffffffffffffffffff198212171561123157611231614ba8565b634e487b7160e01b600052604160045260246000fd5b604051610160810167ffffffffffffffff81118282101715614d8f57614d8f614d55565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715614dbe57614dbe614d55565b604052919050565b60006020808385031215614dd957600080fd5b825167ffffffffffffffff80821115614df157600080fd5b818501915085601f830112614e0557600080fd5b815181811115614e1757614e17614d55565b8060051b9150614e28848301614d95565b8181529183018401918481019088841115614e4257600080fd5b938501935b83851015610e0657845182529385019390850190614e47565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b600082614e9b57614e9b614e76565b500490565b805161467681614798565b8051801515811461467657600080fd5b600060208284031215614ecd57600080fd5b6108bc82614eab565b805161467681614b20565b80516001600160e01b03198116811461467657600080fd5b600082601f830112614f0a57600080fd5b815167ffffffffffffffff811115614f2457614f24614d55565b614f37601f8201601f1916602001614d95565b818152846020838601011115614f4c57600080fd5b6105568260208301602087016148cb565b600060208284031215614f6f57600080fd5b815167ffffffffffffffff80821115614f8757600080fd5b908301906101608286031215614f9c57600080fd5b614fa4614d6b565b614fad83614ed6565b8152614fbb60208401614ed6565b602082015260408301516040820152614fd660608401614ea0565b6060820152614fe760808401614ee1565b608082015260a083015182811115614ffe57600080fd5b61500a87828601614ef9565b60a08301525060c083015160c082015260e083015160e0820152610100915081830151828201526101209150615041828401614ea0565b828201526101409150615055828401614ea0565b91810191909152949350505050565b634e487b7160e01b600052602160045260246000fd5b808201828112600083128015821682158216171561509a5761509a614ba8565b505092915050565b6000826150b1576150b1614e76565b600160ff1b8214600019841416156150cb576150cb614ba8565b500590565b8181038181111561123157611231614ba8565b6060815260006150f660608301866148ef565b6001600160a01b039490941660208301525060400152919050565b60006020828403121561512357600080fd5b815167ffffffffffffffff81111561513a57600080fd5b61055684828501614ef9565b634e487b7160e01b600052600160045260246000fd5b808202811582820484141761123157611231614ba8565b8082018082111561123157611231614ba8565b60408152600061519960408301856148ef565b90508260208301529392505050565b6000600160ff1b82016151bd576151bd614ba8565b5060000390565b87815260e0602082015260006151dd60e08301896148ef565b6001600160a01b03978816604084015295151560608301525092909416608083015260a082015260c0019190915292915050565b600082600b0b82600b0b0280600b0b9150808214614cec57614cec614ba8565b60008060006060848603121561524657600080fd5b61524f84614eab565b925061525d60208501614eab565b9150604084015190509250925092565b6001600160a01b038681168252851660208201526040810184905260a0606082018190526000906152a0908301856148ef565b8281036080840152610e0681856148ef565b6001600160a01b03851681526080602082018190526000906152d6908301866148ef565b841515604084015282810360608401526152f081856148ef565b979650505050505050565b84600b0b815283600b0b602082015282600b0b604082015260806060820152600061532960808301846148ef565b9695505050505050565b6001600160a01b038781168252861660208201526040810185905260c060608201819052600090615366908301866148ef565b828103608084015261537881866148ef565b905082810360a08401526113ad81856148ef565b60018060a01b038416815282602082015260606040820152600061056f6060830184614c37565b600082516153c58184602087016148cb565b9190910192915050565b60a0815260006153e260a08301886148ef565b6001600160a01b039687166020840152604083019590955250606081019290925290921660809092019190915291905056fea26469706673582212207e0a37e2b3e6ed1466bc71f5ca7c2b71d4f03bb9c186d01c47ab0b763665556764736f6c63430008130033",
1126
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101e45760003560e01c806354b770e31161010f5780639b2e48bc116100a2578063b4b333c611610071578063b4b333c6146104ab578063bf3fbc28146104be578063e6a1e888146104e1578063e8e7e2d1146104f457600080fd5b80639b2e48bc146104575780639cb28b72146102e6578063aabd266814610485578063ac5f5d001461049857600080fd5b8063811b3d40116100de578063811b3d40146104165780638d997f6e1461042957806394229ecb1461043c5780639903ad381461044f57600080fd5b806354b770e3146103b75780635f51fb23146103ca57806362fc305e146103dd5780637730599e146103f057600080fd5b8063354b9590116101875780634fe9c291116101565780634fe9c2911461035257806350209a621461037c57806350d75d251461038f57806352d1902d146103af57600080fd5b8063354b9590146102f457806346951954146103075780634b839e0b1461031c5780634c8b181f1461033f57600080fd5b8063062e56ec116101c3578063062e56ec1461026157806309d256ef146102815780630f1ac495146102b057806326b0f536146102e657600080fd5b8062422bbe146101e957806304aafa49146102215780630602f7db1461023b575b600080fd5b6101fc6101f73660046147ad565b610507565b6040805193845260ff9092166020840152600b0b908201526060015b60405180910390f35b61022d64010000000081565b604051908152602001610218565b61024e6102493660046147f8565b61053d565b604051600b9190910b8152602001610218565b61027461026f366004614866565b61055e565b604051610218919061491b565b61029461028f3660046147f8565b610578565b6040805160ff9093168352600b9190910b602083015201610218565b6102c36102be36600461492e565b61059c565b60408051948552600b9390930b6020850152918301526060820152608001610218565b61022d60016001605f1b0381565b610274610302366004614979565b6105d2565b61031a610315366004614a05565b610797565b005b61032f61032a366004614a22565b6107ec565b6040519015158152602001610218565b61027461034d366004614a63565b6108c3565b61036561036036600461492e565b6109ae565b604080519215158352602083019190915201610218565b61027461038a366004614adf565b610a49565b610397610b1c565b6040516001600160a01b039091168152602001610218565b61022d610b4b565b6102746103c5366004614866565b610baf565b6102746103d8366004614adf565b610bc7565b6102746103eb366004614adf565b610d5f565b7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd361022d565b610274610424366004614b2f565b610e12565b61022d610437366004614b73565b61100f565b61027461044a366004614979565b611237565b61031a6113ba565b61046a610465366004614a22565b6114c8565b60408051938452602084019290925290820152606001610218565b6102c36104933660046147f8565b611522565b6102746104a6366004614adf565b611534565b6102746104b9366004614a63565b611642565b6104c86203d09081565b60405167ffffffffffffffff9091168152602001610218565b6102c36104ef3660046147ad565b6116d6565b61024e61050236600461492e565b611711565b6000806000610516858561172b565b925060006105248785611796565b8051602090910151959990985094965093945050505050565b6000806105498461185b565b50905061055681846119af565b949350505050565b606061056f85856000808787610e12565b95945050505050565b60008060006105878585611796565b80516020909101519097909650945050505050565b60008060008060006105ae87876119ef565b805160208201516040830151606090930151919b909a509198509650945050505050565b606060006106168885858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611aa892505050565b9050866001600160a01b031681606001516001600160a01b03160361064e5760405163edfa0d3b60e01b815260040160405180910390fd5b6000806106648a61065f8b8b611c6c565b611c94565b91509150600080600061067c8d8d8860600151610507565b92509250925061068d826001611cdb565b6106aa5760405163ac434b5f60e01b815260040160405180910390fd5b6000600b82900b60016001605f1b0314806106cf57508a600b0b8560200151600b0b12155b6106f15760208501516106e2908c614bbe565b6106ec9083614bbe565b6106f3565b815b9050600081600b0b121561071a5760405163a0645c1f60e01b815260040160405180910390fd5b6107268e858584611d36565b5050505061075460408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b03808c1682528a8116602083015289166040820152600b88900b60608201526107888183858a8a89611dbf565b9b9a5050505050505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107e057604051630b00ec8f60e11b815260040160405180910390fd5b6107e981611f2a565b50565b604051633acd4df360e21b81526001600160a01b03838116600483015260248201839052600091829186169063eb3537cc90604401606060405180830381865afa15801561083e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108629190614bf0565b50509050600081126108785760019150506108bc565b6000806108848761185b565b91509150600061089488886119ef565b91505060006108a68260400151612132565b90506108b4858286866121a0565b955050505050505b9392505050565b606060006109078785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611aa892505050565b9050600061091a88888460600151610507565b50915050600061092b826002611cdb565b90508061094b5760405163e30f1bff60e01b815260040160405180910390fd5b6040805160808101825260008082526020820181905291810182905260608101919091525b6001600160a01b03808b168252898116602083015288166040820152600060608201526109a081838989886121ee565b9a9950505050505050505050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a339190614c1e565b9050610a408484836107ec565b91509250929050565b60606000610a8d8785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611aa892505050565b9050610ab960408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b03808916825260608084015182166020840181905291891660408401819052600b89900b91840191909152600091610af791611c6c565b9050600080610b0a846000015184611c94565b915091506107888482848b8b8a611dbf565b6000610b467f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b6000306001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b469190614c1e565b606061056f8585600760016001605f1b038787610e12565b606082828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080516020601f8a018190048102820181019092528881529596509094610c4394508b935091508790879081908401838280828437600092019190915250611aa892505050565b9050856001600160a01b031681606001516001600160a01b031603610c7b5760405163b0ed394d60e01b815260040160405180910390fd5b600085600b0b1215610ca0576040516386e0377d60e01b815260040160405180910390fd5b6000806000610cb48a85606001518b610507565b919450925090506000610cc78983614bbe565b9050600081600b0b1215610cee576040516386e0377d60e01b815260040160405180910390fd5b610cfa8b858584611d36565b60608501516040805160ff86168152600b84900b60208201526001600160a01b03808e1693811692908f16917fc0d5d3a6ac18cc1769788c925e6e7fc89cd47e4270a42884736fa9b3ec09f3a8910160405180910390a4505050505095945050505050565b60606000610da38785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611aa892505050565b9050610dcf60408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b038089168252606080840151821660208401529088166040830152600b87900b90820152610e06818686856128e0565b98975050505050505050565b606082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929350610e599250879150612a619050565b610e7657604051631e4e759b60e21b815260040160405180910390fd5b6000610eb88885858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611aa892505050565b9050866001600160a01b031681606001516001600160a01b031603610ef05760405163b0ed394d60e01b815260040160405180910390fd5b600085600b0b1215610f15576040516386e0377d60e01b815260040160405180910390fd5b6040805180820190915260ff87168152600b86900b60208201526060820151600090610f41908a61172b565b9050896001600160a01b031663a1b2bf8b82610f5c85612a68565b6040518363ffffffff1660e01b8152600401610f79929190614c72565b600060405180830381600087803b158015610f9357600080fd5b505af1158015610fa7573d6000803e3d6000fd5b50505060608401516040805160ff8c168152600b8b900b60208201526001600160a01b03808e169450928316928e16917fc0d5d3a6ac18cc1769788c925e6e7fc89cd47e4270a42884736fa9b3ec09f3a8910160405180910390a45050509695505050505050565b600081600b0b60000361102457506000611231565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611084573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a89190614c8b565b90506000816001600160a01b03166380f70cba7f0000000000000000000000000000000000000000000000000000000000000000877feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc46040518463ffffffff1660e01b815260040161111c93929190614ca8565b602060405180830381865afa158015611139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115d9190614c1e565b90506000826001600160a01b03166380f70cba7f0000000000000000000000000000000000000000000000000000000000000000887fe420d96e81cb4a6b2abb2366c4f93312d4e2ae878a7d4b22e73472fdad891f786040518463ffffffff1660e01b81526004016111d193929190614ca8565b602060405180830381865afa1580156111ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112129190614c1e565b9050602081901c63ffffffff1661122a838288612ade565b9450505050505b92915050565b6060600061127b8885858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611aa892505050565b9050866001600160a01b031681606001516001600160a01b0316036112b3576040516325cc989b60e11b815260040160405180910390fd5b60008060006112c78b8b8660600151610507565b9250925092506112d8826000611cdb565b6112f5576040516328faadab60e21b815260040160405180910390fd5b6000600b82900b60016001605f1b0314611318576113138983614bbe565b61131a565b815b9050600081600b0b12156113415760405163a0645c1f60e01b815260040160405180910390fd5b61134d8c858584611d36565b5050505061137b60408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b03808a168252888116602083015287166040820152600b86900b60608201526113ad818686856128e0565b9998505050505050505050565b600054610100900460ff16158080156113da5750600054600160ff909116105b806113f45750303b1580156113f4575060005460ff166001145b61145c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801561147f576000805461ff0019166101001790555b80156107e9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a150565b60008060008060006114da88886119ef565b915091508115611517578060200151600b0b8160000151876114fc9190614ccc565b6115069190614cf3565b945080604001519350806060015192505b505093509350939050565b60008060008060006105ae8787611c94565b606082828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080516020601f8a0181900481028201810190925288815295965090946115b094508b935091508790879081908401838280828437600092019190915250611aa892505050565b9050856001600160a01b031681606001516001600160a01b0316036115e85760405163b0ed394d60e01b815260040160405180910390fd5b600085600b0b121561160d576040516386e0377d60e01b815260040160405180910390fd5b60008060006116218a85606001518b610507565b9194509250905060006116348983614d23565b9050610cfa8b858584611d36565b606060006116868785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611aa892505050565b9050600061169988888460600151610507565b5091505060006116aa826002611cdb565b905061097060408051608081018252600080825260208201819052918101829052606081019190915290565b60008060008060006116ec8861065f8989611c6c565b805160208201516040830151606090930151919c909b50919950975095505050505050565b60008061171e84846119ef565b6020015195945050505050565b600082826040516020016117789291906060808252600c908201526b333637bba7b832b930ba37b960a11b60808201526001600160a01b0392831660208201529116604082015260a00190565b60405160208183030381529060405280519060200120905092915050565b6040805180820182526000808252602082018190529151636c2d9f2f60e01b8152306004820152602481018490526001604482015282906001600160a01b03861690636c2d9f2f90606401600060405180830381865afa1580156117fe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118269190810190614dc6565b905061184e8160008151811061183e5761183e614e60565b602002602001015160001c612b51565b92509250505b9250929050565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e29190614c8b565b90506000816001600160a01b03166380f70cba7f0000000000000000000000000000000000000000000000000000000000000000877fe420d96e81cb4a6b2abb2366c4f93312d4e2ae878a7d4b22e73472fdad891f786040518463ffffffff1660e01b815260040161195693929190614ca8565b602060405180830381865afa158015611973573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119979190614c1e565b63ffffffff602082901c811697911695509350505050565b600060016001605f1b038211156119d957604051631d4b0ae760e21b815260040160405180910390fd5b63ffffffff198216915060006105568484614e8c565b60006119f96146e6565b604051634b61cc3360e01b81523060048201526001600160a01b038481166024830152600060448301819052600160648401529190861690634b61cc33906084015b600060405180830381865afa158015611a58573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a809190810190614dc6565b905061184e81600081518110611a9857611a98614e60565b602002602001015160001c612b91565b611ab0614711565b336001600160a01b0316836001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015611af8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1c9190614c8b565b6001600160a01b031614611b665760405162461bcd60e51b81526020600482015260116024820152701d5b985d5d1a1bdc9a5e9959081a1bdcdd607a1b6044820152606401611453565b604051632fd0a1cd60e21b8152339063bf42873490611b8990859060040161491b565b602060405180830381865afa158015611ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bca9190614ebb565b611c045760405162461bcd60e51b815260206004820152600b60248201526a0d2dcecc2d8d2c840c6e8f60ab1b6044820152606401611453565b604051631fb6491d60e11b81523390633f6c923a90611c2790859060040161491b565b600060405180830381865afa158015611c44573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108bc9190810190614f5d565b604080516001600160a01b038085166020830152831691810191909152600090606001611778565b6000611c9e6146e6565b604051636c2d9f2f60e01b815230600482015260248101849052600160448201526000906001600160a01b03861690636c2d9f2f90606401611a3b565b600080826002811115611cf057611cf0615064565b03611d015750600182811614611231565b6001826002811115611d1557611d15615064565b03611d285750600182811c811614611231565b505060021c60019081161490565b6040805180820190915260ff83168152600b82900b60208201526001600160a01b03851663a1b2bf8b85611d6984612a68565b6040518363ffffffff1660e01b8152600401611d86929190614c72565b600060405180830381600087803b158015611da057600080fd5b505af1158015611db4573d6000803e3d6000fd5b505050505050505050565b60606000611dcd8884612bf1565b91505085611dee5760405163168cafc960e21b815260040160405180910390fd5b6040888101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015611e38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5c9190614ebb565b15611eb857611eb188604001518960000151838a89898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b925060019150612cf29050565b9150611f03565b611f008860000151828988888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250613498915050565b91505b611f16886000015189602001518561356b565b611f1f88613645565b509695505050505050565b6000611f547f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b031603611faa5760405162461bcd60e51b815260206004820152601d60248201527f5555505350726f786961626c653a206e6f742075706772616461626c650000006044820152606401611453565b806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fe8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200c9190614c1e565b612014610b4b565b1461206d5760405162461bcd60e51b815260206004820152602360248201527f5555505350726f786961626c653a206e6f7420636f6d70617469626c65206c6f60448201526267696360e81b6064820152608401611453565b6001600160a01b03811630036120c55760405162461bcd60e51b815260206004820152601960248201527f5555505350726f786961626c653a2070726f7879206c6f6f70000000000000006044820152606401611453565b6120ed817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fe011bc04c286c344a8fcbb8de77f953da762c3e25d8cdea984147fc4168a5dcc612116610b4b565b604080519182526001600160a01b0384166020830152016114bd565b60006001600160ff1b0382111561219c5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401611453565b5090565b6000836000036121b257506000610556565b60006121be858761507a565b905060006121cc85876150a2565b90506121d884866150d0565b6121e282846150a2565b13979650505050505050565b6040805160c0810182526000808252602082018190529181018290526060818101839052608082019290925260a0810182905260208701516001600160a01b031661224c57604051631ce9b06760e01b815260040160405180910390fd5b60408701516001600160a01b031661227757604051633c70159560e11b815260040160405180910390fd5b61228987602001518860400151611c6c565b8082526020808901516001600160a01b03908116918401919091526040808a01518216908401526060808601519091169083015260006080830181905260a080860151908401528851909182916122df91611c94565b91509150816123015760405163168cafc960e21b815260040160405180910390fd5b885160208a01516040808801519051633acd4df360e21b81526000936001600160a01b03169263eb3537cc9261234d926004016001600160a01b03929092168252602082015260400190565b606060405180830381865afa15801561236a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061238e9190614bf0565b5050905089602001516001600160a01b031686606001516001600160a01b0316141580156123d6575089604001516001600160a01b031686606001516001600160a01b031614155b80156123e0575088155b156124f15760208a0151604051636b4f333560e01b81526001600160a01b0390911660048201523390636b4f333590602401602060405180830381865afa15801561242f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124539190614ebb565b1580156124cb575060408a8101519051636b4f333560e01b81526001600160a01b0390911660048201523390636b4f333590602401602060405180830381865afa1580156124a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c99190614ebb565b155b156124f157600081126124f15760405163ce11b5d160e01b815260040160405180910390fd5b600081121561250f5761250f8a600001518286858a606001516136e8565b87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060208b015160608801519196506001600160a01b039081169116036126055760408a8101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa1580156125ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d29190614ebb565b156125f6576125ef8a604001518b600001518685898b6002612cf2565b94506128ca565b89516125ef908584888a613498565b89604001516001600160a01b031686606001516001600160a01b0316036127395760208a0151604051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015612670573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126949190614ebb565b156126b1576125ef8a602001518b600001518685898b6002612cf2565b60408a8101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa1580156126fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061271f9190614ebb565b156125f6576125ef60008b600001518685898b6002612cf2565b60208a0151604051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015612783573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a79190614ebb565b80156127b35750600081125b1561282d5760208a0151604051635b92108f60e11b8152339163b724211e916127e3918991600b906004016150e3565b6000604051808303816000875af1158015612802573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261282a9190810190615111565b94505b60408a8101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015612877573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289b9190614ebb565b156128b8576125ef8a604001518b600001518685898b6002612cf2565b89516128c7908584888a613498565b94505b6128d38a6138f4565b5050505095945050505050565b60606000806128ef8785612bf1565b91509150600080612904896000015185611c94565b9150915081156129275760405163801b686360e01b815260040160405180910390fd5b6040898101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015612971573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129959190614ebb565b156129ee576129e789604001518a6000015185848c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508f93509150612cf29050565b9450612a39565b612a36896000015184838b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d9250613498915050565b94505b612a4c89600001518a602001518861356b565b612a5589613963565b50505050949350505050565b60f8161590565b606060008260200151600b0b1215612a8257612a82615146565b60408051600180825281830190925290602080830190803683370190505090508160200151600b0b6080836000015160ff16901b1760001b81600081518110612acd57612acd614e60565b602002602001018181525050919050565b60008082600b0b1215612b04576040516348d6568b60e11b815260040160405180910390fd5b60016001605f1b03612b1a84600b85900b61515c565b1115612b3957604051630c9c55c160e01b815260040160405180910390fd5b6000612b4583856139d2565b905061056f8582613a16565b6040805180820190915260008082526020820152811580159190612b8c5760016001605f1b038316600b0b6020820152608083901c60ff1681525b915091565b6000612b9b6146e6565b821580159250612b8c5760e083901c8152608083901c6bffffffffffffffffffffffff16600b0b6020808301919091526bffffffffffffffff0000000084821c811660408401529084901b166060820152915091565b6040805160c08101825260008082526020820181905291810182905260608082018390526080820183905260a082015260408401516001600160a01b0316612c4c57604051633c70159560e11b815260040160405180910390fd5b612c5e84602001518560400151611c6c565b8082526020808601516001600160a01b0390811691840182905260408088015182169085018190526060808801519092168286015290870151600b0b608085015260a0808701519085015291935003612cca5760405163a47338ef60e01b815260040160405180910390fd5b60008160800151600b0b13611854576040516348d6568b60e11b815260040160405180910390fd5b82612cfb61476c565b6001600160a01b03891615612fff576000612d90898b8a600001518b602001518c60400151604051602001612d469291906001600160a01b0392831681529116602082015260400190565b60408051601f1981840301815260e08301825260006080840181905260a0840181905260c08401526001600160a01b03958616835293909416602082015292830152606082015290565b90506000846002811115612da657612da6615064565b03612dbb5764010000000060c0820152612df0565b6001846002811115612dcf57612dcf615064565b03612de45764040000000060c0820152612df0565b64100000000060c08201525b612dfa8187613a2c565b82600001819052506000336001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e669190614c8b565b9050612e7e86604001518761014001518c8c8c613be3565b5060808401525060405163407b865d60e11b81526000906001600160a01b038316906380f70cba90612ed89033908f907feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc490600401614ca8565b602060405180830381865afa158015612ef5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f199190614c1e565b905060008360800151600014612f3d57612f3864010000000083613a16565b612f40565b60005b9050808460800151612f529190615173565b608085015260608a0151612f6590612132565b60a08501526000876002811115612f7e57612f7e615064565b03612f935764020000000060c0850152612fc8565b6001876002811115612fa757612fa7615064565b03612fbc5764080000000060c0850152612fc8565b64200000000060c08501525b612fd784866000015188613fc7565b60408701919091528b51909650612fef908d90611c94565b60208701525061301d9350505050565b61301584604001518561014001518a8a8a613be3565b602084015250505b600061302c8760600151612132565b826040015161010001516130409190614ccc565b905061306681613057846020015160400151612132565b613061919061507a565b614213565b8260200151604001818152505061308881613057846020015160600151612132565b60208301805160600191909152885190516001600160a01b038b169163a1b2bf8b916130b390614265565b6040518363ffffffff1660e01b81526004016130d0929190614c72565b600060405180830381600087803b1580156130ea57600080fd5b505af11580156130fe573d6000803e3d6000fd5b5050505061311a89896020015160008460008a604001516142d6565b50613132898960400151600080858a604001516142d6565b506101408501516001600160a01b031615806131645750886001600160a01b03168561014001516001600160a01b0316145b156131d8576040516359a2914160e01b815233906359a291419061318e9086908590600401615186565b6000604051808303816000875af11580156131ad573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131d59190810190615111565b92505b6040888101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015613222573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132469190614ebb565b1561348b57604088810151868201519151633acd4df360e21b81526001600160a01b0391821660048201526024810192909252600091908b169063eb3537cc90604401606060405180830381865afa1580156132a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132ca9190614bf0565b509091505060008112156134895760028560028111156132ec576132ec615064565b0361346d576040808a01519051635b92108f60e11b8152339163b724211e9161331c918891600c906004016150e3565b6000604051808303816000875af115801561333b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526133639190810190615111565b93506000613381613373836151a8565b61337c856151a8565b614447565b90508a6001600160a01b031663cf97256d8b60200151836133a1906151a8565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156133e757600080fd5b505af11580156133fb573d6000803e3d6000fd5b5050505060408a810151905163cf97256d60e01b81526001600160a01b03918216600482015260248101839052908c169063cf97256d90604401600060405180830381600087803b15801561344f57600080fd5b505af1158015613463573d6000803e3d6000fd5b5050505050613489565b60405163a85ba64f60e01b8152600c6004820152602401611453565b505b5050979650505050505050565b606083810151156134ab576134ab615146565b60006134b56146e6565b6134cb84604001518561014001518a8a8a613be3565b6101408701519294509250506001600160a01b03808a1691160361355c576040516359a2914160e01b815233906359a291419061350e9088908690600401615186565b6000604051808303816000875af115801561352d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135559190810190615111565b9250613560565b8492505b505095945050505050565b602081015160ff1660031415806135995750826001600160a01b03168161014001516001600160a01b031614155b15613640576040808201519051633acd4df360e21b81526001600160a01b038481166004830152602482019290925260009185169063eb3537cc90604401606060405180830381865afa1580156135f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136189190614bf0565b50509050600081121561363e5760405163ea76c9b360e01b815260040160405180910390fd5b505b505050565b60005a90506000613659836000015161445c565b90506001600160a01b03811615613640578251602084015160408086015190516375aa53e560e11b81526001600160a01b0393841660048201529183166024830152821660448201529082169063eb54a7ca906064015b600060405180830381600087803b1580156136ca57600080fd5b505af19250505080156136db575060015b613640576136408261450b565b60006136f88685602001516119ef565b915050600061370a8460400151612132565b9050600061371b8360400151612132565b9050606060008061372c848b61507a565b905060008061373a8d61185b565b9150915061374a8c8784846121a0565b9350505060008112613835576000846137638388614cf3565b61376d91906150a2565b905060018361377d576001613780565b60005b6040805160ff9384166020820152929091169082015260600160405160208183030381529060405293508b6001600160a01b0316631863e8098b60000151868b878f602001516137cf88614213565b6137db89600019614cf3565b6040518863ffffffff1660e01b81526004016137fd97969594939291906151c4565b600060405180830381600087803b15801561381757600080fd5b505af115801561382b573d6000803e3d6000fd5b50505050506138e7565b6040805160016020820152600291810191909152859060600160405160208183030381529060405293508b6001600160a01b0316631863e8098b60000151868b60008f6020015161388588614213565b6138918a600019614cf3565b6040518863ffffffff1660e01b81526004016138b397969594939291906151c4565b600060405180830381600087803b1580156138cd57600080fd5b505af11580156138e1573d6000803e3d6000fd5b50505050505b5050505050505050505050565b60005a90506000613908836000015161445c565b90506001600160a01b038116156136405782516020840151604080860151905163ef1f023760e01b81526001600160a01b0393841660048201529183166024830152821660448201529082169063ef1f0237906064016136b0565b60005a90506000613977836000015161445c565b90506001600160a01b038116156136405782516020840151604080860151905163f7e3d98360e01b81526001600160a01b0393841660048201529183166024830152821660448201529082169063f7e3d983906064016136b0565b600082600b0b6000036139e757506000611231565b60016001605f1b038211156139fe576139fe615146565b613a088284615211565b600b0b90506108bc81614532565b6000818311613a2557816108bc565b5090919050565b6020820151604051633e7d48bd60e21b81526001600160a01b03909116600482015260609060009081908190339063f9f522f490602401606060405180830381865afa158015613a80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aa49190615231565b91945092509050828015613ab6575081155b15613bda576000613ac78688614566565b90508660c001518216600003613bcc576000613ae68860c001516145e4565b88516040808b015160608c015182516000815260208101909352613b129392309291906044810161526d565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417909352918a015160c08b01519251633a020f0160e11b815291935033926374041e0292613b8192918691641000000000919091149088906004016152b2565b6000604051808303816000875af1158015613ba0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613bc89190810190615111565b9550505b613bd786600061467b565b50505b50505092915050565b600080613bee6146e6565b6000806000613bfc8961185b565b5090506000336001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c639190614c8b565b60405163407b865d60e11b81529091506001600160a01b038216906380f70cba90613cb69033908e907feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc490600401614ca8565b602060405180830381865afa158015613cd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cf79190614c1e565b9250613d078960800151836139d2565b95505050613d188660600151612132565b613d258760400151612132565b613d2e86612132565b613d389190614ccc565b613d42919061507a565b9450613d55856130578860400151612132565b91508082108015613d6d575060008760800151600b0b135b15613daf57613d7f8660600151612132565b613d8c8760400151612132565b613d9583612132565b613d9f9190614ccc565b613da9919061507a565b94508091505b6001600160a01b03891615801590613dd95750876001600160a01b0316896001600160a01b031614155b15613de357600093505b604051806080016040528060008960800151600b0b13613e04576000613e06565b8b5b81526020018860800151600b0b815260200183815260200187606001518152509250876001600160a01b031663a1b2bf8b8860000151613e4586614265565b6040518363ffffffff1660e01b8152600401613e62929190614c72565b600060405180830381600087803b158015613e7c57600080fd5b505af1158015613e90573d6000803e3d6000fd5b505060408051808201909152600080825260208201529250613eb0915050565b613ed688886020015189608001518960200151613ecd9190614bbe565b8860008f6142d6565b600b0b8152604087015160208701516080890151613f05928b929091613efc9190614bbe565b6000808f6142d6565b600b0b60208083018290526040808a0151918a015160808b0151855160a08d015193516001600160a01b0395861696938616958f16947f57269d2ebcccecdcc0d9d2c0a0b80ead95f344e28ec20f50f709811f209d4e0e94613f6b9493929091906152fb565b60405180910390a486606001516001600160a01b03167f71e0c98e270fc3084227b473f176924d5303ece8c639e679998a2d7dc8e70f7483604051613fb291815260200190565b60405180910390a25050955095509592505050565b613fcf614711565b6020840151604051633e7d48bd60e21b81526001600160a01b03909116600482015260609060009081908190339063f9f522f490602401606060405180830381865afa158015614023573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140479190615231565b8896509194509250905082801561405c575081155b156142085761406b8489614566565b93508760c0015181166000036141f657600061408a8960c001516145e4565b89516040808c015160608d0151825160008152602081019093526140b89392309291908e9060448101615333565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417909352918b015160c08c0151925163079b42a160e21b81529193503392631e6d0a84926141279291869164200000000091909114908b906004016152b2565b6000604051808303816000875af1158015614146573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261416e9190810190615111565b604051631fb6491d60e11b81529095503390633f6c923a9061419490889060040161491b565b600060405180830381865afa1580156141b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526141d99190810190614f5d565b95506141ee89608001518761010001516146a3565b610100870152505b6142058686610100015161467b565b93505b505050935093915050565b60008082121561219c5760405162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f7369746976656044820152606401611453565b6040805160018082528183019092526060916020808301908036833701905050905060208260600151901c604060208460400151901c901b608084602001516bffffffffffffffffffffffff16901b60e08560000151901b17171760001b81600081518110612acd57612acd614e60565b6000806142e388886119ef565b91505060008160200151600b0b61430883600001518661430391906150d0565b612132565b6143129190614cf3565b9050801561437d5760405163cf97256d60e01b81526001600160a01b038981166004830152602482018390528a169063cf97256d90604401600060405180830381600087803b15801561436457600080fd5b505af1158015614378573d6000803e3d6000fd5b505050505b86826020015161438d9190614d23565b600b0b602083015283825260408201516143ac90879061305790612132565b604083015260608201516143c590869061305790612132565b60608301526001600160a01b03891663090c415e8960006143e586614265565b6040518463ffffffff1660e01b81526004016144039392919061538c565b600060405180830381600087803b15801561441d57600080fd5b505af1158015614431573d6000803e3d6000fd5b5050506020909201519998505050505050505050565b600081831361445657826108bc565b50919050565b60408051600481526024810182526020810180516001600160e01b03166377a1e96360e11b1790529051600091829182916001600160a01b038616916144a291906153b3565b600060405180830381855afa9150503d80600081146144dd576040519150601f19603f3d011682016040523d82523d6000602084013e6144e2565b606091505b5091509150811561450457808060200190518101906145019190614c8b565b92505b5050919050565b614514816146c1565b156107e9576040516320afada560e01b815260040160405180910390fd5b60008063ffffffff831661454757600061454a565b60015b60ff169050602061455d8285831c615173565b901b9392505050565b6020810151608082015160a08301518351604051630768fabb60e41b8152606094339463768fabb09461459d948a946004016153cf565b6000604051808303816000875af11580156145bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108bc9190810190615111565b6000640100000000820361460057506330d9c91560e01b919050565b640400000000820361461a5750630221347d60e61b919050565b64100000000082036146345750635f9e7d7760e01b919050565b640200000000820361464e575063d86ed3e560e01b919050565b6408000000008203614668575063230dbd2960e01b919050565b506353c11f9960e01b919050565b919050565b604051634c4d861f60e11b8152606090339063989b0c3e9061459d9086908690600401615186565b60006108bc60006146bc6146b686612132565b85614447565b6146d7565b60006146ce603f83614e8c565b5a111592915050565b6000818313613a2557816108bc565b6040518060800160405280600081526020016000600b0b815260200160008152602001600081525090565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a082015260c0810182905260e081018290526101008101829052610120810182905261014081019190915290565b6040518060600160405280606081526020016147866146e6565b8152602001614793614711565b905290565b6001600160a01b03811681146107e957600080fd5b6000806000606084860312156147c257600080fd5b83356147cd81614798565b925060208401356147dd81614798565b915060408401356147ed81614798565b809150509250925092565b6000806040838503121561480b57600080fd5b823561481681614798565b946020939093013593505050565b60008083601f84011261483657600080fd5b50813567ffffffffffffffff81111561484e57600080fd5b60208301915083602082850101111561185457600080fd5b6000806000806060858703121561487c57600080fd5b843561488781614798565b9350602085013561489781614798565b9250604085013567ffffffffffffffff8111156148b357600080fd5b6148bf87828801614824565b95989497509550505050565b60005b838110156148e65781810151838201526020016148ce565b50506000910152565b600081518084526149078160208601602086016148cb565b601f01601f19169290920160200192915050565b6020815260006108bc60208301846148ef565b6000806040838503121561494157600080fd5b823561494c81614798565b9150602083013561495c81614798565b809150509250929050565b8035600b81900b811461467657600080fd5b60008060008060008060a0878903121561499257600080fd5b863561499d81614798565b955060208701356149ad81614798565b945060408701356149bd81614798565b93506149cb60608801614967565b9250608087013567ffffffffffffffff8111156149e757600080fd5b6149f389828a01614824565b979a9699509497509295939492505050565b600060208284031215614a1757600080fd5b81356108bc81614798565b600080600060608486031215614a3757600080fd5b8335614a4281614798565b92506020840135614a5281614798565b929592945050506040919091013590565b600080600080600060808688031215614a7b57600080fd5b8535614a8681614798565b94506020860135614a9681614798565b93506040860135614aa681614798565b9250606086013567ffffffffffffffff811115614ac257600080fd5b614ace88828901614824565b969995985093965092949392505050565b600080600080600060808688031215614af757600080fd5b8535614b0281614798565b94506020860135614b1281614798565b9350614aa660408701614967565b60ff811681146107e957600080fd5b60008060008060008060a08789031215614b4857600080fd5b8635614b5381614798565b95506020870135614b6381614798565b945060408701356149bd81614b20565b60008060408385031215614b8657600080fd5b8235614b9181614798565b9150614b9f60208401614967565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b600b82810b9082900b036b7fffffffffffffffffffffff19811260016001605f1b038213171561123157611231614ba8565b600080600060608486031215614c0557600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215614c3057600080fd5b5051919050565b600081518084526020808501945080840160005b83811015614c6757815187529582019590820190600101614c4b565b509495945050505050565b8281526040602082015260006105566040830184614c37565b600060208284031215614c9d57600080fd5b81516108bc81614798565b6001600160a01b039384168152919092166020820152604081019190915260600190565b8181036000831280158383131683831282161715614cec57614cec614ba8565b5092915050565b80820260008212600160ff1b84141615614d0f57614d0f614ba8565b818105831482151761123157611231614ba8565b600b81810b9083900b0160016001605f1b0381136b7fffffffffffffffffffffff198212171561123157611231614ba8565b634e487b7160e01b600052604160045260246000fd5b604051610160810167ffffffffffffffff81118282101715614d8f57614d8f614d55565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715614dbe57614dbe614d55565b604052919050565b60006020808385031215614dd957600080fd5b825167ffffffffffffffff80821115614df157600080fd5b818501915085601f830112614e0557600080fd5b815181811115614e1757614e17614d55565b8060051b9150614e28848301614d95565b8181529183018401918481019088841115614e4257600080fd5b938501935b83851015610e0657845182529385019390850190614e47565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b600082614e9b57614e9b614e76565b500490565b805161467681614798565b8051801515811461467657600080fd5b600060208284031215614ecd57600080fd5b6108bc82614eab565b805161467681614b20565b80516001600160e01b03198116811461467657600080fd5b600082601f830112614f0a57600080fd5b815167ffffffffffffffff811115614f2457614f24614d55565b614f37601f8201601f1916602001614d95565b818152846020838601011115614f4c57600080fd5b6105568260208301602087016148cb565b600060208284031215614f6f57600080fd5b815167ffffffffffffffff80821115614f8757600080fd5b908301906101608286031215614f9c57600080fd5b614fa4614d6b565b614fad83614ed6565b8152614fbb60208401614ed6565b602082015260408301516040820152614fd660608401614ea0565b6060820152614fe760808401614ee1565b608082015260a083015182811115614ffe57600080fd5b61500a87828601614ef9565b60a08301525060c083015160c082015260e083015160e0820152610100915081830151828201526101209150615041828401614ea0565b828201526101409150615055828401614ea0565b91810191909152949350505050565b634e487b7160e01b600052602160045260246000fd5b808201828112600083128015821682158216171561509a5761509a614ba8565b505092915050565b6000826150b1576150b1614e76565b600160ff1b8214600019841416156150cb576150cb614ba8565b500590565b8181038181111561123157611231614ba8565b6060815260006150f660608301866148ef565b6001600160a01b039490941660208301525060400152919050565b60006020828403121561512357600080fd5b815167ffffffffffffffff81111561513a57600080fd5b61055684828501614ef9565b634e487b7160e01b600052600160045260246000fd5b808202811582820484141761123157611231614ba8565b8082018082111561123157611231614ba8565b60408152600061519960408301856148ef565b90508260208301529392505050565b6000600160ff1b82016151bd576151bd614ba8565b5060000390565b87815260e0602082015260006151dd60e08301896148ef565b6001600160a01b03978816604084015295151560608301525092909416608083015260a082015260c0019190915292915050565b600082600b0b82600b0b0280600b0b9150808214614cec57614cec614ba8565b60008060006060848603121561524657600080fd5b61524f84614eab565b925061525d60208501614eab565b9150604084015190509250925092565b6001600160a01b038681168252851660208201526040810184905260a0606082018190526000906152a0908301856148ef565b8281036080840152610e0681856148ef565b6001600160a01b03851681526080602082018190526000906152d6908301866148ef565b841515604084015282810360608401526152f081856148ef565b979650505050505050565b84600b0b815283600b0b602082015282600b0b604082015260806060820152600061532960808301846148ef565b9695505050505050565b6001600160a01b038781168252861660208201526040810185905260c060608201819052600090615366908301866148ef565b828103608084015261537881866148ef565b905082810360a08401526113ad81856148ef565b60018060a01b038416815282602082015260606040820152600061056f6060830184614c37565b600082516153c58184602087016148cb565b9190910192915050565b60a0815260006153e260a08301886148ef565b6001600160a01b039687166020840152604083019590955250606081019290925290921660809092019190915291905056fea26469706673582212207e0a37e2b3e6ed1466bc71f5ca7c2b71d4f03bb9c186d01c47ab0b763665556764736f6c63430008130033",
1125
+ "bytecode": "0x60a06040523480156200001157600080fd5b506040516200550838038062005508833981016040819052620000349162000046565b6001600160a01b031660805262000078565b6000602082840312156200005957600080fd5b81516001600160a01b03811681146200007157600080fd5b9392505050565b60805161544a620000be600039600081816107a2015281816109b301528181611028015281816110bd015281816111720152818161186201526118f7015261544a6000f3fe608060405234801561001057600080fd5b50600436106101e45760003560e01c806354b770e31161010f5780639b2e48bc116100a2578063b4b333c611610071578063b4b333c6146104ab578063bf3fbc28146104be578063e6a1e888146104e1578063e8e7e2d1146104f457600080fd5b80639b2e48bc146104575780639cb28b72146102e6578063aabd266814610485578063ac5f5d001461049857600080fd5b8063811b3d40116100de578063811b3d40146104165780638d997f6e1461042957806394229ecb1461043c5780639903ad381461044f57600080fd5b806354b770e3146103b75780635f51fb23146103ca57806362fc305e146103dd5780637730599e146103f057600080fd5b8063354b9590116101875780634fe9c291116101565780634fe9c2911461035257806350209a621461037c57806350d75d251461038f57806352d1902d146103af57600080fd5b8063354b9590146102f457806346951954146103075780634b839e0b1461031c5780634c8b181f1461033f57600080fd5b8063062e56ec116101c3578063062e56ec1461026157806309d256ef146102815780630f1ac495146102b057806326b0f536146102e657600080fd5b8062422bbe146101e957806304aafa49146102215780630602f7db1461023b575b600080fd5b6101fc6101f73660046147ad565b610507565b6040805193845260ff9092166020840152600b0b908201526060015b60405180910390f35b61022d64010000000081565b604051908152602001610218565b61024e6102493660046147f8565b61053d565b604051600b9190910b8152602001610218565b61027461026f366004614866565b61055e565b604051610218919061491b565b61029461028f3660046147f8565b610578565b6040805160ff9093168352600b9190910b602083015201610218565b6102c36102be36600461492e565b61059c565b60408051948552600b9390930b6020850152918301526060820152608001610218565b61022d60016001605f1b0381565b610274610302366004614979565b6105d2565b61031a610315366004614a05565b610797565b005b61032f61032a366004614a22565b6107ec565b6040519015158152602001610218565b61027461034d366004614a63565b6108c3565b61036561036036600461492e565b6109ae565b604080519215158352602083019190915201610218565b61027461038a366004614adf565b610a49565b610397610b1c565b6040516001600160a01b039091168152602001610218565b61022d610b4b565b6102746103c5366004614866565b610baf565b6102746103d8366004614adf565b610bc7565b6102746103eb366004614adf565b610d5f565b7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd361022d565b610274610424366004614b2f565b610e12565b61022d610437366004614b73565b61100f565b61027461044a366004614979565b611237565b61031a6113ba565b61046a610465366004614a22565b6114c8565b60408051938452602084019290925290820152606001610218565b6102c36104933660046147f8565b611522565b6102746104a6366004614adf565b611534565b6102746104b9366004614a63565b611642565b6104c86203d09081565b60405167ffffffffffffffff9091168152602001610218565b6102c36104ef3660046147ad565b6116d6565b61024e61050236600461492e565b611711565b6000806000610516858561172b565b925060006105248785611796565b8051602090910151959990985094965093945050505050565b6000806105498461185b565b50905061055681846119af565b949350505050565b606061056f85856000808787610e12565b95945050505050565b60008060006105878585611796565b80516020909101519097909650945050505050565b60008060008060006105ae87876119ef565b805160208201516040830151606090930151919b909a509198509650945050505050565b606060006106168885858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611aa892505050565b9050866001600160a01b031681606001516001600160a01b03160361064e5760405163edfa0d3b60e01b815260040160405180910390fd5b6000806106648a61065f8b8b611c6c565b611c94565b91509150600080600061067c8d8d8860600151610507565b92509250925061068d826001611cdb565b6106aa5760405163ac434b5f60e01b815260040160405180910390fd5b6000600b82900b60016001605f1b0314806106cf57508a600b0b8560200151600b0b12155b6106f15760208501516106e2908c614bbe565b6106ec9083614bbe565b6106f3565b815b9050600081600b0b121561071a5760405163a0645c1f60e01b815260040160405180910390fd5b6107268e858584611d36565b5050505061075460408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b03808c1682528a8116602083015289166040820152600b88900b60608201526107888183858a8a89611dbf565b9b9a5050505050505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107e057604051630b00ec8f60e11b815260040160405180910390fd5b6107e981611f2a565b50565b604051633acd4df360e21b81526001600160a01b03838116600483015260248201839052600091829186169063eb3537cc90604401606060405180830381865afa15801561083e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108629190614bf0565b50509050600081126108785760019150506108bc565b6000806108848761185b565b91509150600061089488886119ef565b91505060006108a68260400151612132565b90506108b4858286866121a0565b955050505050505b9392505050565b606060006109078785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611aa892505050565b9050600061091a88888460600151610507565b50915050600061092b826002611cdb565b90508061094b5760405163e30f1bff60e01b815260040160405180910390fd5b6040805160808101825260008082526020820181905291810182905260608101919091525b6001600160a01b03808b168252898116602083015288166040820152600060608201526109a081838989886121ee565b9a9950505050505050505050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a339190614c1e565b9050610a408484836107ec565b91509250929050565b60606000610a8d8785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611aa892505050565b9050610ab960408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b03808916825260608084015182166020840181905291891660408401819052600b89900b91840191909152600091610af791611c6c565b9050600080610b0a846000015184611c94565b915091506107888482848b8b8a611dbf565b6000610b467f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b6000306001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b469190614c1e565b606061056f8585600760016001605f1b038787610e12565b606082828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080516020601f8a018190048102820181019092528881529596509094610c4394508b935091508790879081908401838280828437600092019190915250611aa892505050565b9050856001600160a01b031681606001516001600160a01b031603610c7b5760405163b0ed394d60e01b815260040160405180910390fd5b600085600b0b1215610ca0576040516386e0377d60e01b815260040160405180910390fd5b6000806000610cb48a85606001518b610507565b919450925090506000610cc78983614bbe565b9050600081600b0b1215610cee576040516386e0377d60e01b815260040160405180910390fd5b610cfa8b858584611d36565b60608501516040805160ff86168152600b84900b60208201526001600160a01b03808e1693811692908f16917fc0d5d3a6ac18cc1769788c925e6e7fc89cd47e4270a42884736fa9b3ec09f3a8910160405180910390a4505050505095945050505050565b60606000610da38785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611aa892505050565b9050610dcf60408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b038089168252606080840151821660208401529088166040830152600b87900b90820152610e06818686856128e0565b98975050505050505050565b606082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929350610e599250879150612a619050565b610e7657604051631e4e759b60e21b815260040160405180910390fd5b6000610eb88885858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611aa892505050565b9050866001600160a01b031681606001516001600160a01b031603610ef05760405163b0ed394d60e01b815260040160405180910390fd5b600085600b0b1215610f15576040516386e0377d60e01b815260040160405180910390fd5b6040805180820190915260ff87168152600b86900b60208201526060820151600090610f41908a61172b565b9050896001600160a01b031663a1b2bf8b82610f5c85612a68565b6040518363ffffffff1660e01b8152600401610f79929190614c72565b600060405180830381600087803b158015610f9357600080fd5b505af1158015610fa7573d6000803e3d6000fd5b50505060608401516040805160ff8c168152600b8b900b60208201526001600160a01b03808e169450928316928e16917fc0d5d3a6ac18cc1769788c925e6e7fc89cd47e4270a42884736fa9b3ec09f3a8910160405180910390a45050509695505050505050565b600081600b0b60000361102457506000611231565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611084573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a89190614c8b565b90506000816001600160a01b03166380f70cba7f0000000000000000000000000000000000000000000000000000000000000000877feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc46040518463ffffffff1660e01b815260040161111c93929190614ca8565b602060405180830381865afa158015611139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115d9190614c1e565b90506000826001600160a01b03166380f70cba7f0000000000000000000000000000000000000000000000000000000000000000887fe420d96e81cb4a6b2abb2366c4f93312d4e2ae878a7d4b22e73472fdad891f786040518463ffffffff1660e01b81526004016111d193929190614ca8565b602060405180830381865afa1580156111ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112129190614c1e565b9050602081901c63ffffffff1661122a838288612ade565b9450505050505b92915050565b6060600061127b8885858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611aa892505050565b9050866001600160a01b031681606001516001600160a01b0316036112b3576040516325cc989b60e11b815260040160405180910390fd5b60008060006112c78b8b8660600151610507565b9250925092506112d8826000611cdb565b6112f5576040516328faadab60e21b815260040160405180910390fd5b6000600b82900b60016001605f1b0314611318576113138983614bbe565b61131a565b815b9050600081600b0b12156113415760405163a0645c1f60e01b815260040160405180910390fd5b61134d8c858584611d36565b5050505061137b60408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b03808a168252888116602083015287166040820152600b86900b60608201526113ad818686856128e0565b9998505050505050505050565b600054610100900460ff16158080156113da5750600054600160ff909116105b806113f45750303b1580156113f4575060005460ff166001145b61145c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801561147f576000805461ff0019166101001790555b80156107e9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a150565b60008060008060006114da88886119ef565b915091508115611517578060200151600b0b8160000151876114fc9190614ccc565b6115069190614cf3565b945080604001519350806060015192505b505093509350939050565b60008060008060006105ae8787611c94565b606082828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080516020601f8a0181900481028201810190925288815295965090946115b094508b935091508790879081908401838280828437600092019190915250611aa892505050565b9050856001600160a01b031681606001516001600160a01b0316036115e85760405163b0ed394d60e01b815260040160405180910390fd5b600085600b0b121561160d576040516386e0377d60e01b815260040160405180910390fd5b60008060006116218a85606001518b610507565b9194509250905060006116348983614d23565b9050610cfa8b858584611d36565b606060006116868785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611aa892505050565b9050600061169988888460600151610507565b5091505060006116aa826002611cdb565b905061097060408051608081018252600080825260208201819052918101829052606081019190915290565b60008060008060006116ec8861065f8989611c6c565b805160208201516040830151606090930151919c909b50919950975095505050505050565b60008061171e84846119ef565b6020015195945050505050565b600082826040516020016117789291906060808252600c908201526b333637bba7b832b930ba37b960a11b60808201526001600160a01b0392831660208201529116604082015260a00190565b60405160208183030381529060405280519060200120905092915050565b6040805180820182526000808252602082018190529151636c2d9f2f60e01b8152306004820152602481018490526001604482015282906001600160a01b03861690636c2d9f2f90606401600060405180830381865afa1580156117fe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118269190810190614dc6565b905061184e8160008151811061183e5761183e614e60565b602002602001015160001c612b51565b92509250505b9250929050565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e29190614c8b565b90506000816001600160a01b03166380f70cba7f0000000000000000000000000000000000000000000000000000000000000000877fe420d96e81cb4a6b2abb2366c4f93312d4e2ae878a7d4b22e73472fdad891f786040518463ffffffff1660e01b815260040161195693929190614ca8565b602060405180830381865afa158015611973573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119979190614c1e565b63ffffffff602082901c811697911695509350505050565b600060016001605f1b038211156119d957604051631d4b0ae760e21b815260040160405180910390fd5b63ffffffff198216915060006105568484614e8c565b60006119f96146e6565b604051634b61cc3360e01b81523060048201526001600160a01b038481166024830152600060448301819052600160648401529190861690634b61cc33906084015b600060405180830381865afa158015611a58573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a809190810190614dc6565b905061184e81600081518110611a9857611a98614e60565b602002602001015160001c612b91565b611ab0614711565b336001600160a01b0316836001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015611af8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1c9190614c8b565b6001600160a01b031614611b665760405162461bcd60e51b81526020600482015260116024820152701d5b985d5d1a1bdc9a5e9959081a1bdcdd607a1b6044820152606401611453565b604051632fd0a1cd60e21b8152339063bf42873490611b8990859060040161491b565b602060405180830381865afa158015611ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bca9190614ebb565b611c045760405162461bcd60e51b815260206004820152600b60248201526a0d2dcecc2d8d2c840c6e8f60ab1b6044820152606401611453565b604051631fb6491d60e11b81523390633f6c923a90611c2790859060040161491b565b600060405180830381865afa158015611c44573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108bc9190810190614f5d565b604080516001600160a01b038085166020830152831691810191909152600090606001611778565b6000611c9e6146e6565b604051636c2d9f2f60e01b815230600482015260248101849052600160448201526000906001600160a01b03861690636c2d9f2f90606401611a3b565b600080826002811115611cf057611cf0615064565b03611d015750600182811614611231565b6001826002811115611d1557611d15615064565b03611d285750600182811c811614611231565b505060021c60019081161490565b6040805180820190915260ff83168152600b82900b60208201526001600160a01b03851663a1b2bf8b85611d6984612a68565b6040518363ffffffff1660e01b8152600401611d86929190614c72565b600060405180830381600087803b158015611da057600080fd5b505af1158015611db4573d6000803e3d6000fd5b505050505050505050565b60606000611dcd8884612bf1565b91505085611dee5760405163168cafc960e21b815260040160405180910390fd5b6040888101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015611e38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5c9190614ebb565b15611eb857611eb188604001518960000151838a89898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b925060019150612cf29050565b9150611f03565b611f008860000151828988888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250613498915050565b91505b611f16886000015189602001518561356b565b611f1f88613645565b509695505050505050565b6000611f547f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b031603611faa5760405162461bcd60e51b815260206004820152601d60248201527f5555505350726f786961626c653a206e6f742075706772616461626c650000006044820152606401611453565b806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fe8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200c9190614c1e565b612014610b4b565b1461206d5760405162461bcd60e51b815260206004820152602360248201527f5555505350726f786961626c653a206e6f7420636f6d70617469626c65206c6f60448201526267696360e81b6064820152608401611453565b6001600160a01b03811630036120c55760405162461bcd60e51b815260206004820152601960248201527f5555505350726f786961626c653a2070726f7879206c6f6f70000000000000006044820152606401611453565b6120ed817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fe011bc04c286c344a8fcbb8de77f953da762c3e25d8cdea984147fc4168a5dcc612116610b4b565b604080519182526001600160a01b0384166020830152016114bd565b60006001600160ff1b0382111561219c5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401611453565b5090565b6000836000036121b257506000610556565b60006121be858761507a565b905060006121cc85876150a2565b90506121d884866150d0565b6121e282846150a2565b13979650505050505050565b6040805160c0810182526000808252602082018190529181018290526060818101839052608082019290925260a0810182905260208701516001600160a01b031661224c57604051631ce9b06760e01b815260040160405180910390fd5b60408701516001600160a01b031661227757604051633c70159560e11b815260040160405180910390fd5b61228987602001518860400151611c6c565b8082526020808901516001600160a01b03908116918401919091526040808a01518216908401526060808601519091169083015260006080830181905260a080860151908401528851909182916122df91611c94565b91509150816123015760405163168cafc960e21b815260040160405180910390fd5b885160208a01516040808801519051633acd4df360e21b81526000936001600160a01b03169263eb3537cc9261234d926004016001600160a01b03929092168252602082015260400190565b606060405180830381865afa15801561236a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061238e9190614bf0565b5050905089602001516001600160a01b031686606001516001600160a01b0316141580156123d6575089604001516001600160a01b031686606001516001600160a01b031614155b80156123e0575088155b156124f15760208a0151604051636b4f333560e01b81526001600160a01b0390911660048201523390636b4f333590602401602060405180830381865afa15801561242f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124539190614ebb565b1580156124cb575060408a8101519051636b4f333560e01b81526001600160a01b0390911660048201523390636b4f333590602401602060405180830381865afa1580156124a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c99190614ebb565b155b156124f157600081126124f15760405163ce11b5d160e01b815260040160405180910390fd5b600081121561250f5761250f8a600001518286858a606001516136e8565b87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060208b015160608801519196506001600160a01b039081169116036126055760408a8101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa1580156125ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d29190614ebb565b156125f6576125ef8a604001518b600001518685898b6002612cf2565b94506128ca565b89516125ef908584888a613498565b89604001516001600160a01b031686606001516001600160a01b0316036127395760208a0151604051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015612670573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126949190614ebb565b156126b1576125ef8a602001518b600001518685898b6002612cf2565b60408a8101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa1580156126fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061271f9190614ebb565b156125f6576125ef60008b600001518685898b6002612cf2565b60208a0151604051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015612783573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a79190614ebb565b80156127b35750600081125b1561282d5760208a0151604051635b92108f60e11b8152339163b724211e916127e3918991600b906004016150e3565b6000604051808303816000875af1158015612802573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261282a9190810190615111565b94505b60408a8101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015612877573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289b9190614ebb565b156128b8576125ef8a604001518b600001518685898b6002612cf2565b89516128c7908584888a613498565b94505b6128d38a6138f4565b5050505095945050505050565b60606000806128ef8785612bf1565b91509150600080612904896000015185611c94565b9150915081156129275760405163801b686360e01b815260040160405180910390fd5b6040898101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015612971573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129959190614ebb565b156129ee576129e789604001518a6000015185848c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508f93509150612cf29050565b9450612a39565b612a36896000015184838b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d9250613498915050565b94505b612a4c89600001518a602001518861356b565b612a5589613963565b50505050949350505050565b60f8161590565b606060008260200151600b0b1215612a8257612a82615146565b60408051600180825281830190925290602080830190803683370190505090508160200151600b0b6080836000015160ff16901b1760001b81600081518110612acd57612acd614e60565b602002602001018181525050919050565b60008082600b0b1215612b04576040516348d6568b60e11b815260040160405180910390fd5b60016001605f1b03612b1a84600b85900b61515c565b1115612b3957604051630c9c55c160e01b815260040160405180910390fd5b6000612b4583856139d2565b905061056f8582613a16565b6040805180820190915260008082526020820152811580159190612b8c5760016001605f1b038316600b0b6020820152608083901c60ff1681525b915091565b6000612b9b6146e6565b821580159250612b8c5760e083901c8152608083901c6bffffffffffffffffffffffff16600b0b6020808301919091526bffffffffffffffff0000000084821c811660408401529084901b166060820152915091565b6040805160c08101825260008082526020820181905291810182905260608082018390526080820183905260a082015260408401516001600160a01b0316612c4c57604051633c70159560e11b815260040160405180910390fd5b612c5e84602001518560400151611c6c565b8082526020808601516001600160a01b0390811691840182905260408088015182169085018190526060808801519092168286015290870151600b0b608085015260a0808701519085015291935003612cca5760405163a47338ef60e01b815260040160405180910390fd5b60008160800151600b0b13611854576040516348d6568b60e11b815260040160405180910390fd5b82612cfb61476c565b6001600160a01b03891615612fff576000612d90898b8a600001518b602001518c60400151604051602001612d469291906001600160a01b0392831681529116602082015260400190565b60408051601f1981840301815260e08301825260006080840181905260a0840181905260c08401526001600160a01b03958616835293909416602082015292830152606082015290565b90506000846002811115612da657612da6615064565b03612dbb5764010000000060c0820152612df0565b6001846002811115612dcf57612dcf615064565b03612de45764040000000060c0820152612df0565b64100000000060c08201525b612dfa8187613a2c565b82600001819052506000336001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e669190614c8b565b9050612e7e86604001518761014001518c8c8c613be3565b5060808401525060405163407b865d60e11b81526000906001600160a01b038316906380f70cba90612ed89033908f907feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc490600401614ca8565b602060405180830381865afa158015612ef5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f199190614c1e565b905060008360800151600014612f3d57612f3864010000000083613a16565b612f40565b60005b9050808460800151612f529190615173565b608085015260608a0151612f6590612132565b60a08501526000876002811115612f7e57612f7e615064565b03612f935764020000000060c0850152612fc8565b6001876002811115612fa757612fa7615064565b03612fbc5764080000000060c0850152612fc8565b64200000000060c08501525b612fd784866000015188613fc7565b60408701919091528b51909650612fef908d90611c94565b60208701525061301d9350505050565b61301584604001518561014001518a8a8a613be3565b602084015250505b600061302c8760600151612132565b826040015161010001516130409190614ccc565b905061306681613057846020015160400151612132565b613061919061507a565b614213565b8260200151604001818152505061308881613057846020015160600151612132565b60208301805160600191909152885190516001600160a01b038b169163a1b2bf8b916130b390614265565b6040518363ffffffff1660e01b81526004016130d0929190614c72565b600060405180830381600087803b1580156130ea57600080fd5b505af11580156130fe573d6000803e3d6000fd5b5050505061311a89896020015160008460008a604001516142d6565b50613132898960400151600080858a604001516142d6565b506101408501516001600160a01b031615806131645750886001600160a01b03168561014001516001600160a01b0316145b156131d8576040516359a2914160e01b815233906359a291419061318e9086908590600401615186565b6000604051808303816000875af11580156131ad573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131d59190810190615111565b92505b6040888101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015613222573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132469190614ebb565b1561348b57604088810151868201519151633acd4df360e21b81526001600160a01b0391821660048201526024810192909252600091908b169063eb3537cc90604401606060405180830381865afa1580156132a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132ca9190614bf0565b509091505060008112156134895760028560028111156132ec576132ec615064565b0361346d576040808a01519051635b92108f60e11b8152339163b724211e9161331c918891600c906004016150e3565b6000604051808303816000875af115801561333b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526133639190810190615111565b93506000613381613373836151a8565b61337c856151a8565b614447565b90508a6001600160a01b031663cf97256d8b60200151836133a1906151a8565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156133e757600080fd5b505af11580156133fb573d6000803e3d6000fd5b5050505060408a810151905163cf97256d60e01b81526001600160a01b03918216600482015260248101839052908c169063cf97256d90604401600060405180830381600087803b15801561344f57600080fd5b505af1158015613463573d6000803e3d6000fd5b5050505050613489565b60405163a85ba64f60e01b8152600c6004820152602401611453565b505b5050979650505050505050565b606083810151156134ab576134ab615146565b60006134b56146e6565b6134cb84604001518561014001518a8a8a613be3565b6101408701519294509250506001600160a01b03808a1691160361355c576040516359a2914160e01b815233906359a291419061350e9088908690600401615186565b6000604051808303816000875af115801561352d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135559190810190615111565b9250613560565b8492505b505095945050505050565b602081015160ff1660031415806135995750826001600160a01b03168161014001516001600160a01b031614155b15613640576040808201519051633acd4df360e21b81526001600160a01b038481166004830152602482019290925260009185169063eb3537cc90604401606060405180830381865afa1580156135f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136189190614bf0565b50509050600081121561363e5760405163ea76c9b360e01b815260040160405180910390fd5b505b505050565b60005a90506000613659836000015161445c565b90506001600160a01b03811615613640578251602084015160408086015190516375aa53e560e11b81526001600160a01b0393841660048201529183166024830152821660448201529082169063eb54a7ca906064015b600060405180830381600087803b1580156136ca57600080fd5b505af19250505080156136db575060015b613640576136408261450b565b60006136f88685602001516119ef565b915050600061370a8460400151612132565b9050600061371b8360400151612132565b9050606060008061372c848b61507a565b905060008061373a8d61185b565b9150915061374a8c8784846121a0565b9350505060008112613835576000846137638388614cf3565b61376d91906150a2565b905060018361377d576001613780565b60005b6040805160ff9384166020820152929091169082015260600160405160208183030381529060405293508b6001600160a01b0316631863e8098b60000151868b878f602001516137cf88614213565b6137db89600019614cf3565b6040518863ffffffff1660e01b81526004016137fd97969594939291906151c4565b600060405180830381600087803b15801561381757600080fd5b505af115801561382b573d6000803e3d6000fd5b50505050506138e7565b6040805160016020820152600291810191909152859060600160405160208183030381529060405293508b6001600160a01b0316631863e8098b60000151868b60008f6020015161388588614213565b6138918a600019614cf3565b6040518863ffffffff1660e01b81526004016138b397969594939291906151c4565b600060405180830381600087803b1580156138cd57600080fd5b505af11580156138e1573d6000803e3d6000fd5b50505050505b5050505050505050505050565b60005a90506000613908836000015161445c565b90506001600160a01b038116156136405782516020840151604080860151905163ef1f023760e01b81526001600160a01b0393841660048201529183166024830152821660448201529082169063ef1f0237906064016136b0565b60005a90506000613977836000015161445c565b90506001600160a01b038116156136405782516020840151604080860151905163f7e3d98360e01b81526001600160a01b0393841660048201529183166024830152821660448201529082169063f7e3d983906064016136b0565b600082600b0b6000036139e757506000611231565b60016001605f1b038211156139fe576139fe615146565b613a088284615211565b600b0b90506108bc81614532565b6000818311613a2557816108bc565b5090919050565b6020820151604051633e7d48bd60e21b81526001600160a01b03909116600482015260609060009081908190339063f9f522f490602401606060405180830381865afa158015613a80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aa49190615231565b91945092509050828015613ab6575081155b15613bda576000613ac78688614566565b90508660c001518216600003613bcc576000613ae68860c001516145e4565b88516040808b015160608c015182516000815260208101909352613b129392309291906044810161526d565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417909352918a015160c08b01519251633a020f0160e11b815291935033926374041e0292613b8192918691641000000000919091149088906004016152b2565b6000604051808303816000875af1158015613ba0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613bc89190810190615111565b9550505b613bd786600061467b565b50505b50505092915050565b600080613bee6146e6565b6000806000613bfc8961185b565b5090506000336001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c639190614c8b565b60405163407b865d60e11b81529091506001600160a01b038216906380f70cba90613cb69033908e907feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc490600401614ca8565b602060405180830381865afa158015613cd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cf79190614c1e565b9250613d078960800151836139d2565b95505050613d188660600151612132565b613d258760400151612132565b613d2e86612132565b613d389190614ccc565b613d42919061507a565b9450613d55856130578860400151612132565b91508082108015613d6d575060008760800151600b0b135b15613daf57613d7f8660600151612132565b613d8c8760400151612132565b613d9583612132565b613d9f9190614ccc565b613da9919061507a565b94508091505b6001600160a01b03891615801590613dd95750876001600160a01b0316896001600160a01b031614155b15613de357600093505b604051806080016040528060008960800151600b0b13613e04576000613e06565b8b5b81526020018860800151600b0b815260200183815260200187606001518152509250876001600160a01b031663a1b2bf8b8860000151613e4586614265565b6040518363ffffffff1660e01b8152600401613e62929190614c72565b600060405180830381600087803b158015613e7c57600080fd5b505af1158015613e90573d6000803e3d6000fd5b505060408051808201909152600080825260208201529250613eb0915050565b613ed688886020015189608001518960200151613ecd9190614bbe565b8860008f6142d6565b600b0b8152604087015160208701516080890151613f05928b929091613efc9190614bbe565b6000808f6142d6565b600b0b60208083018290526040808a0151918a015160808b0151855160a08d015193516001600160a01b0395861696938616958f16947f57269d2ebcccecdcc0d9d2c0a0b80ead95f344e28ec20f50f709811f209d4e0e94613f6b9493929091906152fb565b60405180910390a486606001516001600160a01b03167f71e0c98e270fc3084227b473f176924d5303ece8c639e679998a2d7dc8e70f7483604051613fb291815260200190565b60405180910390a25050955095509592505050565b613fcf614711565b6020840151604051633e7d48bd60e21b81526001600160a01b03909116600482015260609060009081908190339063f9f522f490602401606060405180830381865afa158015614023573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140479190615231565b8896509194509250905082801561405c575081155b156142085761406b8489614566565b93508760c0015181166000036141f657600061408a8960c001516145e4565b89516040808c015160608d0151825160008152602081019093526140b89392309291908e9060448101615333565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417909352918b015160c08c0151925163079b42a160e21b81529193503392631e6d0a84926141279291869164200000000091909114908b906004016152b2565b6000604051808303816000875af1158015614146573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261416e9190810190615111565b604051631fb6491d60e11b81529095503390633f6c923a9061419490889060040161491b565b600060405180830381865afa1580156141b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526141d99190810190614f5d565b95506141ee89608001518761010001516146a3565b610100870152505b6142058686610100015161467b565b93505b505050935093915050565b60008082121561219c5760405162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f7369746976656044820152606401611453565b6040805160018082528183019092526060916020808301908036833701905050905060208260600151901c604060208460400151901c901b608084602001516bffffffffffffffffffffffff16901b60e08560000151901b17171760001b81600081518110612acd57612acd614e60565b6000806142e388886119ef565b91505060008160200151600b0b61430883600001518661430391906150d0565b612132565b6143129190614cf3565b9050801561437d5760405163cf97256d60e01b81526001600160a01b038981166004830152602482018390528a169063cf97256d90604401600060405180830381600087803b15801561436457600080fd5b505af1158015614378573d6000803e3d6000fd5b505050505b86826020015161438d9190614d23565b600b0b602083015283825260408201516143ac90879061305790612132565b604083015260608201516143c590869061305790612132565b60608301526001600160a01b03891663090c415e8960006143e586614265565b6040518463ffffffff1660e01b81526004016144039392919061538c565b600060405180830381600087803b15801561441d57600080fd5b505af1158015614431573d6000803e3d6000fd5b5050506020909201519998505050505050505050565b600081831361445657826108bc565b50919050565b60408051600481526024810182526020810180516001600160e01b03166377a1e96360e11b1790529051600091829182916001600160a01b038616916144a291906153b3565b600060405180830381855afa9150503d80600081146144dd576040519150601f19603f3d011682016040523d82523d6000602084013e6144e2565b606091505b5091509150811561450457808060200190518101906145019190614c8b565b92505b5050919050565b614514816146c1565b156107e9576040516320afada560e01b815260040160405180910390fd5b60008063ffffffff831661454757600061454a565b60015b60ff169050602061455d8285831c615173565b901b9392505050565b6020810151608082015160a08301518351604051630768fabb60e41b8152606094339463768fabb09461459d948a946004016153cf565b6000604051808303816000875af11580156145bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108bc9190810190615111565b6000640100000000820361460057506330d9c91560e01b919050565b640400000000820361461a5750630221347d60e61b919050565b64100000000082036146345750635f9e7d7760e01b919050565b640200000000820361464e575063d86ed3e560e01b919050565b6408000000008203614668575063230dbd2960e01b919050565b506353c11f9960e01b919050565b919050565b604051634c4d861f60e11b8152606090339063989b0c3e9061459d9086908690600401615186565b60006108bc60006146bc6146b686612132565b85614447565b6146d7565b60006146ce603f83614e8c565b5a111592915050565b6000818313613a2557816108bc565b6040518060800160405280600081526020016000600b0b815260200160008152602001600081525090565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a082015260c0810182905260e081018290526101008101829052610120810182905261014081019190915290565b6040518060600160405280606081526020016147866146e6565b8152602001614793614711565b905290565b6001600160a01b03811681146107e957600080fd5b6000806000606084860312156147c257600080fd5b83356147cd81614798565b925060208401356147dd81614798565b915060408401356147ed81614798565b809150509250925092565b6000806040838503121561480b57600080fd5b823561481681614798565b946020939093013593505050565b60008083601f84011261483657600080fd5b50813567ffffffffffffffff81111561484e57600080fd5b60208301915083602082850101111561185457600080fd5b6000806000806060858703121561487c57600080fd5b843561488781614798565b9350602085013561489781614798565b9250604085013567ffffffffffffffff8111156148b357600080fd5b6148bf87828801614824565b95989497509550505050565b60005b838110156148e65781810151838201526020016148ce565b50506000910152565b600081518084526149078160208601602086016148cb565b601f01601f19169290920160200192915050565b6020815260006108bc60208301846148ef565b6000806040838503121561494157600080fd5b823561494c81614798565b9150602083013561495c81614798565b809150509250929050565b8035600b81900b811461467657600080fd5b60008060008060008060a0878903121561499257600080fd5b863561499d81614798565b955060208701356149ad81614798565b945060408701356149bd81614798565b93506149cb60608801614967565b9250608087013567ffffffffffffffff8111156149e757600080fd5b6149f389828a01614824565b979a9699509497509295939492505050565b600060208284031215614a1757600080fd5b81356108bc81614798565b600080600060608486031215614a3757600080fd5b8335614a4281614798565b92506020840135614a5281614798565b929592945050506040919091013590565b600080600080600060808688031215614a7b57600080fd5b8535614a8681614798565b94506020860135614a9681614798565b93506040860135614aa681614798565b9250606086013567ffffffffffffffff811115614ac257600080fd5b614ace88828901614824565b969995985093965092949392505050565b600080600080600060808688031215614af757600080fd5b8535614b0281614798565b94506020860135614b1281614798565b9350614aa660408701614967565b60ff811681146107e957600080fd5b60008060008060008060a08789031215614b4857600080fd5b8635614b5381614798565b95506020870135614b6381614798565b945060408701356149bd81614b20565b60008060408385031215614b8657600080fd5b8235614b9181614798565b9150614b9f60208401614967565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b600b82810b9082900b036b7fffffffffffffffffffffff19811260016001605f1b038213171561123157611231614ba8565b600080600060608486031215614c0557600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215614c3057600080fd5b5051919050565b600081518084526020808501945080840160005b83811015614c6757815187529582019590820190600101614c4b565b509495945050505050565b8281526040602082015260006105566040830184614c37565b600060208284031215614c9d57600080fd5b81516108bc81614798565b6001600160a01b039384168152919092166020820152604081019190915260600190565b8181036000831280158383131683831282161715614cec57614cec614ba8565b5092915050565b80820260008212600160ff1b84141615614d0f57614d0f614ba8565b818105831482151761123157611231614ba8565b600b81810b9083900b0160016001605f1b0381136b7fffffffffffffffffffffff198212171561123157611231614ba8565b634e487b7160e01b600052604160045260246000fd5b604051610160810167ffffffffffffffff81118282101715614d8f57614d8f614d55565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715614dbe57614dbe614d55565b604052919050565b60006020808385031215614dd957600080fd5b825167ffffffffffffffff80821115614df157600080fd5b818501915085601f830112614e0557600080fd5b815181811115614e1757614e17614d55565b8060051b9150614e28848301614d95565b8181529183018401918481019088841115614e4257600080fd5b938501935b83851015610e0657845182529385019390850190614e47565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b600082614e9b57614e9b614e76565b500490565b805161467681614798565b8051801515811461467657600080fd5b600060208284031215614ecd57600080fd5b6108bc82614eab565b805161467681614b20565b80516001600160e01b03198116811461467657600080fd5b600082601f830112614f0a57600080fd5b815167ffffffffffffffff811115614f2457614f24614d55565b614f37601f8201601f1916602001614d95565b818152846020838601011115614f4c57600080fd5b6105568260208301602087016148cb565b600060208284031215614f6f57600080fd5b815167ffffffffffffffff80821115614f8757600080fd5b908301906101608286031215614f9c57600080fd5b614fa4614d6b565b614fad83614ed6565b8152614fbb60208401614ed6565b602082015260408301516040820152614fd660608401614ea0565b6060820152614fe760808401614ee1565b608082015260a083015182811115614ffe57600080fd5b61500a87828601614ef9565b60a08301525060c083015160c082015260e083015160e0820152610100915081830151828201526101209150615041828401614ea0565b828201526101409150615055828401614ea0565b91810191909152949350505050565b634e487b7160e01b600052602160045260246000fd5b808201828112600083128015821682158216171561509a5761509a614ba8565b505092915050565b6000826150b1576150b1614e76565b600160ff1b8214600019841416156150cb576150cb614ba8565b500590565b8181038181111561123157611231614ba8565b6060815260006150f660608301866148ef565b6001600160a01b039490941660208301525060400152919050565b60006020828403121561512357600080fd5b815167ffffffffffffffff81111561513a57600080fd5b61055684828501614ef9565b634e487b7160e01b600052600160045260246000fd5b808202811582820484141761123157611231614ba8565b8082018082111561123157611231614ba8565b60408152600061519960408301856148ef565b90508260208301529392505050565b6000600160ff1b82016151bd576151bd614ba8565b5060000390565b87815260e0602082015260006151dd60e08301896148ef565b6001600160a01b03978816604084015295151560608301525092909416608083015260a082015260c0019190915292915050565b600082600b0b82600b0b0280600b0b9150808214614cec57614cec614ba8565b60008060006060848603121561524657600080fd5b61524f84614eab565b925061525d60208501614eab565b9150604084015190509250925092565b6001600160a01b038681168252851660208201526040810184905260a0606082018190526000906152a0908301856148ef565b8281036080840152610e0681856148ef565b6001600160a01b03851681526080602082018190526000906152d6908301866148ef565b841515604084015282810360608401526152f081856148ef565b979650505050505050565b84600b0b815283600b0b602082015282600b0b604082015260806060820152600061532960808301846148ef565b9695505050505050565b6001600160a01b038781168252861660208201526040810185905260c060608201819052600090615366908301866148ef565b828103608084015261537881866148ef565b905082810360a08401526113ad81856148ef565b60018060a01b038416815282602082015260606040820152600061056f6060830184614c37565b600082516153c58184602087016148cb565b9190910192915050565b60a0815260006153e260a08301886148ef565b6001600160a01b039687166020840152604083019590955250606081019290925290921660809092019190915291905056fea2646970667358221220f97c6ae08c5755670ee0ecfb5f9e2de51b50452062bd76ef0367a0fe418f734d64736f6c63430008130033",
1126
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101e45760003560e01c806354b770e31161010f5780639b2e48bc116100a2578063b4b333c611610071578063b4b333c6146104ab578063bf3fbc28146104be578063e6a1e888146104e1578063e8e7e2d1146104f457600080fd5b80639b2e48bc146104575780639cb28b72146102e6578063aabd266814610485578063ac5f5d001461049857600080fd5b8063811b3d40116100de578063811b3d40146104165780638d997f6e1461042957806394229ecb1461043c5780639903ad381461044f57600080fd5b806354b770e3146103b75780635f51fb23146103ca57806362fc305e146103dd5780637730599e146103f057600080fd5b8063354b9590116101875780634fe9c291116101565780634fe9c2911461035257806350209a621461037c57806350d75d251461038f57806352d1902d146103af57600080fd5b8063354b9590146102f457806346951954146103075780634b839e0b1461031c5780634c8b181f1461033f57600080fd5b8063062e56ec116101c3578063062e56ec1461026157806309d256ef146102815780630f1ac495146102b057806326b0f536146102e657600080fd5b8062422bbe146101e957806304aafa49146102215780630602f7db1461023b575b600080fd5b6101fc6101f73660046147ad565b610507565b6040805193845260ff9092166020840152600b0b908201526060015b60405180910390f35b61022d64010000000081565b604051908152602001610218565b61024e6102493660046147f8565b61053d565b604051600b9190910b8152602001610218565b61027461026f366004614866565b61055e565b604051610218919061491b565b61029461028f3660046147f8565b610578565b6040805160ff9093168352600b9190910b602083015201610218565b6102c36102be36600461492e565b61059c565b60408051948552600b9390930b6020850152918301526060820152608001610218565b61022d60016001605f1b0381565b610274610302366004614979565b6105d2565b61031a610315366004614a05565b610797565b005b61032f61032a366004614a22565b6107ec565b6040519015158152602001610218565b61027461034d366004614a63565b6108c3565b61036561036036600461492e565b6109ae565b604080519215158352602083019190915201610218565b61027461038a366004614adf565b610a49565b610397610b1c565b6040516001600160a01b039091168152602001610218565b61022d610b4b565b6102746103c5366004614866565b610baf565b6102746103d8366004614adf565b610bc7565b6102746103eb366004614adf565b610d5f565b7fa9214cc96615e0085d3bb077758db69497dc2dce3b2b1e97bc93c3d18d83efd361022d565b610274610424366004614b2f565b610e12565b61022d610437366004614b73565b61100f565b61027461044a366004614979565b611237565b61031a6113ba565b61046a610465366004614a22565b6114c8565b60408051938452602084019290925290820152606001610218565b6102c36104933660046147f8565b611522565b6102746104a6366004614adf565b611534565b6102746104b9366004614a63565b611642565b6104c86203d09081565b60405167ffffffffffffffff9091168152602001610218565b6102c36104ef3660046147ad565b6116d6565b61024e61050236600461492e565b611711565b6000806000610516858561172b565b925060006105248785611796565b8051602090910151959990985094965093945050505050565b6000806105498461185b565b50905061055681846119af565b949350505050565b606061056f85856000808787610e12565b95945050505050565b60008060006105878585611796565b80516020909101519097909650945050505050565b60008060008060006105ae87876119ef565b805160208201516040830151606090930151919b909a509198509650945050505050565b606060006106168885858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611aa892505050565b9050866001600160a01b031681606001516001600160a01b03160361064e5760405163edfa0d3b60e01b815260040160405180910390fd5b6000806106648a61065f8b8b611c6c565b611c94565b91509150600080600061067c8d8d8860600151610507565b92509250925061068d826001611cdb565b6106aa5760405163ac434b5f60e01b815260040160405180910390fd5b6000600b82900b60016001605f1b0314806106cf57508a600b0b8560200151600b0b12155b6106f15760208501516106e2908c614bbe565b6106ec9083614bbe565b6106f3565b815b9050600081600b0b121561071a5760405163a0645c1f60e01b815260040160405180910390fd5b6107268e858584611d36565b5050505061075460408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b03808c1682528a8116602083015289166040820152600b88900b60608201526107888183858a8a89611dbf565b9b9a5050505050505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107e057604051630b00ec8f60e11b815260040160405180910390fd5b6107e981611f2a565b50565b604051633acd4df360e21b81526001600160a01b03838116600483015260248201839052600091829186169063eb3537cc90604401606060405180830381865afa15801561083e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108629190614bf0565b50509050600081126108785760019150506108bc565b6000806108848761185b565b91509150600061089488886119ef565b91505060006108a68260400151612132565b90506108b4858286866121a0565b955050505050505b9392505050565b606060006109078785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611aa892505050565b9050600061091a88888460600151610507565b50915050600061092b826002611cdb565b90508061094b5760405163e30f1bff60e01b815260040160405180910390fd5b6040805160808101825260008082526020820181905291810182905260608101919091525b6001600160a01b03808b168252898116602083015288166040820152600060608201526109a081838989886121ee565b9a9950505050505050505050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bbe4fd506040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a339190614c1e565b9050610a408484836107ec565b91509250929050565b60606000610a8d8785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611aa892505050565b9050610ab960408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b03808916825260608084015182166020840181905291891660408401819052600b89900b91840191909152600091610af791611c6c565b9050600080610b0a846000015184611c94565b915091506107888482848b8b8a611dbf565b6000610b467f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b6000306001600160a01b0316637730599e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b469190614c1e565b606061056f8585600760016001605f1b038787610e12565b606082828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080516020601f8a018190048102820181019092528881529596509094610c4394508b935091508790879081908401838280828437600092019190915250611aa892505050565b9050856001600160a01b031681606001516001600160a01b031603610c7b5760405163b0ed394d60e01b815260040160405180910390fd5b600085600b0b1215610ca0576040516386e0377d60e01b815260040160405180910390fd5b6000806000610cb48a85606001518b610507565b919450925090506000610cc78983614bbe565b9050600081600b0b1215610cee576040516386e0377d60e01b815260040160405180910390fd5b610cfa8b858584611d36565b60608501516040805160ff86168152600b84900b60208201526001600160a01b03808e1693811692908f16917fc0d5d3a6ac18cc1769788c925e6e7fc89cd47e4270a42884736fa9b3ec09f3a8910160405180910390a4505050505095945050505050565b60606000610da38785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611aa892505050565b9050610dcf60408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b038089168252606080840151821660208401529088166040830152600b87900b90820152610e06818686856128e0565b98975050505050505050565b606082828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929350610e599250879150612a619050565b610e7657604051631e4e759b60e21b815260040160405180910390fd5b6000610eb88885858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611aa892505050565b9050866001600160a01b031681606001516001600160a01b031603610ef05760405163b0ed394d60e01b815260040160405180910390fd5b600085600b0b1215610f15576040516386e0377d60e01b815260040160405180910390fd5b6040805180820190915260ff87168152600b86900b60208201526060820151600090610f41908a61172b565b9050896001600160a01b031663a1b2bf8b82610f5c85612a68565b6040518363ffffffff1660e01b8152600401610f79929190614c72565b600060405180830381600087803b158015610f9357600080fd5b505af1158015610fa7573d6000803e3d6000fd5b50505060608401516040805160ff8c168152600b8b900b60208201526001600160a01b03808e169450928316928e16917fc0d5d3a6ac18cc1769788c925e6e7fc89cd47e4270a42884736fa9b3ec09f3a8910160405180910390a45050509695505050505050565b600081600b0b60000361102457506000611231565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611084573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a89190614c8b565b90506000816001600160a01b03166380f70cba7f0000000000000000000000000000000000000000000000000000000000000000877feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc46040518463ffffffff1660e01b815260040161111c93929190614ca8565b602060405180830381865afa158015611139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115d9190614c1e565b90506000826001600160a01b03166380f70cba7f0000000000000000000000000000000000000000000000000000000000000000887fe420d96e81cb4a6b2abb2366c4f93312d4e2ae878a7d4b22e73472fdad891f786040518463ffffffff1660e01b81526004016111d193929190614ca8565b602060405180830381865afa1580156111ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112129190614c1e565b9050602081901c63ffffffff1661122a838288612ade565b9450505050505b92915050565b6060600061127b8885858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611aa892505050565b9050866001600160a01b031681606001516001600160a01b0316036112b3576040516325cc989b60e11b815260040160405180910390fd5b60008060006112c78b8b8660600151610507565b9250925092506112d8826000611cdb565b6112f5576040516328faadab60e21b815260040160405180910390fd5b6000600b82900b60016001605f1b0314611318576113138983614bbe565b61131a565b815b9050600081600b0b12156113415760405163a0645c1f60e01b815260040160405180910390fd5b61134d8c858584611d36565b5050505061137b60408051608081018252600080825260208201819052918101829052606081019190915290565b6001600160a01b03808a168252888116602083015287166040820152600b86900b60608201526113ad818686856128e0565b9998505050505050505050565b600054610100900460ff16158080156113da5750600054600160ff909116105b806113f45750303b1580156113f4575060005460ff166001145b61145c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801561147f576000805461ff0019166101001790555b80156107e9576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a150565b60008060008060006114da88886119ef565b915091508115611517578060200151600b0b8160000151876114fc9190614ccc565b6115069190614cf3565b945080604001519350806060015192505b505093509350939050565b60008060008060006105ae8787611c94565b606082828080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080516020601f8a0181900481028201810190925288815295965090946115b094508b935091508790879081908401838280828437600092019190915250611aa892505050565b9050856001600160a01b031681606001516001600160a01b0316036115e85760405163b0ed394d60e01b815260040160405180910390fd5b600085600b0b121561160d576040516386e0377d60e01b815260040160405180910390fd5b60008060006116218a85606001518b610507565b9194509250905060006116348983614d23565b9050610cfa8b858584611d36565b606060006116868785858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611aa892505050565b9050600061169988888460600151610507565b5091505060006116aa826002611cdb565b905061097060408051608081018252600080825260208201819052918101829052606081019190915290565b60008060008060006116ec8861065f8989611c6c565b805160208201516040830151606090930151919c909b50919950975095505050505050565b60008061171e84846119ef565b6020015195945050505050565b600082826040516020016117789291906060808252600c908201526b333637bba7b832b930ba37b960a11b60808201526001600160a01b0392831660208201529116604082015260a00190565b60405160208183030381529060405280519060200120905092915050565b6040805180820182526000808252602082018190529151636c2d9f2f60e01b8152306004820152602481018490526001604482015282906001600160a01b03861690636c2d9f2f90606401600060405180830381865afa1580156117fe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118269190810190614dc6565b905061184e8160008151811061183e5761183e614e60565b602002602001015160001c612b51565b92509250505b9250929050565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e29190614c8b565b90506000816001600160a01b03166380f70cba7f0000000000000000000000000000000000000000000000000000000000000000877fe420d96e81cb4a6b2abb2366c4f93312d4e2ae878a7d4b22e73472fdad891f786040518463ffffffff1660e01b815260040161195693929190614ca8565b602060405180830381865afa158015611973573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119979190614c1e565b63ffffffff602082901c811697911695509350505050565b600060016001605f1b038211156119d957604051631d4b0ae760e21b815260040160405180910390fd5b63ffffffff198216915060006105568484614e8c565b60006119f96146e6565b604051634b61cc3360e01b81523060048201526001600160a01b038481166024830152600060448301819052600160648401529190861690634b61cc33906084015b600060405180830381865afa158015611a58573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611a809190810190614dc6565b905061184e81600081518110611a9857611a98614e60565b602002602001015160001c612b91565b611ab0614711565b336001600160a01b0316836001600160a01b03166320bc44256040518163ffffffff1660e01b8152600401602060405180830381865afa158015611af8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1c9190614c8b565b6001600160a01b031614611b665760405162461bcd60e51b81526020600482015260116024820152701d5b985d5d1a1bdc9a5e9959081a1bdcdd607a1b6044820152606401611453565b604051632fd0a1cd60e21b8152339063bf42873490611b8990859060040161491b565b602060405180830381865afa158015611ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bca9190614ebb565b611c045760405162461bcd60e51b815260206004820152600b60248201526a0d2dcecc2d8d2c840c6e8f60ab1b6044820152606401611453565b604051631fb6491d60e11b81523390633f6c923a90611c2790859060040161491b565b600060405180830381865afa158015611c44573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108bc9190810190614f5d565b604080516001600160a01b038085166020830152831691810191909152600090606001611778565b6000611c9e6146e6565b604051636c2d9f2f60e01b815230600482015260248101849052600160448201526000906001600160a01b03861690636c2d9f2f90606401611a3b565b600080826002811115611cf057611cf0615064565b03611d015750600182811614611231565b6001826002811115611d1557611d15615064565b03611d285750600182811c811614611231565b505060021c60019081161490565b6040805180820190915260ff83168152600b82900b60208201526001600160a01b03851663a1b2bf8b85611d6984612a68565b6040518363ffffffff1660e01b8152600401611d86929190614c72565b600060405180830381600087803b158015611da057600080fd5b505af1158015611db4573d6000803e3d6000fd5b505050505050505050565b60606000611dcd8884612bf1565b91505085611dee5760405163168cafc960e21b815260040160405180910390fd5b6040888101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015611e38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5c9190614ebb565b15611eb857611eb188604001518960000151838a89898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508b925060019150612cf29050565b9150611f03565b611f008860000151828988888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250613498915050565b91505b611f16886000015189602001518561356b565b611f1f88613645565b509695505050505050565b6000611f547f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b031603611faa5760405162461bcd60e51b815260206004820152601d60248201527f5555505350726f786961626c653a206e6f742075706772616461626c650000006044820152606401611453565b806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fe8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200c9190614c1e565b612014610b4b565b1461206d5760405162461bcd60e51b815260206004820152602360248201527f5555505350726f786961626c653a206e6f7420636f6d70617469626c65206c6f60448201526267696360e81b6064820152608401611453565b6001600160a01b03811630036120c55760405162461bcd60e51b815260206004820152601960248201527f5555505350726f786961626c653a2070726f7879206c6f6f70000000000000006044820152606401611453565b6120ed817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fe011bc04c286c344a8fcbb8de77f953da762c3e25d8cdea984147fc4168a5dcc612116610b4b565b604080519182526001600160a01b0384166020830152016114bd565b60006001600160ff1b0382111561219c5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401611453565b5090565b6000836000036121b257506000610556565b60006121be858761507a565b905060006121cc85876150a2565b90506121d884866150d0565b6121e282846150a2565b13979650505050505050565b6040805160c0810182526000808252602082018190529181018290526060818101839052608082019290925260a0810182905260208701516001600160a01b031661224c57604051631ce9b06760e01b815260040160405180910390fd5b60408701516001600160a01b031661227757604051633c70159560e11b815260040160405180910390fd5b61228987602001518860400151611c6c565b8082526020808901516001600160a01b03908116918401919091526040808a01518216908401526060808601519091169083015260006080830181905260a080860151908401528851909182916122df91611c94565b91509150816123015760405163168cafc960e21b815260040160405180910390fd5b885160208a01516040808801519051633acd4df360e21b81526000936001600160a01b03169263eb3537cc9261234d926004016001600160a01b03929092168252602082015260400190565b606060405180830381865afa15801561236a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061238e9190614bf0565b5050905089602001516001600160a01b031686606001516001600160a01b0316141580156123d6575089604001516001600160a01b031686606001516001600160a01b031614155b80156123e0575088155b156124f15760208a0151604051636b4f333560e01b81526001600160a01b0390911660048201523390636b4f333590602401602060405180830381865afa15801561242f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124539190614ebb565b1580156124cb575060408a8101519051636b4f333560e01b81526001600160a01b0390911660048201523390636b4f333590602401602060405180830381865afa1580156124a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c99190614ebb565b155b156124f157600081126124f15760405163ce11b5d160e01b815260040160405180910390fd5b600081121561250f5761250f8a600001518286858a606001516136e8565b87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505060208b015160608801519196506001600160a01b039081169116036126055760408a8101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa1580156125ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d29190614ebb565b156125f6576125ef8a604001518b600001518685898b6002612cf2565b94506128ca565b89516125ef908584888a613498565b89604001516001600160a01b031686606001516001600160a01b0316036127395760208a0151604051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015612670573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126949190614ebb565b156126b1576125ef8a602001518b600001518685898b6002612cf2565b60408a8101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa1580156126fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061271f9190614ebb565b156125f6576125ef60008b600001518685898b6002612cf2565b60208a0151604051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015612783573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127a79190614ebb565b80156127b35750600081125b1561282d5760208a0151604051635b92108f60e11b8152339163b724211e916127e3918991600b906004016150e3565b6000604051808303816000875af1158015612802573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261282a9190810190615111565b94505b60408a8101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015612877573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061289b9190614ebb565b156128b8576125ef8a604001518b600001518685898b6002612cf2565b89516128c7908584888a613498565b94505b6128d38a6138f4565b5050505095945050505050565b60606000806128ef8785612bf1565b91509150600080612904896000015185611c94565b9150915081156129275760405163801b686360e01b815260040160405180910390fd5b6040898101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015612971573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129959190614ebb565b156129ee576129e789604001518a6000015185848c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508f93509150612cf29050565b9450612a39565b612a36896000015184838b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d9250613498915050565b94505b612a4c89600001518a602001518861356b565b612a5589613963565b50505050949350505050565b60f8161590565b606060008260200151600b0b1215612a8257612a82615146565b60408051600180825281830190925290602080830190803683370190505090508160200151600b0b6080836000015160ff16901b1760001b81600081518110612acd57612acd614e60565b602002602001018181525050919050565b60008082600b0b1215612b04576040516348d6568b60e11b815260040160405180910390fd5b60016001605f1b03612b1a84600b85900b61515c565b1115612b3957604051630c9c55c160e01b815260040160405180910390fd5b6000612b4583856139d2565b905061056f8582613a16565b6040805180820190915260008082526020820152811580159190612b8c5760016001605f1b038316600b0b6020820152608083901c60ff1681525b915091565b6000612b9b6146e6565b821580159250612b8c5760e083901c8152608083901c6bffffffffffffffffffffffff16600b0b6020808301919091526bffffffffffffffff0000000084821c811660408401529084901b166060820152915091565b6040805160c08101825260008082526020820181905291810182905260608082018390526080820183905260a082015260408401516001600160a01b0316612c4c57604051633c70159560e11b815260040160405180910390fd5b612c5e84602001518560400151611c6c565b8082526020808601516001600160a01b0390811691840182905260408088015182169085018190526060808801519092168286015290870151600b0b608085015260a0808701519085015291935003612cca5760405163a47338ef60e01b815260040160405180910390fd5b60008160800151600b0b13611854576040516348d6568b60e11b815260040160405180910390fd5b82612cfb61476c565b6001600160a01b03891615612fff576000612d90898b8a600001518b602001518c60400151604051602001612d469291906001600160a01b0392831681529116602082015260400190565b60408051601f1981840301815260e08301825260006080840181905260a0840181905260c08401526001600160a01b03958616835293909416602082015292830152606082015290565b90506000846002811115612da657612da6615064565b03612dbb5764010000000060c0820152612df0565b6001846002811115612dcf57612dcf615064565b03612de45764040000000060c0820152612df0565b64100000000060c08201525b612dfa8187613a2c565b82600001819052506000336001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e669190614c8b565b9050612e7e86604001518761014001518c8c8c613be3565b5060808401525060405163407b865d60e11b81526000906001600160a01b038316906380f70cba90612ed89033908f907feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc490600401614ca8565b602060405180830381865afa158015612ef5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f199190614c1e565b905060008360800151600014612f3d57612f3864010000000083613a16565b612f40565b60005b9050808460800151612f529190615173565b608085015260608a0151612f6590612132565b60a08501526000876002811115612f7e57612f7e615064565b03612f935764020000000060c0850152612fc8565b6001876002811115612fa757612fa7615064565b03612fbc5764080000000060c0850152612fc8565b64200000000060c08501525b612fd784866000015188613fc7565b60408701919091528b51909650612fef908d90611c94565b60208701525061301d9350505050565b61301584604001518561014001518a8a8a613be3565b602084015250505b600061302c8760600151612132565b826040015161010001516130409190614ccc565b905061306681613057846020015160400151612132565b613061919061507a565b614213565b8260200151604001818152505061308881613057846020015160600151612132565b60208301805160600191909152885190516001600160a01b038b169163a1b2bf8b916130b390614265565b6040518363ffffffff1660e01b81526004016130d0929190614c72565b600060405180830381600087803b1580156130ea57600080fd5b505af11580156130fe573d6000803e3d6000fd5b5050505061311a89896020015160008460008a604001516142d6565b50613132898960400151600080858a604001516142d6565b506101408501516001600160a01b031615806131645750886001600160a01b03168561014001516001600160a01b0316145b156131d8576040516359a2914160e01b815233906359a291419061318e9086908590600401615186565b6000604051808303816000875af11580156131ad573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131d59190810190615111565b92505b6040888101519051631e51d6a760e11b81526001600160a01b0390911660048201523390633ca3ad4e90602401602060405180830381865afa158015613222573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132469190614ebb565b1561348b57604088810151868201519151633acd4df360e21b81526001600160a01b0391821660048201526024810192909252600091908b169063eb3537cc90604401606060405180830381865afa1580156132a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132ca9190614bf0565b509091505060008112156134895760028560028111156132ec576132ec615064565b0361346d576040808a01519051635b92108f60e11b8152339163b724211e9161331c918891600c906004016150e3565b6000604051808303816000875af115801561333b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526133639190810190615111565b93506000613381613373836151a8565b61337c856151a8565b614447565b90508a6001600160a01b031663cf97256d8b60200151836133a1906151a8565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b1580156133e757600080fd5b505af11580156133fb573d6000803e3d6000fd5b5050505060408a810151905163cf97256d60e01b81526001600160a01b03918216600482015260248101839052908c169063cf97256d90604401600060405180830381600087803b15801561344f57600080fd5b505af1158015613463573d6000803e3d6000fd5b5050505050613489565b60405163a85ba64f60e01b8152600c6004820152602401611453565b505b5050979650505050505050565b606083810151156134ab576134ab615146565b60006134b56146e6565b6134cb84604001518561014001518a8a8a613be3565b6101408701519294509250506001600160a01b03808a1691160361355c576040516359a2914160e01b815233906359a291419061350e9088908690600401615186565b6000604051808303816000875af115801561352d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526135559190810190615111565b9250613560565b8492505b505095945050505050565b602081015160ff1660031415806135995750826001600160a01b03168161014001516001600160a01b031614155b15613640576040808201519051633acd4df360e21b81526001600160a01b038481166004830152602482019290925260009185169063eb3537cc90604401606060405180830381865afa1580156135f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136189190614bf0565b50509050600081121561363e5760405163ea76c9b360e01b815260040160405180910390fd5b505b505050565b60005a90506000613659836000015161445c565b90506001600160a01b03811615613640578251602084015160408086015190516375aa53e560e11b81526001600160a01b0393841660048201529183166024830152821660448201529082169063eb54a7ca906064015b600060405180830381600087803b1580156136ca57600080fd5b505af19250505080156136db575060015b613640576136408261450b565b60006136f88685602001516119ef565b915050600061370a8460400151612132565b9050600061371b8360400151612132565b9050606060008061372c848b61507a565b905060008061373a8d61185b565b9150915061374a8c8784846121a0565b9350505060008112613835576000846137638388614cf3565b61376d91906150a2565b905060018361377d576001613780565b60005b6040805160ff9384166020820152929091169082015260600160405160208183030381529060405293508b6001600160a01b0316631863e8098b60000151868b878f602001516137cf88614213565b6137db89600019614cf3565b6040518863ffffffff1660e01b81526004016137fd97969594939291906151c4565b600060405180830381600087803b15801561381757600080fd5b505af115801561382b573d6000803e3d6000fd5b50505050506138e7565b6040805160016020820152600291810191909152859060600160405160208183030381529060405293508b6001600160a01b0316631863e8098b60000151868b60008f6020015161388588614213565b6138918a600019614cf3565b6040518863ffffffff1660e01b81526004016138b397969594939291906151c4565b600060405180830381600087803b1580156138cd57600080fd5b505af11580156138e1573d6000803e3d6000fd5b50505050505b5050505050505050505050565b60005a90506000613908836000015161445c565b90506001600160a01b038116156136405782516020840151604080860151905163ef1f023760e01b81526001600160a01b0393841660048201529183166024830152821660448201529082169063ef1f0237906064016136b0565b60005a90506000613977836000015161445c565b90506001600160a01b038116156136405782516020840151604080860151905163f7e3d98360e01b81526001600160a01b0393841660048201529183166024830152821660448201529082169063f7e3d983906064016136b0565b600082600b0b6000036139e757506000611231565b60016001605f1b038211156139fe576139fe615146565b613a088284615211565b600b0b90506108bc81614532565b6000818311613a2557816108bc565b5090919050565b6020820151604051633e7d48bd60e21b81526001600160a01b03909116600482015260609060009081908190339063f9f522f490602401606060405180830381865afa158015613a80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aa49190615231565b91945092509050828015613ab6575081155b15613bda576000613ac78688614566565b90508660c001518216600003613bcc576000613ae68860c001516145e4565b88516040808b015160608c015182516000815260208101909352613b129392309291906044810161526d565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417909352918a015160c08b01519251633a020f0160e11b815291935033926374041e0292613b8192918691641000000000919091149088906004016152b2565b6000604051808303816000875af1158015613ba0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613bc89190810190615111565b9550505b613bd786600061467b565b50505b50505092915050565b600080613bee6146e6565b6000806000613bfc8961185b565b5090506000336001600160a01b031663289b3c0d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c639190614c8b565b60405163407b865d60e11b81529091506001600160a01b038216906380f70cba90613cb69033908e907feae305fa863b373417e615b1044222e2806cefc7788d169ce6748a443c3f6cc490600401614ca8565b602060405180830381865afa158015613cd3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cf79190614c1e565b9250613d078960800151836139d2565b95505050613d188660600151612132565b613d258760400151612132565b613d2e86612132565b613d389190614ccc565b613d42919061507a565b9450613d55856130578860400151612132565b91508082108015613d6d575060008760800151600b0b135b15613daf57613d7f8660600151612132565b613d8c8760400151612132565b613d9583612132565b613d9f9190614ccc565b613da9919061507a565b94508091505b6001600160a01b03891615801590613dd95750876001600160a01b0316896001600160a01b031614155b15613de357600093505b604051806080016040528060008960800151600b0b13613e04576000613e06565b8b5b81526020018860800151600b0b815260200183815260200187606001518152509250876001600160a01b031663a1b2bf8b8860000151613e4586614265565b6040518363ffffffff1660e01b8152600401613e62929190614c72565b600060405180830381600087803b158015613e7c57600080fd5b505af1158015613e90573d6000803e3d6000fd5b505060408051808201909152600080825260208201529250613eb0915050565b613ed688886020015189608001518960200151613ecd9190614bbe565b8860008f6142d6565b600b0b8152604087015160208701516080890151613f05928b929091613efc9190614bbe565b6000808f6142d6565b600b0b60208083018290526040808a0151918a015160808b0151855160a08d015193516001600160a01b0395861696938616958f16947f57269d2ebcccecdcc0d9d2c0a0b80ead95f344e28ec20f50f709811f209d4e0e94613f6b9493929091906152fb565b60405180910390a486606001516001600160a01b03167f71e0c98e270fc3084227b473f176924d5303ece8c639e679998a2d7dc8e70f7483604051613fb291815260200190565b60405180910390a25050955095509592505050565b613fcf614711565b6020840151604051633e7d48bd60e21b81526001600160a01b03909116600482015260609060009081908190339063f9f522f490602401606060405180830381865afa158015614023573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140479190615231565b8896509194509250905082801561405c575081155b156142085761406b8489614566565b93508760c0015181166000036141f657600061408a8960c001516145e4565b89516040808c015160608d0151825160008152602081019093526140b89392309291908e9060448101615333565b60408051601f19818403018152918152602080830180516001600160e01b03166001600160e01b031990951694909417909352918b015160c08c0151925163079b42a160e21b81529193503392631e6d0a84926141279291869164200000000091909114908b906004016152b2565b6000604051808303816000875af1158015614146573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261416e9190810190615111565b604051631fb6491d60e11b81529095503390633f6c923a9061419490889060040161491b565b600060405180830381865afa1580156141b1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526141d99190810190614f5d565b95506141ee89608001518761010001516146a3565b610100870152505b6142058686610100015161467b565b93505b505050935093915050565b60008082121561219c5760405162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f7369746976656044820152606401611453565b6040805160018082528183019092526060916020808301908036833701905050905060208260600151901c604060208460400151901c901b608084602001516bffffffffffffffffffffffff16901b60e08560000151901b17171760001b81600081518110612acd57612acd614e60565b6000806142e388886119ef565b91505060008160200151600b0b61430883600001518661430391906150d0565b612132565b6143129190614cf3565b9050801561437d5760405163cf97256d60e01b81526001600160a01b038981166004830152602482018390528a169063cf97256d90604401600060405180830381600087803b15801561436457600080fd5b505af1158015614378573d6000803e3d6000fd5b505050505b86826020015161438d9190614d23565b600b0b602083015283825260408201516143ac90879061305790612132565b604083015260608201516143c590869061305790612132565b60608301526001600160a01b03891663090c415e8960006143e586614265565b6040518463ffffffff1660e01b81526004016144039392919061538c565b600060405180830381600087803b15801561441d57600080fd5b505af1158015614431573d6000803e3d6000fd5b5050506020909201519998505050505050505050565b600081831361445657826108bc565b50919050565b60408051600481526024810182526020810180516001600160e01b03166377a1e96360e11b1790529051600091829182916001600160a01b038616916144a291906153b3565b600060405180830381855afa9150503d80600081146144dd576040519150601f19603f3d011682016040523d82523d6000602084013e6144e2565b606091505b5091509150811561450457808060200190518101906145019190614c8b565b92505b5050919050565b614514816146c1565b156107e9576040516320afada560e01b815260040160405180910390fd5b60008063ffffffff831661454757600061454a565b60015b60ff169050602061455d8285831c615173565b901b9392505050565b6020810151608082015160a08301518351604051630768fabb60e41b8152606094339463768fabb09461459d948a946004016153cf565b6000604051808303816000875af11580156145bc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108bc9190810190615111565b6000640100000000820361460057506330d9c91560e01b919050565b640400000000820361461a5750630221347d60e61b919050565b64100000000082036146345750635f9e7d7760e01b919050565b640200000000820361464e575063d86ed3e560e01b919050565b6408000000008203614668575063230dbd2960e01b919050565b506353c11f9960e01b919050565b919050565b604051634c4d861f60e11b8152606090339063989b0c3e9061459d9086908690600401615186565b60006108bc60006146bc6146b686612132565b85614447565b6146d7565b60006146ce603f83614e8c565b5a111592915050565b6000818313613a2557816108bc565b6040518060800160405280600081526020016000600b0b815260200160008152602001600081525090565b604080516101608101825260008082526020820181905291810182905260608082018390526080820183905260a082015260c0810182905260e081018290526101008101829052610120810182905261014081019190915290565b6040518060600160405280606081526020016147866146e6565b8152602001614793614711565b905290565b6001600160a01b03811681146107e957600080fd5b6000806000606084860312156147c257600080fd5b83356147cd81614798565b925060208401356147dd81614798565b915060408401356147ed81614798565b809150509250925092565b6000806040838503121561480b57600080fd5b823561481681614798565b946020939093013593505050565b60008083601f84011261483657600080fd5b50813567ffffffffffffffff81111561484e57600080fd5b60208301915083602082850101111561185457600080fd5b6000806000806060858703121561487c57600080fd5b843561488781614798565b9350602085013561489781614798565b9250604085013567ffffffffffffffff8111156148b357600080fd5b6148bf87828801614824565b95989497509550505050565b60005b838110156148e65781810151838201526020016148ce565b50506000910152565b600081518084526149078160208601602086016148cb565b601f01601f19169290920160200192915050565b6020815260006108bc60208301846148ef565b6000806040838503121561494157600080fd5b823561494c81614798565b9150602083013561495c81614798565b809150509250929050565b8035600b81900b811461467657600080fd5b60008060008060008060a0878903121561499257600080fd5b863561499d81614798565b955060208701356149ad81614798565b945060408701356149bd81614798565b93506149cb60608801614967565b9250608087013567ffffffffffffffff8111156149e757600080fd5b6149f389828a01614824565b979a9699509497509295939492505050565b600060208284031215614a1757600080fd5b81356108bc81614798565b600080600060608486031215614a3757600080fd5b8335614a4281614798565b92506020840135614a5281614798565b929592945050506040919091013590565b600080600080600060808688031215614a7b57600080fd5b8535614a8681614798565b94506020860135614a9681614798565b93506040860135614aa681614798565b9250606086013567ffffffffffffffff811115614ac257600080fd5b614ace88828901614824565b969995985093965092949392505050565b600080600080600060808688031215614af757600080fd5b8535614b0281614798565b94506020860135614b1281614798565b9350614aa660408701614967565b60ff811681146107e957600080fd5b60008060008060008060a08789031215614b4857600080fd5b8635614b5381614798565b95506020870135614b6381614798565b945060408701356149bd81614b20565b60008060408385031215614b8657600080fd5b8235614b9181614798565b9150614b9f60208401614967565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b600b82810b9082900b036b7fffffffffffffffffffffff19811260016001605f1b038213171561123157611231614ba8565b600080600060608486031215614c0557600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215614c3057600080fd5b5051919050565b600081518084526020808501945080840160005b83811015614c6757815187529582019590820190600101614c4b565b509495945050505050565b8281526040602082015260006105566040830184614c37565b600060208284031215614c9d57600080fd5b81516108bc81614798565b6001600160a01b039384168152919092166020820152604081019190915260600190565b8181036000831280158383131683831282161715614cec57614cec614ba8565b5092915050565b80820260008212600160ff1b84141615614d0f57614d0f614ba8565b818105831482151761123157611231614ba8565b600b81810b9083900b0160016001605f1b0381136b7fffffffffffffffffffffff198212171561123157611231614ba8565b634e487b7160e01b600052604160045260246000fd5b604051610160810167ffffffffffffffff81118282101715614d8f57614d8f614d55565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715614dbe57614dbe614d55565b604052919050565b60006020808385031215614dd957600080fd5b825167ffffffffffffffff80821115614df157600080fd5b818501915085601f830112614e0557600080fd5b815181811115614e1757614e17614d55565b8060051b9150614e28848301614d95565b8181529183018401918481019088841115614e4257600080fd5b938501935b83851015610e0657845182529385019390850190614e47565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b600082614e9b57614e9b614e76565b500490565b805161467681614798565b8051801515811461467657600080fd5b600060208284031215614ecd57600080fd5b6108bc82614eab565b805161467681614b20565b80516001600160e01b03198116811461467657600080fd5b600082601f830112614f0a57600080fd5b815167ffffffffffffffff811115614f2457614f24614d55565b614f37601f8201601f1916602001614d95565b818152846020838601011115614f4c57600080fd5b6105568260208301602087016148cb565b600060208284031215614f6f57600080fd5b815167ffffffffffffffff80821115614f8757600080fd5b908301906101608286031215614f9c57600080fd5b614fa4614d6b565b614fad83614ed6565b8152614fbb60208401614ed6565b602082015260408301516040820152614fd660608401614ea0565b6060820152614fe760808401614ee1565b608082015260a083015182811115614ffe57600080fd5b61500a87828601614ef9565b60a08301525060c083015160c082015260e083015160e0820152610100915081830151828201526101209150615041828401614ea0565b828201526101409150615055828401614ea0565b91810191909152949350505050565b634e487b7160e01b600052602160045260246000fd5b808201828112600083128015821682158216171561509a5761509a614ba8565b505092915050565b6000826150b1576150b1614e76565b600160ff1b8214600019841416156150cb576150cb614ba8565b500590565b8181038181111561123157611231614ba8565b6060815260006150f660608301866148ef565b6001600160a01b039490941660208301525060400152919050565b60006020828403121561512357600080fd5b815167ffffffffffffffff81111561513a57600080fd5b61055684828501614ef9565b634e487b7160e01b600052600160045260246000fd5b808202811582820484141761123157611231614ba8565b8082018082111561123157611231614ba8565b60408152600061519960408301856148ef565b90508260208301529392505050565b6000600160ff1b82016151bd576151bd614ba8565b5060000390565b87815260e0602082015260006151dd60e08301896148ef565b6001600160a01b03978816604084015295151560608301525092909416608083015260a082015260c0019190915292915050565b600082600b0b82600b0b0280600b0b9150808214614cec57614cec614ba8565b60008060006060848603121561524657600080fd5b61524f84614eab565b925061525d60208501614eab565b9150604084015190509250925092565b6001600160a01b038681168252851660208201526040810184905260a0606082018190526000906152a0908301856148ef565b8281036080840152610e0681856148ef565b6001600160a01b03851681526080602082018190526000906152d6908301866148ef565b841515604084015282810360608401526152f081856148ef565b979650505050505050565b84600b0b815283600b0b602082015282600b0b604082015260806060820152600061532960808301846148ef565b9695505050505050565b6001600160a01b038781168252861660208201526040810185905260c060608201819052600090615366908301866148ef565b828103608084015261537881866148ef565b905082810360a08401526113ad81856148ef565b60018060a01b038416815282602082015260606040820152600061056f6060830184614c37565b600082516153c58184602087016148cb565b9190910192915050565b60a0815260006153e260a08301886148ef565b6001600160a01b039687166020840152604083019590955250606081019290925290921660809092019190915291905056fea2646970667358221220f97c6ae08c5755670ee0ecfb5f9e2de51b50452062bd76ef0367a0fe418f734d64736f6c63430008130033",
1127
1127
  "linkReferences": {},
1128
1128
  "deployedLinkReferences": {}
1129
1129
  }