Address Details
contract
token
0xF9d922c055A3f1759299467dAfaFdf43BE844f7a
- Token
- Minereum CELO (MNEC)
- Creator
- 0x074a2b–d4c25d at 0xc0f07c–42c307
- Balance
- 0 CELO ( )
- Locked CELO Balance
- 0.00 CELO
- Voting CELO Balance
- 0.00 CELO
- Pending Unlocked Gold
- 0.00 CELO
- Tokens
-
Fetching tokens...
- Transactions
- 301 Transactions
- Transfers
- 812,058 Transfers
- Gas Used
- 1,942,435,987
- Last Balance Update
- 29704125
Transactions
Token Transfers
Tokens
Internal Transactions
Coin Balance History
Logs
Code
Read Contract
Write Contract
This contract has been verified via Sourcify.
View contract in Sourcify repository
- Contract name:
- Minereum
- Optimization enabled
- true
- Compiler version
- v0.6.0+commit.26b70077
- Optimization runs
- 200
- EVM Version
- istanbul
- Verified at
- 2022-12-09T19:58:32.188995Z
contracts/test.sol
pragma solidity ^0.6.0; interface publicCalls { function GenesisDestroyAmountCount ( ) external view returns ( uint256 ); function GenesisDestroyAmountCountSet ( uint256 _GenesisDestroyAmountCount ) external; function GenesisDestroyCountStake ( ) external view returns ( uint256 ); function GenesisDestroyCountStakeSet ( uint256 _GenesisDestroyCountStake ) external; function GenesisDestroyed ( ) external view returns ( uint256 ); function GenesisDestroyedSet ( uint256 _GenesisDestroyed ) external; function NormalAddressBuyPricePerMNE ( address ) external view returns ( uint256 ); function NormalAddressBuyPricePerMNESet ( address _address, uint256 _NormalAddressBuyPricePerMNE ) external; function NormalAddressFeeCount ( ) external view returns ( uint256 ); function NormalAddressFeeCountSet ( uint256 _NormalAddressFeeCount ) external; function NormalAddressSalesCount ( ) external view returns ( uint256 ); function NormalAddressSalesCountSet ( uint256 _NormalAddressSalesCount ) external; function NormalAddressSalesPriceCount ( ) external view returns ( uint256 ); function NormalAddressSalesPriceCountSet ( uint256 _NormalAddressSalesPriceCount ) external; function NormalBalanceImported ( ) external view returns ( uint256 ); function NormalBalanceImportedSet ( uint256 _NormalBalanceImported ) external; function NormalImportedAmountCount ( ) external view returns ( uint256 ); function NormalImportedAmountCountSet ( uint256 _NormalImportedAmountCount ) external; function allowAddressToDestroyGenesis ( address ) external view returns ( address ); function allowAddressToDestroyGenesisSet ( address _address, address _allowAddressToDestroyGenesis ) external; function allowReceiveGenesisTransfers ( address ) external view returns ( bool ); function allowReceiveGenesisTransfersSet ( address _address, bool _allowReceiveGenesisTransfers ) external; function allowed ( address, address ) external view returns ( uint256 ); function allowedSet ( address _address, address _spender, uint256 _amount ) external; function amountOfGenesisToBuyStakes ( ) external view returns ( uint256 ); function amountOfGenesisToBuyStakesSet ( address _from, uint256 _amountOfGenesisToBuyStakes ) external; function amountOfGenesisToTransferStakes ( ) external view returns ( uint256 ); function amountOfGenesisToTransferStakesSet ( address _from, uint256 _amountOfGenesisToTransferStakes ) external; function amountOfMNEForToken ( ) external view returns ( uint256 ); function amountOfMNEForTokenICO ( ) external view returns ( uint256 ); function amountOfMNEForTokenICOSet ( address _from, uint256 _amountOfMNEForTokenICO ) external; function amountOfMNEForTokenSet ( address _from, uint256 _amountOfMNEForToken ) external; function amountOfMNEToBuyStakes ( ) external view returns ( uint256 ); function amountOfMNEToBuyStakesSet ( address _from, uint256 _amountOfMNEToBuyStakes ) external; function amountOfMNEToTransferStakes ( ) external view returns ( uint256 ); function amountOfMNEToTransferStakesSet ( address _from, uint256 _amountOfMNEToTransferStakes ) external; function availableBalance ( ) external view returns ( uint256 ); function availableBalanceSet ( uint256 _availableBalance ) external; function balances ( address ) external view returns ( uint256 ); function balancesSet ( address _address, uint256 _balances ) external; function buyStakeGenesisCount ( ) external view returns ( uint256 ); function buyStakeGenesisCountSet ( uint256 _buyStakeGenesisCount ) external; function buyStakeMNECount ( ) external view returns ( uint256 ); function buyStakeMNECountSet ( uint256 _buyStakeMNECount ) external; function ethFeeForSellerLevel1 ( ) external view returns ( uint256 ); function ethFeeForSellerLevel1Set ( address _from, uint256 _ethFeeForSellerLevel1 ) external; function ethFeeForToken ( ) external view returns ( uint256 ); function ethFeeForTokenICO ( ) external view returns ( uint256 ); function ethFeeForTokenICOSet ( address _from, uint256 _ethFeeForTokenICO ) external; function ethFeeForTokenSet ( address _from, uint256 _ethFeeForToken ) external; function ethFeeToBuyLevel1 ( ) external view returns ( uint256 ); function ethFeeToBuyLevel1Set ( address _from, uint256 _ethFeeToBuyLevel1 ) external; function ethFeeToUpgradeToLevel2 ( ) external view returns ( uint256 ); function ethFeeToUpgradeToLevel2Set ( address _from, uint256 _ethFeeToUpgradeToLevel2 ) external; function ethFeeToUpgradeToLevel3 ( ) external view returns ( uint256 ); function ethFeeToUpgradeToLevel3Set ( address _from, uint256 _ethFeeToUpgradeToLevel3 ) external; function ethPercentFeeGenesisExchange ( ) external view returns ( uint256 ); function ethPercentFeeGenesisExchangeSet ( address _from, uint256 _ethPercentFeeGenesisExchange ) external; function ethPercentFeeNormalExchange ( ) external view returns ( uint256 ); function ethPercentFeeNormalExchangeSet ( address _from, uint256 _ethPercentFeeNormalExchange ) external; function ethPercentStakeExchange ( ) external view returns ( uint256 ); function ethPercentStakeExchangeSet ( address _from, uint256 _ethPercentStakeExchange ) external; function genesisAddressCount ( ) external view returns ( uint256 ); function genesisAddressCountSet ( uint256 _genesisAddressCount ) external; function genesisAddressesForSaleLevel1Index ( address ) external view returns ( uint256 ); function genesisAddressesForSaleLevel1IndexSet ( address _address, uint256 _genesisAddressesForSaleLevel1Index ) external; function genesisAddressesForSaleLevel2Index ( address ) external view returns ( uint256 ); function genesisAddressesForSaleLevel2IndexSet ( address _address, uint256 _genesisAddressesForSaleLevel2Index ) external; function genesisAddressesForSaleLevel3Index ( address ) external view returns ( uint256 ); function genesisAddressesForSaleLevel3IndexSet ( address _address, uint256 _genesisAddressesForSaleLevel3Index ) external; function genesisBuyPrice ( address ) external view returns ( uint256 ); function genesisBuyPriceSet ( address _address, uint256 _genesisBuyPrice ) external; function genesisCallerAddress ( ) external view returns ( address ); function genesisCallerAddressSet ( address _genesisCallerAddress ) external; function genesisInitialSupply ( address ) external view returns ( uint256 ); function genesisInitialSupplySet ( address _address, uint256 _genesisInitialSupply ) external; function genesisRewardPerBlock ( ) external view returns ( uint256 ); function genesisSalesCount ( ) external view returns ( uint256 ); function genesisSalesCountSet ( uint256 _genesisSalesCount ) external; function genesisSalesPriceCount ( ) external view returns ( uint256 ); function genesisSalesPriceCountSet ( uint256 _genesisSalesPriceCount ) external; function genesisSupplyPerAddress ( ) external view returns ( uint256 ); function genesisTransfersCount ( ) external view returns ( uint256 ); function genesisTransfersCountSet ( uint256 _genesisTransfersCount ) external; function initialBlockCount ( ) external view returns ( uint256 ); function initialBlockCountPerAddress ( address ) external view returns ( uint256 ); function initialBlockCountPerAddressSet ( address _address, uint256 _initialBlockCountPerAddress ) external; function initialBlockCountSet ( uint256 _initialBlockCount ) external; function isGenesisAddress ( address ) external view returns ( uint8 ); function isGenesisAddressForSale ( address ) external view returns ( bool ); function isGenesisAddressForSaleSet ( address _address, bool _isGenesisAddressForSale ) external; function isGenesisAddressSet ( address _address, uint8 _isGenesisAddress ) external; function isNormalAddressForSale ( address ) external view returns ( bool ); function isNormalAddressForSaleSet ( address _address, bool _isNormalAddressForSale ) external; function level2ActivationsFromLevel1Count ( ) external view returns ( uint256 ); function level2ActivationsFromLevel1CountSet ( uint256 _level2ActivationsFromLevel1Count ) external; function level3ActivationsFromDevCount ( ) external view returns ( uint256 ); function level3ActivationsFromDevCountSet ( uint256 _level3ActivationsFromDevCount ) external; function level3ActivationsFromLevel1Count ( ) external view returns ( uint256 ); function level3ActivationsFromLevel1CountSet ( uint256 _level3ActivationsFromLevel1Count ) external; function level3ActivationsFromLevel2Count ( ) external view returns ( uint256 ); function level3ActivationsFromLevel2CountSet ( uint256 _level3ActivationsFromLevel2Count ) external; function maxBlocks ( ) external view returns ( uint256 ); function mneBurned ( ) external view returns ( uint256 ); function mneBurnedSet ( uint256 _mneBurned ) external; function normalAddressesForSaleIndex ( address ) external view returns ( uint256 ); function normalAddressesForSaleIndexSet ( address _address, uint256 _normalAddressesForSaleIndex ) external; function overallSupply ( ) external view returns ( uint256 ); function overallSupplySet ( uint256 _overallSupply ) external; function ownerGenesis ( ) external view returns ( address ); function ownerGenesisBuys ( ) external view returns ( address ); function ownerMain ( ) external view returns ( address ); function ownerNormalAddress ( ) external view returns ( address ); function ownerStakeBuys ( ) external view returns ( address ); function ownerStakes ( ) external view returns ( address ); function ownerTokenService ( ) external view returns ( address ); function setOwnerGenesis ( ) external; function setOwnerGenesisBuys ( ) external; function setOwnerMain ( ) external; function setOwnerNormalAddress ( ) external; function setOwnerStakeBuys ( ) external; function setOwnerStakes ( ) external; function setOwnerTokenService ( ) external; function setupRunning ( ) external view returns ( bool ); function setupRunningSet ( bool _setupRunning ) external; function stakeBalances ( address ) external view returns ( uint256 ); function stakeBalancesSet ( address _address, uint256 _stakeBalances ) external; function stakeBuyPrice ( address ) external view returns ( uint256 ); function stakeBuyPriceSet ( address _address, uint256 _stakeBuyPrice ) external; function stakeDecimals ( ) external view returns ( uint256 ); function stakeDecimalsSet ( address _from, uint256 _stakeDecimals ) external; function stakeHoldersImported ( ) external view returns ( uint256 ); function stakeHoldersImportedSet ( uint256 _stakeHoldersImported ) external; function stakeHoldersListIndex ( address ) external view returns ( uint256 ); function stakeHoldersListIndexSet ( address _address, uint256 _stakeHoldersListIndex ) external; function stakeMneBurnCount ( ) external view returns ( uint256 ); function stakeMneBurnCountSet ( uint256 _stakeMneBurnCount ) external; function stakeMneTransferBurnCount ( ) external view returns ( uint256 ); function stakeMneTransferBurnCountSet ( uint256 _stakeMneTransferBurnCount ) external; function stakesForSaleIndex ( address ) external view returns ( uint256 ); function stakesForSaleIndexSet ( address _address, uint256 _stakesForSaleIndex ) external; function tokenCreated ( address, uint256 ) external view returns ( address ); function tokenCreatedSet ( address _address, address _tokenCreated ) external; function tokenICOCreated ( address, uint256 ) external view returns ( address ); function tokenICOCreatedSet ( address _address, address _tokenICOCreated ) external; function totalMaxAvailableAmount ( ) external view returns ( uint256 ); function totalMaxAvailableAmountSet ( uint256 _totalMaxAvailableAmount ) external; function totalPaidStakeHolders ( ) external view returns ( uint256 ); function totalPaidStakeHoldersSet ( uint256 _totalPaidStakeHolders ) external; function transferStakeGenesisCount ( ) external view returns ( uint256 ); function transferStakeGenesisCountSet ( uint256 _transferStakeGenesisCount ) external; function transferStakeMNECount ( ) external view returns ( uint256 ); function transferStakeMNECountSet ( uint256 _transferStakeMNECount ) external; } interface publicArrays { function Level1TradeHistoryAmountETH ( uint256 ) external view returns ( uint256 ); function Level1TradeHistoryAmountETHFee ( uint256 ) external view returns ( uint256 ); function Level1TradeHistoryAmountETHFeeLength ( ) external view returns ( uint256 len ); function Level1TradeHistoryAmountETHFeeSet ( uint256 _Level1TradeHistoryAmountETHFee ) external; function Level1TradeHistoryAmountETHLength ( ) external view returns ( uint256 len ); function Level1TradeHistoryAmountETHSet ( uint256 _Level1TradeHistoryAmountETH ) external; function Level1TradeHistoryAmountMNE ( uint256 ) external view returns ( uint256 ); function Level1TradeHistoryAmountMNELength ( ) external view returns ( uint256 len ); function Level1TradeHistoryAmountMNESet ( uint256 _Level1TradeHistoryAmountMNE ) external; function Level1TradeHistoryBuyer ( uint256 ) external view returns ( address ); function Level1TradeHistoryBuyerLength ( ) external view returns ( uint256 len ); function Level1TradeHistoryBuyerSet ( address _Level1TradeHistoryBuyer ) external; function Level1TradeHistoryDate ( uint256 ) external view returns ( uint256 ); function Level1TradeHistoryDateLength ( ) external view returns ( uint256 len ); function Level1TradeHistoryDateSet ( uint256 _Level1TradeHistoryDate ) external; function Level1TradeHistorySeller ( uint256 ) external view returns ( address ); function Level1TradeHistorySellerLength ( ) external view returns ( uint256 len ); function Level1TradeHistorySellerSet ( address _Level1TradeHistorySeller ) external; function Level2TradeHistoryAmountETH ( uint256 ) external view returns ( uint256 ); function Level2TradeHistoryAmountETHFee ( uint256 ) external view returns ( uint256 ); function Level2TradeHistoryAmountETHFeeLength ( ) external view returns ( uint256 len ); function Level2TradeHistoryAmountETHFeeSet ( uint256 _Level2TradeHistoryAmountETHFee ) external; function Level2TradeHistoryAmountETHLength ( ) external view returns ( uint256 len ); function Level2TradeHistoryAmountETHSet ( uint256 _Level2TradeHistoryAmountETH ) external; function Level2TradeHistoryAmountMNE ( uint256 ) external view returns ( uint256 ); function Level2TradeHistoryAmountMNELength ( ) external view returns ( uint256 len ); function Level2TradeHistoryAmountMNESet ( uint256 _Level2TradeHistoryAmountMNE ) external; function Level2TradeHistoryAvailableAmountMNE ( uint256 ) external view returns ( uint256 ); function Level2TradeHistoryAvailableAmountMNELength ( ) external view returns ( uint256 len ); function Level2TradeHistoryAvailableAmountMNESet ( uint256 _Level2TradeHistoryAvailableAmountMNE ) external; function Level2TradeHistoryBuyer ( uint256 ) external view returns ( address ); function Level2TradeHistoryBuyerLength ( ) external view returns ( uint256 len ); function Level2TradeHistoryBuyerSet ( address _Level2TradeHistoryBuyer ) external; function Level2TradeHistoryDate ( uint256 ) external view returns ( uint256 ); function Level2TradeHistoryDateLength ( ) external view returns ( uint256 len ); function Level2TradeHistoryDateSet ( uint256 _Level2TradeHistoryDate ) external; function Level2TradeHistorySeller ( uint256 ) external view returns ( address ); function Level2TradeHistorySellerLength ( ) external view returns ( uint256 len ); function Level2TradeHistorySellerSet ( address _Level2TradeHistorySeller ) external; function Level3TradeHistoryAmountETH ( uint256 ) external view returns ( uint256 ); function Level3TradeHistoryAmountETHFee ( uint256 ) external view returns ( uint256 ); function Level3TradeHistoryAmountETHFeeLength ( ) external view returns ( uint256 len ); function Level3TradeHistoryAmountETHFeeSet ( uint256 _Level3TradeHistoryAmountETHFee ) external; function Level3TradeHistoryAmountETHLength ( ) external view returns ( uint256 len ); function Level3TradeHistoryAmountETHSet ( uint256 _Level3TradeHistoryAmountETH ) external; function Level3TradeHistoryAmountMNE ( uint256 ) external view returns ( uint256 ); function Level3TradeHistoryAmountMNELength ( ) external view returns ( uint256 len ); function Level3TradeHistoryAmountMNESet ( uint256 _Level3TradeHistoryAmountMNE ) external; function Level3TradeHistoryAvailableAmountMNE ( uint256 ) external view returns ( uint256 ); function Level3TradeHistoryAvailableAmountMNELength ( ) external view returns ( uint256 len ); function Level3TradeHistoryAvailableAmountMNESet ( uint256 _Level3TradeHistoryAvailableAmountMNE ) external; function Level3TradeHistoryBuyer ( uint256 ) external view returns ( address ); function Level3TradeHistoryBuyerLength ( ) external view returns ( uint256 len ); function Level3TradeHistoryBuyerSet ( address _Level3TradeHistoryBuyer ) external; function Level3TradeHistoryDate ( uint256 ) external view returns ( uint256 ); function Level3TradeHistoryDateLength ( ) external view returns ( uint256 len ); function Level3TradeHistoryDateSet ( uint256 _Level3TradeHistoryDate ) external; function Level3TradeHistorySeller ( uint256 ) external view returns ( address ); function Level3TradeHistorySellerLength ( ) external view returns ( uint256 len ); function Level3TradeHistorySellerSet ( address _Level3TradeHistorySeller ) external; function MNETradeHistoryAmountETH ( uint256 ) external view returns ( uint256 ); function MNETradeHistoryAmountETHFee ( uint256 ) external view returns ( uint256 ); function MNETradeHistoryAmountETHFeeLength ( ) external view returns ( uint256 len ); function MNETradeHistoryAmountETHFeeSet ( uint256 _MNETradeHistoryAmountETHFee ) external; function MNETradeHistoryAmountETHLength ( ) external view returns ( uint256 len ); function MNETradeHistoryAmountETHSet ( uint256 _MNETradeHistoryAmountETH ) external; function MNETradeHistoryAmountMNE ( uint256 ) external view returns ( uint256 ); function MNETradeHistoryAmountMNELength ( ) external view returns ( uint256 len ); function MNETradeHistoryAmountMNESet ( uint256 _MNETradeHistoryAmountMNE ) external; function MNETradeHistoryBuyer ( uint256 ) external view returns ( address ); function MNETradeHistoryBuyerLength ( ) external view returns ( uint256 len ); function MNETradeHistoryBuyerSet ( address _MNETradeHistoryBuyer ) external; function MNETradeHistoryDate ( uint256 ) external view returns ( uint256 ); function MNETradeHistoryDateLength ( ) external view returns ( uint256 len ); function MNETradeHistoryDateSet ( uint256 _MNETradeHistoryDate ) external; function MNETradeHistorySeller ( uint256 ) external view returns ( address ); function MNETradeHistorySellerLength ( ) external view returns ( uint256 len ); function MNETradeHistorySellerSet ( address _MNETradeHistorySeller ) external; function StakeTradeHistoryBuyer ( uint256 ) external view returns ( address ); function StakeTradeHistoryBuyerLength ( ) external view returns ( uint256 len ); function StakeTradeHistoryBuyerSet ( address _StakeTradeHistoryBuyer ) external; function StakeTradeHistoryDate ( uint256 ) external view returns ( uint256 ); function StakeTradeHistoryDateLength ( ) external view returns ( uint256 len ); function StakeTradeHistoryDateSet ( uint256 _StakeTradeHistoryDate ) external; function StakeTradeHistoryETHFee ( uint256 ) external view returns ( uint256 ); function StakeTradeHistoryETHFeeLength ( ) external view returns ( uint256 len ); function StakeTradeHistoryETHFeeSet ( uint256 _StakeTradeHistoryETHFee ) external; function StakeTradeHistoryETHPrice ( uint256 ) external view returns ( uint256 ); function StakeTradeHistoryETHPriceLength ( ) external view returns ( uint256 len ); function StakeTradeHistoryETHPriceSet ( uint256 _StakeTradeHistoryETHPrice ) external; function StakeTradeHistoryMNEGenesisBurned ( uint256 ) external view returns ( uint256 ); function StakeTradeHistoryMNEGenesisBurnedLength ( ) external view returns ( uint256 len ); function StakeTradeHistoryMNEGenesisBurnedSet ( uint256 _StakeTradeHistoryMNEGenesisBurned ) external; function StakeTradeHistorySeller ( uint256 ) external view returns ( address ); function StakeTradeHistorySellerLength ( ) external view returns ( uint256 len ); function StakeTradeHistorySellerSet ( address _StakeTradeHistorySeller ) external; function StakeTradeHistoryStakeAmount ( uint256 ) external view returns ( uint256 ); function StakeTradeHistoryStakeAmountLength ( ) external view returns ( uint256 len ); function StakeTradeHistoryStakeAmountSet ( uint256 _StakeTradeHistoryStakeAmount ) external; function deleteGenesisAddressesForSaleLevel1 ( ) external; function deleteGenesisAddressesForSaleLevel2 ( ) external; function deleteGenesisAddressesForSaleLevel3 ( ) external; function deleteNormalAddressesForSale ( ) external; function deleteStakeHoldersList ( ) external; function deleteStakesForSale ( ) external; function genesisAddressesForSaleLevel1 ( uint256 ) external view returns ( address ); function genesisAddressesForSaleLevel1Length ( ) external view returns ( uint256 len ); function genesisAddressesForSaleLevel1Set ( address _genesisAddressesForSaleLevel1 ) external; function genesisAddressesForSaleLevel1SetAt ( uint256 i, address _address ) external; function genesisAddressesForSaleLevel2 ( uint256 ) external view returns ( address ); function genesisAddressesForSaleLevel2Length ( ) external view returns ( uint256 len ); function genesisAddressesForSaleLevel2Set ( address _genesisAddressesForSaleLevel2 ) external; function genesisAddressesForSaleLevel2SetAt ( uint256 i, address _address ) external; function genesisAddressesForSaleLevel3 ( uint256 ) external view returns ( address ); function genesisAddressesForSaleLevel3Length ( ) external view returns ( uint256 len ); function genesisAddressesForSaleLevel3Set ( address _genesisAddressesForSaleLevel3 ) external; function genesisAddressesForSaleLevel3SetAt ( uint256 i, address _address ) external; function normalAddressesForSale ( uint256 ) external view returns ( address ); function normalAddressesForSaleLength ( ) external view returns ( uint256 len ); function normalAddressesForSaleSet ( address _normalAddressesForSale ) external; function normalAddressesForSaleSetAt ( uint256 i, address _address ) external; function ownerGenesis ( ) external view returns ( address ); function ownerGenesisBuys ( ) external view returns ( address ); function ownerMain ( ) external view returns ( address ); function ownerNormalAddress ( ) external view returns ( address ); function ownerStakeBuys ( ) external view returns ( address ); function ownerStakes ( ) external view returns ( address ); function setOwnerGenesis ( ) external; function setOwnerGenesisBuys ( ) external; function setOwnerMain ( ) external; function setOwnerNormalAddress ( ) external; function setOwnerStakeBuys ( ) external; function setOwnerStakes ( ) external; function stakeHoldersList ( uint256 ) external view returns ( address ); function stakeHoldersListAt ( uint256 i, address _address ) external; function stakeHoldersListLength ( ) external view returns ( uint256 len ); function stakeHoldersListSet ( address _stakeHoldersList ) external; function stakesForSale ( uint256 ) external view returns ( address ); function stakesForSaleLength ( ) external view returns ( uint256 len ); function stakesForSaleSet ( address _stakesForSale ) external; function stakesForSaleSetAt ( uint256 i, address _address ) external; } interface genesisCalls { function AllowAddressToDestroyGenesis ( address _from, address _address ) external; function AllowReceiveGenesisTransfers ( address _from ) external; function BurnTokens ( address _from, uint256 mneToBurn ) external returns ( bool success ); function RemoveAllowAddressToDestroyGenesis ( address _from ) external; function RemoveAllowReceiveGenesisTransfers ( address _from ) external; function RemoveGenesisAddressFromSale ( address _from ) external; function SetGenesisForSale ( address _from, uint256 weiPrice ) external; function TransferGenesis ( address _from, address _to ) external; function UpgradeToLevel2FromLevel1 ( address _address, uint256 weiValue ) external; function UpgradeToLevel3FromDev ( address _address ) external; function UpgradeToLevel3FromLevel1 ( address _address, uint256 weiValue ) external; function UpgradeToLevel3FromLevel2 ( address _address, uint256 weiValue ) external; function availableBalanceOf ( address _address ) external view returns ( uint256 Balance ); function balanceOf ( address _address ) external view returns ( uint256 balance ); function deleteAddressFromGenesisSaleList ( address _address ) external; function isAnyGenesisAddress ( address _address ) external view returns ( bool success ); function isGenesisAddressLevel1 ( address _address ) external view returns ( bool success ); function isGenesisAddressLevel2 ( address _address ) external view returns ( bool success ); function isGenesisAddressLevel2Or3 ( address _address ) external view returns ( bool success ); function isGenesisAddressLevel3 ( address _address ) external view returns ( bool success ); function ownerGenesis ( ) external view returns ( address ); function ownerGenesisBuys ( ) external view returns ( address ); function ownerMain ( ) external view returns ( address ); function ownerNormalAddress ( ) external view returns ( address ); function ownerStakeBuys ( ) external view returns ( address ); function ownerStakes ( ) external view returns ( address ); function setGenesisCallerAddress ( address _caller ) external returns ( bool success ); function setOwnerGenesisBuys ( ) external; function setOwnerMain ( ) external; function setOwnerNormalAddress ( ) external; function setOwnerStakeBuys ( ) external; function setOwnerStakes ( ) external; function BurnGenesisAddresses ( address _from, address[] calldata _genesisAddressesToBurn ) external; } interface normalAddress { function BuyNormalAddress ( address _from, address _address, uint256 _msgvalue ) external returns ( uint256 _totalToSend ); function RemoveNormalAddressFromSale ( address _address ) external; function setBalanceNormalAddress ( address _from, address _address, uint256 balance ) external; function SetNormalAddressForSale ( address _from, uint256 weiPricePerMNE ) external; function setOwnerMain ( ) external; function ownerMain ( ) external view returns ( address ); } interface stakes { function RemoveStakeFromSale ( address _from ) external; function SetStakeForSale ( address _from, uint256 priceInWei ) external; function StakeTransferGenesis ( address _from, address _to, uint256 _value, address[] calldata _genesisAddressesToBurn ) external; function StakeTransferMNE ( address _from, address _to, uint256 _value ) external returns ( uint256 _mneToBurn ); function ownerMain ( ) external view returns ( address ); function setBalanceStakes ( address _from, address _address, uint256 balance ) external; function setOwnerMain ( ) external; } interface stakeBuys { function BuyStakeGenesis ( address _from, address _address, address[] calldata _genesisAddressesToBurn, uint256 _msgvalue ) external returns ( uint256 _feesToPayToSeller ); function BuyStakeMNE ( address _from, address _address, uint256 _msgvalue ) external returns ( uint256 _mneToBurn, uint256 _feesToPayToSeller ); function ownerMain ( ) external view returns ( address ); function setOwnerMain ( ) external; } interface genesisBuys { function BuyGenesisLevel1FromNormal ( address _from, address _address, uint256 _msgvalue ) external returns ( uint256 _totalToSend ); function BuyGenesisLevel2FromNormal ( address _from, address _address, uint256 _msgvalue ) external returns ( uint256 _totalToSend ); function BuyGenesisLevel3FromNormal ( address _from, address _address, uint256 _msgvalue ) external returns ( uint256 _totalToSend ); function ownerMain ( ) external view returns ( address ); function setOwnerMain ( ) external; } interface tokenService { function ownerMain ( ) external view returns ( address ); function setOwnerMain ( ) external; function circulatingSupply() external view returns (uint256); function DestroyGenesisAddressLevel1(address _address) external; function Bridge(address _sender, address _address, uint _amount) external; } interface baseTransfers { function setOwnerMain ( ) external; function transfer ( address _from, address _to, uint256 _value ) external; function transferFrom ( address _sender, address _from, address _to, uint256 _amount ) external returns ( bool success ); function stopSetup ( address _from ) external returns ( bool success ); function totalSupply ( ) external view returns ( uint256 TotalSupply ); } interface mneStaking { function startStaking(address _sender, uint256 _amountToStake, address[] calldata _addressList, uint256[] calldata uintList) external; } interface luckyDraw { function BuyTickets(address _sender, uint256[] calldata _max) payable external returns ( uint256 ); } interface externalService { function externalFunction(address _sender, address[] calldata _addressList, uint256[] calldata _uintList) payable external returns ( uint256 ); } interface externalReceiver { function externalFunction(address _sender, uint256 _mneAmount, address[] calldata _addressList, uint256[] calldata _uintList) payable external; } contract Minereum { string public name; string public symbol; uint8 public decimals; event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed _owner, address indexed _spender, uint256 _value); event LogStakeHolderSends(address indexed to, uint balance, uint amountToSend); event LogFailedStakeHolderSends(address indexed to, uint balance, uint amountToSend); event StakeTransfer(address indexed from, address indexed to, uint256 value); publicCalls public pc; publicArrays public pa; genesisCalls public gn; normalAddress public na; stakes public st; stakeBuys public stb; genesisBuys public gnb; tokenService public tks; baseTransfers public bst; mneStaking public mneStk; luckyDraw public lkd; externalService public extS1; externalReceiver public extR1; address public external1Address; address public updaterAddress = 0x0000000000000000000000000000000000000000; function setUpdater() public {if (updaterAddress == 0x0000000000000000000000000000000000000000) updaterAddress = msg.sender; else revert();} address public payoutOwner = 0x0000000000000000000000000000000000000000; bool public payoutBlocked = true; address payable public secondaryPayoutAddress = payable(msg.sender); modifier onlyOwner(){ require(msg.sender == external1Address || msg.sender == address(pc) || msg.sender == address(pa) || msg.sender == address(gn) || msg.sender == address(na) || msg.sender == address(st) || msg.sender == address(stb) || msg.sender == address(gnb) || msg.sender == address(tks) || msg.sender == address(bst) || msg.sender == address(mneStk) || msg.sender == address(lkd) || msg.sender == address(extS1) || msg.sender == address(extR1)); _; } constructor(address _publicCallsAddress, address _publicArraysAddress, address _genesisCallsAddress, address _normalAddressAddress, address _stakesAddress, address _stakesBuysAddress,address _genesisBuysAddress, address _tokenServiceAddress, address _baseTransfersAddress) public { name = "Minereum CELO"; symbol = "MNEC"; decimals = 8; setUpdater(); pc = publicCalls(_publicCallsAddress); pc.setOwnerMain(); pa = publicArrays(_publicArraysAddress); pa.setOwnerMain(); gn = genesisCalls(_genesisCallsAddress); gn.setOwnerMain(); na = normalAddress(_normalAddressAddress); na.setOwnerMain(); st = stakes(_stakesAddress); st.setOwnerMain(); stb = stakeBuys(_stakesBuysAddress); stb.setOwnerMain(); gnb = genesisBuys(_genesisBuysAddress); gnb.setOwnerMain(); tks = tokenService(_tokenServiceAddress); tks.setOwnerMain(); bst = baseTransfers(_baseTransfersAddress); bst.setOwnerMain(); } function reloadGenesis(address _address) public { if (msg.sender == updaterAddress) {gn = genesisCalls(_address); gn.setOwnerMain(); } else revert();} function reloadNormalAddress(address _address) public { if (msg.sender == updaterAddress) {na = normalAddress(_address); na.setOwnerMain(); } else revert();} function reloadStakes(address _address) public { if (msg.sender == updaterAddress) {st = stakes(_address); st.setOwnerMain(); } else revert();} function reloadStakeBuys(address _address) public { if (msg.sender == updaterAddress) {stb = stakeBuys(_address); stb.setOwnerMain(); } else revert();} function reloadGenesisBuys(address _address) public { if (msg.sender == updaterAddress) {gnb = genesisBuys(_address); gnb.setOwnerMain(); } else revert();} function reloadTokenService(address _address) public { if (msg.sender == updaterAddress) {tks = tokenService(_address); tks.setOwnerMain(); } else revert();} function reloadBaseTransfers(address _address) public { if (msg.sender == updaterAddress) {bst = baseTransfers(_address); bst.setOwnerMain(); } else revert();} function reloadPublicCalls(address _address, uint code) public { if (!(code == 1234)) revert(); if (msg.sender == updaterAddress) {pc = publicCalls(_address); pc.setOwnerMain();} else revert();} function reloadPublicArrays(address _address, uint code) public { if (!(code == 1234)) revert(); if (msg.sender == updaterAddress) {pa = publicArrays(_address); pa.setOwnerMain();} else revert();} function loadMNEStaking(address _address) public { if (msg.sender == updaterAddress) {mneStk = mneStaking(_address); } else revert();} function loadLuckyDraw(address _address) public { if (msg.sender == updaterAddress) {lkd = luckyDraw(_address); } else revert();} function externalService1(address _address) public { if (msg.sender == updaterAddress) {extS1 = externalService(_address); } else revert();} function externalReceiver1(address _address) public { if (msg.sender == updaterAddress) {extR1 = externalReceiver(_address); } else revert();} function external1AddressSet(address _address) public { if (msg.sender == updaterAddress) {external1Address = _address; } else revert();} function updateTokenInfo(string memory _name, string memory _symbol) public {if (msg.sender == updaterAddress) { name = _name; symbol = _symbol; } else revert();} function setPayoutOwner(address _address) public { if(msg.sender == updaterAddress) payoutOwner = _address; else revert(); } function setSecondaryPayoutAddress(address payable _address) public { if(msg.sender == payoutOwner) secondaryPayoutAddress = _address; else revert(); } function SetBlockPayouts(bool toBlock) public { if(msg.sender == payoutOwner) { payoutBlocked = toBlock; } } function currentEthBlock() public view returns (uint256 blockNumber) { return block.number; } function currentBlock() public view returns (uint256 blockNumber) { return block.number - pc.initialBlockCount(); } function availableBalanceOf(address _address) public view returns (uint256 Balance) { return gn.availableBalanceOf(_address); } function totalSupply() public view returns (uint256 TotalSupply) { return bst.totalSupply(); } function circulatingSupply() public view returns (uint256) { return tks.circulatingSupply(); } function transfer(address _to, uint256 _value) public { if (_to == address(this)) revert('if (_to == address(this))'); bst.transfer(msg.sender, _to, _value); emit Transfer(msg.sender, _to, _value); } function transferReserved(address _from, address _to, uint256 _value) public onlyOwner { emit Transfer(_from, _to, _value); } function DestroyGenesisAddressLevel1() public { if (gn.isGenesisAddressLevel1(msg.sender)) { emit Transfer(msg.sender, 0x0000000000000000000000000000000000000000, balanceOf(msg.sender)); tks.DestroyGenesisAddressLevel1(msg.sender); } else { revert('Address not Genesis Level 1'); } } function Bridge(address _address, uint _amount) public { emit Transfer(address(this), _address, _amount); tks.Bridge(msg.sender, _address, _amount); } function transferFrom( address _from, address _to, uint256 _amount ) public returns (bool success) { bool result = bst.transferFrom(msg.sender, _from, _to, _amount); if (result) emit Transfer(_from, _to, _amount); return result; } function approve(address _spender, uint256 _amount) public returns (bool success) { pc.allowedSet(msg.sender,_spender, _amount); emit Approval(msg.sender, _spender, _amount); return true; } function allowance(address _owner, address _spender) public view returns (uint256 remaining) { return pc.allowed(_owner,_spender); } function balanceOf(address _address) public view returns (uint256 balance) { return gn.balanceOf(_address); } function stakeBalanceOf(address _address) public view returns (uint256 balance) { return pc.stakeBalances(_address); } function TransferGenesis(address _to) public { emit Transfer(msg.sender, _to, balanceOf(msg.sender)); if (_to == address(this)) revert('if (_to == address(this))'); gn.TransferGenesis(msg.sender, _to); } function SetGenesisForSale(uint256 weiPrice) public { gn.SetGenesisForSale(msg.sender, weiPrice); } function AllowReceiveGenesisTransfers() public { gn.AllowReceiveGenesisTransfers(msg.sender); } function RemoveAllowReceiveGenesisTransfers() public { gn.RemoveAllowReceiveGenesisTransfers(msg.sender); } function RemoveGenesisAddressFromSale() public { gn.RemoveGenesisAddressFromSale(msg.sender); } function AllowAddressToDestroyGenesis(address _address) public { gn.AllowAddressToDestroyGenesis(msg.sender, _address); } function RemoveAllowAddressToDestroyGenesis() public { gn.RemoveAllowAddressToDestroyGenesis(msg.sender); } function UpgradeToLevel2FromLevel1() public payable { gn.UpgradeToLevel2FromLevel1(msg.sender, msg.value); } function UpgradeToLevel3FromLevel1() public payable { gn.UpgradeToLevel3FromLevel1(msg.sender, msg.value); } function UpgradeToLevel3FromLevel2() public payable { gn.UpgradeToLevel3FromLevel2(msg.sender, msg.value); } function UpgradeToLevel3FromDev() public { gn.UpgradeToLevel3FromDev(msg.sender); } function UpgradeOthersToLevel2FromLevel1(address[] memory _addresses) public payable { uint count = _addresses.length; if (msg.value != (pc.ethFeeToUpgradeToLevel2()*count)) revert('(msg.value != pc.ethFeeToUpgradeToLevel2()*count)'); uint i = 0; while (i < count) { gn.UpgradeToLevel2FromLevel1(_addresses[i], pc.ethFeeToUpgradeToLevel2()); i++; } } function UpgradeOthersToLevel3FromLevel1(address[] memory _addresses) public payable { uint count = _addresses.length; if (msg.value != ((pc.ethFeeToUpgradeToLevel2() + pc.ethFeeToUpgradeToLevel3())*count)) revert('(weiValue != ((msg.value + pc.ethFeeToUpgradeToLevel3())*count))'); uint i = 0; while (i < count) { gn.UpgradeToLevel3FromLevel1(_addresses[i], (pc.ethFeeToUpgradeToLevel2() + pc.ethFeeToUpgradeToLevel3())); i++; } } function UpgradeOthersToLevel3FromLevel2(address[] memory _addresses) public payable { uint count = _addresses.length; if (msg.value != (pc.ethFeeToUpgradeToLevel3()*count)) revert('(msg.value != (pc.ethFeeToUpgradeToLevel3()*count))'); uint i = 0; while (i < count) { gn.UpgradeToLevel3FromLevel2(_addresses[i], pc.ethFeeToUpgradeToLevel3()); i++; } } function UpgradeOthersToLevel3FromDev(address[] memory _addresses) public { uint count = _addresses.length; uint i = 0; while (i < count) { gn.UpgradeToLevel3FromDev(_addresses[i]); i++; } } function BuyGenesisAddress(address payable _address) public payable { if (gn.isGenesisAddressLevel1(_address)) BuyGenesisLevel1FromNormal(_address); else if (gn.isGenesisAddressLevel2(_address)) BuyGenesisLevel2FromNormal(_address); else if (gn.isGenesisAddressLevel3(_address)) BuyGenesisLevel3FromNormal(_address); else revert('Address not for sale'); } function SetNormalAddressForSale(uint256 weiPricePerMNE) public { na.SetNormalAddressForSale(msg.sender, weiPricePerMNE); } function RemoveNormalAddressFromSale() public { na.RemoveNormalAddressFromSale(msg.sender); } function BuyNormalAddress(address payable _address) public payable{ emit Transfer(_address, msg.sender, balanceOf(_address)); uint256 feesToPayToSeller = na.BuyNormalAddress(msg.sender, address(_address), msg.value); if(!_address.send(feesToPayToSeller)) revert('(!_address.send(feesToPayToSeller))'); } function setBalanceNormalAddress(address _address, uint256 _balance) public { na.setBalanceNormalAddress(msg.sender, _address, _balance); emit Transfer(address(this), _address, _balance); } function ContractTransferAllFundsOut() public { //in case of hack, funds can be transfered out to another addresses and transferred to the stake holders from there if (payoutBlocked) if(!secondaryPayoutAddress.send(address(this).balance)) revert(); } function PayoutStakeHolders() public { require(msg.sender == tx.origin); //For security reasons this line is to prevent smart contract calls if (payoutBlocked) revert('Payouts Blocked'); //In case of hack, payouts can be blocked uint contractBalance = address(this).balance; if (!(contractBalance > 0)) revert('(!(contractBalance > 0))'); uint i; uint max; i = 0; max = pa.stakeHoldersListLength(); while (i < max) { address payable add = payable(pa.stakeHoldersList(i)); uint balance = pc.stakeBalances(add); uint amountToSend = contractBalance * balance / pc.stakeDecimals(); if (amountToSend > 0) { if (!add.send(amountToSend)) emit LogFailedStakeHolderSends(add, balance, amountToSend); else { pc.totalPaidStakeHoldersSet(pc.totalPaidStakeHolders() + amountToSend); } } i++; } } function stopSetup() public returns (bool success) { return bst.stopSetup(msg.sender); } function BurnTokens(uint256 mneToBurn) public returns (bool success) { gn.BurnTokens(msg.sender, mneToBurn); emit Transfer(msg.sender, 0x0000000000000000000000000000000000000000, mneToBurn); return true; } function SetStakeForSale(uint256 priceInWei) public { st.SetStakeForSale(msg.sender, priceInWei); } function RemoveStakeFromSale() public { st.RemoveStakeFromSale(msg.sender); } function StakeTransferMNE(address _to, uint256 _value) public { if (_to == address(this)) revert('if (_to == address(this))'); BurnTokens(st.StakeTransferMNE(msg.sender, _to, _value)); emit StakeTransfer(msg.sender, _to, _value); } function BurnGenesisAddresses(address[] memory _genesisAddressesToBurn) public { uint i = 0; while(i < _genesisAddressesToBurn.length) { emit Transfer(_genesisAddressesToBurn[i], 0x0000000000000000000000000000000000000000, balanceOf(_genesisAddressesToBurn[i])); i++; } gn.BurnGenesisAddresses(msg.sender, _genesisAddressesToBurn); } function StakeTransferGenesis(address _to, uint256 _value, address[] memory _genesisAddressesToBurn) public { if (_to == address(this)) revert('if (_to == address(this))'); uint i = 0; while(i < _genesisAddressesToBurn.length) { emit Transfer(_genesisAddressesToBurn[i], 0x0000000000000000000000000000000000000000, balanceOf(_genesisAddressesToBurn[i])); i++; } st.StakeTransferGenesis(msg.sender, _to, _value, _genesisAddressesToBurn); emit StakeTransfer(msg.sender, _to, _value); } function setBalanceStakes(address _address, uint256 balance) public { st.setBalanceStakes(msg.sender, _address, balance); } function BuyGenesisLevel1FromNormal(address payable _address) public payable { emit Transfer(_address, msg.sender, balanceOf(_address)); uint256 feesToPayToSeller = gnb.BuyGenesisLevel1FromNormal(msg.sender, address(_address), msg.value); if(!_address.send(feesToPayToSeller)) revert('(!_address.send(feesToPayToSeller))'); } function BuyGenesisLevel2FromNormal(address payable _address) public payable{ emit Transfer(_address, msg.sender, balanceOf(_address)); uint256 feesToPayToSeller = gnb.BuyGenesisLevel2FromNormal(msg.sender, address(_address), msg.value); if(!_address.send(feesToPayToSeller)) revert('(!_address.send(feesToPayToSeller))'); } function BuyGenesisLevel3FromNormal(address payable _address) public payable{ emit Transfer(_address, msg.sender, balanceOf(_address)); uint256 feesToPayToSeller = gnb.BuyGenesisLevel3FromNormal(msg.sender, address(_address), msg.value); if(!_address.send(feesToPayToSeller)) revert('(!_address.send(feesToPayToSeller))'); } function BuyStakeMNE(address payable _address) public payable { uint256 balanceToSend = pc.stakeBalances(_address); (uint256 mneToBurn, uint256 feesToPayToSeller) = stb.BuyStakeMNE(msg.sender, address(_address), msg.value); BurnTokens(mneToBurn); if(!_address.send(feesToPayToSeller)) revert('(!_address.send(feesToPayToSeller))'); emit StakeTransfer(_address, msg.sender, balanceToSend); } function BuyStakeGenesis(address payable _address, address[] memory _genesisAddressesToBurn) public payable { uint256 balanceToSend = pc.stakeBalances(_address); uint i = 0; while(i < _genesisAddressesToBurn.length) { emit Transfer(_genesisAddressesToBurn[i], 0x0000000000000000000000000000000000000000, balanceOf(_genesisAddressesToBurn[i])); i++; } uint256 feesToPayToSeller = stb.BuyStakeGenesis(msg.sender, address(_address), _genesisAddressesToBurn, msg.value); if(!_address.send(feesToPayToSeller)) revert(); emit StakeTransfer(_address, msg.sender, balanceToSend); } function Payment() public payable { } function BuyLuckyDrawTickets(uint256[] memory max) public payable { uint256 _mneToBurn = lkd.BuyTickets.value(msg.value)(msg.sender, max); if (_mneToBurn > 0) BurnTokens(_mneToBurn); } function ExternalFunction1(uint256 _amountToStake, address[] memory _addressList, uint256[] memory uintList) public { if (_amountToStake > 0) { bst.transfer(msg.sender, address(mneStk), _amountToStake); emit Transfer(msg.sender, address(mneStk), _amountToStake); } mneStk.startStaking(msg.sender, _amountToStake, _addressList, uintList); } function isAnyGenesisAddress(address _address) public view returns (bool success) { return gn.isAnyGenesisAddress(_address); } function isGenesisAddressLevel1(address _address) public view returns (bool success) { return gn.isGenesisAddressLevel1(_address); } function isGenesisAddressLevel2(address _address) public view returns (bool success) { return gn.isGenesisAddressLevel2(_address); } function isGenesisAddressLevel3(address _address) public view returns (bool success) { return gn.isGenesisAddressLevel3(_address); } function isGenesisAddressLevel2Or3(address _address) public view returns (bool success) { return gn.isGenesisAddressLevel2Or3(_address); } function registerAddressesValue(address[] memory _addressList, uint _value) public { uint i = 0; if (pc.setupRunning() == false) revert(); if (msg.sender != pc.genesisCallerAddress()) revert(); while(i < _addressList.length) { emit Transfer(address(this), _addressList[i], _value); i++; } } function ethFeeToUpgradeToLevel2Set(uint256 _ethFeeToUpgradeToLevel2) public {pc.ethFeeToUpgradeToLevel2Set(msg.sender, _ethFeeToUpgradeToLevel2);} function ethFeeToUpgradeToLevel3Set(uint256 _ethFeeToUpgradeToLevel3) public {pc.ethFeeToUpgradeToLevel3Set(msg.sender, _ethFeeToUpgradeToLevel3);} function ethFeeToBuyLevel1Set(uint256 _ethFeeToBuyLevel1) public {pc.ethFeeToBuyLevel1Set(msg.sender, _ethFeeToBuyLevel1);} function ethFeeForSellerLevel1Set(uint256 _ethFeeForSellerLevel1) public {pc.ethFeeForSellerLevel1Set(msg.sender, _ethFeeForSellerLevel1);} function ethPercentFeeGenesisExchangeSet(uint256 _ethPercentFeeGenesisExchange) public {pc.ethPercentFeeGenesisExchangeSet(msg.sender, _ethPercentFeeGenesisExchange);} function ethPercentFeeNormalExchangeSet(uint256 _ethPercentFeeNormalExchange) public {pc.ethPercentFeeNormalExchangeSet(msg.sender, _ethPercentFeeNormalExchange);} function ethPercentStakeExchangeSet(uint256 _ethPercentStakeExchange) public {pc.ethPercentStakeExchangeSet(msg.sender, _ethPercentStakeExchange);} function amountOfGenesisToBuyStakesSet(uint256 _amountOfGenesisToBuyStakes) public {pc.amountOfGenesisToBuyStakesSet(msg.sender, _amountOfGenesisToBuyStakes);} function amountOfMNEToBuyStakesSet(uint256 _amountOfMNEToBuyStakes) public {pc.amountOfMNEToBuyStakesSet(msg.sender, _amountOfMNEToBuyStakes);} function amountOfMNEToTransferStakesSet(uint256 _amountOfMNEToTransferStakes) public {pc.amountOfMNEToTransferStakesSet(msg.sender, _amountOfMNEToTransferStakes);} function amountOfGenesisToTransferStakesSet(uint256 _amountOfGenesisToTransferStakes) public {pc.amountOfGenesisToTransferStakesSet(msg.sender, _amountOfGenesisToTransferStakes);} function stakeDecimalsSet(uint256 _stakeDecimals) public {pc.stakeDecimalsSet(msg.sender, _stakeDecimals);} function ServiceFunction1(address[] memory _addressList, uint256[] memory _uintList) public payable { uint256 _mneToBurn = extS1.externalFunction.value(msg.value)(msg.sender, _addressList, _uintList); if (_mneToBurn > 0) BurnTokens(_mneToBurn); } function ReceiverFunction1(uint256 _mneAmount, address[] memory _addressList, uint256[] memory _uintList) public payable { if (_mneAmount > 0) { bst.transfer(msg.sender, address(extR1), _mneAmount); emit Transfer(msg.sender, address(extR1), _mneAmount); } extR1.externalFunction.value(msg.value)(msg.sender, _mneAmount, _addressList, _uintList); } }
Contract ABI
[{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"address","name":"_publicCallsAddress","internalType":"address"},{"type":"address","name":"_publicArraysAddress","internalType":"address"},{"type":"address","name":"_genesisCallsAddress","internalType":"address"},{"type":"address","name":"_normalAddressAddress","internalType":"address"},{"type":"address","name":"_stakesAddress","internalType":"address"},{"type":"address","name":"_stakesBuysAddress","internalType":"address"},{"type":"address","name":"_genesisBuysAddress","internalType":"address"},{"type":"address","name":"_tokenServiceAddress","internalType":"address"},{"type":"address","name":"_baseTransfersAddress","internalType":"address"}]},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"_owner","internalType":"address","indexed":true},{"type":"address","name":"_spender","internalType":"address","indexed":true},{"type":"uint256","name":"_value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"LogFailedStakeHolderSends","inputs":[{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"balance","internalType":"uint256","indexed":false},{"type":"uint256","name":"amountToSend","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"LogStakeHolderSends","inputs":[{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"balance","internalType":"uint256","indexed":false},{"type":"uint256","name":"amountToSend","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"StakeTransfer","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"AllowAddressToDestroyGenesis","inputs":[{"type":"address","name":"_address","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"AllowReceiveGenesisTransfers","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"Bridge","inputs":[{"type":"address","name":"_address","internalType":"address"},{"type":"uint256","name":"_amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"BurnGenesisAddresses","inputs":[{"type":"address[]","name":"_genesisAddressesToBurn","internalType":"address[]"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"success","internalType":"bool"}],"name":"BurnTokens","inputs":[{"type":"uint256","name":"mneToBurn","internalType":"uint256"}]},{"type":"function","stateMutability":"payable","outputs":[],"name":"BuyGenesisAddress","inputs":[{"type":"address","name":"_address","internalType":"address payable"}]},{"type":"function","stateMutability":"payable","outputs":[],"name":"BuyGenesisLevel1FromNormal","inputs":[{"type":"address","name":"_address","internalType":"address payable"}]},{"type":"function","stateMutability":"payable","outputs":[],"name":"BuyGenesisLevel2FromNormal","inputs":[{"type":"address","name":"_address","internalType":"address payable"}]},{"type":"function","stateMutability":"payable","outputs":[],"name":"BuyGenesisLevel3FromNormal","inputs":[{"type":"address","name":"_address","internalType":"address payable"}]},{"type":"function","stateMutability":"payable","outputs":[],"name":"BuyLuckyDrawTickets","inputs":[{"type":"uint256[]","name":"max","internalType":"uint256[]"}]},{"type":"function","stateMutability":"payable","outputs":[],"name":"BuyNormalAddress","inputs":[{"type":"address","name":"_address","internalType":"address payable"}]},{"type":"function","stateMutability":"payable","outputs":[],"name":"BuyStakeGenesis","inputs":[{"type":"address","name":"_address","internalType":"address payable"},{"type":"address[]","name":"_genesisAddressesToBurn","internalType":"address[]"}]},{"type":"function","stateMutability":"payable","outputs":[],"name":"BuyStakeMNE","inputs":[{"type":"address","name":"_address","internalType":"address payable"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"ContractTransferAllFundsOut","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"DestroyGenesisAddressLevel1","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"ExternalFunction1","inputs":[{"type":"uint256","name":"_amountToStake","internalType":"uint256"},{"type":"address[]","name":"_addressList","internalType":"address[]"},{"type":"uint256[]","name":"uintList","internalType":"uint256[]"}]},{"type":"function","stateMutability":"payable","outputs":[],"name":"Payment","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"PayoutStakeHolders","inputs":[]},{"type":"function","stateMutability":"payable","outputs":[],"name":"ReceiverFunction1","inputs":[{"type":"uint256","name":"_mneAmount","internalType":"uint256"},{"type":"address[]","name":"_addressList","internalType":"address[]"},{"type":"uint256[]","name":"_uintList","internalType":"uint256[]"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"RemoveAllowAddressToDestroyGenesis","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"RemoveAllowReceiveGenesisTransfers","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"RemoveGenesisAddressFromSale","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"RemoveNormalAddressFromSale","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"RemoveStakeFromSale","inputs":[]},{"type":"function","stateMutability":"payable","outputs":[],"name":"ServiceFunction1","inputs":[{"type":"address[]","name":"_addressList","internalType":"address[]"},{"type":"uint256[]","name":"_uintList","internalType":"uint256[]"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"SetBlockPayouts","inputs":[{"type":"bool","name":"toBlock","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"SetGenesisForSale","inputs":[{"type":"uint256","name":"weiPrice","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"SetNormalAddressForSale","inputs":[{"type":"uint256","name":"weiPricePerMNE","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"SetStakeForSale","inputs":[{"type":"uint256","name":"priceInWei","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"StakeTransferGenesis","inputs":[{"type":"address","name":"_to","internalType":"address"},{"type":"uint256","name":"_value","internalType":"uint256"},{"type":"address[]","name":"_genesisAddressesToBurn","internalType":"address[]"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"StakeTransferMNE","inputs":[{"type":"address","name":"_to","internalType":"address"},{"type":"uint256","name":"_value","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"TransferGenesis","inputs":[{"type":"address","name":"_to","internalType":"address"}]},{"type":"function","stateMutability":"payable","outputs":[],"name":"UpgradeOthersToLevel2FromLevel1","inputs":[{"type":"address[]","name":"_addresses","internalType":"address[]"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"UpgradeOthersToLevel3FromDev","inputs":[{"type":"address[]","name":"_addresses","internalType":"address[]"}]},{"type":"function","stateMutability":"payable","outputs":[],"name":"UpgradeOthersToLevel3FromLevel1","inputs":[{"type":"address[]","name":"_addresses","internalType":"address[]"}]},{"type":"function","stateMutability":"payable","outputs":[],"name":"UpgradeOthersToLevel3FromLevel2","inputs":[{"type":"address[]","name":"_addresses","internalType":"address[]"}]},{"type":"function","stateMutability":"payable","outputs":[],"name":"UpgradeToLevel2FromLevel1","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"UpgradeToLevel3FromDev","inputs":[]},{"type":"function","stateMutability":"payable","outputs":[],"name":"UpgradeToLevel3FromLevel1","inputs":[]},{"type":"function","stateMutability":"payable","outputs":[],"name":"UpgradeToLevel3FromLevel2","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"remaining","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"_owner","internalType":"address"},{"type":"address","name":"_spender","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"amountOfGenesisToBuyStakesSet","inputs":[{"type":"uint256","name":"_amountOfGenesisToBuyStakes","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"amountOfGenesisToTransferStakesSet","inputs":[{"type":"uint256","name":"_amountOfGenesisToTransferStakes","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"amountOfMNEToBuyStakesSet","inputs":[{"type":"uint256","name":"_amountOfMNEToBuyStakes","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"amountOfMNEToTransferStakesSet","inputs":[{"type":"uint256","name":"_amountOfMNEToTransferStakes","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"success","internalType":"bool"}],"name":"approve","inputs":[{"type":"address","name":"_spender","internalType":"address"},{"type":"uint256","name":"_amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"Balance","internalType":"uint256"}],"name":"availableBalanceOf","inputs":[{"type":"address","name":"_address","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"balance","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"_address","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract baseTransfers"}],"name":"bst","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"circulatingSupply","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"blockNumber","internalType":"uint256"}],"name":"currentBlock","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"blockNumber","internalType":"uint256"}],"name":"currentEthBlock","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"ethFeeForSellerLevel1Set","inputs":[{"type":"uint256","name":"_ethFeeForSellerLevel1","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"ethFeeToBuyLevel1Set","inputs":[{"type":"uint256","name":"_ethFeeToBuyLevel1","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"ethFeeToUpgradeToLevel2Set","inputs":[{"type":"uint256","name":"_ethFeeToUpgradeToLevel2","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"ethFeeToUpgradeToLevel3Set","inputs":[{"type":"uint256","name":"_ethFeeToUpgradeToLevel3","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"ethPercentFeeGenesisExchangeSet","inputs":[{"type":"uint256","name":"_ethPercentFeeGenesisExchange","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"ethPercentFeeNormalExchangeSet","inputs":[{"type":"uint256","name":"_ethPercentFeeNormalExchange","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"ethPercentStakeExchangeSet","inputs":[{"type":"uint256","name":"_ethPercentStakeExchange","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract externalReceiver"}],"name":"extR1","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract externalService"}],"name":"extS1","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"external1Address","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"external1AddressSet","inputs":[{"type":"address","name":"_address","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"externalReceiver1","inputs":[{"type":"address","name":"_address","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"externalService1","inputs":[{"type":"address","name":"_address","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract genesisCalls"}],"name":"gn","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract genesisBuys"}],"name":"gnb","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"success","internalType":"bool"}],"name":"isAnyGenesisAddress","inputs":[{"type":"address","name":"_address","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"success","internalType":"bool"}],"name":"isGenesisAddressLevel1","inputs":[{"type":"address","name":"_address","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"success","internalType":"bool"}],"name":"isGenesisAddressLevel2","inputs":[{"type":"address","name":"_address","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"success","internalType":"bool"}],"name":"isGenesisAddressLevel2Or3","inputs":[{"type":"address","name":"_address","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"success","internalType":"bool"}],"name":"isGenesisAddressLevel3","inputs":[{"type":"address","name":"_address","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract luckyDraw"}],"name":"lkd","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"loadLuckyDraw","inputs":[{"type":"address","name":"_address","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"loadMNEStaking","inputs":[{"type":"address","name":"_address","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract mneStaking"}],"name":"mneStk","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract normalAddress"}],"name":"na","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract publicArrays"}],"name":"pa","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"payoutBlocked","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"payoutOwner","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract publicCalls"}],"name":"pc","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"registerAddressesValue","inputs":[{"type":"address[]","name":"_addressList","internalType":"address[]"},{"type":"uint256","name":"_value","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"reloadBaseTransfers","inputs":[{"type":"address","name":"_address","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"reloadGenesis","inputs":[{"type":"address","name":"_address","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"reloadGenesisBuys","inputs":[{"type":"address","name":"_address","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"reloadNormalAddress","inputs":[{"type":"address","name":"_address","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"reloadPublicArrays","inputs":[{"type":"address","name":"_address","internalType":"address"},{"type":"uint256","name":"code","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"reloadPublicCalls","inputs":[{"type":"address","name":"_address","internalType":"address"},{"type":"uint256","name":"code","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"reloadStakeBuys","inputs":[{"type":"address","name":"_address","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"reloadStakes","inputs":[{"type":"address","name":"_address","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"reloadTokenService","inputs":[{"type":"address","name":"_address","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address payable"}],"name":"secondaryPayoutAddress","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setBalanceNormalAddress","inputs":[{"type":"address","name":"_address","internalType":"address"},{"type":"uint256","name":"_balance","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setBalanceStakes","inputs":[{"type":"address","name":"_address","internalType":"address"},{"type":"uint256","name":"balance","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setPayoutOwner","inputs":[{"type":"address","name":"_address","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setSecondaryPayoutAddress","inputs":[{"type":"address","name":"_address","internalType":"address payable"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setUpdater","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract stakes"}],"name":"st","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"balance","internalType":"uint256"}],"name":"stakeBalanceOf","inputs":[{"type":"address","name":"_address","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"stakeDecimalsSet","inputs":[{"type":"uint256","name":"_stakeDecimals","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract stakeBuys"}],"name":"stb","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"success","internalType":"bool"}],"name":"stopSetup","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract tokenService"}],"name":"tks","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"TotalSupply","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transfer","inputs":[{"type":"address","name":"_to","internalType":"address"},{"type":"uint256","name":"_value","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"success","internalType":"bool"}],"name":"transferFrom","inputs":[{"type":"address","name":"_from","internalType":"address"},{"type":"address","name":"_to","internalType":"address"},{"type":"uint256","name":"_amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferReserved","inputs":[{"type":"address","name":"_from","internalType":"address"},{"type":"address","name":"_to","internalType":"address"},{"type":"uint256","name":"_value","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateTokenInfo","inputs":[{"type":"string","name":"_name","internalType":"string"},{"type":"string","name":"_symbol","internalType":"string"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"updaterAddress","inputs":[]}]
Contract Creation Code
0x6080604052601080546001600160a01b0319908116909155601180546001600160a81b031916600160a01b17905560128054909116331790553480156200004557600080fd5b506040516200660e3803806200660e83398181016040526101208110156200006c57600080fd5b5080516020808301516040808501516060860151608087015160a088015160c089015160e08a0151610100909a01518651808801909752600d8088526c4d696e657265756d2043454c4f60981b9790990196875298999698949793969295919490939091620000df9160009190620005b0565b50604080518082019091526004808252634d4e454360e01b60209092019182526200010d91600191620005b0565b506002805460ff191660081790556200012e6001600160e01b036200058016565b88600260016101000a8154816001600160a01b0302191690836001600160a01b03160217905550600260019054906101000a90046001600160a01b03166001600160a01b03166313b9f0c76040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620001a657600080fd5b505af1158015620001bb573d6000803e3d6000fd5b5050600380546001600160a01b0319166001600160a01b038c81169190911791829055604080516313b9f0c760e01b815290519290911693506313b9f0c7925060048082019260009290919082900301818387803b1580156200021d57600080fd5b505af115801562000232573d6000803e3d6000fd5b5050600480546001600160a01b0319166001600160a01b038b811691909117808355604080516313b9f0c760e01b815290519190921694506313b9f0c793508183019260009282900301818387803b1580156200028e57600080fd5b505af1158015620002a3573d6000803e3d6000fd5b5050600580546001600160a01b0319166001600160a01b038a81169190911791829055604080516313b9f0c760e01b815290519290911693506313b9f0c7925060048082019260009290919082900301818387803b1580156200030557600080fd5b505af11580156200031a573d6000803e3d6000fd5b5050600680546001600160a01b0319166001600160a01b038981169190911791829055604080516313b9f0c760e01b815290519290911693506313b9f0c7925060048082019260009290919082900301818387803b1580156200037c57600080fd5b505af115801562000391573d6000803e3d6000fd5b5050600780546001600160a01b0319166001600160a01b038881169190911791829055604080516313b9f0c760e01b815290519290911693506313b9f0c7925060048082019260009290919082900301818387803b158015620003f357600080fd5b505af115801562000408573d6000803e3d6000fd5b5050600880546001600160a01b0319166001600160a01b038781169190911791829055604080516313b9f0c760e01b815290519290911693506313b9f0c7925060048082019260009290919082900301818387803b1580156200046a57600080fd5b505af11580156200047f573d6000803e3d6000fd5b5050600980546001600160a01b0319166001600160a01b038681169190911791829055604080516313b9f0c760e01b815290519290911693506313b9f0c7925060048082019260009290919082900301818387803b158015620004e157600080fd5b505af1158015620004f6573d6000803e3d6000fd5b5050600a80546001600160a01b0319166001600160a01b038581169190911791829055604080516313b9f0c760e01b815290519290911693506313b9f0c7925060048082019260009290919082900301818387803b1580156200055857600080fd5b505af11580156200056d573d6000803e3d6000fd5b5050505050505050505050505062000655565b6010546001600160a01b0316620005a957601080546001600160a01b03191633179055620005ae565b600080fd5b565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620005f357805160ff191683800117855562000623565b8280016001018555821562000623579182015b828111156200062357825182559160200191906001019062000606565b506200063192915062000635565b5090565b6200065291905b808211156200063157600081556001016200063c565b90565b615fa980620006656000396000f3fe6080604052600436106106d35760003560e01c80637347060c1161037a578063b9c25cae116101d1578063ddcbfce011610102578063e69919ae116100a0578063ef3dd5c81161007a578063ef3dd5c814611fe1578063fd3c763814612014578063fdbc653014612047578063ffc4b1681461205c576106d3565b8063e69919ae14611eeb578063e9095e5c14611f00578063eb0fbbad14611fae576106d3565b8063e12ed13c116100dc578063e12ed13c14611e79578063e241263014611e8e578063e33eaaf714611ea3578063e4c4b47c14611eb8576106d3565b8063ddcbfce014611e07578063df02f1db14611e31578063df462a4714611e64576106d3565b8063c92f146a1161016f578063dae487ca11610149578063dae487ca14611d63578063db16cb5b14611d78578063dd2c455c14611da2578063dd62ed3e14611dcc576106d3565b8063c92f146a14611cf1578063cf91e33114611d06578063d4f7457914611d39576106d3565b8063bdbdcd75116101ab578063bdbdcd7514611b45578063c0ea2e7714611b78578063c169653314611b8d578063c3536e8b14611c50576106d3565b8063b9c25cae14611ae8578063bad0f93414611afd578063bd65fc4c14611b30576106d3565b806393c63b9d116102ab578063aa13504e11610249578063aee1fabc11610223578063aee1fabc14611a61578063af46aa0814611a76578063b3e9047614611aa9578063b4e85ec814611ad3576106d3565b8063aa13504e146118f6578063ac0f738f14611929578063aede090f1461193e576106d3565b806397b5e5541161028557806397b5e55414611858578063a33b12601461188b578063a5094f8f14611893578063a9059cbb146118bd576106d3565b806393c63b9d146117dd57806394ccd96f1461181057806395d89b4114611843576106d3565b806380167ebf116103185780638af8edfc116102f25780638af8edfc146116cf5780638ccb0023146116e45780639055a23e146117955780639358928b146117c8576106d3565b806380167ebf146116045780638278188a146116a55780638a670113146116ba576106d3565b8063742ec16411610354578063742ec164146114ef57806374a72e41146115195780637b411ca5146115c95780637d20a24f146115de576106d3565b80637347060c1461147b57806373668817146114a157806373f0cc2d146114da576106d3565b80633521bbed1161052e57806361a3be801161045f5780636dcb9800116103fd5780637022c79e116103d75780637022c79e146113d45780637050ec891461140757806370a082311461144057806370a8a2e614611473576106d3565b80636dcb98001461136f5780636e3ee8f1146113995780636fd615bf146113bf576106d3565b80636af43470116104395780636af434701461128b5780636b3b2800146112935780636be2ca43146112b95780636c2f12e6146112ce576106d3565b806361a3be8014611226578063633865511461123b57806366a497b714611261576106d3565b80634890bb51116104cc578063542aa99f116104a6578063542aa99f1461119957806357e08c60146111ae5780635b48a884146111e75780635b65268f14611211576106d3565b80634890bb511461112e57806350ac2f6914611136578063522c628f14611160576106d3565b80633c64cfc6116105085780633c64cfc6146110b6578063416e8604146110ef578063460b72ce14611104578063474b07bf14611119576106d3565b80633521bbed14610f1957806336d6991014610f4c578063399c40ea14610f7f576106d3565b806321df8098116106085780632940187a116105a65780633118f543116105805780633118f54314610e89578063313ce56714610e9e5780633181a5a714610ec957806333d5993414610eef576106d3565b80632940187a14610cf65780632cd3fd7014610d295780632f71d02214610d53576106d3565b806323e46e7c116105e257806323e46e7c14610c3f57806324ac57b714610c6b57806325d998bb14610c805780632631ef1214610cb3576106d3565b806321df809814610b9057806322e3f16214610bc357806323b872dd14610bfc576106d3565b80630d061e7511610675578063177e48d01161064f578063177e48d014610a7d57806318160ddd14610b1e5780631d2cb86114610b335780631ec32a6614610b66576106d3565b80630d061e7514610a0b578063124d83d814610a20578063128fb93014610a4a576106d3565b8063095ea7b3116106b1578063095ea7b3146108b857806309ae18441461090557806309f6c607146109b35780630a63361c146109da576106d3565b806306fdde03146106d857806307c5c18e14610762578063088c35fd1461088e575b600080fd5b3480156106e457600080fd5b506106ed61208f565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561072757818101518382015260200161070f565b50505050905090810190601f1680156107545780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61088c6004803603606081101561077857600080fd5b81359190810190604081016020820135600160201b81111561079957600080fd5b8201836020820111156107ab57600080fd5b803590602001918460208302840111600160201b831117156107cc57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561081b57600080fd5b82018360208201111561082d57600080fd5b803590602001918460208302840111600160201b8311171561084e57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061211d945050505050565b005b34801561089a57600080fd5b5061088c600480360360208110156108b157600080fd5b50356122ce565b3480156108c457600080fd5b506108f1600480360360408110156108db57600080fd5b506001600160a01b038135169060200135612340565b604080519115158252519081900360200190f35b34801561091157600080fd5b5061088c6004803603602081101561092857600080fd5b810190602081018135600160201b81111561094257600080fd5b82018360208201111561095457600080fd5b803590602001918460208302840111600160201b8311171561097557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612403945050505050565b3480156109bf57600080fd5b506109c8612529565b60408051918252519081900360200190f35b3480156109e657600080fd5b506109ef61252e565b604080516001600160a01b039092168252519081900360200190f35b348015610a1757600080fd5b506109ef61253d565b348015610a2c57600080fd5b5061088c60048036036020811015610a4357600080fd5b503561254c565b348015610a5657600080fd5b5061088c60048036036020811015610a6d57600080fd5b50356001600160a01b03166125a3565b61088c60048036036020811015610a9357600080fd5b810190602081018135600160201b811115610aad57600080fd5b820183602082011115610abf57600080fd5b803590602001918460208302840111600160201b83111715610ae057600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506125d5945050505050565b348015610b2a57600080fd5b506109c86127b1565b348015610b3f57600080fd5b5061088c60048036036020811015610b5657600080fd5b50356001600160a01b0316612827565b348015610b7257600080fd5b5061088c60048036036020811015610b8957600080fd5b503561285a565b348015610b9c57600080fd5b5061088c60048036036020811015610bb357600080fd5b50356001600160a01b03166128b1565b348015610bcf57600080fd5b5061088c60048036036040811015610be657600080fd5b506001600160a01b03813516906020013561293e565b348015610c0857600080fd5b506108f160048036036060811015610c1f57600080fd5b506001600160a01b038135811691602081013590911690604001356129c7565b348015610c4b57600080fd5b5061088c60048036036020811015610c6257600080fd5b50351515612aa2565b348015610c7757600080fd5b506109ef612ad1565b348015610c8c57600080fd5b506109c860048036036020811015610ca357600080fd5b50356001600160a01b0316612ae0565b348015610cbf57600080fd5b5061088c60048036036060811015610cd657600080fd5b506001600160a01b03813581169160208101359091169060400135612b65565b348015610d0257600080fd5b506108f160048036036020811015610d1957600080fd5b50356001600160a01b0316612cd0565b348015610d3557600080fd5b506108f160048036036020811015610d4c57600080fd5b5035612d23565b348015610d5f57600080fd5b5061088c60048036036040811015610d7657600080fd5b810190602081018135600160201b811115610d9057600080fd5b820183602082011115610da257600080fd5b803590602001918460018302840111600160201b83111715610dc357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610e1557600080fd5b820183602082011115610e2757600080fd5b803590602001918460018302840111600160201b83111715610e4857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612dd4945050505050565b348015610e9557600080fd5b506109ef612e12565b348015610eaa57600080fd5b50610eb3612e21565b6040805160ff9092168252519081900360200190f35b61088c60048036036020811015610edf57600080fd5b50356001600160a01b0316612e2a565b348015610efb57600080fd5b5061088c60048036036020811015610f1257600080fd5b5035613017565b348015610f2557600080fd5b5061088c60048036036020811015610f3c57600080fd5b50356001600160a01b031661306e565b348015610f5857600080fd5b506108f160048036036020811015610f6f57600080fd5b50356001600160a01b03166130a1565b348015610f8b57600080fd5b5061088c60048036036060811015610fa257600080fd5b81359190810190604081016020820135600160201b811115610fc357600080fd5b820183602082011115610fd557600080fd5b803590602001918460208302840111600160201b83111715610ff657600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561104557600080fd5b82018360208201111561105757600080fd5b803590602001918460208302840111600160201b8311171561107857600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506130f4945050505050565b3480156110c257600080fd5b5061088c600480360360408110156110d957600080fd5b506001600160a01b0381351690602001356132a4565b3480156110fb57600080fd5b506109ef6132ff565b34801561111057600080fd5b5061088c61330e565b34801561112557600080fd5b506109ef61346f565b61088c61347e565b34801561114257600080fd5b5061088c6004803603602081101561115957600080fd5b50356134eb565b34801561116c57600080fd5b5061088c6004803603604081101561118357600080fd5b506001600160a01b038135169060200135613542565b3480156111a557600080fd5b506108f16135dd565b3480156111ba57600080fd5b5061088c600480360360408110156111d157600080fd5b506001600160a01b03813516906020013561363d565b3480156111f357600080fd5b5061088c6004803603602081101561120a57600080fd5b50356136e2565b34801561121d57600080fd5b5061088c613735565b34801561123257600080fd5b5061088c613782565b61088c6004803603602081101561125157600080fd5b50356001600160a01b03166137cf565b34801561126d57600080fd5b5061088c6004803603602081101561128457600080fd5b5035613984565b61088c6139db565b61088c600480360360208110156112a957600080fd5b50356001600160a01b0316613a2e565b3480156112c557600080fd5b5061088c613b4f565b61088c600480360360208110156112e457600080fd5b810190602081018135600160201b8111156112fe57600080fd5b82018360208201111561131057600080fd5b803590602001918460208302840111600160201b8311171561133157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613b9b945050505050565b34801561137b57600080fd5b5061088c6004803603602081101561139257600080fd5b5035613d72565b61088c600480360360208110156113af57600080fd5b50356001600160a01b0316613dc9565b3480156113cb57600080fd5b506109ef613e5b565b3480156113e057600080fd5b5061088c600480360360208110156113f757600080fd5b50356001600160a01b0316613e6a565b34801561141357600080fd5b5061088c6004803603604081101561142a57600080fd5b506001600160a01b038135169060200135613eda565b34801561144c57600080fd5b506109c86004803603602081101561146357600080fd5b50356001600160a01b0316613ff9565b61088c61404c565b61088c6004803603602081101561149157600080fd5b50356001600160a01b031661409f565b3480156114ad57600080fd5b5061088c600480360360408110156114c457600080fd5b506001600160a01b038135169060200135614131565b3480156114e657600080fd5b506109ef6141c9565b3480156114fb57600080fd5b5061088c6004803603602081101561151257600080fd5b50356141d8565b34801561152557600080fd5b5061088c6004803603604081101561153c57600080fd5b810190602081018135600160201b81111561155657600080fd5b82018360208201111561156857600080fd5b803590602001918460208302840111600160201b8311171561158957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550509135925061422c915050565b3480156115d557600080fd5b5061088c614396565b61088c600480360360208110156115f457600080fd5b50356001600160a01b03166147a7565b61088c6004803603602081101561161a57600080fd5b810190602081018135600160201b81111561163457600080fd5b82018360208201111561164657600080fd5b803590602001918460208302840111600160201b8311171561166757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550614839945050505050565b3480156116b157600080fd5b506109ef614908565b3480156116c657600080fd5b506109ef614917565b3480156116db57600080fd5b506109ef614926565b61088c600480360360408110156116fa57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561172457600080fd5b82018360208201111561173657600080fd5b803590602001918460208302840111600160201b8311171561175757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550614935945050505050565b3480156117a157600080fd5b506108f1600480360360208110156117b857600080fd5b50356001600160a01b0316614b5d565b3480156117d457600080fd5b506109c8614bb0565b3480156117e957600080fd5b5061088c6004803603602081101561180057600080fd5b50356001600160a01b0316614bf5565b34801561181c57600080fd5b5061088c6004803603602081101561183357600080fd5b50356001600160a01b0316614c61565b34801561184f57600080fd5b506106ed614c94565b34801561186457600080fd5b5061088c6004803603602081101561187b57600080fd5b50356001600160a01b0316614cee565b61088c61346d565b34801561189f57600080fd5b5061088c600480360360208110156118b657600080fd5b5035614d5e565b3480156118c957600080fd5b5061088c600480360360408110156118e057600080fd5b506001600160a01b038135169060200135614db5565b34801561190257600080fd5b5061088c6004803603602081101561191957600080fd5b50356001600160a01b0316614eb4565b34801561193557600080fd5b5061088c614ee7565b61088c6004803603604081101561195457600080fd5b810190602081018135600160201b81111561196e57600080fd5b82018360208201111561198057600080fd5b803590602001918460208302840111600160201b831117156119a157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156119f057600080fd5b820183602082011115611a0257600080fd5b803590602001918460208302840111600160201b83111715611a2357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550614f34945050505050565b348015611a6d57600080fd5b506109ef61504c565b348015611a8257600080fd5b506109c860048036036020811015611a9957600080fd5b50356001600160a01b031661505b565b348015611ab557600080fd5b5061088c60048036036020811015611acc57600080fd5b50356150b0565b348015611adf57600080fd5b5061088c615107565b348015611af457600080fd5b5061088c615153565b348015611b0957600080fd5b5061088c60048036036020811015611b2057600080fd5b50356001600160a01b03166151a0565b348015611b3c57600080fd5b506109ef615210565b348015611b5157600080fd5b5061088c60048036036020811015611b6857600080fd5b50356001600160a01b031661521f565b348015611b8457600080fd5b506108f161528f565b348015611b9957600080fd5b5061088c60048036036060811015611bb057600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b811115611bdf57600080fd5b820183602082011115611bf157600080fd5b803590602001918460208302840111600160201b83111715611c1257600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061529f945050505050565b61088c60048036036020811015611c6657600080fd5b810190602081018135600160201b811115611c8057600080fd5b820183602082011115611c9257600080fd5b803590602001918460208302840111600160201b83111715611cb357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550615455945050505050565b348015611cfd57600080fd5b5061088c615716565b348015611d1257600080fd5b5061088c60048036036020811015611d2957600080fd5b50356001600160a01b0316615763565b348015611d4557600080fd5b5061088c60048036036020811015611d5c57600080fd5b5035615846565b348015611d6f57600080fd5b506109ef61589d565b348015611d8457600080fd5b5061088c60048036036020811015611d9b57600080fd5b50356158ac565b348015611dae57600080fd5b5061088c60048036036020811015611dc557600080fd5b50356158ff565b348015611dd857600080fd5b506109c860048036036040811015611def57600080fd5b506001600160a01b0381358116916020013516615956565b348015611e1357600080fd5b5061088c60048036036020811015611e2a57600080fd5b50356159e6565b348015611e3d57600080fd5b5061088c60048036036020811015611e5457600080fd5b50356001600160a01b0316615a3d565b348015611e7057600080fd5b506109ef615a70565b348015611e8557600080fd5b506109c8615a7f565b348015611e9a57600080fd5b5061088c615b02565b348015611eaf57600080fd5b5061088c615b29565b348015611ec457600080fd5b5061088c60048036036020811015611edb57600080fd5b50356001600160a01b0316615b6c565b348015611ef757600080fd5b506109ef615b9f565b348015611f0c57600080fd5b5061088c60048036036020811015611f2357600080fd5b810190602081018135600160201b811115611f3d57600080fd5b820183602082011115611f4f57600080fd5b803590602001918460208302840111600160201b83111715611f7057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550615bb3945050505050565b348015611fba57600080fd5b506108f160048036036020811015611fd157600080fd5b50356001600160a01b0316615c57565b348015611fed57600080fd5b5061088c6004803603602081101561200457600080fd5b50356001600160a01b0316615caa565b34801561202057600080fd5b5061088c6004803603602081101561203757600080fd5b50356001600160a01b0316615cff565b34801561205357600080fd5b506109ef615d6f565b34801561206857600080fd5b506108f16004803603602081101561207f57600080fd5b50356001600160a01b0316615d7e565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156121155780601f106120ea57610100808354040283529160200191612115565b820191906000526020600020905b8154815290600101906020018083116120f857829003601f168201915b505050505081565b82156121cd57600a54600e54604080516317d5759960e31b81523360048201526001600160a01b039283166024820152604481018790529051919092169163beabacc891606480830192600092919082900301818387803b15801561218157600080fd5b505af1158015612195573d6000803e3d6000fd5b5050600e546040805187815290516001600160a01b039092169350339250600080516020615f23833981519152919081900360200190a35b600e54604051632433a49160e11b81523360048201818152602483018790526080604484019081528651608485015286516001600160a01b03909516946348674922943494938a938a938a93606481019160a4909101906020808801910280838360005b83811015612249578181015183820152602001612231565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015612288578181015183820152602001612270565b5050505090500196505050505050506000604051808303818588803b1580156122b057600080fd5b505af11580156122c4573d6000803e3d6000fd5b5050505050505050565b600254604080516305de45bd60e11b81523360048201526024810184905290516101009092046001600160a01b031691630bbc8b7a9160448082019260009290919082900301818387803b15801561232557600080fd5b505af1158015612339573d6000803e3d6000fd5b5050505050565b6002546040805163779a859960e11b81523360048201526001600160a01b03858116602483015260448201859052915160009361010090049092169163ef350b3291606480820192869290919082900301818387803b1580156123a257600080fd5b505af11580156123b6573d6000803e3d6000fd5b50506040805185815290516001600160a01b03871693503392507f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259181900360200190a350600192915050565b60005b815181101561247b5760006001600160a01b031682828151811061242657fe5b60200260200101516001600160a01b0316600080516020615f2383398151915261246285858151811061245557fe5b6020026020010151613ff9565b60408051918252519081900360200190a3600101612406565b6004805460408051633ca4fe7b60e11b815233938101848152602482019283528651604483015286516001600160a01b0390941694637949fcf6949093889390916064909101906020808601910280838360005b838110156124e75781810151838201526020016124cf565b505050509050019350505050600060405180830381600087803b15801561250d57600080fd5b505af1158015612521573d6000803e3d6000fd5b505050505050565b435b90565b6003546001600160a01b031681565b6012546001600160a01b031681565b60025460408051633429fca760e21b81523360048201526024810184905290516101009092046001600160a01b03169163d0a7f29c9160448082019260009290919082900301818387803b15801561232557600080fd5b6010546001600160a01b03163314156106d357600b80546001600160a01b0319166001600160a01b0383161790555b50565b805160025460408051633238268960e01b81529051839261010090046001600160a01b0316916332382689916004808301926020929190829003018186803b15801561262057600080fd5b505afa158015612634573d6000803e3d6000fd5b505050506040513d602081101561264a57600080fd5b505102341461268a5760405162461bcd60e51b8152600401808060200182810382526031815260200180615f436031913960400191505060405180910390fd5b60005b818110156127ac5760045483516001600160a01b03909116906376067e67908590849081106126b857fe5b6020026020010151600260019054906101000a90046001600160a01b03166001600160a01b031663323826896040518163ffffffff1660e01b815260040160206040518083038186803b15801561270e57600080fd5b505afa158015612722573d6000803e3d6000fd5b505050506040513d602081101561273857600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b15801561278857600080fd5b505af115801561279c573d6000803e3d6000fd5b50506001909201915061268d9050565b505050565b600a54604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b1580156127f657600080fd5b505afa15801561280a573d6000803e3d6000fd5b505050506040513d602081101561282057600080fd5b5051905090565b6010546001600160a01b03163314156106d357600e80546001600160a01b0319166001600160a01b0383161790556125d2565b600254604080516372a4edd560e01b81523360048201526024810184905290516101009092046001600160a01b0316916372a4edd59160448082019260009290919082900301818387803b15801561232557600080fd5b6010546001600160a01b03163314156106d357600780546001600160a01b0319166001600160a01b038381169190911791829055604080516313b9f0c760e01b8152905192909116916313b9f0c79160048082019260009290919082900301818387803b15801561292157600080fd5b505af1158015612935573d6000803e3d6000fd5b505050506125d2565b6040805182815290516001600160a01b038416913091600080516020615f238339815191529181900360200190a3600954604080516359bc8a9160e01b81523360048201526001600160a01b03858116602483015260448201859052915191909216916359bc8a9191606480830192600092919082900301818387803b15801561250d57600080fd5b600a5460408051630aed65f560e11b81523360048201526001600160a01b0386811660248301528581166044830152606482018590529151600093849316916315dacbea91608480830192602092919082900301818787803b158015612a2c57600080fd5b505af1158015612a40573d6000803e3d6000fd5b505050506040513d6020811015612a5657600080fd5b505190508015612a9a57836001600160a01b0316856001600160a01b0316600080516020615f23833981519152856040518082815260200191505060405180910390a35b949350505050565b6011546001600160a01b03163314156125d25760118054821515600160a01b0260ff60a01b1990911617905550565b600b546001600160a01b031681565b60048054604080516325d998bb60e01b81526001600160a01b03858116948201949094529051600093909216916325d998bb91602480820192602092909190829003018186803b158015612b3357600080fd5b505afa158015612b47573d6000803e3d6000fd5b505050506040513d6020811015612b5d57600080fd5b505192915050565b600f546001600160a01b0316331480612b8d575060025461010090046001600160a01b031633145b80612ba257506003546001600160a01b031633145b80612bb757506004546001600160a01b031633145b80612bcc57506005546001600160a01b031633145b80612be157506006546001600160a01b031633145b80612bf657506007546001600160a01b031633145b80612c0b57506008546001600160a01b031633145b80612c2057506009546001600160a01b031633145b80612c355750600a546001600160a01b031633145b80612c4a5750600b546001600160a01b031633145b80612c5f5750600c546001600160a01b031633145b80612c745750600d546001600160a01b031633145b80612c895750600e546001600160a01b031633145b612c9257600080fd5b816001600160a01b0316836001600160a01b0316600080516020615f23833981519152836040518082815260200191505060405180910390a3505050565b60048054604080516314a00c3d60e11b81526001600160a01b0385811694820194909452905160009390921691632940187a91602480820192602092909190829003018186803b158015612b3357600080fd5b6004805460408051631c46b08160e11b8152339381019390935260248301849052516000926001600160a01b039092169163388d610291604480830192602092919082900301818787803b158015612d7a57600080fd5b505af1158015612d8e573d6000803e3d6000fd5b505050506040513d6020811015612da457600080fd5b50506040805183815290516000913391600080516020615f238339815191529181900360200190a3506001919050565b6010546001600160a01b03163314156106d3578151612dfa906000906020850190615dd4565b5080516127ac906001906020840190615dd4565b5050565b6004546001600160a01b031681565b60025460ff1681565b600480546040805163482ad11f60e11b81526001600160a01b038581169482019490945290519290911691639055a23e91602480820192602092909190829003018186803b158015612e7b57600080fd5b505afa158015612e8f573d6000803e3d6000fd5b505050506040513d6020811015612ea557600080fd5b505115612eba57612eb581613a2e565b6125d2565b60048054604080516314a00c3d60e11b81526001600160a01b038581169482019490945290519290911691632940187a91602480820192602092909190829003018186803b158015612f0b57600080fd5b505afa158015612f1f573d6000803e3d6000fd5b505050506040513d6020811015612f3557600080fd5b505115612f4557612eb58161409f565b60048054604080516001620769d360e31b031981526001600160a01b03858116948201949094529051929091169163ffc4b16891602480820192602092909190829003018186803b158015612f9957600080fd5b505afa158015612fad573d6000803e3d6000fd5b505050506040513d6020811015612fc357600080fd5b505115612fd357612eb581613dc9565b6040805162461bcd60e51b815260206004820152601460248201527341646472657373206e6f7420666f722073616c6560601b604482015290519081900360640190fd5b6002546040805163f5d1858560e01b81523360048201526024810184905290516101009092046001600160a01b03169163f5d185859160448082019260009290919082900301818387803b15801561232557600080fd5b6010546001600160a01b03163314156106d357600f80546001600160a01b0319166001600160a01b0383161790556125d2565b600480546040805163036d699160e41b81526001600160a01b03858116948201949094529051600093909216916336d6991091602480820192602092909190829003018186803b158015612b3357600080fd5b82156131a457600a54600b54604080516317d5759960e31b81523360048201526001600160a01b039283166024820152604481018790529051919092169163beabacc891606480830192600092919082900301818387803b15801561315857600080fd5b505af115801561316c573d6000803e3d6000fd5b5050600b546040805187815290516001600160a01b039092169350339250600080516020615f23833981519152919081900360200190a35b600b54604051630a67889360e01b81523360048201818152602483018790526080604484019081528651608485015286516001600160a01b0390951694630a6788939489938993899391929091606482019160a401906020808801910280838360005b8381101561321f578181015183820152602001613207565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561325e578181015183820152602001613246565b505050509050019650505050505050600060405180830381600087803b15801561328757600080fd5b505af115801561329b573d6000803e3d6000fd5b50505050505050565b6006546040805163f8e4df0f60e01b81523360048201526001600160a01b038581166024830152604482018590529151919092169163f8e4df0f91606480830192600092919082900301818387803b15801561250d57600080fd5b6005546001600160a01b031681565b600480546040805163482ad11f60e11b81523393810193909352516001600160a01b0390911691639055a23e916024808301926020929190829003018186803b15801561335a57600080fd5b505afa15801561336e573d6000803e3d6000fd5b505050506040513d602081101561338457600080fd5b50511561342057600033600080516020615f238339815191526133a682613ff9565b60408051918252519081900360200190a360095460408051634cb752db60e01b815233600482015290516001600160a01b0390921691634cb752db9160248082019260009290919082900301818387803b15801561340357600080fd5b505af1158015613417573d6000803e3d6000fd5b5050505061346d565b6040805162461bcd60e51b815260206004820152601b60248201527f41646472657373206e6f742047656e65736973204c6576656c20310000000000604482015290519081900360640190fd5b565b600e546001600160a01b031681565b60048054604080516376067e6760e01b81523393810193909352346024840152516001600160a01b03909116916376067e6791604480830192600092919082900301818387803b1580156134d157600080fd5b505af11580156134e5573d6000803e3d6000fd5b50505050565b6002546040805163c226832b60e01b81523360048201526024810184905290516101009092046001600160a01b03169163c226832b9160448082019260009290919082900301818387803b15801561232557600080fd5b806104d21461355057600080fd5b6010546001600160a01b03163314156106d357600380546001600160a01b0319166001600160a01b038481169190911791829055604080516313b9f0c760e01b8152905192909116916313b9f0c79160048082019260009290919082900301818387803b1580156135c057600080fd5b505af11580156135d4573d6000803e3d6000fd5b50505050612e0e565b600a5460408051633b8d674f60e01b815233600482015290516000926001600160a01b031691633b8d674f91602480830192602092919082900301818787803b15801561362957600080fd5b505af115801561280a573d6000803e3d6000fd5b60055460408051631e4eb16d60e31b81523360048201526001600160a01b038581166024830152604482018590529151919092169163f2758b6891606480830192600092919082900301818387803b15801561369857600080fd5b505af11580156136ac573d6000803e3d6000fd5b50506040805184815290516001600160a01b0386169350309250600080516020615f238339815191529181900360200190a35050565b60055460408051631d90fdf560e31b81523360048201526024810184905290516001600160a01b039092169163ec87efa89160448082019260009290919082900301818387803b15801561232557600080fd5b60048054604080516306baf26360e01b81523393810193909352516001600160a01b03909116916306baf26391602480830192600092919082900301818387803b1580156134d157600080fd5b60048054604080516352ba171d60e01b81523393810193909352516001600160a01b03909116916352ba171d91602480830192600092919082900301818387803b1580156134d157600080fd5b60025460408051633b317dab60e01b81526001600160a01b0384811660048301529151600093610100900490921691633b317dab91602480820192602092909190829003018186803b15801561382457600080fd5b505afa158015613838573d6000803e3d6000fd5b505050506040513d602081101561384e57600080fd5b505160075460408051632bfac20f60e01b81523360048201526001600160a01b038681166024830152346044830152825194955060009485949190911692632bfac20f926064808201939182900301818787803b1580156138ae57600080fd5b505af11580156138c2573d6000803e3d6000fd5b505050506040513d60408110156138d857600080fd5b50805160209091015190925090506138ef82612d23565b506040516001600160a01b0385169082156108fc029083906000818181858888f193505050506139505760405162461bcd60e51b8152600401808060200182810382526023815260200180615ecd6023913960400191505060405180910390fd5b60408051848152905133916001600160a01b03871691600080516020615ead8339815191529181900360200190a350505050565b60025460408051637626dfcf60e01b81523360048201526024810184905290516101009092046001600160a01b031691637626dfcf9160448082019260009290919082900301818387803b15801561232557600080fd5b600480546040805163ecc517f160e01b81523393810193909352346024840152516001600160a01b039091169163ecc517f191604480830192600092919082900301818387803b1580156134d157600080fd5b336001600160a01b038216600080516020615f23833981519152613a5184613ff9565b60408051918252519081900360200190a36008546040805163eb19110d60e01b81523360048201526001600160a01b0384811660248301523460448301529151600093929092169163eb19110d9160648082019260209290919082900301818787803b158015613ac057600080fd5b505af1158015613ad4573d6000803e3d6000fd5b505050506040513d6020811015613aea57600080fd5b50516040519091506001600160a01b0383169082156108fc029083906000818181858888f19350505050612e0e5760405162461bcd60e51b8152600401808060200182810382526023815260200180615ecd6023913960400191505060405180910390fd5b6005546040805163062199f760e31b815233600482015290516001600160a01b039092169163310ccfb89160248082019260009290919082900301818387803b1580156134d157600080fd5b80516002546040805163d050a90560e01b81529051839261010090046001600160a01b03169163d050a905916004808301926020929190829003018186803b158015613be657600080fd5b505afa158015613bfa573d6000803e3d6000fd5b505050506040513d6020811015613c1057600080fd5b5051023414613c505760405162461bcd60e51b8152600401808060200182810382526033815260200180615ef06033913960400191505060405180910390fd5b60005b818110156127ac5760045483516001600160a01b039091169063ecc517f190859084908110613c7e57fe5b6020026020010151600260019054906101000a90046001600160a01b03166001600160a01b031663d050a9056040518163ffffffff1660e01b815260040160206040518083038186803b158015613cd457600080fd5b505afa158015613ce8573d6000803e3d6000fd5b505050506040513d6020811015613cfe57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b158015613d4e57600080fd5b505af1158015613d62573d6000803e3d6000fd5b505060019092019150613c539050565b6002546040805163225e453360e21b81523360048201526024810184905290516101009092046001600160a01b03169163897914cc9160448082019260009290919082900301818387803b15801561232557600080fd5b336001600160a01b038216600080516020615f23833981519152613dec84613ff9565b60408051918252519081900360200190a36008546040805163e7cba43360e01b81523360048201526001600160a01b0384811660248301523460448301529151600093929092169163e7cba4339160648082019260209290919082900301818787803b158015613ac057600080fd5b600f546001600160a01b031681565b6010546001600160a01b03163314156106d357600580546001600160a01b0319166001600160a01b038381169190911791829055604080516313b9f0c760e01b8152905192909116916313b9f0c79160048082019260009290919082900301818387803b15801561292157600080fd5b6001600160a01b038216301415613f34576040805162461bcd60e51b8152602060048201526019602482015278696620285f746f203d3d20616464726573732874686973292960381b604482015290519081900360640190fd5b60065460408051631c1b2e5560e21b81523360048201526001600160a01b038581166024830152604482018590529151613fc693929092169163706cb954916064808201926020929091908290030181600087803b158015613f9557600080fd5b505af1158015613fa9573d6000803e3d6000fd5b505050506040513d6020811015613fbf57600080fd5b5051612d23565b506040805182815290516001600160a01b038416913391600080516020615ead8339815191529181900360200190a35050565b60048054604080516370a0823160e01b81526001600160a01b03858116948201949094529051600093909216916370a0823191602480820192602092909190829003018186803b158015612b3357600080fd5b600480546040805163016e045960e41b81523393810193909352346024840152516001600160a01b03909116916316e0459091604480830192600092919082900301818387803b1580156134d157600080fd5b336001600160a01b038216600080516020615f238339815191526140c284613ff9565b60408051918252519081900360200190a3600854604080516345b4f43b60e01b81523360048201526001600160a01b038481166024830152346044830152915160009392909216916345b4f43b9160648082019260209290919082900301818787803b158015613ac057600080fd5b806104d21461413f57600080fd5b6010546001600160a01b03163314156106d35781600260016101000a8154816001600160a01b0302191690836001600160a01b03160217905550600260019054906101000a90046001600160a01b03166001600160a01b03166313b9f0c76040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156135c057600080fd5b6006546001600160a01b031681565b600480546040805163ed401ac360e01b8152339381019390935260248301849052516001600160a01b039091169163ed401ac391604480830192600092919082900301818387803b15801561232557600080fd5b600254604080516349ca9db360e01b8152905160009261010090046001600160a01b0316916349ca9db3916004808301926020929190829003018186803b15801561427657600080fd5b505afa15801561428a573d6000803e3d6000fd5b505050506040513d60208110156142a057600080fd5b50516142ab57600080fd5b600260019054906101000a90046001600160a01b03166001600160a01b031663fb6560676040518163ffffffff1660e01b815260040160206040518083038186803b1580156142f957600080fd5b505afa15801561430d573d6000803e3d6000fd5b505050506040513d602081101561432357600080fd5b50516001600160a01b0316331461433957600080fd5b82518110156127ac5782818151811061434e57fe5b60200260200101516001600160a01b0316306001600160a01b0316600080516020615f23833981519152846040518082815260200191505060405180910390a3600101614339565b3332146143a257600080fd5b601154600160a01b900460ff16156143f3576040805162461bcd60e51b815260206004820152600f60248201526e14185e5bdd5d1cc8109b1bd8dad959608a1b604482015290519081900360640190fd5b4780614446576040805162461bcd60e51b815260206004820152601860248201527f282128636f6e747261637442616c616e6365203e203029290000000000000000604482015290519081900360640190fd5b6003546040805163643a943160e01b8152905160009283926001600160a01b039091169163643a943191600480820192602092909190829003018186803b15801561449057600080fd5b505afa1580156144a4573d6000803e3d6000fd5b505050506040513d60208110156144ba57600080fd5b505190505b808210156127ac576003546040805163124183a760e31b81526004810185905290516000926001600160a01b03169163920c1d38916024808301926020929190829003018186803b15801561451357600080fd5b505afa158015614527573d6000803e3d6000fd5b505050506040513d602081101561453d57600080fd5b505160025460408051633b317dab60e01b81526001600160a01b038085166004830152915193945060009361010090930490911691633b317dab91602480820192602092909190829003018186803b15801561459857600080fd5b505afa1580156145ac573d6000803e3d6000fd5b505050506040513d60208110156145c257600080fd5b50516002546040805163433ad96960e11b815290519293506000926101009092046001600160a01b031691638675b2d291600480820192602092909190829003018186803b15801561461357600080fd5b505afa158015614627573d6000803e3d6000fd5b505050506040513d602081101561463d57600080fd5b50518683028161464957fe5b0490508015614799576040516001600160a01b0384169082156108fc029083906000818181858888f193505050506146c357604080518381526020810183905281516001600160a01b038616927f50a6033bb1b577c577f67a1425e1ac9939c9382b114ae85b5274fd3e76a7f7df928290030190a2614799565b6002546040805163028f4a6960e41b815290516101009092046001600160a01b031691631eeb57ec91849184916328f4a690916004808301926020929190829003018186803b15801561471557600080fd5b505afa158015614729573d6000803e3d6000fd5b505050506040513d602081101561473f57600080fd5b5051604080516001600160e01b031960e086901b16815292909101600483015251602480830192600092919082900301818387803b15801561478057600080fd5b505af1158015614794573d6000803e3d6000fd5b505050505b5050600190920191506144bf565b336001600160a01b038216600080516020615f238339815191526147ca84613ff9565b60408051918252519081900360200190a360055460408051636311a8d360e11b81523360048201526001600160a01b0384811660248301523460448301529151600093929092169163c62351a69160648082019260209290919082900301818787803b158015613ac057600080fd5b600c5460408051631a3a8c1f60e21b81523360048201818152602483019384528551604484015285516000956001600160a01b0316946368ea307c94349493899390929160640190602080860191028083838d5b838110156148a557818101518382015260200161488d565b5050505090500193505050506020604051808303818588803b1580156148ca57600080fd5b505af11580156148de573d6000803e3d6000fd5b50505050506040513d60208110156148f557600080fd5b505190508015612e0e576127ac81612d23565b6008546001600160a01b031681565b6011546001600160a01b031681565b600a546001600160a01b031681565b60025460408051633b317dab60e01b81526001600160a01b0385811660048301529151600093610100900490921691633b317dab91602480820192602092909190829003018186803b15801561498a57600080fd5b505afa15801561499e573d6000803e3d6000fd5b505050506040513d60208110156149b457600080fd5b5051905060005b8251811015614a235760006001600160a01b03168382815181106149db57fe5b60200260200101516001600160a01b0316600080516020615f23833981519152614a0a86858151811061245557fe5b60408051918252519081900360200190a36001016149bb565b6007546040516367711a5960e01b815233600482018181526001600160a01b038881166024850152346064850181905260806044860190815289516084870152895160009793909316956367711a5995948c948c9493919260a40190602080870191028083838e5b83811015614aa3578181015183820152602001614a8b565b5050505090500195505050505050602060405180830381600087803b158015614acb57600080fd5b505af1158015614adf573d6000803e3d6000fd5b505050506040513d6020811015614af557600080fd5b50516040519091506001600160a01b0386169082156108fc029083906000818181858888f19350505050614b2857600080fd5b60408051848152905133916001600160a01b03881691600080516020615ead8339815191529181900360200190a35050505050565b600480546040805163482ad11f60e11b81526001600160a01b0385811694820194909452905160009390921691639055a23e91602480820192602092909190829003018186803b158015612b3357600080fd5b60095460408051639358928b60e01b815290516000926001600160a01b031691639358928b916004808301926020929190829003018186803b1580156127f657600080fd5b6010546001600160a01b03163314156106d357600480546001600160a01b0319166001600160a01b0383811691909117808355604080516313b9f0c760e01b8152905191909216926313b9f0c79280820192600092909182900301818387803b15801561292157600080fd5b6010546001600160a01b03163314156106d357601180546001600160a01b0319166001600160a01b0383161790556125d2565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156121155780601f106120ea57610100808354040283529160200191612115565b6010546001600160a01b03163314156106d357600980546001600160a01b0319166001600160a01b038381169190911791829055604080516313b9f0c760e01b8152905192909116916313b9f0c79160048082019260009290919082900301818387803b15801561292157600080fd5b60025460408051634ea8c93760e11b81523360048201526024810184905290516101009092046001600160a01b031691639d51926e9160448082019260009290919082900301818387803b15801561232557600080fd5b6001600160a01b038216301415614e0f576040805162461bcd60e51b8152602060048201526019602482015278696620285f746f203d3d20616464726573732874686973292960381b604482015290519081900360640190fd5b600a54604080516317d5759960e31b81523360048201526001600160a01b038581166024830152604482018590529151919092169163beabacc891606480830192600092919082900301818387803b158015614e6a57600080fd5b505af1158015614e7e573d6000803e3d6000fd5b50506040805184815290516001600160a01b0386169350339250600080516020615f238339815191529181900360200190a35050565b6010546001600160a01b03163314156106d357600d80546001600160a01b0319166001600160a01b0383161790556125d2565b600480546040805163ca02eb9d60e01b81523393810193909352516001600160a01b039091169163ca02eb9d91602480830192600092919082900301818387803b1580156134d157600080fd5b600d5460405163fe942a2d60e01b815233600482018181526060602484019081528651606485015286516000956001600160a01b03169463fe942a2d94349490938a938a936044810191608490910190602080880191028083838f5b83811015614fa8578181015183820152602001614f90565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015614fe7578181015183820152602001614fcf565b50505050905001955050505050506020604051808303818588803b15801561500e57600080fd5b505af1158015615022573d6000803e3d6000fd5b50505050506040513d602081101561503957600080fd5b5051905080156127ac576134e581612d23565b600d546001600160a01b031681565b60025460408051633b317dab60e01b81526001600160a01b0384811660048301529151600093610100900490921691633b317dab91602480820192602092909190829003018186803b158015612b3357600080fd5b600254604080516344c077ab60e11b81523360048201526024810184905290516101009092046001600160a01b031691638980ef569160448082019260009290919082900301818387803b15801561232557600080fd5b6006546040805163ac39285b60e01b815233600482015290516001600160a01b039092169163ac39285b9160248082019260009290919082900301818387803b1580156134d157600080fd5b600480546040805163034043e160e51b81523393810193909352516001600160a01b03909116916368087c2091602480830192600092919082900301818387803b1580156134d157600080fd5b6010546001600160a01b03163314156106d357600880546001600160a01b0319166001600160a01b038381169190911791829055604080516313b9f0c760e01b8152905192909116916313b9f0c79160048082019260009290919082900301818387803b15801561292157600080fd5b6007546001600160a01b031681565b6010546001600160a01b03163314156106d357600680546001600160a01b0319166001600160a01b038381169190911791829055604080516313b9f0c760e01b8152905192909116916313b9f0c79160048082019260009290919082900301818387803b15801561292157600080fd5b601154600160a01b900460ff1681565b6001600160a01b0383163014156152f9576040805162461bcd60e51b8152602060048201526019602482015278696620285f746f203d3d20616464726573732874686973292960381b604482015290519081900360640190fd5b60005b81518110156153645760006001600160a01b031682828151811061531c57fe5b60200260200101516001600160a01b0316600080516020615f2383398151915261534b85858151811061245557fe5b60408051918252519081900360200190a36001016152fc565b600654604051632464a27d60e01b815233600482018181526001600160a01b038881166024850152604484018890526080606485019081528751608486015287519190951694632464a27d948a938a938a93919260a401906020808601910280838360005b838110156153e15781810151838201526020016153c9565b5050505090500195505050505050600060405180830381600087803b15801561540957600080fd5b505af115801561541d573d6000803e3d6000fd5b50506040805186815290516001600160a01b0388169350339250600080516020615ead8339815191529181900360200190a350505050565b80516002546040805163d050a90560e01b81529051839261010090046001600160a01b03169163d050a905916004808301926020929190829003018186803b1580156154a057600080fd5b505afa1580156154b4573d6000803e3d6000fd5b505050506040513d60208110156154ca57600080fd5b505160025460408051633238268960e01b815290516101009092046001600160a01b031691633238268991600480820192602092909190829003018186803b15801561551557600080fd5b505afa158015615529573d6000803e3d6000fd5b505050506040513d602081101561553f57600080fd5b5051010234146155805760405162461bcd60e51b8152600401808060200182810382526040815260200180615e6d6040913960400191505060405180910390fd5b60005b818110156127ac5760045483516001600160a01b03909116906316e04590908590849081106155ae57fe5b6020026020010151600260019054906101000a90046001600160a01b03166001600160a01b031663d050a9056040518163ffffffff1660e01b815260040160206040518083038186803b15801561560457600080fd5b505afa158015615618573d6000803e3d6000fd5b505050506040513d602081101561562e57600080fd5b505160025460408051633238268960e01b815290516101009092046001600160a01b031691633238268991600480820192602092909190829003018186803b15801561567957600080fd5b505afa15801561568d573d6000803e3d6000fd5b505050506040513d60208110156156a357600080fd5b5051604080516001600160e01b031960e087901b1681526001600160a01b0390941660048501529101602483015251604480830192600092919082900301818387803b1580156156f257600080fd5b505af1158015615706573d6000803e3d6000fd5b5050600190920191506155839050565b60048054604080516371681de560e11b81523393810193909352516001600160a01b039091169163e2d03bca91602480830192600092919082900301818387803b1580156134d157600080fd5b6001600160a01b03811633600080516020615f2383398151915261578682613ff9565b60408051918252519081900360200190a36001600160a01b0381163014156157f1576040805162461bcd60e51b8152602060048201526019602482015278696620285f746f203d3d20616464726573732874686973292960381b604482015290519081900360640190fd5b60048054604080516334d5831d60e21b815233938101939093526001600160a01b038481166024850152905191169163d3560c7491604480830192600092919082900301818387803b15801561232557600080fd5b60025460408051631d25fd5560e01b81523360048201526024810184905290516101009092046001600160a01b031691631d25fd559160448082019260009290919082900301818387803b15801561232557600080fd5b6009546001600160a01b031681565b60065460408051637cb6d17b60e11b81523360048201526024810184905290516001600160a01b039092169163f96da2f69160448082019260009290919082900301818387803b15801561232557600080fd5b6002546040805163124e91b960e01b81523360048201526024810184905290516101009092046001600160a01b03169163124e91b99160448082019260009290919082900301818387803b15801561232557600080fd5b60025460408051635c65816560e01b81526001600160a01b03858116600483015284811660248301529151600093610100900490921691635c65816591604480820192602092909190829003018186803b1580156159b357600080fd5b505afa1580156159c7573d6000803e3d6000fd5b505050506040513d60208110156159dd57600080fd5b50519392505050565b60025460408051633bb868dd60e21b81523360048201526024810184905290516101009092046001600160a01b03169163eee1a3749160448082019260009290919082900301818387803b15801561232557600080fd5b6011546001600160a01b03163314156106d357601280546001600160a01b0319166001600160a01b0383161790556125d2565b600c546001600160a01b031681565b6000600260019054906101000a90046001600160a01b03166001600160a01b031663e5f65c716040518163ffffffff1660e01b815260040160206040518083038186803b158015615acf57600080fd5b505afa158015615ae3573d6000803e3d6000fd5b505050506040513d6020811015615af957600080fd5b50514303905090565b6010546001600160a01b03166106d357601080546001600160a01b0319163317905561346d565b601154600160a01b900460ff161561346d576012546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505061346d57600080fd5b6010546001600160a01b03163314156106d357600c80546001600160a01b0319166001600160a01b0383161790556125d2565b60025461010090046001600160a01b031681565b805160005b818110156127ac5760045483516001600160a01b03909116906352ba171d90859084908110615be357fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b158015615c3357600080fd5b505af1158015615c47573d6000803e3d6000fd5b505060019092019150615bb89050565b600480546040805163eb0fbbad60e01b81526001600160a01b038581169482019490945290516000939092169163eb0fbbad91602480820192602092909190829003018186803b158015612b3357600080fd5b600480546040805163d42e1c2f60e01b815233938101939093526001600160a01b038481166024850152905191169163d42e1c2f91604480830192600092919082900301818387803b15801561232557600080fd5b6010546001600160a01b03163314156106d357600a80546001600160a01b0319166001600160a01b038381169190911791829055604080516313b9f0c760e01b8152905192909116916313b9f0c79160048082019260009290919082900301818387803b15801561292157600080fd5b6010546001600160a01b031681565b60048054604080516001620769d360e31b031981526001600160a01b038581169482019490945290516000939092169163ffc4b16891602480820192602092909190829003018186803b158015612b3357600080fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615e1557805160ff1916838001178555615e42565b82800160010185558215615e42579182015b82811115615e42578251825591602001919060010190615e27565b50615e4e929150615e52565b5090565b61252b91905b80821115615e4e5760008155600101615e5856fe2877656956616c756520213d2028286d73672e76616c7565202b2070632e657468466565546f55706772616465546f4c6576656c332829292a636f756e742929cc6ddb19d323297cc6ed8f3dbda06395f6f153d24bf678f36305752ab635e10928215f616464726573732e73656e642866656573546f506179546f53656c6c65722929286d73672e76616c756520213d202870632e657468466565546f55706772616465546f4c6576656c3328292a636f756e742929ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef286d73672e76616c756520213d2070632e657468466565546f55706772616465546f4c6576656c3228292a636f756e7429a264697066735822122068af78f55939e51c0f34a5a04df0a6c1f0843f4203fbde9d023e8ea6ab0bcc5e64736f6c634300060000330000000000000000000000000e35a9caef5f24e1802c51ee935836af07d73b3300000000000000000000000012c60985421f3ea92ac4997e2cec8b1bbf33ee660000000000000000000000007d5424f6c617c486ab4437b88410357bba7d124e000000000000000000000000426d86b00f85d8ea716727fec9cdff58f65504b3000000000000000000000000c59e57fc338e4dd177904faccd063c688833bf710000000000000000000000008efd839d6bcabaac5072d1c2bb360cbdb130c1b60000000000000000000000007ca3ffa001d9bc98bf1fdfb1e48830b785cd67990000000000000000000000005e179082c652fd750b7bf3b48c5a253a63ba98330000000000000000000000000e5047e1273dfab56eb800f31da9e8a8872e14d8
Deployed ByteCode
0x6080604052600436106106d35760003560e01c80637347060c1161037a578063b9c25cae116101d1578063ddcbfce011610102578063e69919ae116100a0578063ef3dd5c81161007a578063ef3dd5c814611fe1578063fd3c763814612014578063fdbc653014612047578063ffc4b1681461205c576106d3565b8063e69919ae14611eeb578063e9095e5c14611f00578063eb0fbbad14611fae576106d3565b8063e12ed13c116100dc578063e12ed13c14611e79578063e241263014611e8e578063e33eaaf714611ea3578063e4c4b47c14611eb8576106d3565b8063ddcbfce014611e07578063df02f1db14611e31578063df462a4714611e64576106d3565b8063c92f146a1161016f578063dae487ca11610149578063dae487ca14611d63578063db16cb5b14611d78578063dd2c455c14611da2578063dd62ed3e14611dcc576106d3565b8063c92f146a14611cf1578063cf91e33114611d06578063d4f7457914611d39576106d3565b8063bdbdcd75116101ab578063bdbdcd7514611b45578063c0ea2e7714611b78578063c169653314611b8d578063c3536e8b14611c50576106d3565b8063b9c25cae14611ae8578063bad0f93414611afd578063bd65fc4c14611b30576106d3565b806393c63b9d116102ab578063aa13504e11610249578063aee1fabc11610223578063aee1fabc14611a61578063af46aa0814611a76578063b3e9047614611aa9578063b4e85ec814611ad3576106d3565b8063aa13504e146118f6578063ac0f738f14611929578063aede090f1461193e576106d3565b806397b5e5541161028557806397b5e55414611858578063a33b12601461188b578063a5094f8f14611893578063a9059cbb146118bd576106d3565b806393c63b9d146117dd57806394ccd96f1461181057806395d89b4114611843576106d3565b806380167ebf116103185780638af8edfc116102f25780638af8edfc146116cf5780638ccb0023146116e45780639055a23e146117955780639358928b146117c8576106d3565b806380167ebf146116045780638278188a146116a55780638a670113146116ba576106d3565b8063742ec16411610354578063742ec164146114ef57806374a72e41146115195780637b411ca5146115c95780637d20a24f146115de576106d3565b80637347060c1461147b57806373668817146114a157806373f0cc2d146114da576106d3565b80633521bbed1161052e57806361a3be801161045f5780636dcb9800116103fd5780637022c79e116103d75780637022c79e146113d45780637050ec891461140757806370a082311461144057806370a8a2e614611473576106d3565b80636dcb98001461136f5780636e3ee8f1146113995780636fd615bf146113bf576106d3565b80636af43470116104395780636af434701461128b5780636b3b2800146112935780636be2ca43146112b95780636c2f12e6146112ce576106d3565b806361a3be8014611226578063633865511461123b57806366a497b714611261576106d3565b80634890bb51116104cc578063542aa99f116104a6578063542aa99f1461119957806357e08c60146111ae5780635b48a884146111e75780635b65268f14611211576106d3565b80634890bb511461112e57806350ac2f6914611136578063522c628f14611160576106d3565b80633c64cfc6116105085780633c64cfc6146110b6578063416e8604146110ef578063460b72ce14611104578063474b07bf14611119576106d3565b80633521bbed14610f1957806336d6991014610f4c578063399c40ea14610f7f576106d3565b806321df8098116106085780632940187a116105a65780633118f543116105805780633118f54314610e89578063313ce56714610e9e5780633181a5a714610ec957806333d5993414610eef576106d3565b80632940187a14610cf65780632cd3fd7014610d295780632f71d02214610d53576106d3565b806323e46e7c116105e257806323e46e7c14610c3f57806324ac57b714610c6b57806325d998bb14610c805780632631ef1214610cb3576106d3565b806321df809814610b9057806322e3f16214610bc357806323b872dd14610bfc576106d3565b80630d061e7511610675578063177e48d01161064f578063177e48d014610a7d57806318160ddd14610b1e5780631d2cb86114610b335780631ec32a6614610b66576106d3565b80630d061e7514610a0b578063124d83d814610a20578063128fb93014610a4a576106d3565b8063095ea7b3116106b1578063095ea7b3146108b857806309ae18441461090557806309f6c607146109b35780630a63361c146109da576106d3565b806306fdde03146106d857806307c5c18e14610762578063088c35fd1461088e575b600080fd5b3480156106e457600080fd5b506106ed61208f565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561072757818101518382015260200161070f565b50505050905090810190601f1680156107545780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61088c6004803603606081101561077857600080fd5b81359190810190604081016020820135600160201b81111561079957600080fd5b8201836020820111156107ab57600080fd5b803590602001918460208302840111600160201b831117156107cc57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561081b57600080fd5b82018360208201111561082d57600080fd5b803590602001918460208302840111600160201b8311171561084e57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061211d945050505050565b005b34801561089a57600080fd5b5061088c600480360360208110156108b157600080fd5b50356122ce565b3480156108c457600080fd5b506108f1600480360360408110156108db57600080fd5b506001600160a01b038135169060200135612340565b604080519115158252519081900360200190f35b34801561091157600080fd5b5061088c6004803603602081101561092857600080fd5b810190602081018135600160201b81111561094257600080fd5b82018360208201111561095457600080fd5b803590602001918460208302840111600160201b8311171561097557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550612403945050505050565b3480156109bf57600080fd5b506109c8612529565b60408051918252519081900360200190f35b3480156109e657600080fd5b506109ef61252e565b604080516001600160a01b039092168252519081900360200190f35b348015610a1757600080fd5b506109ef61253d565b348015610a2c57600080fd5b5061088c60048036036020811015610a4357600080fd5b503561254c565b348015610a5657600080fd5b5061088c60048036036020811015610a6d57600080fd5b50356001600160a01b03166125a3565b61088c60048036036020811015610a9357600080fd5b810190602081018135600160201b811115610aad57600080fd5b820183602082011115610abf57600080fd5b803590602001918460208302840111600160201b83111715610ae057600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506125d5945050505050565b348015610b2a57600080fd5b506109c86127b1565b348015610b3f57600080fd5b5061088c60048036036020811015610b5657600080fd5b50356001600160a01b0316612827565b348015610b7257600080fd5b5061088c60048036036020811015610b8957600080fd5b503561285a565b348015610b9c57600080fd5b5061088c60048036036020811015610bb357600080fd5b50356001600160a01b03166128b1565b348015610bcf57600080fd5b5061088c60048036036040811015610be657600080fd5b506001600160a01b03813516906020013561293e565b348015610c0857600080fd5b506108f160048036036060811015610c1f57600080fd5b506001600160a01b038135811691602081013590911690604001356129c7565b348015610c4b57600080fd5b5061088c60048036036020811015610c6257600080fd5b50351515612aa2565b348015610c7757600080fd5b506109ef612ad1565b348015610c8c57600080fd5b506109c860048036036020811015610ca357600080fd5b50356001600160a01b0316612ae0565b348015610cbf57600080fd5b5061088c60048036036060811015610cd657600080fd5b506001600160a01b03813581169160208101359091169060400135612b65565b348015610d0257600080fd5b506108f160048036036020811015610d1957600080fd5b50356001600160a01b0316612cd0565b348015610d3557600080fd5b506108f160048036036020811015610d4c57600080fd5b5035612d23565b348015610d5f57600080fd5b5061088c60048036036040811015610d7657600080fd5b810190602081018135600160201b811115610d9057600080fd5b820183602082011115610da257600080fd5b803590602001918460018302840111600160201b83111715610dc357600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610e1557600080fd5b820183602082011115610e2757600080fd5b803590602001918460018302840111600160201b83111715610e4857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612dd4945050505050565b348015610e9557600080fd5b506109ef612e12565b348015610eaa57600080fd5b50610eb3612e21565b6040805160ff9092168252519081900360200190f35b61088c60048036036020811015610edf57600080fd5b50356001600160a01b0316612e2a565b348015610efb57600080fd5b5061088c60048036036020811015610f1257600080fd5b5035613017565b348015610f2557600080fd5b5061088c60048036036020811015610f3c57600080fd5b50356001600160a01b031661306e565b348015610f5857600080fd5b506108f160048036036020811015610f6f57600080fd5b50356001600160a01b03166130a1565b348015610f8b57600080fd5b5061088c60048036036060811015610fa257600080fd5b81359190810190604081016020820135600160201b811115610fc357600080fd5b820183602082011115610fd557600080fd5b803590602001918460208302840111600160201b83111715610ff657600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561104557600080fd5b82018360208201111561105757600080fd5b803590602001918460208302840111600160201b8311171561107857600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506130f4945050505050565b3480156110c257600080fd5b5061088c600480360360408110156110d957600080fd5b506001600160a01b0381351690602001356132a4565b3480156110fb57600080fd5b506109ef6132ff565b34801561111057600080fd5b5061088c61330e565b34801561112557600080fd5b506109ef61346f565b61088c61347e565b34801561114257600080fd5b5061088c6004803603602081101561115957600080fd5b50356134eb565b34801561116c57600080fd5b5061088c6004803603604081101561118357600080fd5b506001600160a01b038135169060200135613542565b3480156111a557600080fd5b506108f16135dd565b3480156111ba57600080fd5b5061088c600480360360408110156111d157600080fd5b506001600160a01b03813516906020013561363d565b3480156111f357600080fd5b5061088c6004803603602081101561120a57600080fd5b50356136e2565b34801561121d57600080fd5b5061088c613735565b34801561123257600080fd5b5061088c613782565b61088c6004803603602081101561125157600080fd5b50356001600160a01b03166137cf565b34801561126d57600080fd5b5061088c6004803603602081101561128457600080fd5b5035613984565b61088c6139db565b61088c600480360360208110156112a957600080fd5b50356001600160a01b0316613a2e565b3480156112c557600080fd5b5061088c613b4f565b61088c600480360360208110156112e457600080fd5b810190602081018135600160201b8111156112fe57600080fd5b82018360208201111561131057600080fd5b803590602001918460208302840111600160201b8311171561133157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613b9b945050505050565b34801561137b57600080fd5b5061088c6004803603602081101561139257600080fd5b5035613d72565b61088c600480360360208110156113af57600080fd5b50356001600160a01b0316613dc9565b3480156113cb57600080fd5b506109ef613e5b565b3480156113e057600080fd5b5061088c600480360360208110156113f757600080fd5b50356001600160a01b0316613e6a565b34801561141357600080fd5b5061088c6004803603604081101561142a57600080fd5b506001600160a01b038135169060200135613eda565b34801561144c57600080fd5b506109c86004803603602081101561146357600080fd5b50356001600160a01b0316613ff9565b61088c61404c565b61088c6004803603602081101561149157600080fd5b50356001600160a01b031661409f565b3480156114ad57600080fd5b5061088c600480360360408110156114c457600080fd5b506001600160a01b038135169060200135614131565b3480156114e657600080fd5b506109ef6141c9565b3480156114fb57600080fd5b5061088c6004803603602081101561151257600080fd5b50356141d8565b34801561152557600080fd5b5061088c6004803603604081101561153c57600080fd5b810190602081018135600160201b81111561155657600080fd5b82018360208201111561156857600080fd5b803590602001918460208302840111600160201b8311171561158957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550509135925061422c915050565b3480156115d557600080fd5b5061088c614396565b61088c600480360360208110156115f457600080fd5b50356001600160a01b03166147a7565b61088c6004803603602081101561161a57600080fd5b810190602081018135600160201b81111561163457600080fd5b82018360208201111561164657600080fd5b803590602001918460208302840111600160201b8311171561166757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550614839945050505050565b3480156116b157600080fd5b506109ef614908565b3480156116c657600080fd5b506109ef614917565b3480156116db57600080fd5b506109ef614926565b61088c600480360360408110156116fa57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561172457600080fd5b82018360208201111561173657600080fd5b803590602001918460208302840111600160201b8311171561175757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550614935945050505050565b3480156117a157600080fd5b506108f1600480360360208110156117b857600080fd5b50356001600160a01b0316614b5d565b3480156117d457600080fd5b506109c8614bb0565b3480156117e957600080fd5b5061088c6004803603602081101561180057600080fd5b50356001600160a01b0316614bf5565b34801561181c57600080fd5b5061088c6004803603602081101561183357600080fd5b50356001600160a01b0316614c61565b34801561184f57600080fd5b506106ed614c94565b34801561186457600080fd5b5061088c6004803603602081101561187b57600080fd5b50356001600160a01b0316614cee565b61088c61346d565b34801561189f57600080fd5b5061088c600480360360208110156118b657600080fd5b5035614d5e565b3480156118c957600080fd5b5061088c600480360360408110156118e057600080fd5b506001600160a01b038135169060200135614db5565b34801561190257600080fd5b5061088c6004803603602081101561191957600080fd5b50356001600160a01b0316614eb4565b34801561193557600080fd5b5061088c614ee7565b61088c6004803603604081101561195457600080fd5b810190602081018135600160201b81111561196e57600080fd5b82018360208201111561198057600080fd5b803590602001918460208302840111600160201b831117156119a157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156119f057600080fd5b820183602082011115611a0257600080fd5b803590602001918460208302840111600160201b83111715611a2357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550614f34945050505050565b348015611a6d57600080fd5b506109ef61504c565b348015611a8257600080fd5b506109c860048036036020811015611a9957600080fd5b50356001600160a01b031661505b565b348015611ab557600080fd5b5061088c60048036036020811015611acc57600080fd5b50356150b0565b348015611adf57600080fd5b5061088c615107565b348015611af457600080fd5b5061088c615153565b348015611b0957600080fd5b5061088c60048036036020811015611b2057600080fd5b50356001600160a01b03166151a0565b348015611b3c57600080fd5b506109ef615210565b348015611b5157600080fd5b5061088c60048036036020811015611b6857600080fd5b50356001600160a01b031661521f565b348015611b8457600080fd5b506108f161528f565b348015611b9957600080fd5b5061088c60048036036060811015611bb057600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b811115611bdf57600080fd5b820183602082011115611bf157600080fd5b803590602001918460208302840111600160201b83111715611c1257600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061529f945050505050565b61088c60048036036020811015611c6657600080fd5b810190602081018135600160201b811115611c8057600080fd5b820183602082011115611c9257600080fd5b803590602001918460208302840111600160201b83111715611cb357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550615455945050505050565b348015611cfd57600080fd5b5061088c615716565b348015611d1257600080fd5b5061088c60048036036020811015611d2957600080fd5b50356001600160a01b0316615763565b348015611d4557600080fd5b5061088c60048036036020811015611d5c57600080fd5b5035615846565b348015611d6f57600080fd5b506109ef61589d565b348015611d8457600080fd5b5061088c60048036036020811015611d9b57600080fd5b50356158ac565b348015611dae57600080fd5b5061088c60048036036020811015611dc557600080fd5b50356158ff565b348015611dd857600080fd5b506109c860048036036040811015611def57600080fd5b506001600160a01b0381358116916020013516615956565b348015611e1357600080fd5b5061088c60048036036020811015611e2a57600080fd5b50356159e6565b348015611e3d57600080fd5b5061088c60048036036020811015611e5457600080fd5b50356001600160a01b0316615a3d565b348015611e7057600080fd5b506109ef615a70565b348015611e8557600080fd5b506109c8615a7f565b348015611e9a57600080fd5b5061088c615b02565b348015611eaf57600080fd5b5061088c615b29565b348015611ec457600080fd5b5061088c60048036036020811015611edb57600080fd5b50356001600160a01b0316615b6c565b348015611ef757600080fd5b506109ef615b9f565b348015611f0c57600080fd5b5061088c60048036036020811015611f2357600080fd5b810190602081018135600160201b811115611f3d57600080fd5b820183602082011115611f4f57600080fd5b803590602001918460208302840111600160201b83111715611f7057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550615bb3945050505050565b348015611fba57600080fd5b506108f160048036036020811015611fd157600080fd5b50356001600160a01b0316615c57565b348015611fed57600080fd5b5061088c6004803603602081101561200457600080fd5b50356001600160a01b0316615caa565b34801561202057600080fd5b5061088c6004803603602081101561203757600080fd5b50356001600160a01b0316615cff565b34801561205357600080fd5b506109ef615d6f565b34801561206857600080fd5b506108f16004803603602081101561207f57600080fd5b50356001600160a01b0316615d7e565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156121155780601f106120ea57610100808354040283529160200191612115565b820191906000526020600020905b8154815290600101906020018083116120f857829003601f168201915b505050505081565b82156121cd57600a54600e54604080516317d5759960e31b81523360048201526001600160a01b039283166024820152604481018790529051919092169163beabacc891606480830192600092919082900301818387803b15801561218157600080fd5b505af1158015612195573d6000803e3d6000fd5b5050600e546040805187815290516001600160a01b039092169350339250600080516020615f23833981519152919081900360200190a35b600e54604051632433a49160e11b81523360048201818152602483018790526080604484019081528651608485015286516001600160a01b03909516946348674922943494938a938a938a93606481019160a4909101906020808801910280838360005b83811015612249578181015183820152602001612231565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015612288578181015183820152602001612270565b5050505090500196505050505050506000604051808303818588803b1580156122b057600080fd5b505af11580156122c4573d6000803e3d6000fd5b5050505050505050565b600254604080516305de45bd60e11b81523360048201526024810184905290516101009092046001600160a01b031691630bbc8b7a9160448082019260009290919082900301818387803b15801561232557600080fd5b505af1158015612339573d6000803e3d6000fd5b5050505050565b6002546040805163779a859960e11b81523360048201526001600160a01b03858116602483015260448201859052915160009361010090049092169163ef350b3291606480820192869290919082900301818387803b1580156123a257600080fd5b505af11580156123b6573d6000803e3d6000fd5b50506040805185815290516001600160a01b03871693503392507f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259181900360200190a350600192915050565b60005b815181101561247b5760006001600160a01b031682828151811061242657fe5b60200260200101516001600160a01b0316600080516020615f2383398151915261246285858151811061245557fe5b6020026020010151613ff9565b60408051918252519081900360200190a3600101612406565b6004805460408051633ca4fe7b60e11b815233938101848152602482019283528651604483015286516001600160a01b0390941694637949fcf6949093889390916064909101906020808601910280838360005b838110156124e75781810151838201526020016124cf565b505050509050019350505050600060405180830381600087803b15801561250d57600080fd5b505af1158015612521573d6000803e3d6000fd5b505050505050565b435b90565b6003546001600160a01b031681565b6012546001600160a01b031681565b60025460408051633429fca760e21b81523360048201526024810184905290516101009092046001600160a01b03169163d0a7f29c9160448082019260009290919082900301818387803b15801561232557600080fd5b6010546001600160a01b03163314156106d357600b80546001600160a01b0319166001600160a01b0383161790555b50565b805160025460408051633238268960e01b81529051839261010090046001600160a01b0316916332382689916004808301926020929190829003018186803b15801561262057600080fd5b505afa158015612634573d6000803e3d6000fd5b505050506040513d602081101561264a57600080fd5b505102341461268a5760405162461bcd60e51b8152600401808060200182810382526031815260200180615f436031913960400191505060405180910390fd5b60005b818110156127ac5760045483516001600160a01b03909116906376067e67908590849081106126b857fe5b6020026020010151600260019054906101000a90046001600160a01b03166001600160a01b031663323826896040518163ffffffff1660e01b815260040160206040518083038186803b15801561270e57600080fd5b505afa158015612722573d6000803e3d6000fd5b505050506040513d602081101561273857600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b15801561278857600080fd5b505af115801561279c573d6000803e3d6000fd5b50506001909201915061268d9050565b505050565b600a54604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b1580156127f657600080fd5b505afa15801561280a573d6000803e3d6000fd5b505050506040513d602081101561282057600080fd5b5051905090565b6010546001600160a01b03163314156106d357600e80546001600160a01b0319166001600160a01b0383161790556125d2565b600254604080516372a4edd560e01b81523360048201526024810184905290516101009092046001600160a01b0316916372a4edd59160448082019260009290919082900301818387803b15801561232557600080fd5b6010546001600160a01b03163314156106d357600780546001600160a01b0319166001600160a01b038381169190911791829055604080516313b9f0c760e01b8152905192909116916313b9f0c79160048082019260009290919082900301818387803b15801561292157600080fd5b505af1158015612935573d6000803e3d6000fd5b505050506125d2565b6040805182815290516001600160a01b038416913091600080516020615f238339815191529181900360200190a3600954604080516359bc8a9160e01b81523360048201526001600160a01b03858116602483015260448201859052915191909216916359bc8a9191606480830192600092919082900301818387803b15801561250d57600080fd5b600a5460408051630aed65f560e11b81523360048201526001600160a01b0386811660248301528581166044830152606482018590529151600093849316916315dacbea91608480830192602092919082900301818787803b158015612a2c57600080fd5b505af1158015612a40573d6000803e3d6000fd5b505050506040513d6020811015612a5657600080fd5b505190508015612a9a57836001600160a01b0316856001600160a01b0316600080516020615f23833981519152856040518082815260200191505060405180910390a35b949350505050565b6011546001600160a01b03163314156125d25760118054821515600160a01b0260ff60a01b1990911617905550565b600b546001600160a01b031681565b60048054604080516325d998bb60e01b81526001600160a01b03858116948201949094529051600093909216916325d998bb91602480820192602092909190829003018186803b158015612b3357600080fd5b505afa158015612b47573d6000803e3d6000fd5b505050506040513d6020811015612b5d57600080fd5b505192915050565b600f546001600160a01b0316331480612b8d575060025461010090046001600160a01b031633145b80612ba257506003546001600160a01b031633145b80612bb757506004546001600160a01b031633145b80612bcc57506005546001600160a01b031633145b80612be157506006546001600160a01b031633145b80612bf657506007546001600160a01b031633145b80612c0b57506008546001600160a01b031633145b80612c2057506009546001600160a01b031633145b80612c355750600a546001600160a01b031633145b80612c4a5750600b546001600160a01b031633145b80612c5f5750600c546001600160a01b031633145b80612c745750600d546001600160a01b031633145b80612c895750600e546001600160a01b031633145b612c9257600080fd5b816001600160a01b0316836001600160a01b0316600080516020615f23833981519152836040518082815260200191505060405180910390a3505050565b60048054604080516314a00c3d60e11b81526001600160a01b0385811694820194909452905160009390921691632940187a91602480820192602092909190829003018186803b158015612b3357600080fd5b6004805460408051631c46b08160e11b8152339381019390935260248301849052516000926001600160a01b039092169163388d610291604480830192602092919082900301818787803b158015612d7a57600080fd5b505af1158015612d8e573d6000803e3d6000fd5b505050506040513d6020811015612da457600080fd5b50506040805183815290516000913391600080516020615f238339815191529181900360200190a3506001919050565b6010546001600160a01b03163314156106d3578151612dfa906000906020850190615dd4565b5080516127ac906001906020840190615dd4565b5050565b6004546001600160a01b031681565b60025460ff1681565b600480546040805163482ad11f60e11b81526001600160a01b038581169482019490945290519290911691639055a23e91602480820192602092909190829003018186803b158015612e7b57600080fd5b505afa158015612e8f573d6000803e3d6000fd5b505050506040513d6020811015612ea557600080fd5b505115612eba57612eb581613a2e565b6125d2565b60048054604080516314a00c3d60e11b81526001600160a01b038581169482019490945290519290911691632940187a91602480820192602092909190829003018186803b158015612f0b57600080fd5b505afa158015612f1f573d6000803e3d6000fd5b505050506040513d6020811015612f3557600080fd5b505115612f4557612eb58161409f565b60048054604080516001620769d360e31b031981526001600160a01b03858116948201949094529051929091169163ffc4b16891602480820192602092909190829003018186803b158015612f9957600080fd5b505afa158015612fad573d6000803e3d6000fd5b505050506040513d6020811015612fc357600080fd5b505115612fd357612eb581613dc9565b6040805162461bcd60e51b815260206004820152601460248201527341646472657373206e6f7420666f722073616c6560601b604482015290519081900360640190fd5b6002546040805163f5d1858560e01b81523360048201526024810184905290516101009092046001600160a01b03169163f5d185859160448082019260009290919082900301818387803b15801561232557600080fd5b6010546001600160a01b03163314156106d357600f80546001600160a01b0319166001600160a01b0383161790556125d2565b600480546040805163036d699160e41b81526001600160a01b03858116948201949094529051600093909216916336d6991091602480820192602092909190829003018186803b158015612b3357600080fd5b82156131a457600a54600b54604080516317d5759960e31b81523360048201526001600160a01b039283166024820152604481018790529051919092169163beabacc891606480830192600092919082900301818387803b15801561315857600080fd5b505af115801561316c573d6000803e3d6000fd5b5050600b546040805187815290516001600160a01b039092169350339250600080516020615f23833981519152919081900360200190a35b600b54604051630a67889360e01b81523360048201818152602483018790526080604484019081528651608485015286516001600160a01b0390951694630a6788939489938993899391929091606482019160a401906020808801910280838360005b8381101561321f578181015183820152602001613207565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561325e578181015183820152602001613246565b505050509050019650505050505050600060405180830381600087803b15801561328757600080fd5b505af115801561329b573d6000803e3d6000fd5b50505050505050565b6006546040805163f8e4df0f60e01b81523360048201526001600160a01b038581166024830152604482018590529151919092169163f8e4df0f91606480830192600092919082900301818387803b15801561250d57600080fd5b6005546001600160a01b031681565b600480546040805163482ad11f60e11b81523393810193909352516001600160a01b0390911691639055a23e916024808301926020929190829003018186803b15801561335a57600080fd5b505afa15801561336e573d6000803e3d6000fd5b505050506040513d602081101561338457600080fd5b50511561342057600033600080516020615f238339815191526133a682613ff9565b60408051918252519081900360200190a360095460408051634cb752db60e01b815233600482015290516001600160a01b0390921691634cb752db9160248082019260009290919082900301818387803b15801561340357600080fd5b505af1158015613417573d6000803e3d6000fd5b5050505061346d565b6040805162461bcd60e51b815260206004820152601b60248201527f41646472657373206e6f742047656e65736973204c6576656c20310000000000604482015290519081900360640190fd5b565b600e546001600160a01b031681565b60048054604080516376067e6760e01b81523393810193909352346024840152516001600160a01b03909116916376067e6791604480830192600092919082900301818387803b1580156134d157600080fd5b505af11580156134e5573d6000803e3d6000fd5b50505050565b6002546040805163c226832b60e01b81523360048201526024810184905290516101009092046001600160a01b03169163c226832b9160448082019260009290919082900301818387803b15801561232557600080fd5b806104d21461355057600080fd5b6010546001600160a01b03163314156106d357600380546001600160a01b0319166001600160a01b038481169190911791829055604080516313b9f0c760e01b8152905192909116916313b9f0c79160048082019260009290919082900301818387803b1580156135c057600080fd5b505af11580156135d4573d6000803e3d6000fd5b50505050612e0e565b600a5460408051633b8d674f60e01b815233600482015290516000926001600160a01b031691633b8d674f91602480830192602092919082900301818787803b15801561362957600080fd5b505af115801561280a573d6000803e3d6000fd5b60055460408051631e4eb16d60e31b81523360048201526001600160a01b038581166024830152604482018590529151919092169163f2758b6891606480830192600092919082900301818387803b15801561369857600080fd5b505af11580156136ac573d6000803e3d6000fd5b50506040805184815290516001600160a01b0386169350309250600080516020615f238339815191529181900360200190a35050565b60055460408051631d90fdf560e31b81523360048201526024810184905290516001600160a01b039092169163ec87efa89160448082019260009290919082900301818387803b15801561232557600080fd5b60048054604080516306baf26360e01b81523393810193909352516001600160a01b03909116916306baf26391602480830192600092919082900301818387803b1580156134d157600080fd5b60048054604080516352ba171d60e01b81523393810193909352516001600160a01b03909116916352ba171d91602480830192600092919082900301818387803b1580156134d157600080fd5b60025460408051633b317dab60e01b81526001600160a01b0384811660048301529151600093610100900490921691633b317dab91602480820192602092909190829003018186803b15801561382457600080fd5b505afa158015613838573d6000803e3d6000fd5b505050506040513d602081101561384e57600080fd5b505160075460408051632bfac20f60e01b81523360048201526001600160a01b038681166024830152346044830152825194955060009485949190911692632bfac20f926064808201939182900301818787803b1580156138ae57600080fd5b505af11580156138c2573d6000803e3d6000fd5b505050506040513d60408110156138d857600080fd5b50805160209091015190925090506138ef82612d23565b506040516001600160a01b0385169082156108fc029083906000818181858888f193505050506139505760405162461bcd60e51b8152600401808060200182810382526023815260200180615ecd6023913960400191505060405180910390fd5b60408051848152905133916001600160a01b03871691600080516020615ead8339815191529181900360200190a350505050565b60025460408051637626dfcf60e01b81523360048201526024810184905290516101009092046001600160a01b031691637626dfcf9160448082019260009290919082900301818387803b15801561232557600080fd5b600480546040805163ecc517f160e01b81523393810193909352346024840152516001600160a01b039091169163ecc517f191604480830192600092919082900301818387803b1580156134d157600080fd5b336001600160a01b038216600080516020615f23833981519152613a5184613ff9565b60408051918252519081900360200190a36008546040805163eb19110d60e01b81523360048201526001600160a01b0384811660248301523460448301529151600093929092169163eb19110d9160648082019260209290919082900301818787803b158015613ac057600080fd5b505af1158015613ad4573d6000803e3d6000fd5b505050506040513d6020811015613aea57600080fd5b50516040519091506001600160a01b0383169082156108fc029083906000818181858888f19350505050612e0e5760405162461bcd60e51b8152600401808060200182810382526023815260200180615ecd6023913960400191505060405180910390fd5b6005546040805163062199f760e31b815233600482015290516001600160a01b039092169163310ccfb89160248082019260009290919082900301818387803b1580156134d157600080fd5b80516002546040805163d050a90560e01b81529051839261010090046001600160a01b03169163d050a905916004808301926020929190829003018186803b158015613be657600080fd5b505afa158015613bfa573d6000803e3d6000fd5b505050506040513d6020811015613c1057600080fd5b5051023414613c505760405162461bcd60e51b8152600401808060200182810382526033815260200180615ef06033913960400191505060405180910390fd5b60005b818110156127ac5760045483516001600160a01b039091169063ecc517f190859084908110613c7e57fe5b6020026020010151600260019054906101000a90046001600160a01b03166001600160a01b031663d050a9056040518163ffffffff1660e01b815260040160206040518083038186803b158015613cd457600080fd5b505afa158015613ce8573d6000803e3d6000fd5b505050506040513d6020811015613cfe57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b158015613d4e57600080fd5b505af1158015613d62573d6000803e3d6000fd5b505060019092019150613c539050565b6002546040805163225e453360e21b81523360048201526024810184905290516101009092046001600160a01b03169163897914cc9160448082019260009290919082900301818387803b15801561232557600080fd5b336001600160a01b038216600080516020615f23833981519152613dec84613ff9565b60408051918252519081900360200190a36008546040805163e7cba43360e01b81523360048201526001600160a01b0384811660248301523460448301529151600093929092169163e7cba4339160648082019260209290919082900301818787803b158015613ac057600080fd5b600f546001600160a01b031681565b6010546001600160a01b03163314156106d357600580546001600160a01b0319166001600160a01b038381169190911791829055604080516313b9f0c760e01b8152905192909116916313b9f0c79160048082019260009290919082900301818387803b15801561292157600080fd5b6001600160a01b038216301415613f34576040805162461bcd60e51b8152602060048201526019602482015278696620285f746f203d3d20616464726573732874686973292960381b604482015290519081900360640190fd5b60065460408051631c1b2e5560e21b81523360048201526001600160a01b038581166024830152604482018590529151613fc693929092169163706cb954916064808201926020929091908290030181600087803b158015613f9557600080fd5b505af1158015613fa9573d6000803e3d6000fd5b505050506040513d6020811015613fbf57600080fd5b5051612d23565b506040805182815290516001600160a01b038416913391600080516020615ead8339815191529181900360200190a35050565b60048054604080516370a0823160e01b81526001600160a01b03858116948201949094529051600093909216916370a0823191602480820192602092909190829003018186803b158015612b3357600080fd5b600480546040805163016e045960e41b81523393810193909352346024840152516001600160a01b03909116916316e0459091604480830192600092919082900301818387803b1580156134d157600080fd5b336001600160a01b038216600080516020615f238339815191526140c284613ff9565b60408051918252519081900360200190a3600854604080516345b4f43b60e01b81523360048201526001600160a01b038481166024830152346044830152915160009392909216916345b4f43b9160648082019260209290919082900301818787803b158015613ac057600080fd5b806104d21461413f57600080fd5b6010546001600160a01b03163314156106d35781600260016101000a8154816001600160a01b0302191690836001600160a01b03160217905550600260019054906101000a90046001600160a01b03166001600160a01b03166313b9f0c76040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156135c057600080fd5b6006546001600160a01b031681565b600480546040805163ed401ac360e01b8152339381019390935260248301849052516001600160a01b039091169163ed401ac391604480830192600092919082900301818387803b15801561232557600080fd5b600254604080516349ca9db360e01b8152905160009261010090046001600160a01b0316916349ca9db3916004808301926020929190829003018186803b15801561427657600080fd5b505afa15801561428a573d6000803e3d6000fd5b505050506040513d60208110156142a057600080fd5b50516142ab57600080fd5b600260019054906101000a90046001600160a01b03166001600160a01b031663fb6560676040518163ffffffff1660e01b815260040160206040518083038186803b1580156142f957600080fd5b505afa15801561430d573d6000803e3d6000fd5b505050506040513d602081101561432357600080fd5b50516001600160a01b0316331461433957600080fd5b82518110156127ac5782818151811061434e57fe5b60200260200101516001600160a01b0316306001600160a01b0316600080516020615f23833981519152846040518082815260200191505060405180910390a3600101614339565b3332146143a257600080fd5b601154600160a01b900460ff16156143f3576040805162461bcd60e51b815260206004820152600f60248201526e14185e5bdd5d1cc8109b1bd8dad959608a1b604482015290519081900360640190fd5b4780614446576040805162461bcd60e51b815260206004820152601860248201527f282128636f6e747261637442616c616e6365203e203029290000000000000000604482015290519081900360640190fd5b6003546040805163643a943160e01b8152905160009283926001600160a01b039091169163643a943191600480820192602092909190829003018186803b15801561449057600080fd5b505afa1580156144a4573d6000803e3d6000fd5b505050506040513d60208110156144ba57600080fd5b505190505b808210156127ac576003546040805163124183a760e31b81526004810185905290516000926001600160a01b03169163920c1d38916024808301926020929190829003018186803b15801561451357600080fd5b505afa158015614527573d6000803e3d6000fd5b505050506040513d602081101561453d57600080fd5b505160025460408051633b317dab60e01b81526001600160a01b038085166004830152915193945060009361010090930490911691633b317dab91602480820192602092909190829003018186803b15801561459857600080fd5b505afa1580156145ac573d6000803e3d6000fd5b505050506040513d60208110156145c257600080fd5b50516002546040805163433ad96960e11b815290519293506000926101009092046001600160a01b031691638675b2d291600480820192602092909190829003018186803b15801561461357600080fd5b505afa158015614627573d6000803e3d6000fd5b505050506040513d602081101561463d57600080fd5b50518683028161464957fe5b0490508015614799576040516001600160a01b0384169082156108fc029083906000818181858888f193505050506146c357604080518381526020810183905281516001600160a01b038616927f50a6033bb1b577c577f67a1425e1ac9939c9382b114ae85b5274fd3e76a7f7df928290030190a2614799565b6002546040805163028f4a6960e41b815290516101009092046001600160a01b031691631eeb57ec91849184916328f4a690916004808301926020929190829003018186803b15801561471557600080fd5b505afa158015614729573d6000803e3d6000fd5b505050506040513d602081101561473f57600080fd5b5051604080516001600160e01b031960e086901b16815292909101600483015251602480830192600092919082900301818387803b15801561478057600080fd5b505af1158015614794573d6000803e3d6000fd5b505050505b5050600190920191506144bf565b336001600160a01b038216600080516020615f238339815191526147ca84613ff9565b60408051918252519081900360200190a360055460408051636311a8d360e11b81523360048201526001600160a01b0384811660248301523460448301529151600093929092169163c62351a69160648082019260209290919082900301818787803b158015613ac057600080fd5b600c5460408051631a3a8c1f60e21b81523360048201818152602483019384528551604484015285516000956001600160a01b0316946368ea307c94349493899390929160640190602080860191028083838d5b838110156148a557818101518382015260200161488d565b5050505090500193505050506020604051808303818588803b1580156148ca57600080fd5b505af11580156148de573d6000803e3d6000fd5b50505050506040513d60208110156148f557600080fd5b505190508015612e0e576127ac81612d23565b6008546001600160a01b031681565b6011546001600160a01b031681565b600a546001600160a01b031681565b60025460408051633b317dab60e01b81526001600160a01b0385811660048301529151600093610100900490921691633b317dab91602480820192602092909190829003018186803b15801561498a57600080fd5b505afa15801561499e573d6000803e3d6000fd5b505050506040513d60208110156149b457600080fd5b5051905060005b8251811015614a235760006001600160a01b03168382815181106149db57fe5b60200260200101516001600160a01b0316600080516020615f23833981519152614a0a86858151811061245557fe5b60408051918252519081900360200190a36001016149bb565b6007546040516367711a5960e01b815233600482018181526001600160a01b038881166024850152346064850181905260806044860190815289516084870152895160009793909316956367711a5995948c948c9493919260a40190602080870191028083838e5b83811015614aa3578181015183820152602001614a8b565b5050505090500195505050505050602060405180830381600087803b158015614acb57600080fd5b505af1158015614adf573d6000803e3d6000fd5b505050506040513d6020811015614af557600080fd5b50516040519091506001600160a01b0386169082156108fc029083906000818181858888f19350505050614b2857600080fd5b60408051848152905133916001600160a01b03881691600080516020615ead8339815191529181900360200190a35050505050565b600480546040805163482ad11f60e11b81526001600160a01b0385811694820194909452905160009390921691639055a23e91602480820192602092909190829003018186803b158015612b3357600080fd5b60095460408051639358928b60e01b815290516000926001600160a01b031691639358928b916004808301926020929190829003018186803b1580156127f657600080fd5b6010546001600160a01b03163314156106d357600480546001600160a01b0319166001600160a01b0383811691909117808355604080516313b9f0c760e01b8152905191909216926313b9f0c79280820192600092909182900301818387803b15801561292157600080fd5b6010546001600160a01b03163314156106d357601180546001600160a01b0319166001600160a01b0383161790556125d2565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156121155780601f106120ea57610100808354040283529160200191612115565b6010546001600160a01b03163314156106d357600980546001600160a01b0319166001600160a01b038381169190911791829055604080516313b9f0c760e01b8152905192909116916313b9f0c79160048082019260009290919082900301818387803b15801561292157600080fd5b60025460408051634ea8c93760e11b81523360048201526024810184905290516101009092046001600160a01b031691639d51926e9160448082019260009290919082900301818387803b15801561232557600080fd5b6001600160a01b038216301415614e0f576040805162461bcd60e51b8152602060048201526019602482015278696620285f746f203d3d20616464726573732874686973292960381b604482015290519081900360640190fd5b600a54604080516317d5759960e31b81523360048201526001600160a01b038581166024830152604482018590529151919092169163beabacc891606480830192600092919082900301818387803b158015614e6a57600080fd5b505af1158015614e7e573d6000803e3d6000fd5b50506040805184815290516001600160a01b0386169350339250600080516020615f238339815191529181900360200190a35050565b6010546001600160a01b03163314156106d357600d80546001600160a01b0319166001600160a01b0383161790556125d2565b600480546040805163ca02eb9d60e01b81523393810193909352516001600160a01b039091169163ca02eb9d91602480830192600092919082900301818387803b1580156134d157600080fd5b600d5460405163fe942a2d60e01b815233600482018181526060602484019081528651606485015286516000956001600160a01b03169463fe942a2d94349490938a938a936044810191608490910190602080880191028083838f5b83811015614fa8578181015183820152602001614f90565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015614fe7578181015183820152602001614fcf565b50505050905001955050505050506020604051808303818588803b15801561500e57600080fd5b505af1158015615022573d6000803e3d6000fd5b50505050506040513d602081101561503957600080fd5b5051905080156127ac576134e581612d23565b600d546001600160a01b031681565b60025460408051633b317dab60e01b81526001600160a01b0384811660048301529151600093610100900490921691633b317dab91602480820192602092909190829003018186803b158015612b3357600080fd5b600254604080516344c077ab60e11b81523360048201526024810184905290516101009092046001600160a01b031691638980ef569160448082019260009290919082900301818387803b15801561232557600080fd5b6006546040805163ac39285b60e01b815233600482015290516001600160a01b039092169163ac39285b9160248082019260009290919082900301818387803b1580156134d157600080fd5b600480546040805163034043e160e51b81523393810193909352516001600160a01b03909116916368087c2091602480830192600092919082900301818387803b1580156134d157600080fd5b6010546001600160a01b03163314156106d357600880546001600160a01b0319166001600160a01b038381169190911791829055604080516313b9f0c760e01b8152905192909116916313b9f0c79160048082019260009290919082900301818387803b15801561292157600080fd5b6007546001600160a01b031681565b6010546001600160a01b03163314156106d357600680546001600160a01b0319166001600160a01b038381169190911791829055604080516313b9f0c760e01b8152905192909116916313b9f0c79160048082019260009290919082900301818387803b15801561292157600080fd5b601154600160a01b900460ff1681565b6001600160a01b0383163014156152f9576040805162461bcd60e51b8152602060048201526019602482015278696620285f746f203d3d20616464726573732874686973292960381b604482015290519081900360640190fd5b60005b81518110156153645760006001600160a01b031682828151811061531c57fe5b60200260200101516001600160a01b0316600080516020615f2383398151915261534b85858151811061245557fe5b60408051918252519081900360200190a36001016152fc565b600654604051632464a27d60e01b815233600482018181526001600160a01b038881166024850152604484018890526080606485019081528751608486015287519190951694632464a27d948a938a938a93919260a401906020808601910280838360005b838110156153e15781810151838201526020016153c9565b5050505090500195505050505050600060405180830381600087803b15801561540957600080fd5b505af115801561541d573d6000803e3d6000fd5b50506040805186815290516001600160a01b0388169350339250600080516020615ead8339815191529181900360200190a350505050565b80516002546040805163d050a90560e01b81529051839261010090046001600160a01b03169163d050a905916004808301926020929190829003018186803b1580156154a057600080fd5b505afa1580156154b4573d6000803e3d6000fd5b505050506040513d60208110156154ca57600080fd5b505160025460408051633238268960e01b815290516101009092046001600160a01b031691633238268991600480820192602092909190829003018186803b15801561551557600080fd5b505afa158015615529573d6000803e3d6000fd5b505050506040513d602081101561553f57600080fd5b5051010234146155805760405162461bcd60e51b8152600401808060200182810382526040815260200180615e6d6040913960400191505060405180910390fd5b60005b818110156127ac5760045483516001600160a01b03909116906316e04590908590849081106155ae57fe5b6020026020010151600260019054906101000a90046001600160a01b03166001600160a01b031663d050a9056040518163ffffffff1660e01b815260040160206040518083038186803b15801561560457600080fd5b505afa158015615618573d6000803e3d6000fd5b505050506040513d602081101561562e57600080fd5b505160025460408051633238268960e01b815290516101009092046001600160a01b031691633238268991600480820192602092909190829003018186803b15801561567957600080fd5b505afa15801561568d573d6000803e3d6000fd5b505050506040513d60208110156156a357600080fd5b5051604080516001600160e01b031960e087901b1681526001600160a01b0390941660048501529101602483015251604480830192600092919082900301818387803b1580156156f257600080fd5b505af1158015615706573d6000803e3d6000fd5b5050600190920191506155839050565b60048054604080516371681de560e11b81523393810193909352516001600160a01b039091169163e2d03bca91602480830192600092919082900301818387803b1580156134d157600080fd5b6001600160a01b03811633600080516020615f2383398151915261578682613ff9565b60408051918252519081900360200190a36001600160a01b0381163014156157f1576040805162461bcd60e51b8152602060048201526019602482015278696620285f746f203d3d20616464726573732874686973292960381b604482015290519081900360640190fd5b60048054604080516334d5831d60e21b815233938101939093526001600160a01b038481166024850152905191169163d3560c7491604480830192600092919082900301818387803b15801561232557600080fd5b60025460408051631d25fd5560e01b81523360048201526024810184905290516101009092046001600160a01b031691631d25fd559160448082019260009290919082900301818387803b15801561232557600080fd5b6009546001600160a01b031681565b60065460408051637cb6d17b60e11b81523360048201526024810184905290516001600160a01b039092169163f96da2f69160448082019260009290919082900301818387803b15801561232557600080fd5b6002546040805163124e91b960e01b81523360048201526024810184905290516101009092046001600160a01b03169163124e91b99160448082019260009290919082900301818387803b15801561232557600080fd5b60025460408051635c65816560e01b81526001600160a01b03858116600483015284811660248301529151600093610100900490921691635c65816591604480820192602092909190829003018186803b1580156159b357600080fd5b505afa1580156159c7573d6000803e3d6000fd5b505050506040513d60208110156159dd57600080fd5b50519392505050565b60025460408051633bb868dd60e21b81523360048201526024810184905290516101009092046001600160a01b03169163eee1a3749160448082019260009290919082900301818387803b15801561232557600080fd5b6011546001600160a01b03163314156106d357601280546001600160a01b0319166001600160a01b0383161790556125d2565b600c546001600160a01b031681565b6000600260019054906101000a90046001600160a01b03166001600160a01b031663e5f65c716040518163ffffffff1660e01b815260040160206040518083038186803b158015615acf57600080fd5b505afa158015615ae3573d6000803e3d6000fd5b505050506040513d6020811015615af957600080fd5b50514303905090565b6010546001600160a01b03166106d357601080546001600160a01b0319163317905561346d565b601154600160a01b900460ff161561346d576012546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505061346d57600080fd5b6010546001600160a01b03163314156106d357600c80546001600160a01b0319166001600160a01b0383161790556125d2565b60025461010090046001600160a01b031681565b805160005b818110156127ac5760045483516001600160a01b03909116906352ba171d90859084908110615be357fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b158015615c3357600080fd5b505af1158015615c47573d6000803e3d6000fd5b505060019092019150615bb89050565b600480546040805163eb0fbbad60e01b81526001600160a01b038581169482019490945290516000939092169163eb0fbbad91602480820192602092909190829003018186803b158015612b3357600080fd5b600480546040805163d42e1c2f60e01b815233938101939093526001600160a01b038481166024850152905191169163d42e1c2f91604480830192600092919082900301818387803b15801561232557600080fd5b6010546001600160a01b03163314156106d357600a80546001600160a01b0319166001600160a01b038381169190911791829055604080516313b9f0c760e01b8152905192909116916313b9f0c79160048082019260009290919082900301818387803b15801561292157600080fd5b6010546001600160a01b031681565b60048054604080516001620769d360e31b031981526001600160a01b038581169482019490945290516000939092169163ffc4b16891602480820192602092909190829003018186803b158015612b3357600080fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615e1557805160ff1916838001178555615e42565b82800160010185558215615e42579182015b82811115615e42578251825591602001919060010190615e27565b50615e4e929150615e52565b5090565b61252b91905b80821115615e4e5760008155600101615e5856fe2877656956616c756520213d2028286d73672e76616c7565202b2070632e657468466565546f55706772616465546f4c6576656c332829292a636f756e742929cc6ddb19d323297cc6ed8f3dbda06395f6f153d24bf678f36305752ab635e10928215f616464726573732e73656e642866656573546f506179546f53656c6c65722929286d73672e76616c756520213d202870632e657468466565546f55706772616465546f4c6576656c3328292a636f756e742929ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef286d73672e76616c756520213d2070632e657468466565546f55706772616465546f4c6576656c3228292a636f756e7429a264697066735822122068af78f55939e51c0f34a5a04df0a6c1f0843f4203fbde9d023e8ea6ab0bcc5e64736f6c63430006000033