false
true
0

Contract Address Details

0xEe8510b5af375BB72dcc057cF44866C5aBc39244

Token
Team3DPresale (T3DPre)
Creator
0x3d4bc6–53d9e9 at 0xf082ca–824e91
Balance
0 PLS ( )
Tokens
Fetching tokens...
Transactions
142 Transactions
Transfers
0 Transfers
Gas Used
20,076,535
Last Balance Update
25952430
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:
Team3DPresale




Optimization enabled
false
Compiler version
v0.5.17+commit.d19bba13




EVM Version
istanbul




Verified at
2026-03-06T05:35:36.281012Z

Team3DPresale.sol

pragma solidity ^0.5.17;

interface Deployer {
    function execute(uint salt) external payable returns (address);
}

contract Team3DPresale {

    // Token data
    mapping (address => uint256) public balances;
    string public constant name  = "Team3DPresale";
    string public constant symbol = "T3DPre";
    uint8 public constant decimals = 18;

    event Transfer(address indexed _from, address indexed _to, uint256 _value);

    // Presale data
    uint public totalTokensSold;
    uint public totalEthSpent;
    address[] public keys;
    mapping (address => bool) helper;
    mapping (address => bool) public userExists;
    mapping (address => uint) public teamFund;
    mapping (address => bool) public whiteListed;
    mapping (address => uint) public ethSpent;
    uint public constant maxAmount = 5 ether;
    uint public constant maxTotalAmount = 400 ether;
    uint public constant tokensPerEth = 43750; // 17.5m tokens/400 eth; 43750 tokens/1 eth; 0.000022857 eth/1 token
    uint public constant totalSaleSupply = 17500000 * (10 ** 18); // 17.5m = 35% of total supply.
    uint public constant totalTeamSupply = 15000000 * (10 ** 18); // 15m = 30% for team/marketing/project
    uint public initialTokens = totalSaleSupply + totalTeamSupply; // 65% distributed initially, remaining 35% added to liq later
    bool public whitelistOnly = true;

    address payable owner;

    
    modifier onlyOwner() {
        require(msg.sender == owner || helper[msg.sender] == true);
        _;
    }


    constructor() public {
        owner = msg.sender;
        balances[owner] = totalTeamSupply;
        emit Transfer(address(0), owner, totalTeamSupply);
    }


    function () external payable {
        purchase();
    }


    function purchase() public payable {
        require(msg.value <= maxAmount);
        require(ethSpent[msg.sender] + msg.value <= maxAmount);
        require(totalEthSpent <= maxTotalAmount);
        require(!whitelistOnly || whiteListed[msg.sender], "Not a whitelisted address");

        uint _tokenAmount = msg.value * tokensPerEth;

        // Global data
        totalEthSpent += msg.value;
        totalTokensSold += _tokenAmount;

        // User data
        ethSpent[msg.sender] += msg.value;
        balances[msg.sender] += _tokenAmount;

        if (!userExists[msg.sender]) {
            userExists[msg.sender] = true;
            keys.push(msg.sender);
        }

        emit Transfer(address(0), msg.sender, _tokenAmount);
    }


    function addToWhitelist(address _addr) public onlyOwner {
        whiteListed[_addr] = true;
    }


    function bulkAddToWhitelist(address[] calldata _addrs) external onlyOwner {
        for (uint i=0; i < _addrs.length; i++) {
            addToWhitelist(_addrs[i]);
        }
    }


    function assignTeamTokens(address _addr, uint _amount) external onlyOwner {
        require(balanceOf(owner) - _amount >= 0, "Underflow");
        
        balances[owner] -= _amount;
        balances[_addr] += _amount;
        teamFund[_addr] += _amount;

        if (!userExists[_addr]) {
            userExists[_addr] = true;
            keys.push(_addr);
        }

        emit Transfer(address(owner), _addr, _amount);
    }


    function removeTeamTokens(address _addr, uint _amount) external onlyOwner {
        require(_amount <= teamFund[_addr]);

        balances[owner] += _amount;
        balances[_addr] -= _amount;
        teamFund[_addr] -= _amount;

        emit Transfer(_addr, address(owner), _amount);
    }


    function deployMainToken(address _deployerAddr, uint _salt) external onlyOwner {
        
        // Collect dust if exact amount is not reached
        if (getRemainingTokens() > 0) { clearRemainingTokens(); }
        
        // In case someone tries to send eth with selfdestruct 
        if (address(this).balance > maxTotalAmount) {
            uint _amount = address(this).balance - maxTotalAmount;
            owner.transfer(_amount);
        }

        // Deploy liquidity and lock tokens
        Deployer(_deployerAddr).execute.value(address(this).balance)(_salt);
    }


    function toggleWhitelist() external onlyOwner {
        whitelistOnly = !whitelistOnly;
    }


    function refund(address payable _addr) public onlyOwner {
        require(balances[_addr] - teamFund[_addr] > 0, "User has no purchased balance");

        uint _userBal = balances[_addr] - teamFund[_addr]; // Only refund purchased tokens
        uint _ethRefund = _userBal / tokensPerEth;

        // Global data
        totalEthSpent -= _ethRefund;
        totalTokensSold -= _userBal;

        // User data
        ethSpent[_addr] = 0;
        balances[_addr] = teamFund[_addr];  // Will be zero if they have no teamFund tokens

        _addr.transfer(_ethRefund);

        emit Transfer(_addr, address(0), _userBal);
    }


    function batchRefund(address payable[] calldata _addrs) external onlyOwner {
        for (uint i=0; i < _addrs.length; i++) {
            refund(_addrs[i]);
        }
    }


    // Use this to collect any dust before deploy
    function clearRemainingTokens() internal {
        uint _remainingTokens = getRemainingTokens();
        totalTokensSold += _remainingTokens;
        balances[owner] += _remainingTokens;

        emit Transfer(address(0), owner, _remainingTokens);
    }


    function addHelper(address _addr, bool _val) public onlyOwner {
        helper[_addr] = _val;
    }


    function totalSupply() public view returns(uint) {
        return initialTokens;
    }


    function balanceOf(address _addr) public view returns(uint) {
        return balances[_addr];
    }


    function getRemainingTokens() public view returns(uint) {
        return totalSaleSupply - totalTokensSold;
    }


    function getTotalPresaleBuyers() public view returns(uint) {
        return keys.length;
    }
}
        

