false
true
0

Contract Address Details

0xa6be27538A28114Fe03EB7ADE9AdfE53164f2a4c

Contract Name
GenesisAddresses
Creator
0xa071a0–4a0bdf at 0x29e5dd–095393
Balance
0 PLS ( )
Tokens
Fetching tokens...
Transactions
0 Transactions
Transfers
0 Transfers
Gas Used
Fetching gas used...
Last Balance Update
25859248
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
This contract has been partially verified via Sourcify. View contract in Sourcify repository
Contract name:
GenesisAddresses




Optimization enabled
true
Compiler version
v0.6.1+commit.e6f7d5a4




Optimization runs
200
EVM Version
istanbul




Verified at
2026-02-04T13:26:03.953908Z

Constructor Arguments

00000000000000000000000090e340e2d11e6eb1d99e34d122d6fe0fef3213fd000000000000000000000000805385fba3f03a24d793721f4583be53d3abf86b

Arg [0] (address) : 0x90e340e2d11e6eb1d99e34d122d6fe0fef3213fd
Arg [1] (address) : 0x805385fba3f03a24d793721f4583be53d3abf86b

              

GenesisAddresses.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 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 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 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;
}

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 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 genesisAddressesForSaleLevel2 ( uint256 ) external view returns ( address );
  function genesisAddressesForSaleLevel2Length (  ) external view returns ( uint256 len );
  function genesisAddressesForSaleLevel2Set ( address _genesisAddressesForSaleLevel2 ) external;
  function genesisAddressesForSaleLevel3 ( uint256 ) external view returns ( address );
  function genesisAddressesForSaleLevel3Length (  ) external view returns ( uint256 len );
  function genesisAddressesForSaleLevel3Set ( address _genesisAddressesForSaleLevel3 ) external;
  function ownerGenesis (  ) external view returns ( address );
  function ownerMain (  ) external view returns ( address );
  function ownerNormalAddress (  ) external view returns ( address );
  function ownerStakes (  ) external view returns ( address );
  function setOwnerGenesis (  ) external;
  function setOwnerMain (  ) external;
  function setOwnerNormalAddress (  ) external;
  function setOwnerStakes (  ) external;
  function genesisAddressesForSaleLevel1SetAt(uint i, address _address) external;
  function genesisAddressesForSaleLevel2SetAt(uint i, address _address) external;
  function genesisAddressesForSaleLevel3SetAt(uint i, address _address) external;
}

contract GenesisAddresses
{
address public ownerMain = 0x0000000000000000000000000000000000000000;
address public ownerStakes = 0x0000000000000000000000000000000000000000;
address public ownerNormalAddress = 0x0000000000000000000000000000000000000000;
address public ownerGenesisBuys = 0x0000000000000000000000000000000000000000;
address public ownerStakeBuys = 0x0000000000000000000000000000000000000000;
address public ownerBaseTransfers = 0x0000000000000000000000000000000000000000;
address public external1 = 0x0000000000000000000000000000000000000000;

event GenesisAddressTransfer(address indexed from, address indexed to, uint256 supply);
event GenesisAddressSale(address indexed from, address indexed to, uint256 price, uint256 supply);
event GenesisBuyPriceHistory(address indexed from, uint256 price, uint8 genesisType);
event GenesisRemoveGenesisSaleHistory(address indexed from);
event AllowDestroyHistory(address indexed from, address indexed to);
event Level2UpgradeHistory(address indexed from);
event Level3UpgradeHistory(address indexed from);
event GenesisLevel1ForSaleHistory(address indexed from);
event GenesisRemoveSaleHistory(address indexed from);
event RemoveAllowDestroyHistory(address indexed from);
event ReceiveGenesisTransfersAllow(address indexed _address);
event RemoveReceiveGenesisTransfersAllow(address indexed _address);
event Burn(address indexed _owner, uint256 _value);

address public updaterAddress = 0x0000000000000000000000000000000000000000;
function setUpdater() public {if (updaterAddress == 0x0000000000000000000000000000000000000000) updaterAddress = msg.sender; else revert();}
function updaterSetOwnerMain(address _address) public {if (tx.origin == updaterAddress) ownerMain = _address; else revert();}
function updaterSetOwnerStakes(address _address) public {if (tx.origin == updaterAddress) ownerStakes = _address; else revert();}
function updaterSetOwnerNormalAddress(address _address) public {if (tx.origin == updaterAddress) ownerNormalAddress = _address; else revert();}
function updaterSetOwnerGenesisBuys(address _address) public {if (tx.origin == updaterAddress) ownerGenesisBuys = _address; else revert();}
function updaterSetOwnerStakeBuys(address _address) public {if (tx.origin == updaterAddress) ownerStakeBuys = _address; else revert();}
function updaterSetOwnerBaseTransfers(address _address) public {if (tx.origin == updaterAddress) ownerBaseTransfers = _address; else revert();}

function setOwnerBaseTransfers() public {
	if (tx.origin == updaterAddress)
		ownerBaseTransfers = msg.sender;
	else
		revert();
}

function setOwnerMain() public {
	if (tx.origin == updaterAddress)
		ownerMain = msg.sender;
	else
		revert();
}

function setOwnerStakes() public {
	if (tx.origin == updaterAddress)
		ownerStakes = msg.sender;
	else
		revert();
}

function setOwnerNormalAddress() public {
	if (tx.origin == updaterAddress)
		ownerNormalAddress = msg.sender;
	else
		revert();
}

function setOwnerGenesisBuys() public {
	if (tx.origin == updaterAddress)
		ownerGenesisBuys = msg.sender;
	else
		revert();
}

function setOwnerStakeBuys() public {
	if (tx.origin == updaterAddress)
		ownerStakeBuys = msg.sender;
	else
		revert();
}

function setOwnerExternal1() public {
	if (tx.origin == updaterAddress)
		external1 = msg.sender;
	else
		revert();
}

modifier onlyOwner(){
    require(msg.sender == ownerMain || msg.sender == ownerStakes || msg.sender == ownerNormalAddress || msg.sender == ownerGenesisBuys || msg.sender == ownerStakeBuys || msg.sender == ownerBaseTransfers || msg.sender == external1);
     _;
}


publicCalls public pc;
publicArrays public pa;

constructor(address _publicCallsAddress, address _publicArraysAddress) public {
setUpdater();
pc = publicCalls(_publicCallsAddress);
pc.setOwnerGenesis();
pa = publicArrays(_publicArraysAddress);
pa.setOwnerGenesis();
}

function reloadPublicCalls(address _address, uint code) public { if (!(code == 1234)) revert();  if (msg.sender == updaterAddress)	{pc = publicCalls(_address); pc.setOwnerGenesis();} else revert();}
function reloadPublicArrays(address _address, uint code) public { if (!(code == 1234)) revert();  if (msg.sender == updaterAddress)	{pa = publicArrays(_address); pa.setOwnerGenesis();} else revert();}

function isAnyGenesisAddress(address _address) public view returns (bool success) {
	if (pc.isGenesisAddress(_address) > 0)
		return true;
	else
		return false;
}

function isGenesisAddressLevel1(address _address) public view returns (bool success) {
	if (pc.isGenesisAddress(_address) == 1)
		return true;
	else
		return false;
}

function isGenesisAddressLevel2(address _address) public view returns (bool success) {
	if (pc.isGenesisAddress(_address) == 2)
		return true;
	else
		return false;
}

function isGenesisAddressLevel3(address _address) public view returns (bool success) {
	if (pc.isGenesisAddress(_address) == 3)
		return true;
	else
		return false;
}

function isGenesisAddressLevel2Or3(address _address) public view returns (bool success) {
	if (pc.isGenesisAddress(_address) == 2 || pc.isGenesisAddress(_address) == 3)
		return true;
	else
		return false;
}

function TransferGenesis(address _from, address _to) public onlyOwner { 
	if (!isGenesisAddressLevel2Or3(_from)) revert('(!isGenesisAddressLevel2Or3(_from))');
	
	if (!(_from != _to)) revert('(!(_from != _address))');
	
	if (!pc.allowReceiveGenesisTransfers(_to)) revert('(!pc.allowReceiveGenesisTransfers(_to))');
	
	if (pc.isGenesisAddressForSale(_from)) revert('(pc.isGenesisAddressForSale(_from))');
	
	if (balanceOf(_to) > 0) revert('(balanceOf(_to) > 0)');
	
	if (isAnyGenesisAddress(_to)) revert('(isAnyGenesisAddress(_to))');	
		
	pc.balancesSet(_to, pc.balances(_from)); 
	pc.balancesSet(_from, 0);
	pc.initialBlockCountPerAddressSet(_to, pc.initialBlockCountPerAddress(_from));
	pc.initialBlockCountPerAddressSet(_from, 0);
	pc.isGenesisAddressSet(_to, pc.isGenesisAddress(_from));
	pc.isGenesisAddressSet(_from, 0);
	pc.genesisBuyPriceSet(_from, 0);
	pc.isGenesisAddressForSaleSet(_from, false);	
	pc.allowAddressToDestroyGenesisSet(_to, 0x0000000000000000000000000000000000000000);
	pc.allowAddressToDestroyGenesisSet(_from, 0x0000000000000000000000000000000000000000);
	pc.allowReceiveGenesisTransfersSet(_from, false);
	pc.allowReceiveGenesisTransfersSet(_to, false);
	pc.genesisTransfersCountSet(pc.genesisTransfersCount() + 1);
	emit GenesisAddressTransfer(_from, _to, pc.balances(_to));
}

function SetGenesisForSale(address _from, uint256 weiPrice) public onlyOwner {
	
	if (weiPrice < 10 && isGenesisAddressLevel2Or3(msg.sender)) revert('weiPrice < 10 && isGenesisAddressLevel2Or3(msg.sender)');
	
	if (!isAnyGenesisAddress(_from)) revert('(!isAnyGenesisAddress(_from))');
	
	if (pc.isGenesisAddressForSale(_from)) revert('(pc.isGenesisAddressForSale(_from))');
	
	if (balanceOf(_from) == 0) revert('(balanceOf(_from) == 0)');
	
	if (isGenesisAddressLevel2Or3(_from)) 
	{
		if (weiPrice > 0)
		{
			pc.genesisBuyPriceSet(_from, weiPrice);	
			if (isGenesisAddressLevel3(_from))
			{
				pa.genesisAddressesForSaleLevel3Set(_from);
				pc.genesisAddressesForSaleLevel3IndexSet(_from, pa.genesisAddressesForSaleLevel3Length() - 1);	
			}
			else
			{
				pa.genesisAddressesForSaleLevel2Set(_from);
				pc.genesisAddressesForSaleLevel2IndexSet(_from, pa.genesisAddressesForSaleLevel2Length() - 1);	
			}	
			emit GenesisBuyPriceHistory(_from, weiPrice, pc.isGenesisAddress(_from));			
		}
		else
			revert('Price cannot be 0');
	}	
	else if (isGenesisAddressLevel1(_from))
	{
		pa.genesisAddressesForSaleLevel1Set(_from);
		pc.genesisAddressesForSaleLevel1IndexSet(_from, pa.genesisAddressesForSaleLevel1Length() - 1);			
		emit GenesisLevel1ForSaleHistory(_from);
	}
	
	pc.isGenesisAddressForSaleSet(_from, true);

}

function deleteAddressFromGenesisSaleList(address _address) public onlyOwner {
		if (isGenesisAddressLevel1(_address))
		{
			uint lastIndex = pa.genesisAddressesForSaleLevel1Length() - 1;
			if (lastIndex > 0)
			{
				address lastIndexAddress = pa.genesisAddressesForSaleLevel1(lastIndex);
				pc.genesisAddressesForSaleLevel1IndexSet(lastIndexAddress, pc.genesisAddressesForSaleLevel1Index(_address));
				pa.genesisAddressesForSaleLevel1SetAt(pc.genesisAddressesForSaleLevel1Index(_address), lastIndexAddress);				
			}
			pc.genesisAddressesForSaleLevel1IndexSet(_address, 0);
			pa.deleteGenesisAddressesForSaleLevel1();
		}
		else if (isGenesisAddressLevel2(_address))
		{
			uint lastIndex = pa.genesisAddressesForSaleLevel2Length() - 1;
			if (lastIndex > 0)
			{
				address lastIndexAddress = pa.genesisAddressesForSaleLevel2(lastIndex);
				pc.genesisAddressesForSaleLevel2IndexSet(lastIndexAddress, pc.genesisAddressesForSaleLevel2Index(_address));
				pa.genesisAddressesForSaleLevel2SetAt(pc.genesisAddressesForSaleLevel2Index(_address),lastIndexAddress);				
			}
			pc.genesisAddressesForSaleLevel2IndexSet(_address, 0);
			pa.deleteGenesisAddressesForSaleLevel2();
		}
		else if (isGenesisAddressLevel3(_address))
		{
			uint lastIndex = pa.genesisAddressesForSaleLevel3Length() - 1;
			if (lastIndex > 0)
			{
				address lastIndexAddress = pa.genesisAddressesForSaleLevel3(lastIndex);
				pc.genesisAddressesForSaleLevel3IndexSet(lastIndexAddress, pc.genesisAddressesForSaleLevel3Index(_address));
				pa.genesisAddressesForSaleLevel3SetAt(pc.genesisAddressesForSaleLevel3Index(_address), lastIndexAddress);				
			}
			pc.genesisAddressesForSaleLevel3IndexSet(_address, 0);
			pa.deleteGenesisAddressesForSaleLevel3();
		}		
}

function AllowReceiveGenesisTransfers(address _from) public onlyOwner { 
	if (isAnyGenesisAddress(_from)) revert('if (isAnyGenesisAddress(_from))');
	if (pc.allowReceiveGenesisTransfers(_from)) revert('pc.allowReceiveGenesisTransfers(_from)');
	pc.allowReceiveGenesisTransfersSet(_from, true);
	emit ReceiveGenesisTransfersAllow(_from);
}

function RemoveAllowReceiveGenesisTransfers(address _from) public onlyOwner { 
	pc.allowReceiveGenesisTransfersSet(_from,false);
	emit RemoveReceiveGenesisTransfersAllow(_from);
}

function RemoveGenesisAddressFromSale(address _from) public onlyOwner{ 
	if (!isAnyGenesisAddress(_from)) revert('(!isAnyGenesisAddress(_from))');
	if (!pc.isGenesisAddressForSale(_from)) revert('!pc.isGenesisAddressForSale(_from))');
	pc.genesisBuyPriceSet(_from, 0);
	pc.isGenesisAddressForSaleSet(_from, false);	
	deleteAddressFromGenesisSaleList(_from);	
	emit GenesisRemoveSaleHistory(_from);	
}

function AllowAddressToDestroyGenesis(address _from, address _address) public onlyOwner { 
	if (!isGenesisAddressLevel3(_from)) revert('(!isGenesisAddressLevel3(_from))');
	if (pc.isGenesisAddressForSale(_from)) revert('(pc.isGenesisAddressForSale(_from))');	
	pc.allowAddressToDestroyGenesisSet(_from, _address);
	emit AllowDestroyHistory(_from, _address);	
}

function RemoveAllowAddressToDestroyGenesis(address _from) public onlyOwner { 
	pc.allowAddressToDestroyGenesisSet(_from, 0x0000000000000000000000000000000000000000);
	emit RemoveAllowDestroyHistory(_from);			
}

function UpgradeToLevel2FromLevel1(address _address, uint256 weiValue) public onlyOwner {
	if (isGenesisAddressLevel1(_address) && !pc.isGenesisAddressForSale(_address))
	{
		if (weiValue != pc.ethFeeToUpgradeToLevel2()) revert('(weiValue != pc.ethFeeToUpgradeToLevel2())');
		pc.initialBlockCountPerAddressSet(_address, block.number);
		pc.isGenesisAddressSet(_address, 2);	
		pc.balancesSet(_address, pc.genesisSupplyPerAddress());
		pc.level2ActivationsFromLevel1CountSet(pc.level2ActivationsFromLevel1Count()+1);
		emit Level2UpgradeHistory(_address);
	}
	else
	{
		revert();
	}
}

function UpgradeToLevel3FromLevel1(address _address, uint256 weiValue) public onlyOwner {
	if (isGenesisAddressLevel1(_address) && !pc.isGenesisAddressForSale(_address))
	{
		uint256 totalFee = (pc.ethFeeToUpgradeToLevel2() + pc.ethFeeToUpgradeToLevel3());
		if (weiValue != totalFee) revert('(weiValue != totalFee)');
		pc.initialBlockCountPerAddressSet(_address, block.number);
		pc.isGenesisAddressSet(_address, 3);	
		pc.balancesSet(_address, pc.genesisSupplyPerAddress());
		pc.level3ActivationsFromLevel1CountSet(pc.level3ActivationsFromLevel1Count()+1);		
		emit Level3UpgradeHistory(_address);
	}
	else
	{
		revert();
	}
}

function UpgradeToLevel3FromLevel2(address _address, uint256 weiValue) public onlyOwner {
	if (isGenesisAddressLevel2(_address) && !pc.isGenesisAddressForSale(_address))
	{
		if (weiValue != pc.ethFeeToUpgradeToLevel3()) revert('(weiValue != pc.ethFeeToUpgradeToLevel3())');
		pc.isGenesisAddressSet(_address, 3);	
		pc.level3ActivationsFromLevel2CountSet(pc.level3ActivationsFromLevel2Count()+1);
		emit Level3UpgradeHistory(_address);
	}
	else
	{
		revert();
	}
}

function UpgradeToLevel3FromDev(address _address) public onlyOwner {
	if (pc.isGenesisAddress(_address) == 4 && !pc.isGenesisAddressForSale(_address))
	{
		pc.initialBlockCountPerAddressSet(_address, block.number);
		pc.isGenesisAddressSet(_address, 3);	
		pc.balancesSet(_address, pc.genesisSupplyPerAddress());
		pc.level3ActivationsFromDevCountSet(pc.level3ActivationsFromDevCount()+1);		
		emit Level3UpgradeHistory(_address);
	}
	else
	{
		revert();
	}
}

function availableBalanceOf(address _address) public view returns (uint256 Balance)
{
	if (isGenesisAddressLevel2Or3(_address))
	{
		uint minedBlocks = block.number - pc.initialBlockCountPerAddress(_address);
		
		if (minedBlocks >= pc.maxBlocks()) return pc.balances(_address);
				
		return pc.balances(_address) - (pc.genesisSupplyPerAddress() - (pc.genesisRewardPerBlock()*minedBlocks));
	}
	else if (isGenesisAddressLevel1(_address) || pc.isGenesisAddress(_address) == 4)
		return 0;
	else
		return pc.balances(_address);
}

function balanceOf(address _address) public view returns (uint256 balance) {
	if (isGenesisAddressLevel1(_address) || pc.isGenesisAddress(_address) == 4)
		return pc.genesisSupplyPerAddress();
	else
		return pc.balances(_address);
}

function BurnTokens(address _from, uint256 mneToBurn) public onlyOwner returns (bool success)
{
	if (pc.isGenesisAddressForSale(_from)) revert('(pc.isGenesisAddressForSale(_from))');
	
	if (pc.isNormalAddressForSale(_from)) revert('(pc.isNormalAddressForSale(_from))');
	
	if (availableBalanceOf(_from) >= mneToBurn)
	{
		pc.balancesSet(_from, pc.balances(_from) - mneToBurn);
		pc.mneBurnedSet(pc.mneBurned() + mneToBurn);
		emit Burn(_from, mneToBurn);			
	}
	else
	{
		revert();
	}
	return true;
}

function BurnGenesisAddresses(address _from, address[] memory _genesisAddressesToBurn) public onlyOwner {
	uint8 i = 0;	
	while(i < _genesisAddressesToBurn.length)
	{
		if (pc.allowAddressToDestroyGenesis(_genesisAddressesToBurn[i]) != _from) revert('(pc.allowAddressToDestroyGenesis(_genesisAddressesToBurn[i]) != _from)');
		if (pc.isGenesisAddressForSale(_genesisAddressesToBurn[i])) revert('(pc.isGenesisAddressForSale(_genesisAddressesToBurn[i]))');
		if (!isGenesisAddressLevel3(_genesisAddressesToBurn[i])) revert('(!isGenesisAddressLevel3(_genesisAddressesToBurn[i]))');
		pc.isGenesisAddressSet(_genesisAddressesToBurn[i], 0);
		uint256 _balanceToDestroy = pc.balances(_genesisAddressesToBurn[i]);
		pc.balancesSet(_genesisAddressesToBurn[i], 0);
		pc.initialBlockCountPerAddressSet(_genesisAddressesToBurn[i], 0);
		pc.isGenesisAddressForSaleSet(_genesisAddressesToBurn[i], false);
		pc.genesisBuyPriceSet(_genesisAddressesToBurn[i], 0);		
		pc.allowAddressToDestroyGenesisSet(_genesisAddressesToBurn[i], 0x0000000000000000000000000000000000000000);
		pc.GenesisDestroyCountStakeSet(pc.GenesisDestroyCountStake() + 1);
		pc.GenesisDestroyedSet(pc.GenesisDestroyed() + 1);
		pc.GenesisDestroyAmountCountSet(pc.GenesisDestroyAmountCount() + _balanceToDestroy);
		i++;
	}
}
}
        

