Overview
Max Total Supply
1,000,000,000 FTT
Holders
6,340 (0.00%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
FTT
Compiler Version
v0.4.18+commit.9cf6e910
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-02-19 */ pragma solidity ^0.4.18; contract ERC20Basic { uint256 public totalSupply; function balanceOf(address who) public view returns (uint256); function transfer(address to, uint256 value) public returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); } contract ERC20 is ERC20Basic { function allowance(address owner, address spender) public view returns (uint256); function transferFrom(address from, address to, uint256 value) public returns (bool); function approve(address spender, uint256 value) public returns (bool); event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @title SafeERC20 * @dev Wrappers around ERC20 operations that throw on failure. * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract, * which allows you to call the safe operations as `token.safeTransfer(...)`, etc. */ library SafeERC20 { function safeTransfer(ERC20Basic token, address to, uint256 value) internal { assert(token.transfer(to, value)); } function safeTransferFrom(ERC20 token, address from, address to, uint256 value) internal { assert(token.transferFrom(from, to, value)); } function safeApprove(ERC20 token, address spender, uint256 value) internal { assert(token.approve(spender, value)); } } contract Ownable { address public owner; modifier onlyOwner { require(isOwner(msg.sender)); _; } function Ownable() public { owner = msg.sender; } function transferOwnership(address _newOwner) public onlyOwner { owner = _newOwner; } function isOwner(address _address) public constant returns (bool) { return owner == _address; } } /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { /** * @dev Multiplies two numbers, throws on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; assert(c / a == b); return c; } /** * @dev Integer division of two numbers, truncating the quotient. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } /** * @dev Adds two numbers, throws on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } /** * @title TokenVesting * @dev A token holder contract that can release its token balance gradually like a * typical vesting scheme, with a cliff and vesting period. Optionally revocable by the * owner. */ contract TokenVesting is Ownable { using SafeMath for uint256; using SafeERC20 for ERC20Basic; event Released(uint256 amount); event Revoked(); // beneficiary of tokens after they are released address public beneficiary; uint256 public cliff; uint256 public start; uint256 public duration; bool public revocable; mapping (address => uint256) public released; mapping (address => bool) public revoked; /** * @dev Creates a vesting contract that vests its balance of any ERC20 token to the * _beneficiary, gradually in a linear fashion until _start + _duration. By then all * of the balance will have vested. * @param _beneficiary address of the beneficiary to whom vested tokens are transferred * @param _cliff duration in seconds of the cliff in which tokens will begin to vest * @param _duration duration in seconds of the period in which the tokens will vest * @param _revocable whether the vesting is revocable or not */ function TokenVesting(address _beneficiary, uint256 _start, uint256 _cliff, uint256 _duration, bool _revocable) public { require(_beneficiary != address(0)); require(_cliff <= _duration); beneficiary = _beneficiary; revocable = _revocable; duration = _duration; cliff = _start.add(_cliff); start = _start; } /** * @notice Transfers vested tokens to beneficiary. * @param token ERC20 token which is being vested */ function release(ERC20Basic token) public { uint256 unreleased = releasableAmount(token); require(unreleased > 0); released[token] = released[token].add(unreleased); token.safeTransfer(beneficiary, unreleased); Released(unreleased); } /** * @notice Allows the owner to revoke the vesting. Tokens already vested * remain in the contract, the rest are returned to the owner. * @param token ERC20 token which is being vested */ function revoke(ERC20Basic token) public onlyOwner { require(revocable); require(!revoked[token]); uint256 balance = token.balanceOf(this); uint256 unreleased = releasableAmount(token); uint256 refund = balance.sub(unreleased); revoked[token] = true; token.safeTransfer(owner, refund); Revoked(); } /** * @dev Calculates the amount that has already vested but hasn't been released yet. * @param token ERC20 token which is being vested */ function releasableAmount(ERC20Basic token) public view returns (uint256) { return vestedAmount(token).sub(released[token]); } /** * @dev Calculates the amount that has already vested. * @param token ERC20 token which is being vested */ function vestedAmount(ERC20Basic token) public view returns (uint256) { uint256 currentBalance = token.balanceOf(this); uint256 totalBalance = currentBalance.add(released[token]); if (now < cliff) { return 0; } else if (now >= start.add(duration) || revoked[token]) { return totalBalance; } else { return totalBalance.mul(now.sub(start)).div(duration); } } } contract FTT is Ownable { using SafeMath for uint256; uint256 public totalSupply = 1000000000 * 10**uint256(decimals); string public constant name = "FarmaTrust Token"; string public symbol = "FTT"; uint8 public constant decimals = 18; mapping(address => uint256) public balances; mapping (address => mapping (address => uint256)) internal allowed; event Approval(address indexed owner, address indexed spender, uint256 value); event Transfer(address indexed from, address indexed to, uint256 value); event FTTIssued(address indexed from, address indexed to, uint256 indexed amount, uint256 timestamp); event TdeStarted(uint256 startTime); event TdeStopped(uint256 stopTime); event TdeFinalized(uint256 finalizeTime); // Amount of FTT available during tok0x2Ec9F52A5e4E7B5e20C031C1870Fd952e1F01b3Een distribution event. uint256 public constant FT_TOKEN_SALE_CAP = 600000000 * 10**uint256(decimals); // Amount held for operational usage. uint256 public FT_OPERATIONAL_FUND = totalSupply - FT_TOKEN_SALE_CAP; // Amount held for team usage. uint256 public FT_TEAM_FUND = FT_OPERATIONAL_FUND / 10; // Amount of FTT issued. uint256 public fttIssued = 0; address public tdeIssuer = 0x2Ec9F52A5e4E7B5e20C031C1870Fd952e1F01b3E; address public teamVestingAddress; address public unsoldVestingAddress; address public operationalReserveAddress; bool public tdeActive; bool public tdeStarted; bool public isFinalized = false; bool public capReached; uint256 public tdeDuration = 60 days; uint256 public tdeStartTime; function FTT() public { } modifier onlyTdeIssuer { require(msg.sender == tdeIssuer); _; } modifier tdeRunning { require(tdeActive && block.timestamp < tdeStartTime + tdeDuration); _; } modifier tdeEnded { require(((!tdeActive && block.timestamp > tdeStartTime + tdeDuration) && tdeStarted) || capReached); _; } /** * @dev Allows contract owner to start the TDE. */ function startTde() public onlyOwner { require(!isFinalized); tdeActive = true; tdeStarted = true; if (tdeStartTime == 0) { tdeStartTime = block.timestamp; } TdeStarted(tdeStartTime); } /** * @dev Allows contract owner to stop and optionally restart the TDE. * @param _restart Resets the tdeStartTime if true. */ function stopTde(bool _restart) external onlyOwner { tdeActive = false; if (_restart) { tdeStartTime = 0; } TdeStopped(block.timestamp); } /** * @dev Allows contract owner to increase TDE period. * @param _time amount of time to increase TDE period by. */ function extendTde(uint256 _time) external onlyOwner { tdeDuration = tdeDuration.add(_time); } /** * @dev Allows contract owner to reduce TDE period. * @param _time amount of time to reduce TDE period by. */ function shortenTde(uint256 _time) external onlyOwner { tdeDuration = tdeDuration.sub(_time); } /** * @dev Allows contract owner to set the FTT issuing authority. * @param _tdeIssuer address of FTT issuing authority. */ function setTdeIssuer(address _tdeIssuer) external onlyOwner { tdeIssuer = _tdeIssuer; } /** * @dev Allows contract owner to set the beneficiary of the FT operational reserve amount of FTT. * @param _operationalReserveAddress address of FT operational reserve beneficiary. */ function setOperationalReserveAddress(address _operationalReserveAddress) external onlyOwner tdeRunning { operationalReserveAddress = _operationalReserveAddress; } /** * @dev Issues FTT to entitled accounts. * @param _user address to issue FTT to. * @param _fttAmount amount of FTT to issue. */ function issueFTT(address _user, uint256 _fttAmount) public onlyTdeIssuer tdeRunning returns(bool) { uint256 newAmountIssued = fttIssued.add(_fttAmount); require(_user != address(0)); require(_fttAmount > 0); require(newAmountIssued <= FT_TOKEN_SALE_CAP); balances[_user] = balances[_user].add(_fttAmount); fttIssued = newAmountIssued; FTTIssued(tdeIssuer, _user, _fttAmount, block.timestamp); if (fttIssued == FT_TOKEN_SALE_CAP) { capReached = true; } return true; } /** * @dev Returns amount of FTT issued. */ function fttIssued() external view returns (uint256) { return fttIssued; } /** * @dev Allows the contract owner to finalize the TDE. */ function finalize() external tdeEnded onlyOwner { require(!isFinalized); // Deposit team fund amount into team vesting contract. uint256 teamVestingCliff = 15778476; // 6 months uint256 teamVestingDuration = 1 years; TokenVesting teamVesting = new TokenVesting(owner, now, teamVestingCliff, teamVestingDuration, true); teamVesting.transferOwnership(owner); teamVestingAddress = address(teamVesting); balances[teamVestingAddress] = FT_TEAM_FUND; if (!capReached) { // Deposit unsold FTT into unsold vesting contract. uint256 unsoldVestingCliff = 3 years; uint256 unsoldVestingDuration = 10 years; TokenVesting unsoldVesting = new TokenVesting(owner, now, unsoldVestingCliff, unsoldVestingDuration, true); unsoldVesting.transferOwnership(owner); unsoldVestingAddress = address(unsoldVesting); balances[unsoldVestingAddress] = FT_TOKEN_SALE_CAP - fttIssued; } // Allocate operational reserve of FTT. balances[operationalReserveAddress] = FT_OPERATIONAL_FUND - FT_TEAM_FUND; isFinalized = true; TdeFinalized(block.timestamp); } /** * @dev Transfer tokens from one address to another. Trading limited - requires the TDE to have ended. * @param _from address The address which you want to send tokens from * @param _to address The address which you want to transfer to * @param _value uint256 the amount of tokens to be transferred */ function transferFrom(address _from, address _to, uint256 _value) public returns (bool) { if (!isFinalized) return false; require(_to != address(0)); require(_value <= balances[_from]); require(_value <= allowed[_from][msg.sender]); balances[_from] = balances[_from].sub(_value); balances[_to] = balances[_to].add(_value); allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value); Transfer(_from, _to, _value); return true; } /** * @dev Transfer token for a specified address. Trading limited - requires the TDE to have ended. * @param _to The address to transfer to. * @param _value The amount to be transferred. */ function transfer(address _to, uint256 _value) public returns (bool) { if (!isFinalized) return false; require(_to != address(0)); require(_value <= balances[msg.sender]); balances[msg.sender] = balances[msg.sender].sub(_value); balances[_to] = balances[_to].add(_value); Transfer(msg.sender, _to, _value); return true; } /** * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. * * Beware that changing an allowance with this method brings the risk that someone may use both the old * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * @param _spender The address which will spend the funds. * @param _value The amount of tokens to be spent. */ function approve(address _spender, uint256 _value) public returns (bool) { require(_spender != address(0)); allowed[msg.sender][_spender] = _value; Approval(msg.sender, _spender, _value); return true; } /** * @dev Gets the balance of the specified address. * @param _owner The address to query the the balance of. * @return An uint256 representing the amount owned by the passed address. */ function balanceOf(address _owner) public view returns (uint256 balance) { return balances[_owner]; } /** * @dev Function to check the amount of tokens that an owner allowed to a spender. * @param _owner address The address which owns the funds. * @param _spender address The address which will spend the funds. * @return A uint256 specifying the amount of tokens still available for the spender. */ function allowance(address _owner, address _spender) public view returns (uint256) { return allowed[_owner][_spender]; } /** * approve should be called when allowed[_spender] == 0. To increment * allowed value, it is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) */ function increaseApproval(address _spender, uint _addedValue) public returns (bool success) { allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue); Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool success) { uint oldValue = allowed[msg.sender][_spender]; if (_subtractedValue > oldValue) { allowed[msg.sender][_spender] = 0; } else { allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue); } Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"FT_TOKEN_SALE_CAP","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tdeActive","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"unsoldVestingAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"FT_OPERATIONAL_FUND","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_restart","type":"bool"}],"name":"stopTde","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_time","type":"uint256"}],"name":"shortenTde","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tdeIssuer","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"teamVestingAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"FT_TEAM_FUND","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"startTde","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tdeStartTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fttIssued","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finalize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"capReached","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_time","type":"uint256"}],"name":"extendTde","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_operationalReserveAddress","type":"address"}],"name":"setOperationalReserveAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isFinalized","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"operationalReserveAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tdeDuration","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_user","type":"address"},{"name":"_fttAmount","type":"uint256"}],"name":"issueFTT","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tdeIssuer","type":"address"}],"name":"setTdeIssuer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tdeStarted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":true,"name":"amount","type":"uint256"},{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"FTTIssued","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"startTime","type":"uint256"}],"name":"TdeStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"stopTime","type":"uint256"}],"name":"TdeStopped","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"finalizeTime","type":"uint256"}],"name":"TdeFinalized","type":"event"}]
Contract Creation Code
6060604052601260ff16600a0a633b9aca00026001556040805190810160405280600381526020017f4654540000000000000000000000000000000000000000000000000000000000815250600290805190602001906200006292919062000159565b50601260ff16600a0a6323c346000260015403600555600a6005548115156200008757fe5b046006556000600755732ec9f52a5e4e7b5e20c031c1870fd952e1f01b3e600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600b60166101000a81548160ff021916908315150217905550624f1a00600c5534156200011357600080fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000208565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200019c57805160ff1916838001178555620001cd565b82800160010185558215620001cd579182015b82811115620001cc578251825591602001919060010190620001af565b5b509050620001dc9190620001e0565b5090565b6200020591905b8082111562000201576000816000905550600101620001e7565b5090565b90565b6135b180620002186000396000f300606060405260043610620001f2576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806267ba6914620001f757806303a5c8e7146200022357806306fdde03146200025357806309153f5714620002e7578063095ea7b3146200033f57806316ae4ec4146200039c57806318160ddd14620003c857806322b36d8814620003f457806323b872dd146200041c57806327e235e3146200049857806329784d9014620004e85780632b37d313146200050e5780632f54bf6e1462000566578063313ce56714620005ba5780633541fe9414620005ec5780633aa612b91462000644578063423592ce146200067057806344f0a4a814620006885780634a1fb24114620006b45780634bb278f314620006e05780634f93594514620006f857806366188463146200072857806370a082311462000785578063728b763c14620007d55780637508f14714620007fb5780638d4e408314620008375780638da5cb5b146200086757806395d89b4114620008bf578063972e61511462000953578063a327353514620009ab578063a9059cbb14620009d7578063c0f401631462000a34578063d73dd6231462000a91578063dd62ed3e1462000aee578063e1541bc31462000b5d578063f2fde38b1462000b99578063f6e7b7851462000bd5575b600080fd5b34156200020357600080fd5b6200020d62000c05565b6040518082815260200191505060405180910390f35b34156200022f57600080fd5b6200023962000c16565b604051808215151515815260200191505060405180910390f35b34156200025f57600080fd5b6200026962000c29565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015620002ab5780820151818401526020810190506200028e565b50505050905090810190601f168015620002d95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415620002f357600080fd5b620002fd62000c62565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156200034b57600080fd5b62000382600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505062000c88565b604051808215151515815260200191505060405180910390f35b3415620003a857600080fd5b620003b262000db6565b6040518082815260200191505060405180910390f35b3415620003d457600080fd5b620003de62000dbc565b6040518082815260200191505060405180910390f35b34156200040057600080fd5b6200041a6004808035151590602001909190505062000dc2565b005b34156200042857600080fd5b6200047e600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505062000e3e565b604051808215151515815260200191505060405180910390f35b3415620004a457600080fd5b620004d2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505062001229565b6040518082815260200191505060405180910390f35b3415620004f457600080fd5b6200050c600480803590602001909190505062001241565b005b34156200051a57600080fd5b6200052462001278565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156200057257600080fd5b620005a0600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506200129e565b604051808215151515815260200191505060405180910390f35b3415620005c657600080fd5b620005d0620012f7565b604051808260ff1660ff16815260200191505060405180910390f35b3415620005f857600080fd5b62000602620012fc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156200065057600080fd5b6200065a62001322565b6040518082815260200191505060405180910390f35b34156200067c57600080fd5b6200068662001328565b005b34156200069457600080fd5b6200069e620013e1565b6040518082815260200191505060405180910390f35b3415620006c057600080fd5b620006ca620013e7565b6040518082815260200191505060405180910390f35b3415620006ec57600080fd5b620006f6620013f1565b005b34156200070457600080fd5b6200070e620019ca565b604051808215151515815260200191505060405180910390f35b34156200073457600080fd5b6200076b600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050620019dd565b604051808215151515815260200191505060405180910390f35b34156200079157600080fd5b620007bf600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505062001c72565b6040518082815260200191505060405180910390f35b3415620007e157600080fd5b620007f9600480803590602001909190505062001cbb565b005b34156200080757600080fd5b62000835600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505062001cf2565b005b34156200084357600080fd5b6200084d62001d7b565b604051808215151515815260200191505060405180910390f35b34156200087357600080fd5b6200087d62001d8e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415620008cb57600080fd5b620008d562001db3565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101562000917578082015181840152602081019050620008fa565b50505050905090810190601f168015620009455780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156200095f57600080fd5b6200096962001e55565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415620009b757600080fd5b620009c162001e7b565b6040518082815260200191505060405180910390f35b3415620009e357600080fd5b62000a1a600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505062001e81565b604051808215151515815260200191505060405180910390f35b341562000a4057600080fd5b62000a77600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050620020ce565b604051808215151515815260200191505060405180910390f35b341562000a9d57600080fd5b62000ad4600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505062002344565b604051808215151515815260200191505060405180910390f35b341562000afa57600080fd5b62000b47600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505062002542565b6040518082815260200191505060405180910390f35b341562000b6957600080fd5b62000b97600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050620025c9565b005b341562000ba557600080fd5b62000bd3600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505062002624565b005b341562000be157600080fd5b62000beb6200267e565b604051808215151515815260200191505060405180910390f35b601260ff16600a0a6323c346000281565b600b60149054906101000a900460ff1681565b6040805190810160405280601081526020017f4661726d61547275737420546f6b656e0000000000000000000000000000000081525081565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151562000cc657600080fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60055481565b60015481565b62000dcd336200129e565b151562000dd957600080fd5b6000600b60146101000a81548160ff021916908315150217905550801562000e04576000600d819055505b7f2fc17e4003679a5c62a754326774a8d5859ca8b778a4fc76600eb55f42995288426040518082815260200191505060405180910390a150565b6000600b60169054906101000a900460ff16151562000e61576000905062001222565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151562000e9e57600080fd5b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151562000eed57600080fd5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151562000f7957600080fd5b62000fcd82600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200269190919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200106482600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620026ab90919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200113882600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200269190919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190505b9392505050565b60036020528060005260406000206000915090505481565b6200124c336200129e565b15156200125857600080fd5b6200126f81600c546200269190919063ffffffff16565b600c8190555050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008173ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16149050919050565b601281565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b62001333336200129e565b15156200133f57600080fd5b600b60169054906101000a900460ff161515156200135c57600080fd5b6001600b60146101000a81548160ff0219169083151502179055506001600b60156101000a81548160ff0219169083151502179055506000600d541415620013a65742600d819055505b7f4736b531619e035ffd67e6ab6f8f455e832f9b72ba4fd399a36c0ae737b784a7600d546040518082815260200191505060405180910390a1565b600d5481565b6000600754905090565b600080600080600080600b60149054906101000a900460ff161580156200141d5750600c54600d540142115b8015620014365750600b60159054906101000a900460ff165b806200144e5750600b60179054906101000a900460ff165b15156200145a57600080fd5b62001465336200129e565b15156200147157600080fd5b600b60169054906101000a900460ff161515156200148e57600080fd5b62f0c2ac95506301e1338094506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff164287876001620014cc620026ca565b808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018215151515815260200195505050505050604051809103906000f08015156200153957600080fd5b93508373ffffffffffffffffffffffffffffffffffffffff1663f2fde38b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1515620015f757600080fd5b6102c65a03f115156200160957600080fd5b50505083600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060065460036000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b60179054906101000a900460ff16151562001904576305a39a8092506312cc030091506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1642848460016200170b620026ca565b808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018215151515815260200195505050505050604051809103906000f08015156200177857600080fd5b90508073ffffffffffffffffffffffffffffffffffffffff1663f2fde38b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15156200183657600080fd5b6102c65a03f115156200184857600080fd5b50505080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600754601260ff16600a0a6323c34600020360036000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6006546005540360036000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600b60166101000a81548160ff0219169083151502179055507f3dfc42c8742b37f7302c02e189240dcda68f20c35b7b8a3158b4f056d6354e11426040518082815260200191505060405180910390a1505050505050565b600b60179054906101000a900460ff1681565b600080600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508083111562001af0576000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062001b86565b62001b0583826200269190919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b62001cc6336200129e565b151562001cd257600080fd5b62001ce981600c54620026ab90919063ffffffff16565b600c8190555050565b62001cfd336200129e565b151562001d0957600080fd5b600b60149054906101000a900460ff16801562001d2b5750600c54600d540142105b151562001d3757600080fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b60169054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60028054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801562001e4d5780601f1062001e215761010080835404028352916020019162001e4d565b820191906000526020600020905b81548152906001019060200180831162001e2f57829003601f168201915b505050505081565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b6000600b60169054906101000a900460ff16151562001ea45760009050620020c8565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151562001ee157600080fd5b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151562001f3057600080fd5b62001f8482600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200269190919063ffffffff16565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200201b82600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620026ab90919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190505b92915050565b600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156200212e57600080fd5b600b60149054906101000a900460ff168015620021505750600c54600d540142105b15156200215c57600080fd5b6200217383600754620026ab90919063ffffffff16565b9050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515620021b257600080fd5b600083111515620021c257600080fd5b601260ff16600a0a6323c34600028111151515620021df57600080fd5b6200223383600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620026ab90919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600781905550828473ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fa2f26fb27c0703469fd15b96714eda618ce4aced994b793ffb09396699057e03426040518082815260200191505060405180910390a4601260ff16600a0a6323c3460002600754141562002339576001600b60176101000a81548160ff0219169083151502179055505b600191505092915050565b6000620023d782600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620026ab90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b620025d4336200129e565b1515620025e057600080fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6200262f336200129e565b15156200263b57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b60159054906101000a900460ff1681565b6000828211151515620026a057fe5b818303905092915050565b6000808284019050838110151515620026c057fe5b8091505092915050565b604051610eaa80620026dc8339019056006060604052341561000f57600080fd5b60405160a080610eaa83398101604052808051906020019091908051906020019091908051906020019091908051906020019091908051906020019091905050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141515156100cb57600080fd5b8183111515156100da57600080fd5b84600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560006101000a81548160ff0219169083151502179055508160048190555061015c838561017364010000000002610b97179091906401000000009004565b600281905550836003819055505050505050610191565b600080828401905083811015151561018757fe5b8091505092915050565b610d0a806101a06000396000f3006060604052600436106100d0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630fb5a6b4146100d557806313d033c0146100fe5780631726cbc81461012757806319165587146101745780632f54bf6e146101ad578063384711cc146101fe57806338af3eed1461024b57806374a8f103146102a0578063872a7810146102d95780638da5cb5b146103065780639852595c1461035b578063be9a6555146103a8578063f2fde38b146103d1578063fa01dc061461040a575b600080fd5b34156100e057600080fd5b6100e861045b565b6040518082815260200191505060405180910390f35b341561010957600080fd5b610111610461565b6040518082815260200191505060405180910390f35b341561013257600080fd5b61015e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610467565b6040518082815260200191505060405180910390f35b341561017f57600080fd5b6101ab600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506104ca565b005b34156101b857600080fd5b6101e4600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610603565b604051808215151515815260200191505060405180910390f35b341561020957600080fd5b610235600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061065c565b6040518082815260200191505060405180910390f35b341561025657600080fd5b61025e610848565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156102ab57600080fd5b6102d7600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061086e565b005b34156102e457600080fd5b6102ec610ab1565b604051808215151515815260200191505060405180910390f35b341561031157600080fd5b610319610ac4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561036657600080fd5b610392600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ae9565b6040518082815260200191505060405180910390f35b34156103b357600080fd5b6103bb610b01565b6040518082815260200191505060405180910390f35b34156103dc57600080fd5b610408600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b07565b005b341561041557600080fd5b610441600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b5e565b604051808215151515815260200191505060405180910390f35b60045481565b60025481565b60006104c3600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546104b58461065c565b610b7e90919063ffffffff16565b9050919050565b60006104d582610467565b90506000811115156104e657600080fd5b61053881600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b9790919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506105c8600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff16610bb59092919063ffffffff16565b7ffb81f9b30d73d830c3544b34d827c08142579ee75710b490bab0b3995468c565816040518082815260200191505060405180910390a15050565b60008173ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16149050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561070457600080fd5b6102c65a03f1151561071557600080fd5b505050604051805190509150610773600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483610b9790919063ffffffff16565b90506002544210156107885760009250610841565b61079f600454600354610b9790919063ffffffff16565b421015806107f65750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561080357809250610841565b61083e60045461083061082160035442610b7e90919063ffffffff16565b84610c8890919063ffffffff16565b610cc390919063ffffffff16565b92505b5050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600061087c33610603565b151561088757600080fd5b600560009054906101000a900460ff1615156108a257600080fd5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156108fb57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561099e57600080fd5b6102c65a03f115156109af57600080fd5b5050506040518051905092506109c484610467565b91506109d98284610b7e90919063ffffffff16565b90506001600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610a7f6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828673ffffffffffffffffffffffffffffffffffffffff16610bb59092919063ffffffff16565b7f44825a4b2df8acb19ce4e1afba9aa850c8b65cdb7942e2078f27d0b0960efee660405160405180910390a150505050565b600560009054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60066020528060005260406000206000915090505481565b60035481565b610b1033610603565b1515610b1b57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60076020528060005260406000206000915054906101000a900460ff1681565b6000828211151515610b8c57fe5b818303905092915050565b6000808284019050838110151515610bab57fe5b8091505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515610c6057600080fd5b6102c65a03f11515610c7157600080fd5b505050604051805190501515610c8357fe5b505050565b6000806000841415610c9d5760009150610cbc565b8284029050828482811515610cae57fe5b04141515610cb857fe5b8091505b5092915050565b6000808284811515610cd157fe5b04905080915050929150505600a165627a7a723058200b95a5e1d768f393c33bb05b3e052b2eed63d57cd2dca6c050160c93cf5134c10029a165627a7a723058204b697d3aa64f916ecc42d2a9da9b72646beda153a58942612cd9cd6fca6f50040029
Deployed Bytecode
0x606060405260043610620001f2576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806267ba6914620001f757806303a5c8e7146200022357806306fdde03146200025357806309153f5714620002e7578063095ea7b3146200033f57806316ae4ec4146200039c57806318160ddd14620003c857806322b36d8814620003f457806323b872dd146200041c57806327e235e3146200049857806329784d9014620004e85780632b37d313146200050e5780632f54bf6e1462000566578063313ce56714620005ba5780633541fe9414620005ec5780633aa612b91462000644578063423592ce146200067057806344f0a4a814620006885780634a1fb24114620006b45780634bb278f314620006e05780634f93594514620006f857806366188463146200072857806370a082311462000785578063728b763c14620007d55780637508f14714620007fb5780638d4e408314620008375780638da5cb5b146200086757806395d89b4114620008bf578063972e61511462000953578063a327353514620009ab578063a9059cbb14620009d7578063c0f401631462000a34578063d73dd6231462000a91578063dd62ed3e1462000aee578063e1541bc31462000b5d578063f2fde38b1462000b99578063f6e7b7851462000bd5575b600080fd5b34156200020357600080fd5b6200020d62000c05565b6040518082815260200191505060405180910390f35b34156200022f57600080fd5b6200023962000c16565b604051808215151515815260200191505060405180910390f35b34156200025f57600080fd5b6200026962000c29565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015620002ab5780820151818401526020810190506200028e565b50505050905090810190601f168015620002d95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415620002f357600080fd5b620002fd62000c62565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156200034b57600080fd5b62000382600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505062000c88565b604051808215151515815260200191505060405180910390f35b3415620003a857600080fd5b620003b262000db6565b6040518082815260200191505060405180910390f35b3415620003d457600080fd5b620003de62000dbc565b6040518082815260200191505060405180910390f35b34156200040057600080fd5b6200041a6004808035151590602001909190505062000dc2565b005b34156200042857600080fd5b6200047e600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505062000e3e565b604051808215151515815260200191505060405180910390f35b3415620004a457600080fd5b620004d2600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505062001229565b6040518082815260200191505060405180910390f35b3415620004f457600080fd5b6200050c600480803590602001909190505062001241565b005b34156200051a57600080fd5b6200052462001278565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156200057257600080fd5b620005a0600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506200129e565b604051808215151515815260200191505060405180910390f35b3415620005c657600080fd5b620005d0620012f7565b604051808260ff1660ff16815260200191505060405180910390f35b3415620005f857600080fd5b62000602620012fc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156200065057600080fd5b6200065a62001322565b6040518082815260200191505060405180910390f35b34156200067c57600080fd5b6200068662001328565b005b34156200069457600080fd5b6200069e620013e1565b6040518082815260200191505060405180910390f35b3415620006c057600080fd5b620006ca620013e7565b6040518082815260200191505060405180910390f35b3415620006ec57600080fd5b620006f6620013f1565b005b34156200070457600080fd5b6200070e620019ca565b604051808215151515815260200191505060405180910390f35b34156200073457600080fd5b6200076b600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050620019dd565b604051808215151515815260200191505060405180910390f35b34156200079157600080fd5b620007bf600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505062001c72565b6040518082815260200191505060405180910390f35b3415620007e157600080fd5b620007f9600480803590602001909190505062001cbb565b005b34156200080757600080fd5b62000835600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505062001cf2565b005b34156200084357600080fd5b6200084d62001d7b565b604051808215151515815260200191505060405180910390f35b34156200087357600080fd5b6200087d62001d8e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415620008cb57600080fd5b620008d562001db3565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101562000917578082015181840152602081019050620008fa565b50505050905090810190601f168015620009455780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156200095f57600080fd5b6200096962001e55565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415620009b757600080fd5b620009c162001e7b565b6040518082815260200191505060405180910390f35b3415620009e357600080fd5b62000a1a600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505062001e81565b604051808215151515815260200191505060405180910390f35b341562000a4057600080fd5b62000a77600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050620020ce565b604051808215151515815260200191505060405180910390f35b341562000a9d57600080fd5b62000ad4600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505062002344565b604051808215151515815260200191505060405180910390f35b341562000afa57600080fd5b62000b47600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505062002542565b6040518082815260200191505060405180910390f35b341562000b6957600080fd5b62000b97600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050620025c9565b005b341562000ba557600080fd5b62000bd3600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505062002624565b005b341562000be157600080fd5b62000beb6200267e565b604051808215151515815260200191505060405180910390f35b601260ff16600a0a6323c346000281565b600b60149054906101000a900460ff1681565b6040805190810160405280601081526020017f4661726d61547275737420546f6b656e0000000000000000000000000000000081525081565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151562000cc657600080fd5b81600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60055481565b60015481565b62000dcd336200129e565b151562000dd957600080fd5b6000600b60146101000a81548160ff021916908315150217905550801562000e04576000600d819055505b7f2fc17e4003679a5c62a754326774a8d5859ca8b778a4fc76600eb55f42995288426040518082815260200191505060405180910390a150565b6000600b60169054906101000a900460ff16151562000e61576000905062001222565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151562000e9e57600080fd5b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151562000eed57600080fd5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151562000f7957600080fd5b62000fcd82600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200269190919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200106482600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620026ab90919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200113882600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200269190919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190505b9392505050565b60036020528060005260406000206000915090505481565b6200124c336200129e565b15156200125857600080fd5b6200126f81600c546200269190919063ffffffff16565b600c8190555050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008173ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16149050919050565b601281565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b62001333336200129e565b15156200133f57600080fd5b600b60169054906101000a900460ff161515156200135c57600080fd5b6001600b60146101000a81548160ff0219169083151502179055506001600b60156101000a81548160ff0219169083151502179055506000600d541415620013a65742600d819055505b7f4736b531619e035ffd67e6ab6f8f455e832f9b72ba4fd399a36c0ae737b784a7600d546040518082815260200191505060405180910390a1565b600d5481565b6000600754905090565b600080600080600080600b60149054906101000a900460ff161580156200141d5750600c54600d540142115b8015620014365750600b60159054906101000a900460ff165b806200144e5750600b60179054906101000a900460ff165b15156200145a57600080fd5b62001465336200129e565b15156200147157600080fd5b600b60169054906101000a900460ff161515156200148e57600080fd5b62f0c2ac95506301e1338094506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff164287876001620014cc620026ca565b808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018215151515815260200195505050505050604051809103906000f08015156200153957600080fd5b93508373ffffffffffffffffffffffffffffffffffffffff1663f2fde38b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1515620015f757600080fd5b6102c65a03f115156200160957600080fd5b50505083600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060065460036000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b60179054906101000a900460ff16151562001904576305a39a8092506312cc030091506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1642848460016200170b620026ca565b808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018215151515815260200195505050505050604051809103906000f08015156200177857600080fd5b90508073ffffffffffffffffffffffffffffffffffffffff1663f2fde38b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15156200183657600080fd5b6102c65a03f115156200184857600080fd5b50505080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600754601260ff16600a0a6323c34600020360036000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6006546005540360036000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600b60166101000a81548160ff0219169083151502179055507f3dfc42c8742b37f7302c02e189240dcda68f20c35b7b8a3158b4f056d6354e11426040518082815260200191505060405180910390a1505050505050565b600b60179054906101000a900460ff1681565b600080600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508083111562001af0576000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062001b86565b62001b0583826200269190919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b62001cc6336200129e565b151562001cd257600080fd5b62001ce981600c54620026ab90919063ffffffff16565b600c8190555050565b62001cfd336200129e565b151562001d0957600080fd5b600b60149054906101000a900460ff16801562001d2b5750600c54600d540142105b151562001d3757600080fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b60169054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60028054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801562001e4d5780601f1062001e215761010080835404028352916020019162001e4d565b820191906000526020600020905b81548152906001019060200180831162001e2f57829003601f168201915b505050505081565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b6000600b60169054906101000a900460ff16151562001ea45760009050620020c8565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151562001ee157600080fd5b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151562001f3057600080fd5b62001f8482600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200269190919063ffffffff16565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200201b82600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620026ab90919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190505b92915050565b600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156200212e57600080fd5b600b60149054906101000a900460ff168015620021505750600c54600d540142105b15156200215c57600080fd5b6200217383600754620026ab90919063ffffffff16565b9050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515620021b257600080fd5b600083111515620021c257600080fd5b601260ff16600a0a6323c34600028111151515620021df57600080fd5b6200223383600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620026ab90919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600781905550828473ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fa2f26fb27c0703469fd15b96714eda618ce4aced994b793ffb09396699057e03426040518082815260200191505060405180910390a4601260ff16600a0a6323c3460002600754141562002339576001600b60176101000a81548160ff0219169083151502179055505b600191505092915050565b6000620023d782600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620026ab90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b620025d4336200129e565b1515620025e057600080fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6200262f336200129e565b15156200263b57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b60159054906101000a900460ff1681565b6000828211151515620026a057fe5b818303905092915050565b6000808284019050838110151515620026c057fe5b8091505092915050565b604051610eaa80620026dc8339019056006060604052341561000f57600080fd5b60405160a080610eaa83398101604052808051906020019091908051906020019091908051906020019091908051906020019091908051906020019091905050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141515156100cb57600080fd5b8183111515156100da57600080fd5b84600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560006101000a81548160ff0219169083151502179055508160048190555061015c838561017364010000000002610b97179091906401000000009004565b600281905550836003819055505050505050610191565b600080828401905083811015151561018757fe5b8091505092915050565b610d0a806101a06000396000f3006060604052600436106100d0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630fb5a6b4146100d557806313d033c0146100fe5780631726cbc81461012757806319165587146101745780632f54bf6e146101ad578063384711cc146101fe57806338af3eed1461024b57806374a8f103146102a0578063872a7810146102d95780638da5cb5b146103065780639852595c1461035b578063be9a6555146103a8578063f2fde38b146103d1578063fa01dc061461040a575b600080fd5b34156100e057600080fd5b6100e861045b565b6040518082815260200191505060405180910390f35b341561010957600080fd5b610111610461565b6040518082815260200191505060405180910390f35b341561013257600080fd5b61015e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610467565b6040518082815260200191505060405180910390f35b341561017f57600080fd5b6101ab600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506104ca565b005b34156101b857600080fd5b6101e4600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610603565b604051808215151515815260200191505060405180910390f35b341561020957600080fd5b610235600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061065c565b6040518082815260200191505060405180910390f35b341561025657600080fd5b61025e610848565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156102ab57600080fd5b6102d7600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061086e565b005b34156102e457600080fd5b6102ec610ab1565b604051808215151515815260200191505060405180910390f35b341561031157600080fd5b610319610ac4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561036657600080fd5b610392600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610ae9565b6040518082815260200191505060405180910390f35b34156103b357600080fd5b6103bb610b01565b6040518082815260200191505060405180910390f35b34156103dc57600080fd5b610408600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b07565b005b341561041557600080fd5b610441600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b5e565b604051808215151515815260200191505060405180910390f35b60045481565b60025481565b60006104c3600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546104b58461065c565b610b7e90919063ffffffff16565b9050919050565b60006104d582610467565b90506000811115156104e657600080fd5b61053881600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b9790919063ffffffff16565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506105c8600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff16610bb59092919063ffffffff16565b7ffb81f9b30d73d830c3544b34d827c08142579ee75710b490bab0b3995468c565816040518082815260200191505060405180910390a15050565b60008173ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16149050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561070457600080fd5b6102c65a03f1151561071557600080fd5b505050604051805190509150610773600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483610b9790919063ffffffff16565b90506002544210156107885760009250610841565b61079f600454600354610b9790919063ffffffff16565b421015806107f65750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561080357809250610841565b61083e60045461083061082160035442610b7e90919063ffffffff16565b84610c8890919063ffffffff16565b610cc390919063ffffffff16565b92505b5050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600061087c33610603565b151561088757600080fd5b600560009054906101000a900460ff1615156108a257600080fd5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156108fb57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561099e57600080fd5b6102c65a03f115156109af57600080fd5b5050506040518051905092506109c484610467565b91506109d98284610b7e90919063ffffffff16565b90506001600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610a7f6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828673ffffffffffffffffffffffffffffffffffffffff16610bb59092919063ffffffff16565b7f44825a4b2df8acb19ce4e1afba9aa850c8b65cdb7942e2078f27d0b0960efee660405160405180910390a150505050565b600560009054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60066020528060005260406000206000915090505481565b60035481565b610b1033610603565b1515610b1b57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60076020528060005260406000206000915054906101000a900460ff1681565b6000828211151515610b8c57fe5b818303905092915050565b6000808284019050838110151515610bab57fe5b8091505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515610c6057600080fd5b6102c65a03f11515610c7157600080fd5b505050604051805190501515610c8357fe5b505050565b6000806000841415610c9d5760009150610cbc565b8284029050828482811515610cae57fe5b04141515610cb857fe5b8091505b5092915050565b6000808284811515610cd157fe5b04905080915050929150505600a165627a7a723058200b95a5e1d768f393c33bb05b3e052b2eed63d57cd2dca6c050160c93cf5134c10029a165627a7a723058204b697d3aa64f916ecc42d2a9da9b72646beda153a58942612cd9cd6fca6f50040029
Swarm Source
bzzr://4b697d3aa64f916ecc42d2a9da9b72646beda153a58942612cd9cd6fca6f5004
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.