Compiler Settings

{"remappings":[],"optimizer":{"runs":200,"enabled":false},"libraries":{},"evmVersion":"istanbul","compilationTarget":{"Team3DPresale.sol":"Team3DPresale"}}
              

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","payable":false,"inputs":[]},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"_from","internalType":"address","indexed":true},{"type":"address","name":"_to","internalType":"address","indexed":true},{"type":"uint256","name":"_value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"fallback","stateMutability":"payable","payable":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"addHelper","inputs":[{"type":"address","name":"_addr","internalType":"address"},{"type":"bool","name":"_val","internalType":"bool"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"addToWhitelist","inputs":[{"type":"address","name":"_addr","internalType":"address"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"assignTeamTokens","inputs":[{"type":"address","name":"_addr","internalType":"address"},{"type":"uint256","name":"_amount","internalType":"uint256"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"_addr","internalType":"address"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balances","inputs":[{"type":"address","name":"","internalType":"address"}],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"batchRefund","inputs":[{"type":"address[]","name":"_addrs","internalType":"address payable[]"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"bulkAddToWhitelist","inputs":[{"type":"address[]","name":"_addrs","internalType":"address[]"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"deployMainToken","inputs":[{"type":"address","name":"_deployerAddr","internalType":"address"},{"type":"uint256","name":"_salt","internalType":"uint256"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"ethSpent","inputs":[{"type":"address","name":"","internalType":"address"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getRemainingTokens","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getTotalPresaleBuyers","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"initialTokens","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":"","internalType":"address"}],"name":"keys","inputs":[{"type":"uint256","name":"","internalType":"uint256"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"maxAmount","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"maxTotalAmount","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[],"constant":true},{"type":"function","stateMutability":"payable","payable":true,"outputs":[],"name":"purchase","inputs":[],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"refund","inputs":[{"type":"address","name":"_addr","internalType":"address payable"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"removeTeamTokens","inputs":[{"type":"address","name":"_addr","internalType":"address"},{"type":"uint256","name":"_amount","internalType":"uint256"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"teamFund","inputs":[{"type":"address","name":"","internalType":"address"}],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"toggleWhitelist","inputs":[],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"tokensPerEth","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalEthSpent","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSaleSupply","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalTeamSupply","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalTokensSold","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"userExists","inputs":[{"type":"address","name":"","internalType":"address"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"whiteListed","inputs":[{"type":"address","name":"","internalType":"address"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"whitelistOnly","inputs":[],"constant":true}]
              

Contract Creation Code

Verify & Publish
0x60806040526a0c685fa11e01ec6f0000006a0e79c4e6a3023e81800000016009556001600a60006101000a81548160ff02191690831515021790555034801561004757600080fd5b5033600a60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506a0c685fa11e01ec6f000000600080600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6a0c685fa11e01ec6f0000006040518082815260200191505060405180910390a36123bb8061019b6000396000f3fe6080604052600436106101e35760003560e01c80637e15144b11610102578063cd93aeed11610095578063fa0fca8411610064578063fa0fca84146109f9578063fa73cc8a14610a62578063fa89401a14610a8d578063fff9600514610ade576101e3565b8063cd93aeed14610881578063e43252d7146108e6578063e5de3a9314610937578063f413e3f914610994576101e3565b806392d3b886116100d157806392d3b8861461077057806395d89b411461079b578063af35ae271461082b578063cbdd69b514610856576101e3565b80637e15144b14610678578063870e2cdf1461068f5780638e101867146106ea57806390424f3314610715576101e3565b806350bfeadc1161017a57806364edfbf01161014957806364edfbf0146105585780636c79af101461056257806370a08231146105e8578063782319781461064d576101e3565b806350bfeadc1461047c5780635f48f393146104a757806362bb3b6f146104d257806363b201171461052d576101e3565b806318160ddd116101b657806318160ddd1461038c57806327e235e3146103b7578063313ce5671461041c5780634b4687b51461044d576101e3565b806306fdde03146101ed5780630cb6aaf11461027d5780630e666e49146102f8578063170594c614610361575b6101eb610b64565b005b3480156101f957600080fd5b50610202610ef9565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610242578082015181840152602081019050610227565b50505050905090810190601f16801561026f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561028957600080fd5b506102b6600480360360208110156102a057600080fd5b8101908080359060200190929190505050610f32565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561030457600080fd5b506103476004803603602081101561031b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f6e565b604051808215151515815260200191505060405180910390f35b34801561036d57600080fd5b50610376610f8e565b6040518082815260200191505060405180910390f35b34801561039857600080fd5b506103a1610f9d565b6040518082815260200191505060405180910390f35b3480156103c357600080fd5b50610406600480360360208110156103da57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fa7565b6040518082815260200191505060405180910390f35b34801561042857600080fd5b50610431610fbf565b604051808260ff1660ff16815260200191505060405180910390f35b34801561045957600080fd5b50610462610fc4565b604051808215151515815260200191505060405180910390f35b34801561048857600080fd5b50610491610fd7565b6040518082815260200191505060405180910390f35b3480156104b357600080fd5b506104bc610fdd565b6040518082815260200191505060405180910390f35b3480156104de57600080fd5b5061052b600480360360408110156104f557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fe9565b005b34801561053957600080fd5b506105426113e3565b6040518082815260200191505060405180910390f35b610560610b64565b005b34801561056e57600080fd5b506105e66004803603602081101561058557600080fd5b81019080803590602001906401000000008111156105a257600080fd5b8201836020820111156105b457600080fd5b803590602001918460208302840111640100000000831117156105d657600080fd5b90919293919293905050506113e9565b005b3480156105f457600080fd5b506106376004803603602081101561060b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114f2565b6040518082815260200191505060405180910390f35b34801561065957600080fd5b5061066261153a565b6040518082815260200191505060405180910390f35b34801561068457600080fd5b5061068d611549565b005b34801561069b57600080fd5b506106e8600480360360408110156106b257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061162a565b005b3480156106f657600080fd5b506106ff611818565b6040518082815260200191505060405180910390f35b34801561072157600080fd5b5061076e6004803603604081101561073857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611825565b005b34801561077c57600080fd5b50610785611ab8565b6040518082815260200191505060405180910390f35b3480156107a757600080fd5b506107b0611abe565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107f05780820151818401526020810190506107d5565b50505050905090810190601f16801561081d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561083757600080fd5b50610840611af7565b6040518082815260200191505060405180910390f35b34801561086257600080fd5b5061086b611b0e565b6040518082815260200191505060405180910390f35b34801561088d57600080fd5b506108d0600480360360208110156108a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b14565b6040518082815260200191505060405180910390f35b3480156108f257600080fd5b506109356004803603602081101561090957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b2c565b005b34801561094357600080fd5b506109926004803603604081101561095a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611c3c565b005b3480156109a057600080fd5b506109e3600480360360208110156109b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d4c565b6040518082815260200191505060405180910390f35b348015610a0557600080fd5b50610a4860048036036020811015610a1c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d64565b604051808215151515815260200191505060405180910390f35b348015610a6e57600080fd5b50610a77611d84565b6040518082815260200191505060405180910390f35b348015610a9957600080fd5b50610adc60048036036020811015610ab057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d91565b005b348015610aea57600080fd5b50610b6260048036036020811015610b0157600080fd5b8101908080359060200190640100000000811115610b1e57600080fd5b820183602082011115610b3057600080fd5b80359060200191846020830284011164010000000083111715610b5257600080fd5b9091929391929390505050612168565b005b674563918244f40000341115610b7957600080fd5b674563918244f4000034600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054011115610bcf57600080fd5b6815af1d78b58c4000006002541115610be757600080fd5b600a60009054906101000a900460ff161580610c4c5750600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610cbe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4e6f7420612077686974656c697374656420616464726573730000000000000081525060200191505060405180910390fd5b600061aae634029050346002600082825401925050819055508060016000828254019250508190555034600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610e90576001600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060033390806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b3373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350565b6040518060400160405280600d81526020017f5465616d334450726573616c650000000000000000000000000000000000000081525081565b60038181548110610f3f57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60056020528060005260406000206000915054906101000a900460ff1681565b6a0c685fa11e01ec6f00000081565b6000600954905090565b60006020528060005260406000206000915090505481565b601281565b600a60009054906101000a900460ff1681565b60095481565b674563918244f4000081565b600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611095575060011515600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b61109e57600080fd5b6000816110cc600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166114f2565b031015611141576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f556e646572666c6f77000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600080600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611358576001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060038290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b8173ffffffffffffffffffffffffffffffffffffffff16600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60015481565b600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611495575060011515600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b61149e57600080fd5b60008090505b828290508110156114ed576114e08383838181106114be57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16611b2c565b80806001019150506114a4565b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6a0e79c4e6a3023e8180000081565b600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806115f5575060011515600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b6115fe57600080fd5b600a60009054906101000a900460ff1615600a60006101000a81548160ff021916908315150217905550565b600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806116d6575060011515600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b6116df57600080fd5b60006116e9611af7565b11156116f8576116f7612271565b5b6815af1d78b58c4000004711156117845760006815af1d78b58c40000047039050600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611781573d6000803e3d6000fd5b50505b8173ffffffffffffffffffffffffffffffffffffffff1663fe0d94c147836040518363ffffffff1660e01b8152600401808281526020019150506020604051808303818588803b1580156117d757600080fd5b505af11580156117eb573d6000803e3d6000fd5b50505050506040513d602081101561180257600080fd5b8101908080519060200190929190505050505050565b6815af1d78b58c40000081565b600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806118d1575060011515600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b6118da57600080fd5b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481111561192657600080fd5b80600080600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60025481565b6040518060400160405280600681526020017f543344507265000000000000000000000000000000000000000000000000000081525081565b60006001546a0e79c4e6a3023e8180000003905090565b61aae681565b60086020528060005260406000206000915090505481565b600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611bd8575060011515600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b611be157600080fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611ce8575060011515600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b611cf157600080fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60066020528060005260406000206000915090505481565b60076020528060005260406000206000915054906101000a900460ff1681565b6000600380549050905090565b600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611e3d575060011515600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b611e4657600080fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540311611f3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f5573657220686173206e6f207075726368617365642062616c616e636500000081525060200191505060405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054039050600061aae68281611fcc57fe5b04905080600260008282540392505081905550816001600082825403925050819055506000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156120fc573d6000803e3d6000fd5b50600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505050565b600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612214575060011515600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b61221d57600080fd5b60008090505b8282905081101561226c5761225f83838381811061223d57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16611d91565b8080600101915050612223565b505050565b600061227b611af7565b90508060016000828254019250508190555080600080600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35056fea265627a7a723158203e95a3d0a6175fa04001094a464059d05472794d9b1ab24165d11811daf3260964736f6c63430005110032

Deployed ByteCode

0x6080604052600436106101e35760003560e01c80637e15144b11610102578063cd93aeed11610095578063fa0fca8411610064578063fa0fca84146109f9578063fa73cc8a14610a62578063fa89401a14610a8d578063fff9600514610ade576101e3565b8063cd93aeed14610881578063e43252d7146108e6578063e5de3a9314610937578063f413e3f914610994576101e3565b806392d3b886116100d157806392d3b8861461077057806395d89b411461079b578063af35ae271461082b578063cbdd69b514610856576101e3565b80637e15144b14610678578063870e2cdf1461068f5780638e101867146106ea57806390424f3314610715576101e3565b806350bfeadc1161017a57806364edfbf01161014957806364edfbf0146105585780636c79af101461056257806370a08231146105e8578063782319781461064d576101e3565b806350bfeadc1461047c5780635f48f393146104a757806362bb3b6f146104d257806363b201171461052d576101e3565b806318160ddd116101b657806318160ddd1461038c57806327e235e3146103b7578063313ce5671461041c5780634b4687b51461044d576101e3565b806306fdde03146101ed5780630cb6aaf11461027d5780630e666e49146102f8578063170594c614610361575b6101eb610b64565b005b3480156101f957600080fd5b50610202610ef9565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610242578082015181840152602081019050610227565b50505050905090810190601f16801561026f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561028957600080fd5b506102b6600480360360208110156102a057600080fd5b8101908080359060200190929190505050610f32565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561030457600080fd5b506103476004803603602081101561031b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f6e565b604051808215151515815260200191505060405180910390f35b34801561036d57600080fd5b50610376610f8e565b6040518082815260200191505060405180910390f35b34801561039857600080fd5b506103a1610f9d565b6040518082815260200191505060405180910390f35b3480156103c357600080fd5b50610406600480360360208110156103da57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fa7565b6040518082815260200191505060405180910390f35b34801561042857600080fd5b50610431610fbf565b604051808260ff1660ff16815260200191505060405180910390f35b34801561045957600080fd5b50610462610fc4565b604051808215151515815260200191505060405180910390f35b34801561048857600080fd5b50610491610fd7565b6040518082815260200191505060405180910390f35b3480156104b357600080fd5b506104bc610fdd565b6040518082815260200191505060405180910390f35b3480156104de57600080fd5b5061052b600480360360408110156104f557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fe9565b005b34801561053957600080fd5b506105426113e3565b6040518082815260200191505060405180910390f35b610560610b64565b005b34801561056e57600080fd5b506105e66004803603602081101561058557600080fd5b81019080803590602001906401000000008111156105a257600080fd5b8201836020820111156105b457600080fd5b803590602001918460208302840111640100000000831117156105d657600080fd5b90919293919293905050506113e9565b005b3480156105f457600080fd5b506106376004803603602081101561060b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114f2565b6040518082815260200191505060405180910390f35b34801561065957600080fd5b5061066261153a565b6040518082815260200191505060405180910390f35b34801561068457600080fd5b5061068d611549565b005b34801561069b57600080fd5b506106e8600480360360408110156106b257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061162a565b005b3480156106f657600080fd5b506106ff611818565b6040518082815260200191505060405180910390f35b34801561072157600080fd5b5061076e6004803603604081101561073857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611825565b005b34801561077c57600080fd5b50610785611ab8565b6040518082815260200191505060405180910390f35b3480156107a757600080fd5b506107b0611abe565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107f05780820151818401526020810190506107d5565b50505050905090810190601f16801561081d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561083757600080fd5b50610840611af7565b6040518082815260200191505060405180910390f35b34801561086257600080fd5b5061086b611b0e565b6040518082815260200191505060405180910390f35b34801561088d57600080fd5b506108d0600480360360208110156108a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b14565b6040518082815260200191505060405180910390f35b3480156108f257600080fd5b506109356004803603602081101561090957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b2c565b005b34801561094357600080fd5b506109926004803603604081101561095a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050611c3c565b005b3480156109a057600080fd5b506109e3600480360360208110156109b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d4c565b6040518082815260200191505060405180910390f35b348015610a0557600080fd5b50610a4860048036036020811015610a1c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d64565b604051808215151515815260200191505060405180910390f35b348015610a6e57600080fd5b50610a77611d84565b6040518082815260200191505060405180910390f35b348015610a9957600080fd5b50610adc60048036036020811015610ab057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d91565b005b348015610aea57600080fd5b50610b6260048036036020811015610b0157600080fd5b8101908080359060200190640100000000811115610b1e57600080fd5b820183602082011115610b3057600080fd5b80359060200191846020830284011164010000000083111715610b5257600080fd5b9091929391929390505050612168565b005b674563918244f40000341115610b7957600080fd5b674563918244f4000034600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054011115610bcf57600080fd5b6815af1d78b58c4000006002541115610be757600080fd5b600a60009054906101000a900460ff161580610c4c5750600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610cbe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4e6f7420612077686974656c697374656420616464726573730000000000000081525060200191505060405180910390fd5b600061aae634029050346002600082825401925050819055508060016000828254019250508190555034600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610e90576001600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060033390806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b3373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350565b6040518060400160405280600d81526020017f5465616d334450726573616c650000000000000000000000000000000000000081525081565b60038181548110610f3f57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60056020528060005260406000206000915054906101000a900460ff1681565b6a0c685fa11e01ec6f00000081565b6000600954905090565b60006020528060005260406000206000915090505481565b601281565b600a60009054906101000a900460ff1681565b60095481565b674563918244f4000081565b600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611095575060011515600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b61109e57600080fd5b6000816110cc600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166114f2565b031015611141576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f556e646572666c6f77000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b80600080600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611358576001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060038290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b8173ffffffffffffffffffffffffffffffffffffffff16600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60015481565b600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611495575060011515600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b61149e57600080fd5b60008090505b828290508110156114ed576114e08383838181106114be57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16611b2c565b80806001019150506114a4565b505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6a0e79c4e6a3023e8180000081565b600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806115f5575060011515600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b6115fe57600080fd5b600a60009054906101000a900460ff1615600a60006101000a81548160ff021916908315150217905550565b600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806116d6575060011515600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b6116df57600080fd5b60006116e9611af7565b11156116f8576116f7612271565b5b6815af1d78b58c4000004711156117845760006815af1d78b58c40000047039050600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611781573d6000803e3d6000fd5b50505b8173ffffffffffffffffffffffffffffffffffffffff1663fe0d94c147836040518363ffffffff1660e01b8152600401808281526020019150506020604051808303818588803b1580156117d757600080fd5b505af11580156117eb573d6000803e3d6000fd5b50505050506040513d602081101561180257600080fd5b8101908080519060200190929190505050505050565b6815af1d78b58c40000081565b600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806118d1575060011515600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b6118da57600080fd5b600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481111561192657600080fd5b80600080600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60025481565b6040518060400160405280600681526020017f543344507265000000000000000000000000000000000000000000000000000081525081565b60006001546a0e79c4e6a3023e8180000003905090565b61aae681565b60086020528060005260406000206000915090505481565b600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611bd8575060011515600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b611be157600080fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611ce8575060011515600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b611cf157600080fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60066020528060005260406000206000915090505481565b60076020528060005260406000206000915054906101000a900460ff1681565b6000600380549050905090565b600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611e3d575060011515600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b611e4657600080fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540311611f3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f5573657220686173206e6f207075726368617365642062616c616e636500000081525060200191505060405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054039050600061aae68281611fcc57fe5b04905080600260008282540392505081905550816001600082825403925050819055506000600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156120fc573d6000803e3d6000fd5b50600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505050565b600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612214575060011515600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b61221d57600080fd5b60008090505b8282905081101561226c5761225f83838381811061223d57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16611d91565b8080600101915050612223565b505050565b600061227b611af7565b90508060016000828254019250508190555080600080600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35056fea265627a7a723158203e95a3d0a6175fa04001094a464059d05472794d9b1ab24165d11811daf3260964736f6c63430005110032