Compiler Settings

{"remappings":[],"optimizer":{"runs":200,"enabled":true},"metadata":{"bytecodeHash":"ipfs"},"libraries":{},"evmVersion":"istanbul","compilationTarget":{"GenesisAddresses.sol":"GenesisAddresses"}}
              

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"address","name":"_publicCallsAddress","internalType":"address"},{"type":"address","name":"_publicArraysAddress","internalType":"address"}]},{"type":"event","name":"AllowDestroyHistory","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"Burn","inputs":[{"type":"address","name":"_owner","internalType":"address","indexed":true},{"type":"uint256","name":"_value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"GenesisAddressSale","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"price","internalType":"uint256","indexed":false},{"type":"uint256","name":"supply","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"GenesisAddressTransfer","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"supply","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"GenesisBuyPriceHistory","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"uint256","name":"price","internalType":"uint256","indexed":false},{"type":"uint8","name":"genesisType","internalType":"uint8","indexed":false}],"anonymous":false},{"type":"event","name":"GenesisLevel1ForSaleHistory","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"GenesisRemoveGenesisSaleHistory","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"GenesisRemoveSaleHistory","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"Level2UpgradeHistory","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"Level3UpgradeHistory","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"ReceiveGenesisTransfersAllow","inputs":[{"type":"address","name":"_address","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"RemoveAllowDestroyHistory","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"RemoveReceiveGenesisTransfersAllow","inputs":[{"type":"address","name":"_address","internalType":"address","indexed":true}],"anonymous":false},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"AllowAddressToDestroyGenesis","inputs":[{"type":"address","name":"_from","internalType":"address"},{"type":"address","name":"_address","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"AllowReceiveGenesisTransfers","inputs":[{"type":"address","name":"_from","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"BurnGenesisAddresses","inputs":[{"type":"address","name":"_from","internalType":"address"},{"type":"address[]","name":"_genesisAddressesToBurn","internalType":"address[]"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"success","internalType":"bool"}],"name":"BurnTokens","inputs":[{"type":"address","name":"_from","internalType":"address"},{"type":"uint256","name":"mneToBurn","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"RemoveAllowAddressToDestroyGenesis","inputs":[{"type":"address","name":"_from","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"RemoveAllowReceiveGenesisTransfers","inputs":[{"type":"address","name":"_from","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"RemoveGenesisAddressFromSale","inputs":[{"type":"address","name":"_from","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"SetGenesisForSale","inputs":[{"type":"address","name":"_from","internalType":"address"},{"type":"uint256","name":"weiPrice","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"TransferGenesis","inputs":[{"type":"address","name":"_from","internalType":"address"},{"type":"address","name":"_to","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"UpgradeToLevel2FromLevel1","inputs":[{"type":"address","name":"_address","internalType":"address"},{"type":"uint256","name":"weiValue","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"UpgradeToLevel3FromDev","inputs":[{"type":"address","name":"_address","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"UpgradeToLevel3FromLevel1","inputs":[{"type":"address","name":"_address","internalType":"address"},{"type":"uint256","name":"weiValue","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"UpgradeToLevel3FromLevel2","inputs":[{"type":"address","name":"_address","internalType":"address"},{"type":"uint256","name":"weiValue","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":"nonpayable","outputs":[],"name":"deleteAddressFromGenesisSaleList","inputs":[{"type":"address","name":"_address","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"external1","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":"address"}],"name":"ownerBaseTransfers","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"ownerGenesisBuys","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"ownerMain","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"ownerNormalAddress","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"ownerStakeBuys","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"ownerStakes","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract publicArrays"}],"name":"pa","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract publicCalls"}],"name":"pc","inputs":[]},{"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":"setOwnerBaseTransfers","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setOwnerExternal1","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setOwnerGenesisBuys","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setOwnerMain","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setOwnerNormalAddress","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setOwnerStakeBuys","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setOwnerStakes","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setUpdater","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"updaterAddress","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updaterSetOwnerBaseTransfers","inputs":[{"type":"address","name":"_address","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updaterSetOwnerGenesisBuys","inputs":[{"type":"address","name":"_address","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updaterSetOwnerMain","inputs":[{"type":"address","name":"_address","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updaterSetOwnerNormalAddress","inputs":[{"type":"address","name":"_address","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updaterSetOwnerStakeBuys","inputs":[{"type":"address","name":"_address","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updaterSetOwnerStakes","inputs":[{"type":"address","name":"_address","internalType":"address"}]}]
              

Contract Creation Code

Verify & Publish
0x6080604052600080546001600160a01b03199081169091556001805482169055600280548216905560038054821690556004805482169055600580548216905560068054821690556007805490911690553480156200005d57600080fd5b506040516200610138038062006101833981810160405260408110156200008357600080fd5b5080516020909101516200009f6001600160e01b036200019516565b600880546001600160a01b0319166001600160a01b03848116919091179182905560408051631087cce760e21b81529051929091169163421f339c9160048082019260009290919082900301818387803b158015620000fd57600080fd5b505af115801562000112573d6000803e3d6000fd5b5050600980546001600160a01b0319166001600160a01b03858116919091179182905560408051631087cce760e21b8152905192909116935063421f339c925060048082019260009290919082900301818387803b1580156200017457600080fd5b505af115801562000189573d6000803e3d6000fd5b505050505050620001c5565b6007546001600160a01b0316620001be57600780546001600160a01b03191633179055620001c3565b600080fd5b565b615f2c80620001d56000396000f3fe608060405234801561001057600080fd5b50600436106102955760003560e01c80637366881711610167578063d3560c74116100ce578063e8d5097f11610087578063e8d5097f146107b1578063eb0fbbad146107d7578063ecc517f1146107fd578063ed401ac314610829578063fdbc653014610855578063ffc4b1681461085d57610295565b8063d3560c74146106f9578063d42e1c2f14610727578063e09f58bd14610755578063e24126301461077b578063e2d03bca14610783578063e69919ae146107a957610295565b80639055a23e116101205780639055a23e1461068d578063919e0b79146106b3578063adb7898d146106bb578063b4c26870146106c3578063ca02eb9d146106cb578063cbb12e53146106f157610295565b8063736688171461056a57806376067e67146105965780637949fcf6146105c25780637bffdb0c146106755780638c2814cf1461067d5780638e01bfca1461068557610295565b8063388d61021161020b5780635e80969b116101c45780635e80969b146104c25780635ed33885146104e857806360744859146104f057806362591c58146104f857806368087c201461051e57806370a082311461054457610295565b8063388d61021461040e578063522c628f1461043a57806352ba171d1461046657806355df07a81461048c578063579b9a761461049457806357ec26d61461049c57610295565b806325bb06981161025d57806325bb06981461034057806325d998bb1461034857806327d4da0e146103805780632940187a146103a65780632fb933ff146103e057806336d69910146103e857610295565b806306baf2631461029a5780630a63361c146102c257806313b9f0c7146102e657806315e03506146102ee57806316e0459014610314575b600080fd5b6102c0600480360360208110156102b057600080fd5b50356001600160a01b0316610883565b005b6102ca6109ba565b604080516001600160a01b039092168252519081900360200190f35b6102c06109c9565b6102c06004803603602081101561030457600080fd5b50356001600160a01b03166109f1565b6102c06004803603604081101561032a57600080fd5b506001600160a01b038135169060200135610a23565b6102c0610f3e565b61036e6004803603602081101561035e57600080fd5b50356001600160a01b0316610f68565b60408051918252519081900360200190f35b6102c06004803603602081101561039657600080fd5b50356001600160a01b031661137d565b6103cc600480360360208110156103bc57600080fd5b50356001600160a01b03166113b0565b604080519115158252519081900360200190f35b6102ca611448565b6103cc600480360360208110156103fe57600080fd5b50356001600160a01b0316611457565b6103cc6004803603604081101561042457600080fd5b506001600160a01b03813516906020013561156d565b6102c06004803603604081101561045057600080fd5b506001600160a01b038135169060200135611980565b6102c06004803603602081101561047c57600080fd5b50356001600160a01b0316611a1b565b6102ca611e79565b6102c0611e88565b6102c0600480360360208110156104b257600080fd5b50356001600160a01b0316611eb2565b6102c0600480360360208110156104d857600080fd5b50356001600160a01b0316611ee5565b6102c0611f18565b6102ca611f42565b6102c06004803603602081101561050e57600080fd5b50356001600160a01b0316611f51565b6102c06004803603602081101561053457600080fd5b50356001600160a01b0316611f84565b61036e6004803603602081101561055a57600080fd5b50356001600160a01b03166121cd565b6102c06004803603604081101561058057600080fd5b506001600160a01b0381351690602001356122b1565b6102c0600480360360408110156105ac57600080fd5b506001600160a01b03813516906020013561232f565b6102c0600480360360408110156105d857600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561060357600080fd5b82018360208201111561061557600080fd5b8035906020019184602083028401116401000000008311171561063757600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506127ce945050505050565b6102c061315b565b6102c0613185565b6102ca6131af565b6103cc600480360360208110156106a357600080fd5b50356001600160a01b03166131be565b6102ca61324e565b6102c061325d565b6102ca613287565b6102c0600480360360208110156106e157600080fd5b50356001600160a01b0316613296565b6102ca6133cd565b6102c06004803603604081101561070f57600080fd5b506001600160a01b03813581169160200135166133dc565b6102c06004803603604081101561073d57600080fd5b506001600160a01b0381358116916020013516613f26565b6102c06004803603602081101561076b57600080fd5b50356001600160a01b0316614174565b6102c06141a7565b6102c06004803603602081101561079957600080fd5b50356001600160a01b03166141ce565b6102ca614485565b6102c0600480360360208110156107c757600080fd5b50356001600160a01b0316614494565b6103cc600480360360208110156107ed57600080fd5b50356001600160a01b031661503d565b6102c06004803603604081101561081357600080fd5b506001600160a01b0381351690602001356150c9565b6102c06004803603604081101561083f57600080fd5b506001600160a01b03813516906020013561541c565b6102ca615c81565b6103cc6004803603602081101561087357600080fd5b50356001600160a01b0316615c90565b6000546001600160a01b03163314806108a657506001546001600160a01b031633145b806108bb57506002546001600160a01b031633145b806108d057506003546001600160a01b031633145b806108e557506004546001600160a01b031633145b806108fa57506005546001600160a01b031633145b8061090f57506006546001600160a01b031633145b61091857600080fd5b60085460408051639ecdacd560e01b81526001600160a01b0384811660048301526000602483018190529251931692639ecdacd59260448084019391929182900301818387803b15801561096b57600080fd5b505af115801561097f573d6000803e3d6000fd5b50506040516001600160a01b03841692507fe7350d8803dc045eccf56b2301c0d420846527386dd46d244674a9d6f730313c9150600090a250565b6009546001600160a01b031681565b6007546001600160a01b031632141561029557600080546001600160a01b031916331790555b565b6007546001600160a01b031632141561029557600380546001600160a01b0319166001600160a01b0383161790555b50565b6000546001600160a01b0316331480610a4657506001546001600160a01b031633145b80610a5b57506002546001600160a01b031633145b80610a7057506003546001600160a01b031633145b80610a8557506004546001600160a01b031633145b80610a9a57506005546001600160a01b031633145b80610aaf57506006546001600160a01b031633145b610ab857600080fd5b610ac1826131be565b8015610b43575060085460408051631e0808f560e21b81526001600160a01b0385811660048301529151919092169163782023d4916024808301926020929190829003018186803b158015610b1557600080fd5b505afa158015610b29573d6000803e3d6000fd5b505050506040513d6020811015610b3f57600080fd5b5051155b15610295576008546040805163d050a90560e01b815290516000926001600160a01b03169163d050a905916004808301926020929190829003018186803b158015610b8d57600080fd5b505afa158015610ba1573d6000803e3d6000fd5b505050506040513d6020811015610bb757600080fd5b505160085460408051633238268960e01b815290516001600160a01b0390921691633238268991600480820192602092909190829003018186803b158015610bfe57600080fd5b505afa158015610c12573d6000803e3d6000fd5b505050506040513d6020811015610c2857600080fd5b5051019050818114610c7a576040805162461bcd60e51b81526020600482015260166024820152752877656956616c756520213d20746f74616c4665652960501b604482015290519081900360640190fd5b60085460408051633f109fcb60e11b81526001600160a01b03868116600483015243602483015291519190921691637e213f9691604480830192600092919082900301818387803b158015610cce57600080fd5b505af1158015610ce2573d6000803e3d6000fd5b50506008546040805163e5327c1360e01b81526001600160a01b03888116600483015260036024830152915191909216935063e5327c139250604480830192600092919082900301818387803b158015610d3b57600080fd5b505af1158015610d4f573d6000803e3d6000fd5b505060085460408051630748831f60e31b815290516001600160a01b0390921693506371273083925086918491633a4418f8916004808301926020929190829003018186803b158015610da157600080fd5b505afa158015610db5573d6000803e3d6000fd5b505050506040513d6020811015610dcb57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b158015610e1b57600080fd5b505af1158015610e2f573d6000803e3d6000fd5b505060085460408051635a0f903760e11b815290516001600160a01b0390921693506312e447329250839163b41f206e91600480820192602092909190829003018186803b158015610e8057600080fd5b505afa158015610e94573d6000803e3d6000fd5b505050506040513d6020811015610eaa57600080fd5b5051604080516001600160e01b031960e085901b1681526001909201600483015251602480830192600092919082900301818387803b158015610eec57600080fd5b505af1158015610f00573d6000803e3d6000fd5b50506040516001600160a01b03861692507fde96c8a6fe1c6b7977465341e8fa8874e1617aa754ccb9a32ffc45d15667cf8f9150600090a2505b5050565b6007546001600160a01b031632141561029557600180546001600160a01b031916331790556109ef565b6000610f7382611457565b15611260576008546040805163a794676f60e01b81526001600160a01b0385811660048301529151600093929092169163a794676f91602480820192602092909190829003018186803b158015610fc957600080fd5b505afa158015610fdd573d6000803e3d6000fd5b505050506040513d6020811015610ff357600080fd5b505160085460408051631041ab4f60e11b81529051439390930393506001600160a01b0390911691632083569e91600480820192602092909190829003018186803b15801561104157600080fd5b505afa158015611055573d6000803e3d6000fd5b505050506040513d602081101561106b57600080fd5b505181106110f557600854604080516327e235e360e01b81526001600160a01b038681166004830152915191909216916327e235e3916024808301926020929190829003018186803b1580156110c057600080fd5b505afa1580156110d4573d6000803e3d6000fd5b505050506040513d60208110156110ea57600080fd5b505191506113789050565b6008546040805163147aab3160e21b8152905183926001600160a01b0316916351eaacc4916004808301926020929190829003018186803b15801561113957600080fd5b505afa15801561114d573d6000803e3d6000fd5b505050506040513d602081101561116357600080fd5b505160085460408051630748831f60e31b8152905193909202926001600160a01b0390911691633a4418f8916004808301926020929190829003018186803b1580156111ae57600080fd5b505afa1580156111c2573d6000803e3d6000fd5b505050506040513d60208110156111d857600080fd5b5051600854604080516327e235e360e01b81526001600160a01b038881166004830152915194909303939116916327e235e3916024808301926020929190829003018186803b15801561122a57600080fd5b505afa15801561123e573d6000803e3d6000fd5b505050506040513d602081101561125457600080fd5b50510391506113789050565b611269826131be565b806112ef57506008546040805163324884a960e01b81526001600160a01b0385811660048301529151919092169163324884a9916024808301926020929190829003018186803b1580156112bc57600080fd5b505afa1580156112d0573d6000803e3d6000fd5b505050506040513d60208110156112e657600080fd5b505160ff166004145b156112fc57506000611378565b600854604080516327e235e360e01b81526001600160a01b038581166004830152915191909216916327e235e3916024808301926020929190829003018186803b15801561134957600080fd5b505afa15801561135d573d6000803e3d6000fd5b505050506040513d602081101561137357600080fd5b505190505b919050565b6007546001600160a01b031632141561029557600080546001600160a01b0319166001600160a01b038316179055610a20565b6008546040805163324884a960e01b81526001600160a01b0384811660048301529151600093929092169163324884a991602480820192602092909190829003018186803b15801561140157600080fd5b505afa158015611415573d6000803e3d6000fd5b505050506040513d602081101561142b57600080fd5b505160ff166002141561144057506001611378565b506000611378565b6006546001600160a01b031681565b6008546040805163324884a960e01b81526001600160a01b0384811660048301529151600093929092169163324884a991602480820192602092909190829003018186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d60208110156114d257600080fd5b505160ff166002148061156057506008546040805163324884a960e01b81526001600160a01b0385811660048301529151919092169163324884a9916024808301926020929190829003018186803b15801561152d57600080fd5b505afa158015611541573d6000803e3d6000fd5b505050506040513d602081101561155757600080fd5b505160ff166003145b1561144057506001611378565b600080546001600160a01b031633148061159157506001546001600160a01b031633145b806115a657506002546001600160a01b031633145b806115bb57506003546001600160a01b031633145b806115d057506004546001600160a01b031633145b806115e557506005546001600160a01b031633145b806115fa57506006546001600160a01b031633145b61160357600080fd5b60085460408051631e0808f560e21b81526001600160a01b0386811660048301529151919092169163782023d4916024808301926020929190829003018186803b15801561165057600080fd5b505afa158015611664573d6000803e3d6000fd5b505050506040513d602081101561167a57600080fd5b5051156116b85760405162461bcd60e51b8152600401808060200182810382526023815260200180615d9b6023913960400191505060405180910390fd5b60085460408051635dd5e70160e01b81526001600160a01b03868116600483015291519190921691635dd5e701916024808301926020929190829003018186803b15801561170557600080fd5b505afa158015611719573d6000803e3d6000fd5b505050506040513d602081101561172f57600080fd5b50511561176d5760405162461bcd60e51b8152600401808060200182810382526022815260200180615d796022913960400191505060405180910390fd5b8161177784610f68565b1061029557600854604080516327e235e360e01b81526001600160a01b038681166004830152915191909216916371273083918691869185916327e235e3916024808301926020929190829003018186803b1580156117d557600080fd5b505afa1580156117e9573d6000803e3d6000fd5b505050506040513d60208110156117ff57600080fd5b5051604080516001600160e01b031960e087901b1681526001600160a01b039094166004850152919003602483015251604480830192600092919082900301818387803b15801561184f57600080fd5b505af1158015611863573d6000803e3d6000fd5b50506008546040805163959af4f360e01b815290516001600160a01b03909216935063208b99cf92508591849163959af4f3916004808301926020929190829003018186803b1580156118b557600080fd5b505afa1580156118c9573d6000803e3d6000fd5b505050506040513d60208110156118df57600080fd5b5051604080516001600160e01b031960e086901b16815292909101600483015251602480830192600092919082900301818387803b15801561192057600080fd5b505af1158015611934573d6000803e3d6000fd5b50506040805185815290516001600160a01b03871693507fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca592509081900360200190a250600192915050565b806104d21461198e57600080fd5b6007546001600160a01b031633141561029557600980546001600160a01b0319166001600160a01b03848116919091179182905560408051631087cce760e21b81529051929091169163421f339c9160048082019260009290919082900301818387803b1580156119fe57600080fd5b505af1158015611a12573d6000803e3d6000fd5b50505050610f3a565b6000546001600160a01b0316331480611a3e57506001546001600160a01b031633145b80611a5357506002546001600160a01b031633145b80611a6857506003546001600160a01b031633145b80611a7d57506004546001600160a01b031633145b80611a9257506005546001600160a01b031633145b80611aa757506006546001600160a01b031633145b611ab057600080fd5b6008546040805163324884a960e01b81526001600160a01b0384811660048301529151919092169163324884a9916024808301926020929190829003018186803b158015611afd57600080fd5b505afa158015611b11573d6000803e3d6000fd5b505050506040513d6020811015611b2757600080fd5b505160ff166004148015611bb1575060085460408051631e0808f560e21b81526001600160a01b0384811660048301529151919092169163782023d4916024808301926020929190829003018186803b158015611b8357600080fd5b505afa158015611b97573d6000803e3d6000fd5b505050506040513d6020811015611bad57600080fd5b5051155b156102955760085460408051633f109fcb60e11b81526001600160a01b03848116600483015243602483015291519190921691637e213f9691604480830192600092919082900301818387803b158015611c0a57600080fd5b505af1158015611c1e573d6000803e3d6000fd5b50506008546040805163e5327c1360e01b81526001600160a01b03868116600483015260036024830152915191909216935063e5327c139250604480830192600092919082900301818387803b158015611c7757600080fd5b505af1158015611c8b573d6000803e3d6000fd5b505060085460408051630748831f60e31b815290516001600160a01b0390921693506371273083925084918491633a4418f8916004808301926020929190829003018186803b158015611cdd57600080fd5b505afa158015611cf1573d6000803e3d6000fd5b505050506040513d6020811015611d0757600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b158015611d5757600080fd5b505af1158015611d6b573d6000803e3d6000fd5b50506008546040805163ed054ea560e01b815290516001600160a01b039092169350630e7c5d479250839163ed054ea591600480820192602092909190829003018186803b158015611dbc57600080fd5b505afa158015611dd0573d6000803e3d6000fd5b505050506040513d6020811015611de657600080fd5b5051604080516001600160e01b031960e085901b1681526001909201600483015251602480830192600092919082900301818387803b158015611e2857600080fd5b505af1158015611e3c573d6000803e3d6000fd5b50506040516001600160a01b03841692507fde96c8a6fe1c6b7977465341e8fa8874e1617aa754ccb9a32ffc45d15667cf8f9150600090a2610a20565b6005546001600160a01b031681565b6007546001600160a01b031632141561029557600280546001600160a01b031916331790556109ef565b6007546001600160a01b031632141561029557600580546001600160a01b0319166001600160a01b038316179055610a20565b6007546001600160a01b031632141561029557600480546001600160a01b0319166001600160a01b038316179055610a20565b6007546001600160a01b031632141561029557600580546001600160a01b031916331790556109ef565b6001546001600160a01b031681565b6007546001600160a01b031632141561029557600280546001600160a01b0319166001600160a01b038316179055610a20565b6000546001600160a01b0316331480611fa757506001546001600160a01b031633145b80611fbc57506002546001600160a01b031633145b80611fd157506003546001600160a01b031633145b80611fe657506004546001600160a01b031633145b80611ffb57506005546001600160a01b031633145b8061201057506006546001600160a01b031633145b61201957600080fd5b6120228161503d565b15612074576040805162461bcd60e51b815260206004820152601f60248201527f696620286973416e7947656e6573697341646472657373285f66726f6d292900604482015290519081900360640190fd5b60085460408051633870c3c360e21b81526001600160a01b0384811660048301529151919092169163e1c30f0c916024808301926020929190829003018186803b1580156120c157600080fd5b505afa1580156120d5573d6000803e3d6000fd5b505050506040513d60208110156120eb57600080fd5b5051156121295760405162461bcd60e51b8152600401808060200182810382526026815260200180615e876026913960400191505060405180910390fd5b60085460408051639ecdacd560e01b81526001600160a01b0384811660048301526001602483015291519190921691639ecdacd591604480830192600092919082900301818387803b15801561217e57600080fd5b505af1158015612192573d6000803e3d6000fd5b50506040516001600160a01b03841692507f0412df9226744ac4be5600a9b7cd22de690645a8472e7c78f5a50effcef9f8b79150600090a250565b60006121d8826131be565b8061225e57506008546040805163324884a960e01b81526001600160a01b0385811660048301529151919092169163324884a9916024808301926020929190829003018186803b15801561222b57600080fd5b505afa15801561223f573d6000803e3d6000fd5b505050506040513d602081101561225557600080fd5b505160ff166004145b156112fc57600860009054906101000a90046001600160a01b03166001600160a01b0316633a4418f86040518163ffffffff1660e01b815260040160206040518083038186803b15801561134957600080fd5b806104d2146122bf57600080fd5b6007546001600160a01b031633141561029557600880546001600160a01b0319166001600160a01b03848116919091179182905560408051631087cce760e21b81529051929091169163421f339c9160048082019260009290919082900301818387803b1580156119fe57600080fd5b6000546001600160a01b031633148061235257506001546001600160a01b031633145b8061236757506002546001600160a01b031633145b8061237c57506003546001600160a01b031633145b8061239157506004546001600160a01b031633145b806123a657506005546001600160a01b031633145b806123bb57506006546001600160a01b031633145b6123c457600080fd5b6123cd826131be565b801561244f575060085460408051631e0808f560e21b81526001600160a01b0385811660048301529151919092169163782023d4916024808301926020929190829003018186803b15801561242157600080fd5b505afa158015612435573d6000803e3d6000fd5b505050506040513d602081101561244b57600080fd5b5051155b1561029557600860009054906101000a90046001600160a01b03166001600160a01b031663323826896040518163ffffffff1660e01b815260040160206040518083038186803b1580156124a257600080fd5b505afa1580156124b6573d6000803e3d6000fd5b505050506040513d60208110156124cc57600080fd5b5051811461250b5760405162461bcd60e51b815260040180806020018281038252602a815260200180615e5d602a913960400191505060405180910390fd5b60085460408051633f109fcb60e11b81526001600160a01b03858116600483015243602483015291519190921691637e213f9691604480830192600092919082900301818387803b15801561255f57600080fd5b505af1158015612573573d6000803e3d6000fd5b50506008546040805163e5327c1360e01b81526001600160a01b03878116600483015260026024830152915191909216935063e5327c139250604480830192600092919082900301818387803b1580156125cc57600080fd5b505af11580156125e0573d6000803e3d6000fd5b505060085460408051630748831f60e31b815290516001600160a01b0390921693506371273083925085918491633a4418f8916004808301926020929190829003018186803b15801561263257600080fd5b505afa158015612646573d6000803e3d6000fd5b505050506040513d602081101561265c57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b1580156126ac57600080fd5b505af11580156126c0573d6000803e3d6000fd5b505060085460408051632343992d60e11b815290516001600160a01b03909216935063834046dc92508391634687325a91600480820192602092909190829003018186803b15801561271157600080fd5b505afa158015612725573d6000803e3d6000fd5b505050506040513d602081101561273b57600080fd5b5051604080516001600160e01b031960e085901b1681526001909201600483015251602480830192600092919082900301818387803b15801561277d57600080fd5b505af1158015612791573d6000803e3d6000fd5b50506040516001600160a01b03851692507f25f51c6bcb054917efc74db09bb453e792bfd7d9f2d331a42a4f45f27351ce3d9150600090a2610f3a565b6000546001600160a01b03163314806127f157506001546001600160a01b031633145b8061280657506002546001600160a01b031633145b8061281b57506003546001600160a01b031633145b8061283057506004546001600160a01b031633145b8061284557506005546001600160a01b031633145b8061285a57506006546001600160a01b031633145b61286357600080fd5b60005b81518160ff1610156131565760085482516001600160a01b03808616921690636baf966d90859060ff861690811061289a57fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156128e857600080fd5b505afa1580156128fc573d6000803e3d6000fd5b505050506040513d602081101561291257600080fd5b50516001600160a01b0316146129595760405162461bcd60e51b8152600401808060200182810382526046815260200180615e176046913960600191505060405180910390fd5b60085482516001600160a01b039091169063782023d490849060ff851690811061297f57fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156129cd57600080fd5b505afa1580156129e1573d6000803e3d6000fd5b505050506040513d60208110156129f757600080fd5b505115612a355760405162461bcd60e51b8152600401808060200182810382526038815260200180615d416038913960400191505060405180910390fd5b612a54828260ff1681518110612a4757fe5b6020026020010151615c90565b612a8f5760405162461bcd60e51b8152600401808060200182810382526035815260200180615d0c6035913960400191505060405180910390fd5b60085482516001600160a01b039091169063e5327c1390849060ff8516908110612ab557fe5b602002602001015160006040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b031681526020018260ff16815260200192505050600060405180830381600087803b158015612b1157600080fd5b505af1158015612b25573d6000803e3d6000fd5b50506008548451600093506001600160a01b0390911691506327e235e390859060ff8616908110612b5257fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015612ba057600080fd5b505afa158015612bb4573d6000803e3d6000fd5b505050506040513d6020811015612bca57600080fd5b505160085484519192506001600160a01b031690637127308390859060ff8616908110612bf357fe5b602002602001015160006040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015612c4c57600080fd5b505af1158015612c60573d6000803e3d6000fd5b505060085485516001600160a01b039091169250637e213f969150859060ff8616908110612c8a57fe5b602002602001015160006040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015612ce357600080fd5b505af1158015612cf7573d6000803e3d6000fd5b505060085485516001600160a01b039091169250636117a0c09150859060ff8616908110612d2157fe5b602002602001015160006040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b031681526020018215151515815260200192505050600060405180830381600087803b158015612d7e57600080fd5b505af1158015612d92573d6000803e3d6000fd5b505060085485516001600160a01b0390911692506324c7c9dc9150859060ff8616908110612dbc57fe5b602002602001015160006040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015612e1557600080fd5b505af1158015612e29573d6000803e3d6000fd5b505060085485516001600160a01b039091169250638eb84dd29150859060ff8616908110612e5357fe5b602002602001015160006040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001826001600160a01b03166001600160a01b0316815260200192505050600060405180830381600087803b158015612ebe57600080fd5b505af1158015612ed2573d6000803e3d6000fd5b505060085460408051631430e3dd60e01b815290516001600160a01b039092169350639db86dc992508391631430e3dd91600480820192602092909190829003018186803b158015612f2357600080fd5b505afa158015612f37573d6000803e3d6000fd5b505050506040513d6020811015612f4d57600080fd5b5051604080516001600160e01b031960e085901b1681526001909201600483015251602480830192600092919082900301818387803b158015612f8f57600080fd5b505af1158015612fa3573d6000803e3d6000fd5b505060085460408051630ae0e84560e01b815290516001600160a01b03909216935063492f4a6392508391630ae0e84591600480820192602092909190829003018186803b158015612ff457600080fd5b505afa158015613008573d6000803e3d6000fd5b505050506040513d602081101561301e57600080fd5b5051604080516001600160e01b031960e085901b1681526001909201600483015251602480830192600092919082900301818387803b15801561306057600080fd5b505af1158015613074573d6000803e3d6000fd5b505060085460408051638c19011160e01b815290516001600160a01b03909216935063ce8b0afb925084918491638c190111916004808301926020929190829003018186803b1580156130c657600080fd5b505afa1580156130da573d6000803e3d6000fd5b505050506040513d60208110156130f057600080fd5b5051604080516001600160e01b031960e086901b16815292909101600483015251602480830192600092919082900301818387803b15801561313157600080fd5b505af1158015613145573d6000803e3d6000fd5b505060019093019250612866915050565b505050565b6007546001600160a01b031632141561029557600380546001600160a01b031916331790556109ef565b6007546001600160a01b031632141561029557600480546001600160a01b031916331790556109ef565b6004546001600160a01b031681565b6008546040805163324884a960e01b81526001600160a01b0384811660048301529151600093929092169163324884a991602480820192602092909190829003018186803b15801561320f57600080fd5b505afa158015613223573d6000803e3d6000fd5b505050506040513d602081101561323957600080fd5b505160ff166001141561144057506001611378565b6000546001600160a01b031681565b6007546001600160a01b031632141561029557600680546001600160a01b031916331790556109ef565b6002546001600160a01b031681565b6000546001600160a01b03163314806132b957506001546001600160a01b031633145b806132ce57506002546001600160a01b031633145b806132e357506003546001600160a01b031633145b806132f857506004546001600160a01b031633145b8061330d57506005546001600160a01b031633145b8061332257506006546001600160a01b031633145b61332b57600080fd5b6008546040805163475c26e960e11b81526001600160a01b0384811660048301526000602483018190529251931692638eb84dd29260448084019391929182900301818387803b15801561337e57600080fd5b505af1158015613392573d6000803e3d6000fd5b50506040516001600160a01b03841692507f2263d898cb6c9fee937fbc6fd4217347263549929ec4ccc3f8501b1a5943846a9150600090a250565b6003546001600160a01b031681565b6000546001600160a01b03163314806133ff57506001546001600160a01b031633145b8061341457506002546001600160a01b031633145b8061342957506003546001600160a01b031633145b8061343e57506004546001600160a01b031633145b8061345357506005546001600160a01b031633145b8061346857506006546001600160a01b031633145b61347157600080fd5b61347a82611457565b6134b55760405162461bcd60e51b8152600401808060200182810382526023815260200180615dbe6023913960400191505060405180910390fd5b806001600160a01b0316826001600160a01b03161415613515576040805162461bcd60e51b81526020600482015260166024820152752821285f66726f6d20213d205f61646472657373292960501b604482015290519081900360640190fd5b60085460408051633870c3c360e21b81526001600160a01b0384811660048301529151919092169163e1c30f0c916024808301926020929190829003018186803b15801561356257600080fd5b505afa158015613576573d6000803e3d6000fd5b505050506040513d602081101561358c57600080fd5b50516135c95760405162461bcd60e51b8152600401808060200182810382526027815260200180615ead6027913960400191505060405180910390fd5b60085460408051631e0808f560e21b81526001600160a01b0385811660048301529151919092169163782023d4916024808301926020929190829003018186803b15801561361657600080fd5b505afa15801561362a573d6000803e3d6000fd5b505050506040513d602081101561364057600080fd5b50511561367e5760405162461bcd60e51b8152600401808060200182810382526023815260200180615d9b6023913960400191505060405180910390fd5b6000613689826121cd565b11156136d3576040805162461bcd60e51b81526020600482015260146024820152732862616c616e63654f66285f746f29203e20302960601b604482015290519081900360640190fd5b6136dc8161503d565b1561372e576040805162461bcd60e51b815260206004820152601a60248201527f286973416e7947656e6573697341646472657373285f746f2929000000000000604482015290519081900360640190fd5b600854604080516327e235e360e01b81526001600160a01b03858116600483015291519190921691637127308391849184916327e235e391602480820192602092909190829003018186803b15801561378657600080fd5b505afa15801561379a573d6000803e3d6000fd5b505050506040513d60208110156137b057600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b15801561380057600080fd5b505af1158015613814573d6000803e3d6000fd5b505060085460408051637127308360e01b81526001600160a01b038781166004830152600060248301819052925193169450637127308393506044808201939182900301818387803b15801561386957600080fd5b505af115801561387d573d6000803e3d6000fd5b50506008546040805163a794676f60e01b81526001600160a01b0387811660048301529151919092169350637e213f9692508491849163a794676f91602480820192602092909190829003018186803b1580156138d957600080fd5b505afa1580156138ed573d6000803e3d6000fd5b505050506040513d602081101561390357600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b15801561395357600080fd5b505af1158015613967573d6000803e3d6000fd5b505060085460408051633f109fcb60e11b81526001600160a01b038781166004830152600060248301819052925193169450637e213f9693506044808201939182900301818387803b1580156139bc57600080fd5b505af11580156139d0573d6000803e3d6000fd5b50506008546040805163324884a960e01b81526001600160a01b038781166004830152915191909216935063e5327c1392508491849163324884a991602480820192602092909190829003018186803b158015613a2c57600080fd5b505afa158015613a40573d6000803e3d6000fd5b505050506040513d6020811015613a5657600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260ff909116602483015251604480830192600092919082900301818387803b158015613aa857600080fd5b505af1158015613abc573d6000803e3d6000fd5b50506008546040805163e5327c1360e01b81526001600160a01b03878116600483015260006024830181905292519316945063e5327c1393506044808201939182900301818387803b158015613b1157600080fd5b505af1158015613b25573d6000803e3d6000fd5b505060085460408051630931f27760e21b81526001600160a01b0387811660048301526000602483018190529251931694506324c7c9dc93506044808201939182900301818387803b158015613b7a57600080fd5b505af1158015613b8e573d6000803e3d6000fd5b5050600854604080516301845e8360e61b81526001600160a01b038781166004830152600060248301819052925193169450636117a0c093506044808201939182900301818387803b158015613be357600080fd5b505af1158015613bf7573d6000803e3d6000fd5b50506008546040805163475c26e960e11b81526001600160a01b038681166004830152600060248301819052925193169450638eb84dd293506044808201939182900301818387803b158015613c4c57600080fd5b505af1158015613c60573d6000803e3d6000fd5b50506008546040805163475c26e960e11b81526001600160a01b038781166004830152600060248301819052925193169450638eb84dd293506044808201939182900301818387803b158015613cb557600080fd5b505af1158015613cc9573d6000803e3d6000fd5b505060085460408051639ecdacd560e01b81526001600160a01b038781166004830152600060248301819052925193169450639ecdacd593506044808201939182900301818387803b158015613d1e57600080fd5b505af1158015613d32573d6000803e3d6000fd5b505060085460408051639ecdacd560e01b81526001600160a01b038681166004830152600060248301819052925193169450639ecdacd593506044808201939182900301818387803b158015613d8757600080fd5b505af1158015613d9b573d6000803e3d6000fd5b50506008546040805163c8db1dfb60e01b815290516001600160a01b039092169350636e01eebf9250839163c8db1dfb91600480820192602092909190829003018186803b158015613dec57600080fd5b505afa158015613e00573d6000803e3d6000fd5b505050506040513d6020811015613e1657600080fd5b5051604080516001600160e01b031960e085901b1681526001909201600483015251602480830192600092919082900301818387803b158015613e5857600080fd5b505af1158015613e6c573d6000803e3d6000fd5b5050600854604080516327e235e360e01b81526001600160a01b0380871660048301819052925192955087811694507fee7d92b81df7f3765a7a94daa038cdf6a79eea8c67e639d910c796258e60a0ac9316916327e235e391602480820192602092909190829003018186803b158015613ee557600080fd5b505afa158015613ef9573d6000803e3d6000fd5b505050506040513d6020811015613f0f57600080fd5b505160408051918252519081900360200190a35050565b6000546001600160a01b0316331480613f4957506001546001600160a01b031633145b80613f5e57506002546001600160a01b031633145b80613f7357506003546001600160a01b031633145b80613f8857506004546001600160a01b031633145b80613f9d57506005546001600160a01b031633145b80613fb257506006546001600160a01b031633145b613fbb57600080fd5b613fc482615c90565b614015576040805162461bcd60e51b815260206004820181905260248201527f2821697347656e65736973416464726573734c6576656c33285f66726f6d2929604482015290519081900360640190fd5b60085460408051631e0808f560e21b81526001600160a01b0385811660048301529151919092169163782023d4916024808301926020929190829003018186803b15801561406257600080fd5b505afa158015614076573d6000803e3d6000fd5b505050506040513d602081101561408c57600080fd5b5051156140ca5760405162461bcd60e51b8152600401808060200182810382526023815260200180615d9b6023913960400191505060405180910390fd5b6008546040805163475c26e960e11b81526001600160a01b038581166004830152848116602483015291519190921691638eb84dd291604480830192600092919082900301818387803b15801561412057600080fd5b505af1158015614134573d6000803e3d6000fd5b50506040516001600160a01b038085169350851691507f5f64e9e37e747b504e4a092fb841b2e337d1cc05cb42dbfb06301a28da47163090600090a35050565b6007546001600160a01b031632141561029557600180546001600160a01b0319166001600160a01b038316179055610a20565b6007546001600160a01b031661029557600780546001600160a01b031916331790556109ef565b6000546001600160a01b03163314806141f157506001546001600160a01b031633145b8061420657506002546001600160a01b031633145b8061421b57506003546001600160a01b031633145b8061423057506004546001600160a01b031633145b8061424557506005546001600160a01b031633145b8061425a57506006546001600160a01b031633145b61426357600080fd5b61426c8161503d565b6142bd576040805162461bcd60e51b815260206004820152601d60248201527f28216973416e7947656e6573697341646472657373285f66726f6d2929000000604482015290519081900360640190fd5b60085460408051631e0808f560e21b81526001600160a01b0384811660048301529151919092169163782023d4916024808301926020929190829003018186803b15801561430a57600080fd5b505afa15801561431e573d6000803e3d6000fd5b505050506040513d602081101561433457600080fd5b50516143715760405162461bcd60e51b8152600401808060200182810382526023815260200180615ed46023913960400191505060405180910390fd5b60085460408051630931f27760e21b81526001600160a01b03848116600483015260006024830181905292519316926324c7c9dc9260448084019391929182900301818387803b1580156143c457600080fd5b505af11580156143d8573d6000803e3d6000fd5b5050600854604080516301845e8360e61b81526001600160a01b038681166004830152600060248301819052925193169450636117a0c093506044808201939182900301818387803b15801561442d57600080fd5b505af1158015614441573d6000803e3d6000fd5b5050505061444e81614494565b6040516001600160a01b038216907fd845195bcf18cb22dcacb0b3a23aa06d2573b2508c9f47f9dc96bce2f5381b5490600090a250565b6008546001600160a01b031681565b6000546001600160a01b03163314806144b757506001546001600160a01b031633145b806144cc57506002546001600160a01b031633145b806144e157506003546001600160a01b031633145b806144f657506004546001600160a01b031633145b8061450b57506005546001600160a01b031633145b8061452057506006546001600160a01b031633145b61452957600080fd5b614532816131be565b156148e55760006001600960009054906101000a90046001600160a01b03166001600160a01b0316634eb046366040518163ffffffff1660e01b815260040160206040518083038186803b15801561458957600080fd5b505afa15801561459d573d6000803e3d6000fd5b505050506040513d60208110156145b357600080fd5b5051039050801561480c5760095460408051631d7b351b60e21b81526004810184905290516000926001600160a01b0316916375ecd46c916024808301926020929190829003018186803b15801561460a57600080fd5b505afa15801561461e573d6000803e3d6000fd5b505050506040513d602081101561463457600080fd5b50516008546040805163e768ad7b60e01b81526001600160a01b03878116600483015291519394509116916321ea432a918491849163e768ad7b916024808301926020929190829003018186803b15801561468e57600080fd5b505afa1580156146a2573d6000803e3d6000fd5b505050506040513d60208110156146b857600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b15801561470857600080fd5b505af115801561471c573d6000803e3d6000fd5b50506009546008546040805163e768ad7b60e01b81526001600160a01b0389811660048301529151938216955063cde29b5c945091169163e768ad7b91602480820192602092909190829003018186803b15801561477957600080fd5b505afa15801561478d573d6000803e3d6000fd5b505050506040513d60208110156147a357600080fd5b5051604080516001600160e01b031960e085901b16815260048101929092526001600160a01b038516602483015251604480830192600092919082900301818387803b1580156147f257600080fd5b505af1158015614806573d6000803e3d6000fd5b50505050505b600854604080516310f5219560e11b81526001600160a01b03858116600483015260006024830181905292519316926321ea432a9260448084019391929182900301818387803b15801561485f57600080fd5b505af1158015614873573d6000803e3d6000fd5b50505050600960009054906101000a90046001600160a01b03166001600160a01b031663fc0b1fb66040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156148c757600080fd5b505af11580156148db573d6000803e3d6000fd5b5050505050610a20565b6148ee816113b0565b15614c835760006001600960009054906101000a90046001600160a01b03166001600160a01b031663a3c092dd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561494557600080fd5b505afa158015614959573d6000803e3d6000fd5b505050506040513d602081101561496f57600080fd5b50510390508015614bc85760095460408051633e100d1160e11b81526004810184905290516000926001600160a01b031691637c201a22916024808301926020929190829003018186803b1580156149c657600080fd5b505afa1580156149da573d6000803e3d6000fd5b505050506040513d60208110156149f057600080fd5b50516008546040805163c68cfc1560e01b81526001600160a01b0387811660048301529151939450911691635113404c918491849163c68cfc15916024808301926020929190829003018186803b158015614a4a57600080fd5b505afa158015614a5e573d6000803e3d6000fd5b505050506040513d6020811015614a7457600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b158015614ac457600080fd5b505af1158015614ad8573d6000803e3d6000fd5b50506009546008546040805163c68cfc1560e01b81526001600160a01b0389811660048301529151938216955063db22b4c8945091169163c68cfc1591602480820192602092909190829003018186803b158015614b3557600080fd5b505afa158015614b49573d6000803e3d6000fd5b505050506040513d6020811015614b5f57600080fd5b5051604080516001600160e01b031960e085901b16815260048101929092526001600160a01b038516602483015251604480830192600092919082900301818387803b158015614bae57600080fd5b505af1158015614bc2573d6000803e3d6000fd5b50505050505b60085460408051631444d01360e21b81526001600160a01b0385811660048301526000602483018190529251931692635113404c9260448084019391929182900301818387803b158015614c1b57600080fd5b505af1158015614c2f573d6000803e3d6000fd5b50505050600960009054906101000a90046001600160a01b03166001600160a01b0316631b16d78d6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156148c757600080fd5b614c8c81615c90565b15610a205760006001600960009054906101000a90046001600160a01b03166001600160a01b031663e0cf13a36040518163ffffffff1660e01b815260040160206040518083038186803b158015614ce357600080fd5b505afa158015614cf7573d6000803e3d6000fd5b505050506040513d6020811015614d0d57600080fd5b50510390508015614f6657600954604080516336b49b7960e01b81526004810184905290516000926001600160a01b0316916336b49b79916024808301926020929190829003018186803b158015614d6457600080fd5b505afa158015614d78573d6000803e3d6000fd5b505050506040513d6020811015614d8e57600080fd5b50516008546040805163a094db5360e01b81526001600160a01b03878116600483015291519394509116916362dfdea9918491849163a094db53916024808301926020929190829003018186803b158015614de857600080fd5b505afa158015614dfc573d6000803e3d6000fd5b505050506040513d6020811015614e1257600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b158015614e6257600080fd5b505af1158015614e76573d6000803e3d6000fd5b50506009546008546040805163a094db5360e01b81526001600160a01b038981166004830152915193821695506349c334f2945091169163a094db5391602480820192602092909190829003018186803b158015614ed357600080fd5b505afa158015614ee7573d6000803e3d6000fd5b505050506040513d6020811015614efd57600080fd5b5051604080516001600160e01b031960e085901b16815260048101929092526001600160a01b038516602483015251604480830192600092919082900301818387803b158015614f4c57600080fd5b505af1158015614f60573d6000803e3d6000fd5b50505050505b600854604080516362dfdea960e01b81526001600160a01b03858116600483015260006024830181905292519316926362dfdea99260448084019391929182900301818387803b158015614fb957600080fd5b505af1158015614fcd573d6000803e3d6000fd5b50505050600960009054906101000a90046001600160a01b03166001600160a01b0316630e29d6aa6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561502157600080fd5b505af1158015615035573d6000803e3d6000fd5b505050505050565b6008546040805163324884a960e01b81526001600160a01b03848116600483015291516000938493169163324884a9916024808301926020929190829003018186803b15801561508c57600080fd5b505afa1580156150a0573d6000803e3d6000fd5b505050506040513d60208110156150b657600080fd5b505160ff16111561144057506001611378565b6000546001600160a01b03163314806150ec57506001546001600160a01b031633145b8061510157506002546001600160a01b031633145b8061511657506003546001600160a01b031633145b8061512b57506004546001600160a01b031633145b8061514057506005546001600160a01b031633145b8061515557506006546001600160a01b031633145b61515e57600080fd5b615167826113b0565b80156151e9575060085460408051631e0808f560e21b81526001600160a01b0385811660048301529151919092169163782023d4916024808301926020929190829003018186803b1580156151bb57600080fd5b505afa1580156151cf573d6000803e3d6000fd5b505050506040513d60208110156151e557600080fd5b5051155b1561029557600860009054906101000a90046001600160a01b03166001600160a01b031663d050a9056040518163ffffffff1660e01b815260040160206040518083038186803b15801561523c57600080fd5b505afa158015615250573d6000803e3d6000fd5b505050506040513d602081101561526657600080fd5b505181146152a55760405162461bcd60e51b815260040180806020018281038252602a815260200180615ce2602a913960400191505060405180910390fd5b6008546040805163e5327c1360e01b81526001600160a01b038581166004830152600360248301529151919092169163e5327c1391604480830192600092919082900301818387803b1580156152fa57600080fd5b505af115801561530e573d6000803e3d6000fd5b5050600854604080516366dd0d5760e01b815290516001600160a01b03909216935063f4b8cb37925083916366dd0d5791600480820192602092909190829003018186803b15801561535f57600080fd5b505afa158015615373573d6000803e3d6000fd5b505050506040513d602081101561538957600080fd5b5051604080516001600160e01b031960e085901b1681526001909201600483015251602480830192600092919082900301818387803b1580156153cb57600080fd5b505af11580156153df573d6000803e3d6000fd5b50506040516001600160a01b03851692507fde96c8a6fe1c6b7977465341e8fa8874e1617aa754ccb9a32ffc45d15667cf8f9150600090a2610f3a565b6000546001600160a01b031633148061543f57506001546001600160a01b031633145b8061545457506002546001600160a01b031633145b8061546957506003546001600160a01b031633145b8061547e57506004546001600160a01b031633145b8061549357506005546001600160a01b031633145b806154a857506006546001600160a01b031633145b6154b157600080fd5b600a811080156154c557506154c533611457565b156155015760405162461bcd60e51b8152600401808060200182810382526036815260200180615de16036913960400191505060405180910390fd5b61550a8261503d565b61555b576040805162461bcd60e51b815260206004820152601d60248201527f28216973416e7947656e6573697341646472657373285f66726f6d2929000000604482015290519081900360640190fd5b60085460408051631e0808f560e21b81526001600160a01b0385811660048301529151919092169163782023d4916024808301926020929190829003018186803b1580156155a857600080fd5b505afa1580156155bc573d6000803e3d6000fd5b505050506040513d60208110156155d257600080fd5b5051156156105760405162461bcd60e51b8152600401808060200182810382526023815260200180615d9b6023913960400191505060405180910390fd5b615619826121cd565b61566a576040805162461bcd60e51b815260206004820152601760248201527f2862616c616e63654f66285f66726f6d29203d3d203029000000000000000000604482015290519081900360640190fd5b61567382611457565b15615a9d578015615a575760085460408051630931f27760e21b81526001600160a01b03858116600483015260248201859052915191909216916324c7c9dc91604480830192600092919082900301818387803b1580156156d357600080fd5b505af11580156156e7573d6000803e3d6000fd5b505050506156f482615c90565b1561584a5760095460408051632106abf360e11b81526001600160a01b0385811660048301529151919092169163420d57e691602480830192600092919082900301818387803b15801561574757600080fd5b505af115801561575b573d6000803e3d6000fd5b50506008546009546040805163e0cf13a360e01b815290516001600160a01b0393841695506362dfdea994508793600193169163e0cf13a3916004808301926020929190829003018186803b1580156157b357600080fd5b505afa1580156157c7573d6000803e3d6000fd5b505050506040513d60208110156157dd57600080fd5b5051604080516001600160e01b031960e087901b1681526001600160a01b039094166004850152919003602483015251604480830192600092919082900301818387803b15801561582d57600080fd5b505af1158015615841573d6000803e3d6000fd5b50505050615997565b6009546040805163efd4da9f60e01b81526001600160a01b0385811660048301529151919092169163efd4da9f91602480830192600092919082900301818387803b15801561589857600080fd5b505af11580156158ac573d6000803e3d6000fd5b50506008546009546040805163a3c092dd60e01b815290516001600160a01b039384169550635113404c94508793600193169163a3c092dd916004808301926020929190829003018186803b15801561590457600080fd5b505afa158015615918573d6000803e3d6000fd5b505050506040513d602081101561592e57600080fd5b5051604080516001600160e01b031960e087901b1681526001600160a01b039094166004850152919003602483015251604480830192600092919082900301818387803b15801561597e57600080fd5b505af1158015615992573d6000803e3d6000fd5b505050505b6008546040805163324884a960e01b81526001600160a01b0385811660048301819052925192937f933f4cdff1259b68b6bef69435776ccf345ec12edb9fdaacf499408bb0075d6f938693929091169163324884a9916024808301926020929190829003018186803b158015615a0c57600080fd5b505afa158015615a20573d6000803e3d6000fd5b505050506040513d6020811015615a3657600080fd5b50516040805192835260ff90911660208301528051918290030190a2615a98565b6040805162461bcd60e51b8152602060048201526011602482015270050726963652063616e6e6f74206265203607c1b604482015290519081900360640190fd5b615c2c565b615aa6826131be565b15615c2c576009546040805163bb96be0960e01b81526001600160a01b0385811660048301529151919092169163bb96be0991602480830192600092919082900301818387803b158015615af957600080fd5b505af1158015615b0d573d6000803e3d6000fd5b505060085460095460408051632758231b60e11b815290516001600160a01b0393841695506321ea432a945087936001931691634eb04636916004808301926020929190829003018186803b158015615b6557600080fd5b505afa158015615b79573d6000803e3d6000fd5b505050506040513d6020811015615b8f57600080fd5b5051604080516001600160e01b031960e087901b1681526001600160a01b039094166004850152919003602483015251604480830192600092919082900301818387803b158015615bdf57600080fd5b505af1158015615bf3573d6000803e3d6000fd5b50506040516001600160a01b03851692507f7f0ccf6984bbd751bead36cbc00ed99529f6067592114335d7ad05917a5223b29150600090a25b600854604080516301845e8360e61b81526001600160a01b0385811660048301526001602483015291519190921691636117a0c091604480830192600092919082900301818387803b15801561502157600080fd5b6007546001600160a01b031681565b6008546040805163324884a960e01b81526001600160a01b0384811660048301529151600093929092169163324884a991602480820192602092909190829003018186803b15801561152d57600080fdfe2877656956616c756520213d2070632e657468466565546f55706772616465546f4c6576656c332829292821697347656e65736973416464726573734c6576656c33285f67656e65736973416464726573736573546f4275726e5b695d29292870632e697347656e6573697341646472657373466f7253616c65285f67656e65736973416464726573736573546f4275726e5b695d29292870632e69734e6f726d616c41646472657373466f7253616c65285f66726f6d29292870632e697347656e6573697341646472657373466f7253616c65285f66726f6d29292821697347656e65736973416464726573734c6576656c324f7233285f66726f6d29297765695072696365203c20313020262620697347656e65736973416464726573734c6576656c324f7233286d73672e73656e646572292870632e616c6c6f7741646472657373546f44657374726f7947656e65736973285f67656e65736973416464726573736573546f4275726e5b695d2920213d205f66726f6d292877656956616c756520213d2070632e657468466565546f55706772616465546f4c6576656c3228292970632e616c6c6f775265636569766547656e657369735472616e7366657273285f66726f6d29282170632e616c6c6f775265636569766547656e657369735472616e7366657273285f746f29292170632e697347656e6573697341646472657373466f7253616c65285f66726f6d2929a26469706673582212208b7571f9556456f0591e1d9b3e01d9368bdcd8d722c8c679df91098cb672a9f564736f6c6343000601003300000000000000000000000090e340e2d11e6eb1d99e34d122d6fe0fef3213fd000000000000000000000000805385fba3f03a24d793721f4583be53d3abf86b

Deployed ByteCode

0x608060405234801561001057600080fd5b50600436106102955760003560e01c80637366881711610167578063d3560c74116100ce578063e8d5097f11610087578063e8d5097f146107b1578063eb0fbbad146107d7578063ecc517f1146107fd578063ed401ac314610829578063fdbc653014610855578063ffc4b1681461085d57610295565b8063d3560c74146106f9578063d42e1c2f14610727578063e09f58bd14610755578063e24126301461077b578063e2d03bca14610783578063e69919ae146107a957610295565b80639055a23e116101205780639055a23e1461068d578063919e0b79146106b3578063adb7898d146106bb578063b4c26870146106c3578063ca02eb9d146106cb578063cbb12e53146106f157610295565b8063736688171461056a57806376067e67146105965780637949fcf6146105c25780637bffdb0c146106755780638c2814cf1461067d5780638e01bfca1461068557610295565b8063388d61021161020b5780635e80969b116101c45780635e80969b146104c25780635ed33885146104e857806360744859146104f057806362591c58146104f857806368087c201461051e57806370a082311461054457610295565b8063388d61021461040e578063522c628f1461043a57806352ba171d1461046657806355df07a81461048c578063579b9a761461049457806357ec26d61461049c57610295565b806325bb06981161025d57806325bb06981461034057806325d998bb1461034857806327d4da0e146103805780632940187a146103a65780632fb933ff146103e057806336d69910146103e857610295565b806306baf2631461029a5780630a63361c146102c257806313b9f0c7146102e657806315e03506146102ee57806316e0459014610314575b600080fd5b6102c0600480360360208110156102b057600080fd5b50356001600160a01b0316610883565b005b6102ca6109ba565b604080516001600160a01b039092168252519081900360200190f35b6102c06109c9565b6102c06004803603602081101561030457600080fd5b50356001600160a01b03166109f1565b6102c06004803603604081101561032a57600080fd5b506001600160a01b038135169060200135610a23565b6102c0610f3e565b61036e6004803603602081101561035e57600080fd5b50356001600160a01b0316610f68565b60408051918252519081900360200190f35b6102c06004803603602081101561039657600080fd5b50356001600160a01b031661137d565b6103cc600480360360208110156103bc57600080fd5b50356001600160a01b03166113b0565b604080519115158252519081900360200190f35b6102ca611448565b6103cc600480360360208110156103fe57600080fd5b50356001600160a01b0316611457565b6103cc6004803603604081101561042457600080fd5b506001600160a01b03813516906020013561156d565b6102c06004803603604081101561045057600080fd5b506001600160a01b038135169060200135611980565b6102c06004803603602081101561047c57600080fd5b50356001600160a01b0316611a1b565b6102ca611e79565b6102c0611e88565b6102c0600480360360208110156104b257600080fd5b50356001600160a01b0316611eb2565b6102c0600480360360208110156104d857600080fd5b50356001600160a01b0316611ee5565b6102c0611f18565b6102ca611f42565b6102c06004803603602081101561050e57600080fd5b50356001600160a01b0316611f51565b6102c06004803603602081101561053457600080fd5b50356001600160a01b0316611f84565b61036e6004803603602081101561055a57600080fd5b50356001600160a01b03166121cd565b6102c06004803603604081101561058057600080fd5b506001600160a01b0381351690602001356122b1565b6102c0600480360360408110156105ac57600080fd5b506001600160a01b03813516906020013561232f565b6102c0600480360360408110156105d857600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561060357600080fd5b82018360208201111561061557600080fd5b8035906020019184602083028401116401000000008311171561063757600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506127ce945050505050565b6102c061315b565b6102c0613185565b6102ca6131af565b6103cc600480360360208110156106a357600080fd5b50356001600160a01b03166131be565b6102ca61324e565b6102c061325d565b6102ca613287565b6102c0600480360360208110156106e157600080fd5b50356001600160a01b0316613296565b6102ca6133cd565b6102c06004803603604081101561070f57600080fd5b506001600160a01b03813581169160200135166133dc565b6102c06004803603604081101561073d57600080fd5b506001600160a01b0381358116916020013516613f26565b6102c06004803603602081101561076b57600080fd5b50356001600160a01b0316614174565b6102c06141a7565b6102c06004803603602081101561079957600080fd5b50356001600160a01b03166141ce565b6102ca614485565b6102c0600480360360208110156107c757600080fd5b50356001600160a01b0316614494565b6103cc600480360360208110156107ed57600080fd5b50356001600160a01b031661503d565b6102c06004803603604081101561081357600080fd5b506001600160a01b0381351690602001356150c9565b6102c06004803603604081101561083f57600080fd5b506001600160a01b03813516906020013561541c565b6102ca615c81565b6103cc6004803603602081101561087357600080fd5b50356001600160a01b0316615c90565b6000546001600160a01b03163314806108a657506001546001600160a01b031633145b806108bb57506002546001600160a01b031633145b806108d057506003546001600160a01b031633145b806108e557506004546001600160a01b031633145b806108fa57506005546001600160a01b031633145b8061090f57506006546001600160a01b031633145b61091857600080fd5b60085460408051639ecdacd560e01b81526001600160a01b0384811660048301526000602483018190529251931692639ecdacd59260448084019391929182900301818387803b15801561096b57600080fd5b505af115801561097f573d6000803e3d6000fd5b50506040516001600160a01b03841692507fe7350d8803dc045eccf56b2301c0d420846527386dd46d244674a9d6f730313c9150600090a250565b6009546001600160a01b031681565b6007546001600160a01b031632141561029557600080546001600160a01b031916331790555b565b6007546001600160a01b031632141561029557600380546001600160a01b0319166001600160a01b0383161790555b50565b6000546001600160a01b0316331480610a4657506001546001600160a01b031633145b80610a5b57506002546001600160a01b031633145b80610a7057506003546001600160a01b031633145b80610a8557506004546001600160a01b031633145b80610a9a57506005546001600160a01b031633145b80610aaf57506006546001600160a01b031633145b610ab857600080fd5b610ac1826131be565b8015610b43575060085460408051631e0808f560e21b81526001600160a01b0385811660048301529151919092169163782023d4916024808301926020929190829003018186803b158015610b1557600080fd5b505afa158015610b29573d6000803e3d6000fd5b505050506040513d6020811015610b3f57600080fd5b5051155b15610295576008546040805163d050a90560e01b815290516000926001600160a01b03169163d050a905916004808301926020929190829003018186803b158015610b8d57600080fd5b505afa158015610ba1573d6000803e3d6000fd5b505050506040513d6020811015610bb757600080fd5b505160085460408051633238268960e01b815290516001600160a01b0390921691633238268991600480820192602092909190829003018186803b158015610bfe57600080fd5b505afa158015610c12573d6000803e3d6000fd5b505050506040513d6020811015610c2857600080fd5b5051019050818114610c7a576040805162461bcd60e51b81526020600482015260166024820152752877656956616c756520213d20746f74616c4665652960501b604482015290519081900360640190fd5b60085460408051633f109fcb60e11b81526001600160a01b03868116600483015243602483015291519190921691637e213f9691604480830192600092919082900301818387803b158015610cce57600080fd5b505af1158015610ce2573d6000803e3d6000fd5b50506008546040805163e5327c1360e01b81526001600160a01b03888116600483015260036024830152915191909216935063e5327c139250604480830192600092919082900301818387803b158015610d3b57600080fd5b505af1158015610d4f573d6000803e3d6000fd5b505060085460408051630748831f60e31b815290516001600160a01b0390921693506371273083925086918491633a4418f8916004808301926020929190829003018186803b158015610da157600080fd5b505afa158015610db5573d6000803e3d6000fd5b505050506040513d6020811015610dcb57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b158015610e1b57600080fd5b505af1158015610e2f573d6000803e3d6000fd5b505060085460408051635a0f903760e11b815290516001600160a01b0390921693506312e447329250839163b41f206e91600480820192602092909190829003018186803b158015610e8057600080fd5b505afa158015610e94573d6000803e3d6000fd5b505050506040513d6020811015610eaa57600080fd5b5051604080516001600160e01b031960e085901b1681526001909201600483015251602480830192600092919082900301818387803b158015610eec57600080fd5b505af1158015610f00573d6000803e3d6000fd5b50506040516001600160a01b03861692507fde96c8a6fe1c6b7977465341e8fa8874e1617aa754ccb9a32ffc45d15667cf8f9150600090a2505b5050565b6007546001600160a01b031632141561029557600180546001600160a01b031916331790556109ef565b6000610f7382611457565b15611260576008546040805163a794676f60e01b81526001600160a01b0385811660048301529151600093929092169163a794676f91602480820192602092909190829003018186803b158015610fc957600080fd5b505afa158015610fdd573d6000803e3d6000fd5b505050506040513d6020811015610ff357600080fd5b505160085460408051631041ab4f60e11b81529051439390930393506001600160a01b0390911691632083569e91600480820192602092909190829003018186803b15801561104157600080fd5b505afa158015611055573d6000803e3d6000fd5b505050506040513d602081101561106b57600080fd5b505181106110f557600854604080516327e235e360e01b81526001600160a01b038681166004830152915191909216916327e235e3916024808301926020929190829003018186803b1580156110c057600080fd5b505afa1580156110d4573d6000803e3d6000fd5b505050506040513d60208110156110ea57600080fd5b505191506113789050565b6008546040805163147aab3160e21b8152905183926001600160a01b0316916351eaacc4916004808301926020929190829003018186803b15801561113957600080fd5b505afa15801561114d573d6000803e3d6000fd5b505050506040513d602081101561116357600080fd5b505160085460408051630748831f60e31b8152905193909202926001600160a01b0390911691633a4418f8916004808301926020929190829003018186803b1580156111ae57600080fd5b505afa1580156111c2573d6000803e3d6000fd5b505050506040513d60208110156111d857600080fd5b5051600854604080516327e235e360e01b81526001600160a01b038881166004830152915194909303939116916327e235e3916024808301926020929190829003018186803b15801561122a57600080fd5b505afa15801561123e573d6000803e3d6000fd5b505050506040513d602081101561125457600080fd5b50510391506113789050565b611269826131be565b806112ef57506008546040805163324884a960e01b81526001600160a01b0385811660048301529151919092169163324884a9916024808301926020929190829003018186803b1580156112bc57600080fd5b505afa1580156112d0573d6000803e3d6000fd5b505050506040513d60208110156112e657600080fd5b505160ff166004145b156112fc57506000611378565b600854604080516327e235e360e01b81526001600160a01b038581166004830152915191909216916327e235e3916024808301926020929190829003018186803b15801561134957600080fd5b505afa15801561135d573d6000803e3d6000fd5b505050506040513d602081101561137357600080fd5b505190505b919050565b6007546001600160a01b031632141561029557600080546001600160a01b0319166001600160a01b038316179055610a20565b6008546040805163324884a960e01b81526001600160a01b0384811660048301529151600093929092169163324884a991602480820192602092909190829003018186803b15801561140157600080fd5b505afa158015611415573d6000803e3d6000fd5b505050506040513d602081101561142b57600080fd5b505160ff166002141561144057506001611378565b506000611378565b6006546001600160a01b031681565b6008546040805163324884a960e01b81526001600160a01b0384811660048301529151600093929092169163324884a991602480820192602092909190829003018186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d60208110156114d257600080fd5b505160ff166002148061156057506008546040805163324884a960e01b81526001600160a01b0385811660048301529151919092169163324884a9916024808301926020929190829003018186803b15801561152d57600080fd5b505afa158015611541573d6000803e3d6000fd5b505050506040513d602081101561155757600080fd5b505160ff166003145b1561144057506001611378565b600080546001600160a01b031633148061159157506001546001600160a01b031633145b806115a657506002546001600160a01b031633145b806115bb57506003546001600160a01b031633145b806115d057506004546001600160a01b031633145b806115e557506005546001600160a01b031633145b806115fa57506006546001600160a01b031633145b61160357600080fd5b60085460408051631e0808f560e21b81526001600160a01b0386811660048301529151919092169163782023d4916024808301926020929190829003018186803b15801561165057600080fd5b505afa158015611664573d6000803e3d6000fd5b505050506040513d602081101561167a57600080fd5b5051156116b85760405162461bcd60e51b8152600401808060200182810382526023815260200180615d9b6023913960400191505060405180910390fd5b60085460408051635dd5e70160e01b81526001600160a01b03868116600483015291519190921691635dd5e701916024808301926020929190829003018186803b15801561170557600080fd5b505afa158015611719573d6000803e3d6000fd5b505050506040513d602081101561172f57600080fd5b50511561176d5760405162461bcd60e51b8152600401808060200182810382526022815260200180615d796022913960400191505060405180910390fd5b8161177784610f68565b1061029557600854604080516327e235e360e01b81526001600160a01b038681166004830152915191909216916371273083918691869185916327e235e3916024808301926020929190829003018186803b1580156117d557600080fd5b505afa1580156117e9573d6000803e3d6000fd5b505050506040513d60208110156117ff57600080fd5b5051604080516001600160e01b031960e087901b1681526001600160a01b039094166004850152919003602483015251604480830192600092919082900301818387803b15801561184f57600080fd5b505af1158015611863573d6000803e3d6000fd5b50506008546040805163959af4f360e01b815290516001600160a01b03909216935063208b99cf92508591849163959af4f3916004808301926020929190829003018186803b1580156118b557600080fd5b505afa1580156118c9573d6000803e3d6000fd5b505050506040513d60208110156118df57600080fd5b5051604080516001600160e01b031960e086901b16815292909101600483015251602480830192600092919082900301818387803b15801561192057600080fd5b505af1158015611934573d6000803e3d6000fd5b50506040805185815290516001600160a01b03871693507fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca592509081900360200190a250600192915050565b806104d21461198e57600080fd5b6007546001600160a01b031633141561029557600980546001600160a01b0319166001600160a01b03848116919091179182905560408051631087cce760e21b81529051929091169163421f339c9160048082019260009290919082900301818387803b1580156119fe57600080fd5b505af1158015611a12573d6000803e3d6000fd5b50505050610f3a565b6000546001600160a01b0316331480611a3e57506001546001600160a01b031633145b80611a5357506002546001600160a01b031633145b80611a6857506003546001600160a01b031633145b80611a7d57506004546001600160a01b031633145b80611a9257506005546001600160a01b031633145b80611aa757506006546001600160a01b031633145b611ab057600080fd5b6008546040805163324884a960e01b81526001600160a01b0384811660048301529151919092169163324884a9916024808301926020929190829003018186803b158015611afd57600080fd5b505afa158015611b11573d6000803e3d6000fd5b505050506040513d6020811015611b2757600080fd5b505160ff166004148015611bb1575060085460408051631e0808f560e21b81526001600160a01b0384811660048301529151919092169163782023d4916024808301926020929190829003018186803b158015611b8357600080fd5b505afa158015611b97573d6000803e3d6000fd5b505050506040513d6020811015611bad57600080fd5b5051155b156102955760085460408051633f109fcb60e11b81526001600160a01b03848116600483015243602483015291519190921691637e213f9691604480830192600092919082900301818387803b158015611c0a57600080fd5b505af1158015611c1e573d6000803e3d6000fd5b50506008546040805163e5327c1360e01b81526001600160a01b03868116600483015260036024830152915191909216935063e5327c139250604480830192600092919082900301818387803b158015611c7757600080fd5b505af1158015611c8b573d6000803e3d6000fd5b505060085460408051630748831f60e31b815290516001600160a01b0390921693506371273083925084918491633a4418f8916004808301926020929190829003018186803b158015611cdd57600080fd5b505afa158015611cf1573d6000803e3d6000fd5b505050506040513d6020811015611d0757600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b158015611d5757600080fd5b505af1158015611d6b573d6000803e3d6000fd5b50506008546040805163ed054ea560e01b815290516001600160a01b039092169350630e7c5d479250839163ed054ea591600480820192602092909190829003018186803b158015611dbc57600080fd5b505afa158015611dd0573d6000803e3d6000fd5b505050506040513d6020811015611de657600080fd5b5051604080516001600160e01b031960e085901b1681526001909201600483015251602480830192600092919082900301818387803b158015611e2857600080fd5b505af1158015611e3c573d6000803e3d6000fd5b50506040516001600160a01b03841692507fde96c8a6fe1c6b7977465341e8fa8874e1617aa754ccb9a32ffc45d15667cf8f9150600090a2610a20565b6005546001600160a01b031681565b6007546001600160a01b031632141561029557600280546001600160a01b031916331790556109ef565b6007546001600160a01b031632141561029557600580546001600160a01b0319166001600160a01b038316179055610a20565b6007546001600160a01b031632141561029557600480546001600160a01b0319166001600160a01b038316179055610a20565b6007546001600160a01b031632141561029557600580546001600160a01b031916331790556109ef565b6001546001600160a01b031681565b6007546001600160a01b031632141561029557600280546001600160a01b0319166001600160a01b038316179055610a20565b6000546001600160a01b0316331480611fa757506001546001600160a01b031633145b80611fbc57506002546001600160a01b031633145b80611fd157506003546001600160a01b031633145b80611fe657506004546001600160a01b031633145b80611ffb57506005546001600160a01b031633145b8061201057506006546001600160a01b031633145b61201957600080fd5b6120228161503d565b15612074576040805162461bcd60e51b815260206004820152601f60248201527f696620286973416e7947656e6573697341646472657373285f66726f6d292900604482015290519081900360640190fd5b60085460408051633870c3c360e21b81526001600160a01b0384811660048301529151919092169163e1c30f0c916024808301926020929190829003018186803b1580156120c157600080fd5b505afa1580156120d5573d6000803e3d6000fd5b505050506040513d60208110156120eb57600080fd5b5051156121295760405162461bcd60e51b8152600401808060200182810382526026815260200180615e876026913960400191505060405180910390fd5b60085460408051639ecdacd560e01b81526001600160a01b0384811660048301526001602483015291519190921691639ecdacd591604480830192600092919082900301818387803b15801561217e57600080fd5b505af1158015612192573d6000803e3d6000fd5b50506040516001600160a01b03841692507f0412df9226744ac4be5600a9b7cd22de690645a8472e7c78f5a50effcef9f8b79150600090a250565b60006121d8826131be565b8061225e57506008546040805163324884a960e01b81526001600160a01b0385811660048301529151919092169163324884a9916024808301926020929190829003018186803b15801561222b57600080fd5b505afa15801561223f573d6000803e3d6000fd5b505050506040513d602081101561225557600080fd5b505160ff166004145b156112fc57600860009054906101000a90046001600160a01b03166001600160a01b0316633a4418f86040518163ffffffff1660e01b815260040160206040518083038186803b15801561134957600080fd5b806104d2146122bf57600080fd5b6007546001600160a01b031633141561029557600880546001600160a01b0319166001600160a01b03848116919091179182905560408051631087cce760e21b81529051929091169163421f339c9160048082019260009290919082900301818387803b1580156119fe57600080fd5b6000546001600160a01b031633148061235257506001546001600160a01b031633145b8061236757506002546001600160a01b031633145b8061237c57506003546001600160a01b031633145b8061239157506004546001600160a01b031633145b806123a657506005546001600160a01b031633145b806123bb57506006546001600160a01b031633145b6123c457600080fd5b6123cd826131be565b801561244f575060085460408051631e0808f560e21b81526001600160a01b0385811660048301529151919092169163782023d4916024808301926020929190829003018186803b15801561242157600080fd5b505afa158015612435573d6000803e3d6000fd5b505050506040513d602081101561244b57600080fd5b5051155b1561029557600860009054906101000a90046001600160a01b03166001600160a01b031663323826896040518163ffffffff1660e01b815260040160206040518083038186803b1580156124a257600080fd5b505afa1580156124b6573d6000803e3d6000fd5b505050506040513d60208110156124cc57600080fd5b5051811461250b5760405162461bcd60e51b815260040180806020018281038252602a815260200180615e5d602a913960400191505060405180910390fd5b60085460408051633f109fcb60e11b81526001600160a01b03858116600483015243602483015291519190921691637e213f9691604480830192600092919082900301818387803b15801561255f57600080fd5b505af1158015612573573d6000803e3d6000fd5b50506008546040805163e5327c1360e01b81526001600160a01b03878116600483015260026024830152915191909216935063e5327c139250604480830192600092919082900301818387803b1580156125cc57600080fd5b505af11580156125e0573d6000803e3d6000fd5b505060085460408051630748831f60e31b815290516001600160a01b0390921693506371273083925085918491633a4418f8916004808301926020929190829003018186803b15801561263257600080fd5b505afa158015612646573d6000803e3d6000fd5b505050506040513d602081101561265c57600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b1580156126ac57600080fd5b505af11580156126c0573d6000803e3d6000fd5b505060085460408051632343992d60e11b815290516001600160a01b03909216935063834046dc92508391634687325a91600480820192602092909190829003018186803b15801561271157600080fd5b505afa158015612725573d6000803e3d6000fd5b505050506040513d602081101561273b57600080fd5b5051604080516001600160e01b031960e085901b1681526001909201600483015251602480830192600092919082900301818387803b15801561277d57600080fd5b505af1158015612791573d6000803e3d6000fd5b50506040516001600160a01b03851692507f25f51c6bcb054917efc74db09bb453e792bfd7d9f2d331a42a4f45f27351ce3d9150600090a2610f3a565b6000546001600160a01b03163314806127f157506001546001600160a01b031633145b8061280657506002546001600160a01b031633145b8061281b57506003546001600160a01b031633145b8061283057506004546001600160a01b031633145b8061284557506005546001600160a01b031633145b8061285a57506006546001600160a01b031633145b61286357600080fd5b60005b81518160ff1610156131565760085482516001600160a01b03808616921690636baf966d90859060ff861690811061289a57fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156128e857600080fd5b505afa1580156128fc573d6000803e3d6000fd5b505050506040513d602081101561291257600080fd5b50516001600160a01b0316146129595760405162461bcd60e51b8152600401808060200182810382526046815260200180615e176046913960600191505060405180910390fd5b60085482516001600160a01b039091169063782023d490849060ff851690811061297f57fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156129cd57600080fd5b505afa1580156129e1573d6000803e3d6000fd5b505050506040513d60208110156129f757600080fd5b505115612a355760405162461bcd60e51b8152600401808060200182810382526038815260200180615d416038913960400191505060405180910390fd5b612a54828260ff1681518110612a4757fe5b6020026020010151615c90565b612a8f5760405162461bcd60e51b8152600401808060200182810382526035815260200180615d0c6035913960400191505060405180910390fd5b60085482516001600160a01b039091169063e5327c1390849060ff8516908110612ab557fe5b602002602001015160006040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b031681526020018260ff16815260200192505050600060405180830381600087803b158015612b1157600080fd5b505af1158015612b25573d6000803e3d6000fd5b50506008548451600093506001600160a01b0390911691506327e235e390859060ff8616908110612b5257fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015612ba057600080fd5b505afa158015612bb4573d6000803e3d6000fd5b505050506040513d6020811015612bca57600080fd5b505160085484519192506001600160a01b031690637127308390859060ff8616908110612bf357fe5b602002602001015160006040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015612c4c57600080fd5b505af1158015612c60573d6000803e3d6000fd5b505060085485516001600160a01b039091169250637e213f969150859060ff8616908110612c8a57fe5b602002602001015160006040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015612ce357600080fd5b505af1158015612cf7573d6000803e3d6000fd5b505060085485516001600160a01b039091169250636117a0c09150859060ff8616908110612d2157fe5b602002602001015160006040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b031681526020018215151515815260200192505050600060405180830381600087803b158015612d7e57600080fd5b505af1158015612d92573d6000803e3d6000fd5b505060085485516001600160a01b0390911692506324c7c9dc9150859060ff8616908110612dbc57fe5b602002602001015160006040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015612e1557600080fd5b505af1158015612e29573d6000803e3d6000fd5b505060085485516001600160a01b039091169250638eb84dd29150859060ff8616908110612e5357fe5b602002602001015160006040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001826001600160a01b03166001600160a01b0316815260200192505050600060405180830381600087803b158015612ebe57600080fd5b505af1158015612ed2573d6000803e3d6000fd5b505060085460408051631430e3dd60e01b815290516001600160a01b039092169350639db86dc992508391631430e3dd91600480820192602092909190829003018186803b158015612f2357600080fd5b505afa158015612f37573d6000803e3d6000fd5b505050506040513d6020811015612f4d57600080fd5b5051604080516001600160e01b031960e085901b1681526001909201600483015251602480830192600092919082900301818387803b158015612f8f57600080fd5b505af1158015612fa3573d6000803e3d6000fd5b505060085460408051630ae0e84560e01b815290516001600160a01b03909216935063492f4a6392508391630ae0e84591600480820192602092909190829003018186803b158015612ff457600080fd5b505afa158015613008573d6000803e3d6000fd5b505050506040513d602081101561301e57600080fd5b5051604080516001600160e01b031960e085901b1681526001909201600483015251602480830192600092919082900301818387803b15801561306057600080fd5b505af1158015613074573d6000803e3d6000fd5b505060085460408051638c19011160e01b815290516001600160a01b03909216935063ce8b0afb925084918491638c190111916004808301926020929190829003018186803b1580156130c657600080fd5b505afa1580156130da573d6000803e3d6000fd5b505050506040513d60208110156130f057600080fd5b5051604080516001600160e01b031960e086901b16815292909101600483015251602480830192600092919082900301818387803b15801561313157600080fd5b505af1158015613145573d6000803e3d6000fd5b505060019093019250612866915050565b505050565b6007546001600160a01b031632141561029557600380546001600160a01b031916331790556109ef565b6007546001600160a01b031632141561029557600480546001600160a01b031916331790556109ef565b6004546001600160a01b031681565b6008546040805163324884a960e01b81526001600160a01b0384811660048301529151600093929092169163324884a991602480820192602092909190829003018186803b15801561320f57600080fd5b505afa158015613223573d6000803e3d6000fd5b505050506040513d602081101561323957600080fd5b505160ff166001141561144057506001611378565b6000546001600160a01b031681565b6007546001600160a01b031632141561029557600680546001600160a01b031916331790556109ef565b6002546001600160a01b031681565b6000546001600160a01b03163314806132b957506001546001600160a01b031633145b806132ce57506002546001600160a01b031633145b806132e357506003546001600160a01b031633145b806132f857506004546001600160a01b031633145b8061330d57506005546001600160a01b031633145b8061332257506006546001600160a01b031633145b61332b57600080fd5b6008546040805163475c26e960e11b81526001600160a01b0384811660048301526000602483018190529251931692638eb84dd29260448084019391929182900301818387803b15801561337e57600080fd5b505af1158015613392573d6000803e3d6000fd5b50506040516001600160a01b03841692507f2263d898cb6c9fee937fbc6fd4217347263549929ec4ccc3f8501b1a5943846a9150600090a250565b6003546001600160a01b031681565b6000546001600160a01b03163314806133ff57506001546001600160a01b031633145b8061341457506002546001600160a01b031633145b8061342957506003546001600160a01b031633145b8061343e57506004546001600160a01b031633145b8061345357506005546001600160a01b031633145b8061346857506006546001600160a01b031633145b61347157600080fd5b61347a82611457565b6134b55760405162461bcd60e51b8152600401808060200182810382526023815260200180615dbe6023913960400191505060405180910390fd5b806001600160a01b0316826001600160a01b03161415613515576040805162461bcd60e51b81526020600482015260166024820152752821285f66726f6d20213d205f61646472657373292960501b604482015290519081900360640190fd5b60085460408051633870c3c360e21b81526001600160a01b0384811660048301529151919092169163e1c30f0c916024808301926020929190829003018186803b15801561356257600080fd5b505afa158015613576573d6000803e3d6000fd5b505050506040513d602081101561358c57600080fd5b50516135c95760405162461bcd60e51b8152600401808060200182810382526027815260200180615ead6027913960400191505060405180910390fd5b60085460408051631e0808f560e21b81526001600160a01b0385811660048301529151919092169163782023d4916024808301926020929190829003018186803b15801561361657600080fd5b505afa15801561362a573d6000803e3d6000fd5b505050506040513d602081101561364057600080fd5b50511561367e5760405162461bcd60e51b8152600401808060200182810382526023815260200180615d9b6023913960400191505060405180910390fd5b6000613689826121cd565b11156136d3576040805162461bcd60e51b81526020600482015260146024820152732862616c616e63654f66285f746f29203e20302960601b604482015290519081900360640190fd5b6136dc8161503d565b1561372e576040805162461bcd60e51b815260206004820152601a60248201527f286973416e7947656e6573697341646472657373285f746f2929000000000000604482015290519081900360640190fd5b600854604080516327e235e360e01b81526001600160a01b03858116600483015291519190921691637127308391849184916327e235e391602480820192602092909190829003018186803b15801561378657600080fd5b505afa15801561379a573d6000803e3d6000fd5b505050506040513d60208110156137b057600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b15801561380057600080fd5b505af1158015613814573d6000803e3d6000fd5b505060085460408051637127308360e01b81526001600160a01b038781166004830152600060248301819052925193169450637127308393506044808201939182900301818387803b15801561386957600080fd5b505af115801561387d573d6000803e3d6000fd5b50506008546040805163a794676f60e01b81526001600160a01b0387811660048301529151919092169350637e213f9692508491849163a794676f91602480820192602092909190829003018186803b1580156138d957600080fd5b505afa1580156138ed573d6000803e3d6000fd5b505050506040513d602081101561390357600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b15801561395357600080fd5b505af1158015613967573d6000803e3d6000fd5b505060085460408051633f109fcb60e11b81526001600160a01b038781166004830152600060248301819052925193169450637e213f9693506044808201939182900301818387803b1580156139bc57600080fd5b505af11580156139d0573d6000803e3d6000fd5b50506008546040805163324884a960e01b81526001600160a01b038781166004830152915191909216935063e5327c1392508491849163324884a991602480820192602092909190829003018186803b158015613a2c57600080fd5b505afa158015613a40573d6000803e3d6000fd5b505050506040513d6020811015613a5657600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260ff909116602483015251604480830192600092919082900301818387803b158015613aa857600080fd5b505af1158015613abc573d6000803e3d6000fd5b50506008546040805163e5327c1360e01b81526001600160a01b03878116600483015260006024830181905292519316945063e5327c1393506044808201939182900301818387803b158015613b1157600080fd5b505af1158015613b25573d6000803e3d6000fd5b505060085460408051630931f27760e21b81526001600160a01b0387811660048301526000602483018190529251931694506324c7c9dc93506044808201939182900301818387803b158015613b7a57600080fd5b505af1158015613b8e573d6000803e3d6000fd5b5050600854604080516301845e8360e61b81526001600160a01b038781166004830152600060248301819052925193169450636117a0c093506044808201939182900301818387803b158015613be357600080fd5b505af1158015613bf7573d6000803e3d6000fd5b50506008546040805163475c26e960e11b81526001600160a01b038681166004830152600060248301819052925193169450638eb84dd293506044808201939182900301818387803b158015613c4c57600080fd5b505af1158015613c60573d6000803e3d6000fd5b50506008546040805163475c26e960e11b81526001600160a01b038781166004830152600060248301819052925193169450638eb84dd293506044808201939182900301818387803b158015613cb557600080fd5b505af1158015613cc9573d6000803e3d6000fd5b505060085460408051639ecdacd560e01b81526001600160a01b038781166004830152600060248301819052925193169450639ecdacd593506044808201939182900301818387803b158015613d1e57600080fd5b505af1158015613d32573d6000803e3d6000fd5b505060085460408051639ecdacd560e01b81526001600160a01b038681166004830152600060248301819052925193169450639ecdacd593506044808201939182900301818387803b158015613d8757600080fd5b505af1158015613d9b573d6000803e3d6000fd5b50506008546040805163c8db1dfb60e01b815290516001600160a01b039092169350636e01eebf9250839163c8db1dfb91600480820192602092909190829003018186803b158015613dec57600080fd5b505afa158015613e00573d6000803e3d6000fd5b505050506040513d6020811015613e1657600080fd5b5051604080516001600160e01b031960e085901b1681526001909201600483015251602480830192600092919082900301818387803b158015613e5857600080fd5b505af1158015613e6c573d6000803e3d6000fd5b5050600854604080516327e235e360e01b81526001600160a01b0380871660048301819052925192955087811694507fee7d92b81df7f3765a7a94daa038cdf6a79eea8c67e639d910c796258e60a0ac9316916327e235e391602480820192602092909190829003018186803b158015613ee557600080fd5b505afa158015613ef9573d6000803e3d6000fd5b505050506040513d6020811015613f0f57600080fd5b505160408051918252519081900360200190a35050565b6000546001600160a01b0316331480613f4957506001546001600160a01b031633145b80613f5e57506002546001600160a01b031633145b80613f7357506003546001600160a01b031633145b80613f8857506004546001600160a01b031633145b80613f9d57506005546001600160a01b031633145b80613fb257506006546001600160a01b031633145b613fbb57600080fd5b613fc482615c90565b614015576040805162461bcd60e51b815260206004820181905260248201527f2821697347656e65736973416464726573734c6576656c33285f66726f6d2929604482015290519081900360640190fd5b60085460408051631e0808f560e21b81526001600160a01b0385811660048301529151919092169163782023d4916024808301926020929190829003018186803b15801561406257600080fd5b505afa158015614076573d6000803e3d6000fd5b505050506040513d602081101561408c57600080fd5b5051156140ca5760405162461bcd60e51b8152600401808060200182810382526023815260200180615d9b6023913960400191505060405180910390fd5b6008546040805163475c26e960e11b81526001600160a01b038581166004830152848116602483015291519190921691638eb84dd291604480830192600092919082900301818387803b15801561412057600080fd5b505af1158015614134573d6000803e3d6000fd5b50506040516001600160a01b038085169350851691507f5f64e9e37e747b504e4a092fb841b2e337d1cc05cb42dbfb06301a28da47163090600090a35050565b6007546001600160a01b031632141561029557600180546001600160a01b0319166001600160a01b038316179055610a20565b6007546001600160a01b031661029557600780546001600160a01b031916331790556109ef565b6000546001600160a01b03163314806141f157506001546001600160a01b031633145b8061420657506002546001600160a01b031633145b8061421b57506003546001600160a01b031633145b8061423057506004546001600160a01b031633145b8061424557506005546001600160a01b031633145b8061425a57506006546001600160a01b031633145b61426357600080fd5b61426c8161503d565b6142bd576040805162461bcd60e51b815260206004820152601d60248201527f28216973416e7947656e6573697341646472657373285f66726f6d2929000000604482015290519081900360640190fd5b60085460408051631e0808f560e21b81526001600160a01b0384811660048301529151919092169163782023d4916024808301926020929190829003018186803b15801561430a57600080fd5b505afa15801561431e573d6000803e3d6000fd5b505050506040513d602081101561433457600080fd5b50516143715760405162461bcd60e51b8152600401808060200182810382526023815260200180615ed46023913960400191505060405180910390fd5b60085460408051630931f27760e21b81526001600160a01b03848116600483015260006024830181905292519316926324c7c9dc9260448084019391929182900301818387803b1580156143c457600080fd5b505af11580156143d8573d6000803e3d6000fd5b5050600854604080516301845e8360e61b81526001600160a01b038681166004830152600060248301819052925193169450636117a0c093506044808201939182900301818387803b15801561442d57600080fd5b505af1158015614441573d6000803e3d6000fd5b5050505061444e81614494565b6040516001600160a01b038216907fd845195bcf18cb22dcacb0b3a23aa06d2573b2508c9f47f9dc96bce2f5381b5490600090a250565b6008546001600160a01b031681565b6000546001600160a01b03163314806144b757506001546001600160a01b031633145b806144cc57506002546001600160a01b031633145b806144e157506003546001600160a01b031633145b806144f657506004546001600160a01b031633145b8061450b57506005546001600160a01b031633145b8061452057506006546001600160a01b031633145b61452957600080fd5b614532816131be565b156148e55760006001600960009054906101000a90046001600160a01b03166001600160a01b0316634eb046366040518163ffffffff1660e01b815260040160206040518083038186803b15801561458957600080fd5b505afa15801561459d573d6000803e3d6000fd5b505050506040513d60208110156145b357600080fd5b5051039050801561480c5760095460408051631d7b351b60e21b81526004810184905290516000926001600160a01b0316916375ecd46c916024808301926020929190829003018186803b15801561460a57600080fd5b505afa15801561461e573d6000803e3d6000fd5b505050506040513d602081101561463457600080fd5b50516008546040805163e768ad7b60e01b81526001600160a01b03878116600483015291519394509116916321ea432a918491849163e768ad7b916024808301926020929190829003018186803b15801561468e57600080fd5b505afa1580156146a2573d6000803e3d6000fd5b505050506040513d60208110156146b857600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b15801561470857600080fd5b505af115801561471c573d6000803e3d6000fd5b50506009546008546040805163e768ad7b60e01b81526001600160a01b0389811660048301529151938216955063cde29b5c945091169163e768ad7b91602480820192602092909190829003018186803b15801561477957600080fd5b505afa15801561478d573d6000803e3d6000fd5b505050506040513d60208110156147a357600080fd5b5051604080516001600160e01b031960e085901b16815260048101929092526001600160a01b038516602483015251604480830192600092919082900301818387803b1580156147f257600080fd5b505af1158015614806573d6000803e3d6000fd5b50505050505b600854604080516310f5219560e11b81526001600160a01b03858116600483015260006024830181905292519316926321ea432a9260448084019391929182900301818387803b15801561485f57600080fd5b505af1158015614873573d6000803e3d6000fd5b50505050600960009054906101000a90046001600160a01b03166001600160a01b031663fc0b1fb66040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156148c757600080fd5b505af11580156148db573d6000803e3d6000fd5b5050505050610a20565b6148ee816113b0565b15614c835760006001600960009054906101000a90046001600160a01b03166001600160a01b031663a3c092dd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561494557600080fd5b505afa158015614959573d6000803e3d6000fd5b505050506040513d602081101561496f57600080fd5b50510390508015614bc85760095460408051633e100d1160e11b81526004810184905290516000926001600160a01b031691637c201a22916024808301926020929190829003018186803b1580156149c657600080fd5b505afa1580156149da573d6000803e3d6000fd5b505050506040513d60208110156149f057600080fd5b50516008546040805163c68cfc1560e01b81526001600160a01b0387811660048301529151939450911691635113404c918491849163c68cfc15916024808301926020929190829003018186803b158015614a4a57600080fd5b505afa158015614a5e573d6000803e3d6000fd5b505050506040513d6020811015614a7457600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b158015614ac457600080fd5b505af1158015614ad8573d6000803e3d6000fd5b50506009546008546040805163c68cfc1560e01b81526001600160a01b0389811660048301529151938216955063db22b4c8945091169163c68cfc1591602480820192602092909190829003018186803b158015614b3557600080fd5b505afa158015614b49573d6000803e3d6000fd5b505050506040513d6020811015614b5f57600080fd5b5051604080516001600160e01b031960e085901b16815260048101929092526001600160a01b038516602483015251604480830192600092919082900301818387803b158015614bae57600080fd5b505af1158015614bc2573d6000803e3d6000fd5b50505050505b60085460408051631444d01360e21b81526001600160a01b0385811660048301526000602483018190529251931692635113404c9260448084019391929182900301818387803b158015614c1b57600080fd5b505af1158015614c2f573d6000803e3d6000fd5b50505050600960009054906101000a90046001600160a01b03166001600160a01b0316631b16d78d6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156148c757600080fd5b614c8c81615c90565b15610a205760006001600960009054906101000a90046001600160a01b03166001600160a01b031663e0cf13a36040518163ffffffff1660e01b815260040160206040518083038186803b158015614ce357600080fd5b505afa158015614cf7573d6000803e3d6000fd5b505050506040513d6020811015614d0d57600080fd5b50510390508015614f6657600954604080516336b49b7960e01b81526004810184905290516000926001600160a01b0316916336b49b79916024808301926020929190829003018186803b158015614d6457600080fd5b505afa158015614d78573d6000803e3d6000fd5b505050506040513d6020811015614d8e57600080fd5b50516008546040805163a094db5360e01b81526001600160a01b03878116600483015291519394509116916362dfdea9918491849163a094db53916024808301926020929190829003018186803b158015614de857600080fd5b505afa158015614dfc573d6000803e3d6000fd5b505050506040513d6020811015614e1257600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039093166004840152602483019190915251604480830192600092919082900301818387803b158015614e6257600080fd5b505af1158015614e76573d6000803e3d6000fd5b50506009546008546040805163a094db5360e01b81526001600160a01b038981166004830152915193821695506349c334f2945091169163a094db5391602480820192602092909190829003018186803b158015614ed357600080fd5b505afa158015614ee7573d6000803e3d6000fd5b505050506040513d6020811015614efd57600080fd5b5051604080516001600160e01b031960e085901b16815260048101929092526001600160a01b038516602483015251604480830192600092919082900301818387803b158015614f4c57600080fd5b505af1158015614f60573d6000803e3d6000fd5b50505050505b600854604080516362dfdea960e01b81526001600160a01b03858116600483015260006024830181905292519316926362dfdea99260448084019391929182900301818387803b158015614fb957600080fd5b505af1158015614fcd573d6000803e3d6000fd5b50505050600960009054906101000a90046001600160a01b03166001600160a01b0316630e29d6aa6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561502157600080fd5b505af1158015615035573d6000803e3d6000fd5b505050505050565b6008546040805163324884a960e01b81526001600160a01b03848116600483015291516000938493169163324884a9916024808301926020929190829003018186803b15801561508c57600080fd5b505afa1580156150a0573d6000803e3d6000fd5b505050506040513d60208110156150b657600080fd5b505160ff16111561144057506001611378565b6000546001600160a01b03163314806150ec57506001546001600160a01b031633145b8061510157506002546001600160a01b031633145b8061511657506003546001600160a01b031633145b8061512b57506004546001600160a01b031633145b8061514057506005546001600160a01b031633145b8061515557506006546001600160a01b031633145b61515e57600080fd5b615167826113b0565b80156151e9575060085460408051631e0808f560e21b81526001600160a01b0385811660048301529151919092169163782023d4916024808301926020929190829003018186803b1580156151bb57600080fd5b505afa1580156151cf573d6000803e3d6000fd5b505050506040513d60208110156151e557600080fd5b5051155b1561029557600860009054906101000a90046001600160a01b03166001600160a01b031663d050a9056040518163ffffffff1660e01b815260040160206040518083038186803b15801561523c57600080fd5b505afa158015615250573d6000803e3d6000fd5b505050506040513d602081101561526657600080fd5b505181146152a55760405162461bcd60e51b815260040180806020018281038252602a815260200180615ce2602a913960400191505060405180910390fd5b6008546040805163e5327c1360e01b81526001600160a01b038581166004830152600360248301529151919092169163e5327c1391604480830192600092919082900301818387803b1580156152fa57600080fd5b505af115801561530e573d6000803e3d6000fd5b5050600854604080516366dd0d5760e01b815290516001600160a01b03909216935063f4b8cb37925083916366dd0d5791600480820192602092909190829003018186803b15801561535f57600080fd5b505afa158015615373573d6000803e3d6000fd5b505050506040513d602081101561538957600080fd5b5051604080516001600160e01b031960e085901b1681526001909201600483015251602480830192600092919082900301818387803b1580156153cb57600080fd5b505af11580156153df573d6000803e3d6000fd5b50506040516001600160a01b03851692507fde96c8a6fe1c6b7977465341e8fa8874e1617aa754ccb9a32ffc45d15667cf8f9150600090a2610f3a565b6000546001600160a01b031633148061543f57506001546001600160a01b031633145b8061545457506002546001600160a01b031633145b8061546957506003546001600160a01b031633145b8061547e57506004546001600160a01b031633145b8061549357506005546001600160a01b031633145b806154a857506006546001600160a01b031633145b6154b157600080fd5b600a811080156154c557506154c533611457565b156155015760405162461bcd60e51b8152600401808060200182810382526036815260200180615de16036913960400191505060405180910390fd5b61550a8261503d565b61555b576040805162461bcd60e51b815260206004820152601d60248201527f28216973416e7947656e6573697341646472657373285f66726f6d2929000000604482015290519081900360640190fd5b60085460408051631e0808f560e21b81526001600160a01b0385811660048301529151919092169163782023d4916024808301926020929190829003018186803b1580156155a857600080fd5b505afa1580156155bc573d6000803e3d6000fd5b505050506040513d60208110156155d257600080fd5b5051156156105760405162461bcd60e51b8152600401808060200182810382526023815260200180615d9b6023913960400191505060405180910390fd5b615619826121cd565b61566a576040805162461bcd60e51b815260206004820152601760248201527f2862616c616e63654f66285f66726f6d29203d3d203029000000000000000000604482015290519081900360640190fd5b61567382611457565b15615a9d578015615a575760085460408051630931f27760e21b81526001600160a01b03858116600483015260248201859052915191909216916324c7c9dc91604480830192600092919082900301818387803b1580156156d357600080fd5b505af11580156156e7573d6000803e3d6000fd5b505050506156f482615c90565b1561584a5760095460408051632106abf360e11b81526001600160a01b0385811660048301529151919092169163420d57e691602480830192600092919082900301818387803b15801561574757600080fd5b505af115801561575b573d6000803e3d6000fd5b50506008546009546040805163e0cf13a360e01b815290516001600160a01b0393841695506362dfdea994508793600193169163e0cf13a3916004808301926020929190829003018186803b1580156157b357600080fd5b505afa1580156157c7573d6000803e3d6000fd5b505050506040513d60208110156157dd57600080fd5b5051604080516001600160e01b031960e087901b1681526001600160a01b039094166004850152919003602483015251604480830192600092919082900301818387803b15801561582d57600080fd5b505af1158015615841573d6000803e3d6000fd5b50505050615997565b6009546040805163efd4da9f60e01b81526001600160a01b0385811660048301529151919092169163efd4da9f91602480830192600092919082900301818387803b15801561589857600080fd5b505af11580156158ac573d6000803e3d6000fd5b50506008546009546040805163a3c092dd60e01b815290516001600160a01b039384169550635113404c94508793600193169163a3c092dd916004808301926020929190829003018186803b15801561590457600080fd5b505afa158015615918573d6000803e3d6000fd5b505050506040513d602081101561592e57600080fd5b5051604080516001600160e01b031960e087901b1681526001600160a01b039094166004850152919003602483015251604480830192600092919082900301818387803b15801561597e57600080fd5b505af1158015615992573d6000803e3d6000fd5b505050505b6008546040805163324884a960e01b81526001600160a01b0385811660048301819052925192937f933f4cdff1259b68b6bef69435776ccf345ec12edb9fdaacf499408bb0075d6f938693929091169163324884a9916024808301926020929190829003018186803b158015615a0c57600080fd5b505afa158015615a20573d6000803e3d6000fd5b505050506040513d6020811015615a3657600080fd5b50516040805192835260ff90911660208301528051918290030190a2615a98565b6040805162461bcd60e51b8152602060048201526011602482015270050726963652063616e6e6f74206265203607c1b604482015290519081900360640190fd5b615c2c565b615aa6826131be565b15615c2c576009546040805163bb96be0960e01b81526001600160a01b0385811660048301529151919092169163bb96be0991602480830192600092919082900301818387803b158015615af957600080fd5b505af1158015615b0d573d6000803e3d6000fd5b505060085460095460408051632758231b60e11b815290516001600160a01b0393841695506321ea432a945087936001931691634eb04636916004808301926020929190829003018186803b158015615b6557600080fd5b505afa158015615b79573d6000803e3d6000fd5b505050506040513d6020811015615b8f57600080fd5b5051604080516001600160e01b031960e087901b1681526001600160a01b039094166004850152919003602483015251604480830192600092919082900301818387803b158015615bdf57600080fd5b505af1158015615bf3573d6000803e3d6000fd5b50506040516001600160a01b03851692507f7f0ccf6984bbd751bead36cbc00ed99529f6067592114335d7ad05917a5223b29150600090a25b600854604080516301845e8360e61b81526001600160a01b0385811660048301526001602483015291519190921691636117a0c091604480830192600092919082900301818387803b15801561502157600080fd5b6007546001600160a01b031681565b6008546040805163324884a960e01b81526001600160a01b0384811660048301529151600093929092169163324884a991602480820192602092909190829003018186803b15801561152d57600080fdfe2877656956616c756520213d2070632e657468466565546f55706772616465546f4c6576656c332829292821697347656e65736973416464726573734c6576656c33285f67656e65736973416464726573736573546f4275726e5b695d29292870632e697347656e6573697341646472657373466f7253616c65285f67656e65736973416464726573736573546f4275726e5b695d29292870632e69734e6f726d616c41646472657373466f7253616c65285f66726f6d29292870632e697347656e6573697341646472657373466f7253616c65285f66726f6d29292821697347656e65736973416464726573734c6576656c324f7233285f66726f6d29297765695072696365203c20313020262620697347656e65736973416464726573734c6576656c324f7233286d73672e73656e646572292870632e616c6c6f7741646472657373546f44657374726f7947656e65736973285f67656e65736973416464726573736573546f4275726e5b695d2920213d205f66726f6d292877656956616c756520213d2070632e657468466565546f55706772616465546f4c6576656c3228292970632e616c6c6f775265636569766547656e657369735472616e7366657273285f66726f6d29282170632e616c6c6f775265636569766547656e657369735472616e7366657273285f746f29292170632e697347656e6573697341646472657373466f7253616c65285f66726f6d2929a26469706673582212208b7571f9556456f0591e1d9b3e01d9368bdcd8d722c8c679df91098cb672a9f564736f6c63430006010033