Source Code
More Info
Private Name Tags
ContractCreator
Funded By
N/A
Latest 1 internal transaction
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 5367705 | 2907 days ago | 0 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Self Destruct called at Txn Hash 0xc5c9d45760d0869bb9bf8444e9bb462debcf7fa63af701f55cff5c5b5a661366
Contract Name:
KickToken
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-03-30
*/
pragma solidity ^0.4.2;
contract KickOwned {
address public owner;
function KickOwned() {
owner = msg.sender;
}
function changeOwner(address newOwner) onlyOwner {
owner = newOwner;
}
modifier onlyOwner {
require(msg.sender == owner);
_;
}
}
contract KickUtils {
/**
constructor
*/
function Utils() {
}
// validates an address - currently only checks that it isn't null
modifier validAddress(address _address) {
require(_address != 0x0);
_;
}
// verifies that the address is different than this contract address
modifier notThis(address _address) {
require(_address != address(this));
_;
}
// Overflow protected math functions
/**
@dev returns the sum of _x and _y, asserts if the calculation overflows
@param _x value 1
@param _y value 2
@return sum
*/
function safeAdd(uint256 _x, uint256 _y) internal returns (uint256) {
uint256 z = _x + _y;
assert(z >= _x);
return z;
}
/**
@dev returns the difference of _x minus _y, asserts if the subtraction results in a negative number
@param _x minuend
@param _y subtrahend
@return difference
*/
function safeSub(uint256 _x, uint256 _y) internal returns (uint256) {
assert(_x >= _y);
return _x - _y;
}
}
interface tokenRecipient {function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData);}
contract KickToken is KickOwned, KickUtils {
struct Dividend {uint256 time; uint256 tenThousandth; uint256 countComplete;}
/* Public variables of the token */
string public standard = 'Token 0.1';
string public name = 'Experimental KickCoin';
string public symbol = 'EKICK';
uint8 public decimals = 8;
uint256 _totalSupply = 0;
/* Is allowed to burn tokens */
bool public allowManuallyBurnTokens = true;
/* This creates an array with all balances */
mapping (address => uint256) balances;
mapping (address => mapping (uint256 => uint256)) public agingBalanceOf;
uint[] agingTimes;
Dividend[] dividends;
mapping (address => mapping (address => uint256)) allowed;
/* This generates a public event on the blockchain that will notify clients */
event Transfer(address indexed from, address indexed to, uint256 value);
event AgingTransfer(address indexed from, address indexed to, uint256 value, uint256 agingTime);
event Approval(address indexed _owner, address indexed _spender, uint256 _value);
// triggered when the total supply is increased
event Issuance(uint256 _amount);
// triggered when the total supply is decreased
event Destruction(uint256 _amount);
// This notifies clients about the amount burnt
event Burn(address indexed from, uint256 value);
address[] public addressByIndex;
mapping (address => bool) addressAddedToIndex;
mapping (address => uint) agingTimesForPools;
uint16 currentDividendIndex = 1;
mapping (address => uint) calculatedDividendsIndex;
bool public transfersEnabled = true;
event NewSmartToken(address _token);
/* Initializes contract with initial supply tokens to the creator of the contract */
function KickToken() {
owner = msg.sender;
// So that the index starts with 1
dividends.push(Dividend(0, 0, 0));
// 31.10.2017 09:00:00
dividends.push(Dividend(1509440400, 30, 0));
// 30.11.2017 09:00:00
dividends.push(Dividend(1512032400, 20, 0));
// 31.12.2017 09:00:00
dividends.push(Dividend(1514710800, 10, 0));
// 31.01.2018 09:00:00
dividends.push(Dividend(1517389200, 5, 0));
// 28.02.2018 09:00:00
dividends.push(Dividend(1519808400, 10, 0));
// 31.03.2018 09:00:00
dividends.push(Dividend(1522486800, 20, 0));
// 30.04.2018 09:00:00
dividends.push(Dividend(1525078800, 30, 0));
// 31.05.2018 09:00:00
dividends.push(Dividend(1527757200, 50, 0));
// 30.06.2018 09:00:00
dividends.push(Dividend(1530349200, 30, 0));
// 31.07.2018 09:00:00
dividends.push(Dividend(1533027600, 20, 0));
// 31.08.2018 09:00:00
dividends.push(Dividend(1535706000, 10, 0));
// 30.09.2018 09:00:00
dividends.push(Dividend(1538298000, 5, 0));
// 31.10.2018 09:00:00
dividends.push(Dividend(1540976400, 10, 0));
// 30.11.2018 09:00:00
dividends.push(Dividend(1543568400, 20, 0));
// 31.12.2018 09:00:00
dividends.push(Dividend(1546246800, 30, 0));
// 31.01.2019 09:00:00
dividends.push(Dividend(1548925200, 60, 0));
// 28.02.2019 09:00:00
dividends.push(Dividend(1551344400, 30, 0));
// 31.03.2019 09:00:00
dividends.push(Dividend(1554022800, 20, 0));
// 30.04.2019 09:00:00
dividends.push(Dividend(1556614800, 10, 0));
// 31.05.2019 09:00:00
dividends.push(Dividend(1559307600, 20, 0));
// 30.06.2019 09:00:00
dividends.push(Dividend(1561885200, 30, 0));
// 31.07.2019 09:00:00
dividends.push(Dividend(1564563600, 20, 0));
// 31.08.2019 09:00:00
dividends.push(Dividend(1567242000, 10, 0));
// 30.09.2019 09:00:00
dividends.push(Dividend(1569834000, 5, 0));
NewSmartToken(address(this));
}
modifier transfersAllowed {
assert(transfersEnabled);
_;
}
function totalSupply() constant returns (uint256 totalSupply) {
totalSupply = _totalSupply;
}
function balanceOf(address _owner) constant returns (uint256 balance) {
return balances[_owner];
}
function allowance(address _owner, address _spender) constant returns (uint256 remaining) {
return allowed[_owner][_spender];
}
bool allAgingTimesHasBeenAdded = false;
function addAgingTime(uint256 time) onlyOwner {
require(!allAgingTimesHasBeenAdded);
agingTimes.push(time);
}
function allAgingTimesAdded() onlyOwner {
allAgingTimesHasBeenAdded = true;
}
function calculateDividends(uint256 limit) {
require(now >= dividends[currentDividendIndex].time);
require(limit > 0);
limit = safeAdd(dividends[currentDividendIndex].countComplete, limit);
if (limit > addressByIndex.length) {
limit = addressByIndex.length;
}
for (uint256 i = dividends[currentDividendIndex].countComplete; i < limit; i++) {
_addDividendsForAddress(addressByIndex[i]);
}
if (limit == addressByIndex.length) {
currentDividendIndex++;
}
else {
dividends[currentDividendIndex].countComplete = limit;
}
}
/* User can himself receive dividends without waiting for a global accruals */
function receiveDividends() public {
require(now >= dividends[currentDividendIndex].time);
assert(_addDividendsForAddress(msg.sender));
}
function _addDividendsForAddress(address _address) internal returns (bool success) {
// skip calculating dividends, if already calculated for this address
if (calculatedDividendsIndex[_address] >= currentDividendIndex) return false;
uint256 add = balances[_address] * dividends[currentDividendIndex].tenThousandth / 1000;
balances[_address] = safeAdd(balances[_address], add);
Transfer(this, _address, add);
Issuance(add);
_totalSupply = safeAdd(_totalSupply, add);
if (agingBalanceOf[_address][0] > 0) {
agingBalanceOf[_address][0] = safeAdd(agingBalanceOf[_address][0], agingBalanceOf[_address][0] * dividends[currentDividendIndex].tenThousandth / 1000);
for (uint256 k = 0; k < agingTimes.length; k++) {
agingBalanceOf[_address][agingTimes[k]] = safeAdd(agingBalanceOf[_address][agingTimes[k]], agingBalanceOf[_address][agingTimes[k]] * dividends[currentDividendIndex].tenThousandth / 1000);
}
}
calculatedDividendsIndex[_address] = currentDividendIndex;
return true;
}
/* Send coins */
function transfer(address _to, uint256 _value) transfersAllowed returns (bool success) {
_checkMyAging(msg.sender);
if (currentDividendIndex < dividends.length && now >= dividends[currentDividendIndex].time) {
_addDividendsForAddress(msg.sender);
_addDividendsForAddress(_to);
}
require(accountBalance(msg.sender) >= _value);
// Subtract from the sender
balances[msg.sender] = safeSub(balances[msg.sender], _value);
if (agingTimesForPools[msg.sender] > 0 && agingTimesForPools[msg.sender] > now) {
_addToAging(msg.sender, _to, agingTimesForPools[msg.sender], _value);
}
balances[_to] = safeAdd(balances[_to], _value);
_addIndex(_to);
Transfer(msg.sender, _to, _value);
return true;
}
function mintToken(address target, uint256 mintedAmount, uint256 agingTime) onlyOwner {
if (agingTime > now) {
_addToAging(owner, target, agingTime, mintedAmount);
}
balances[target] = safeAdd(balances[target], mintedAmount);
_totalSupply = safeAdd(_totalSupply, mintedAmount);
Issuance(mintedAmount);
_addIndex(target);
Transfer(this, target, mintedAmount);
}
function _addIndex(address _address) internal {
if (!addressAddedToIndex[_address]) {
addressAddedToIndex[_address] = true;
addressByIndex.push(_address);
}
}
function _addToAging(address from, address target, uint256 agingTime, uint256 amount) internal {
agingBalanceOf[target][0] = safeAdd(agingBalanceOf[target][0], amount);
agingBalanceOf[target][agingTime] = safeAdd(agingBalanceOf[target][agingTime], amount);
AgingTransfer(from, target, amount, agingTime);
}
/* Allow another contract to spend some tokens in your behalf */
function approve(address _spender, uint256 _value) returns (bool success) {
allowed[msg.sender][_spender] = _value;
Approval(msg.sender, _spender, _value);
return true;
}
/* Approve and then communicate the approved contract in a single tx */
function approveAndCall(address _spender, uint256 _value, bytes _extraData) returns (bool success) {
tokenRecipient spender = tokenRecipient(_spender);
if (approve(_spender, _value)) {
spender.receiveApproval(msg.sender, _value, this, _extraData);
return true;
}
}
/* A contract attempts to get the coins */
function transferFrom(address _from, address _to, uint256 _value) transfersAllowed returns (bool success) {
_checkMyAging(_from);
if (currentDividendIndex < dividends.length && now >= dividends[currentDividendIndex].time) {
_addDividendsForAddress(_from);
_addDividendsForAddress(_to);
}
// Check if the sender has enough
require(accountBalance(_from) >= _value);
// Check allowed
require(_value <= allowed[_from][msg.sender]);
// Subtract from the sender
balances[_from] = safeSub(balances[_from], _value);
// Add the same to the recipient
balances[_to] = safeAdd(balances[_to], _value);
allowed[_from][msg.sender] = safeSub(allowed[_from][msg.sender], _value);
if (agingTimesForPools[_from] > 0 && agingTimesForPools[_from] > now) {
_addToAging(_from, _to, agingTimesForPools[_from], _value);
}
_addIndex(_to);
Transfer(_from, _to, _value);
return true;
}
/* This unnamed function is called whenever someone tries to send ether to it */
function() {
revert();
// Prevents accidental sending of ether
}
function _checkMyAging(address sender) internal {
if (agingBalanceOf[sender][0] == 0) return;
for (uint256 k = 0; k < agingTimes.length; k++) {
if (agingTimes[k] < now) {
agingBalanceOf[sender][0] = safeSub(agingBalanceOf[sender][0], agingBalanceOf[sender][agingTimes[k]]);
agingBalanceOf[sender][agingTimes[k]] = 0;
}
}
}
function addAgingTimesForPool(address poolAddress, uint256 agingTime) onlyOwner {
agingTimesForPools[poolAddress] = agingTime;
}
function countAddresses() constant returns (uint256 length) {
return addressByIndex.length;
}
function accountBalance(address _address) constant returns (uint256 balance) {
return safeSub(balances[_address], agingBalanceOf[_address][0]);
}
function disableTransfers(bool _disable) public onlyOwner {
transfersEnabled = !_disable;
}
function issue(address _to, uint256 _amount) public onlyOwner validAddress(_to) notThis(_to) {
_totalSupply = safeAdd(_totalSupply, _amount);
balances[_to] = safeAdd(balances[_to], _amount);
_addIndex(_to);
Issuance(_amount);
Transfer(this, _to, _amount);
}
/**
* Destroy tokens
* Remove `_value` tokens from the system irreversibly
* @param _value the amount of money to burn
*/
function burn(uint256 _value) returns (bool success) {
destroy(msg.sender, _value);
Burn(msg.sender, _value);
return true;
}
/**
* Destroy tokens
* Remove `_amount` tokens from the system irreversibly
* @param _from the address from which tokens will be burnt
* @param _amount the amount of money to burn
*/
function destroy(address _from, uint256 _amount) public {
_checkMyAging(_from);
// validate input
require((msg.sender == _from && allowManuallyBurnTokens) || msg.sender == owner);
require(accountBalance(_from) >= _amount);
balances[_from] = safeSub(balances[_from], _amount);
_totalSupply = safeSub(_totalSupply, _amount);
Transfer(_from, this, _amount);
Destruction(_amount);
}
function disableManuallyBurnTokens(bool _disable) public onlyOwner {
allowManuallyBurnTokens = !_disable;
}
function kill() public {
require(msg.sender == owner);
selfdestruct(owner);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":false,"inputs":[],"name":"allAgingTimesAdded","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_disable","type":"bool"}],"name":"disableTransfers","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"totalSupply","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"target","type":"address"},{"name":"mintedAmount","type":"uint256"},{"name":"agingTime","type":"uint256"}],"name":"mintToken","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":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"limit","type":"uint256"}],"name":"calculateDividends","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"allowManuallyBurnTokens","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":false,"inputs":[],"name":"kill","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"Utils","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"standard","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","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":"_disable","type":"bool"}],"name":"disableManuallyBurnTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"receiveDividends","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"issue","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"time","type":"uint256"}],"name":"addAgingTime","outputs":[],"payable":false,"stateMutability":"nonpayable","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":false,"inputs":[{"name":"_from","type":"address"},{"name":"_amount","type":"uint256"}],"name":"destroy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"changeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"transfersEnabled","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"},{"name":"_extraData","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"accountBalance","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"addressByIndex","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"agingBalanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"poolAddress","type":"address"},{"name":"agingTime","type":"uint256"}],"name":"addAgingTimesForPool","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"countAddresses","outputs":[{"name":"length","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":false,"stateMutability":"nonpayable","type":"fallback"},{"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":false,"name":"value","type":"uint256"},{"indexed":false,"name":"agingTime","type":"uint256"}],"name":"AgingTransfer","type":"event"},{"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":false,"name":"_amount","type":"uint256"}],"name":"Issuance","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_amount","type":"uint256"}],"name":"Destruction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_token","type":"address"}],"name":"NewSmartToken","type":"event"}]Contract Creation Code
60606040526040805190810160405280600981526020017f546f6b656e20302e310000000000000000000000000000000000000000000000815250600190805190602001906200005192919062000d2e565b506040805190810160405280601581526020017f4578706572696d656e74616c204b69636b436f696e0000000000000000000000815250600290805190602001906200009f92919062000d2e565b506040805190810160405280600581526020017f454b49434b00000000000000000000000000000000000000000000000000000081525060039080519060200190620000ed92919062000d2e565b506008600460006101000a81548160ff021916908360ff16021790555060006005556001600660006101000a81548160ff0219169083151502179055506001600f60006101000a81548161ffff021916908361ffff1602179055506001601160006101000a81548160ff0219169083151502179055506000601160016101000a81548160ff02191690831515021790555034156200018a57600080fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a805480600101828162000220919062000db5565b91600052602060002090600302016000606060405190810160405280600081526020016000815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a80548060010182816200028b919062000db5565b916000526020600020906003020160006060604051908101604052806359f83b908152602001601e815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a8054806001018281620002f9919062000db5565b91600052602060002090600302016000606060405190810160405280635a1fc89081526020016014815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a805480600101828162000367919062000db5565b91600052602060002090600302016000606060405190810160405280635a48a7108152602001600a815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a8054806001018281620003d5919062000db5565b91600052602060002090600302016000606060405190810160405280635a71859081526020016005815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a805480600101828162000443919062000db5565b91600052602060002090600302016000606060405190810160405280635a966f908152602001600a815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a8054806001018281620004b1919062000db5565b91600052602060002090600302016000606060405190810160405280635abf4e1081526020016014815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a80548060010182816200051f919062000db5565b91600052602060002090600302016000606060405190810160405280635ae6db108152602001601e815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a80548060010182816200058d919062000db5565b91600052602060002090600302016000606060405190810160405280635b0fb99081526020016032815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a8054806001018281620005fb919062000db5565b91600052602060002090600302016000606060405190810160405280635b3746908152602001601e815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a805480600101828162000669919062000db5565b91600052602060002090600302016000606060405190810160405280635b60251081526020016014815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a8054806001018281620006d7919062000db5565b91600052602060002090600302016000606060405190810160405280635b8903908152602001600a815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a805480600101828162000745919062000db5565b91600052602060002090600302016000606060405190810160405280635bb0909081526020016005815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a8054806001018281620007b3919062000db5565b91600052602060002090600302016000606060405190810160405280635bd96f108152602001600a815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a805480600101828162000821919062000db5565b91600052602060002090600302016000606060405190810160405280635c00fc1081526020016014815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a80548060010182816200088f919062000db5565b91600052602060002090600302016000606060405190810160405280635c29da908152602001601e815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a8054806001018281620008fd919062000db5565b91600052602060002090600302016000606060405190810160405280635c52b9108152602001603c815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a80548060010182816200096b919062000db5565b91600052602060002090600302016000606060405190810160405280635c77a3108152602001601e815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a8054806001018281620009d9919062000db5565b91600052602060002090600302016000606060405190810160405280635ca0819081526020016014815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a805480600101828162000a47919062000db5565b91600052602060002090600302016000606060405190810160405280635cc80e908152602001600a815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a805480600101828162000ab5919062000db5565b91600052602060002090600302016000606060405190810160405280635cf1255081526020016014815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a805480600101828162000b23919062000db5565b91600052602060002090600302016000606060405190810160405280635d187a108152602001601e815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a805480600101828162000b91919062000db5565b91600052602060002090600302016000606060405190810160405280635d41589081526020016014815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a805480600101828162000bff919062000db5565b91600052602060002090600302016000606060405190810160405280635d6a37108152602001600a815260200160008152509091909150600082015181600001556020820151816001015560408201518160020155505050600a805480600101828162000c6d919062000db5565b91600052602060002090600302016000606060405190810160405280635d91c410815260200160058152602001600081525090919091506000820151816000015560208201518160010155604082015181600201555050507ff4cd1f8571e8d9c97ffcb81558807ab73f9803d54de5da6a0420593c82a4a9f030604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a162000e4c565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000d7157805160ff191683800117855562000da2565b8280016001018555821562000da2579182015b8281111562000da157825182559160200191906001019062000d84565b5b50905062000db1919062000dea565b5090565b81548183558181151162000de55760030281600302836000526020600020918201910162000de4919062000e12565b5b505050565b62000e0f91905b8082111562000e0b57600081600090555060010162000df1565b5090565b90565b62000e4991905b8082111562000e4557600080820160009055600182016000905560028201600090555060030162000e19565b5090565b90565b6130df8062000e5c6000396000f300606060405260043610610196576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063037ca6c4146101a657806306fdde03146101bb578063095ea7b3146102495780631608f18f146102a357806318160ddd146102c857806323a36d2b146102f157806323b872dd1461033c5780632cf86006146103b557806330762e2e146103d8578063313ce5671461040557806341c0e1b51461043457806342966c681461044957806354da5393146104845780635a3b7e421461049957806370a082311461052757806371766ae31461057457806379fc468714610599578063867904b4146105ae5780638d37f52c146105f05780638da5cb5b1461061357806395d89b4114610668578063a24835d1146106f6578063a6f9dae114610738578063a9059cbb14610771578063bef97c87146107cb578063cae9ca51146107f8578063d294cb0f14610895578063d8ab9208146108e2578063dd62ed3e14610945578063e27f0236146109b1578063ea6ca18214610a07578063ec530de614610a49575b34156101a157600080fd5b600080fd5b34156101b157600080fd5b6101b9610a72565b005b34156101c657600080fd5b6101ce610aea565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561020e5780820151818401526020810190506101f3565b50505050905090810190601f16801561023b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561025457600080fd5b610289600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610b88565b604051808215151515815260200191505060405180910390f35b34156102ae57600080fd5b6102c660048080351515906020019091905050610c7a565b005b34156102d357600080fd5b6102db610cf3565b6040518082815260200191505060405180910390f35b34156102fc57600080fd5b61033a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091908035906020019091905050610cfd565b005b341561034757600080fd5b61039b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610ed6565b604051808215151515815260200191505060405180910390f35b34156103c057600080fd5b6103d66004808035906020019091905050611386565b005b34156103e357600080fd5b6103eb611546565b604051808215151515815260200191505060405180910390f35b341561041057600080fd5b610418611559565b604051808260ff1660ff16815260200191505060405180910390f35b341561043f57600080fd5b61044761156c565b005b341561045457600080fd5b61046a6004808035906020019091905050611601565b604051808215151515815260200191505060405180910390f35b341561048f57600080fd5b610497611664565b005b34156104a457600080fd5b6104ac611666565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104ec5780820151818401526020810190506104d1565b50505050905090810190601f1680156105195780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561053257600080fd5b61055e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611704565b6040518082815260200191505060405180910390f35b341561057f57600080fd5b6105976004808035151590602001909190505061174d565b005b34156105a457600080fd5b6105ac6117c6565b005b34156105b957600080fd5b6105ee600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061181c565b005b34156105fb57600080fd5b6106116004808035906020019091905050611a23565b005b341561061e57600080fd5b610626611ac6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561067357600080fd5b61067b611aeb565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106bb5780820151818401526020810190506106a0565b50505050905090810190601f1680156106e85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561070157600080fd5b610736600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611b89565b005b341561074357600080fd5b61076f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611d90565b005b341561077c57600080fd5b6107b1600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611e2e565b604051808215151515815260200191505060405180910390f35b34156107d657600080fd5b6107de61214c565b604051808215151515815260200191505060405180910390f35b341561080357600080fd5b61087b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061215f565b604051808215151515815260200191505060405180910390f35b34156108a057600080fd5b6108cc600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506122dd565b6040518082815260200191505060405180910390f35b34156108ed57600080fd5b610903600480803590602001909190505061237f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561095057600080fd5b61099b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506123be565b6040518082815260200191505060405180910390f35b34156109bc57600080fd5b6109f1600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612445565b6040518082815260200191505060405180910390f35b3415610a1257600080fd5b610a47600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061246a565b005b3415610a5457600080fd5b610a5c61250d565b6040518082815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610acd57600080fd5b6001601160016101000a81548160ff021916908315150217905550565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b805780601f10610b5557610100808354040283529160200191610b80565b820191906000526020600020905b815481529060010190602001808311610b6357829003601f168201915b505050505081565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610cd557600080fd5b8015601160006101000a81548160ff02191690831515021790555050565b6000600554905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d5857600080fd5b42811115610d8e57610d8d6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684838561251a565b5b610dd7600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836126e9565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e26600554836126e9565b6005819055507f9386c90217c323f58030f9dadcbc938f807a940f4ff41cd4cead9562f5da7dc3826040518082815260200191505060405180910390a1610e6c83612707565b8273ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505050565b6000601160009054906101000a900460ff161515610ef057fe5b610ef984612819565b600a80549050600f60009054906101000a900461ffff1661ffff16108015610f555750600a600f60009054906101000a900461ffff1661ffff16815481101515610f3f57fe5b9060005260206000209060030201600001544210155b15610f6f57610f6384612a47565b50610f6d83612a47565b505b81610f79856122dd565b10151515610f8657600080fd5b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561101157600080fd5b61105a600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361301d565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506110e6600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836126e9565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111af600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361301d565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180156112bc575042600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561130d5761130c8484600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548561251a565b5b61131683612707565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000600a600f60009054906101000a900461ffff1661ffff168154811015156113ab57fe5b90600052602060002090600302016000015442101515156113cb57600080fd5b6000821115156113da57600080fd5b611418600a600f60009054906101000a900461ffff1661ffff1681548110151561140057fe5b906000526020600020906003020160020154836126e9565b9150600c8054905082111561143057600c8054905091505b600a600f60009054906101000a900461ffff1661ffff1681548110151561145357fe5b90600052602060002090600302016002015490505b818110156114c1576114b3600c8281548110151561148257fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612a47565b508080600101915050611468565b600c8054905082141561150857600f600081819054906101000a900461ffff168092919060010191906101000a81548161ffff021916908361ffff16021790555050611542565b81600a600f60009054906101000a900461ffff1661ffff1681548110151561152c57fe5b9060005260206000209060030201600201819055505b5050565b600660009054906101000a900460ff1681565b600460009054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115c757600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b600061160d3383611b89565b3373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a260019050919050565b565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156116fc5780601f106116d1576101008083540402835291602001916116fc565b820191906000526020600020905b8154815290600101906020018083116116df57829003601f168201915b505050505081565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117a857600080fd5b8015600660006101000a81548160ff02191690831515021790555050565b600a600f60009054906101000a900461ffff1661ffff168154811015156117e957fe5b906000526020600020906003020160000154421015151561180957600080fd5b61181233612a47565b151561181a57fe5b565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561187757600080fd5b8160008173ffffffffffffffffffffffffffffffffffffffff161415151561189e57600080fd5b823073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156118da57600080fd5b6118e6600554846126e9565b600581905550611935600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846126e9565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061198184612707565b7f9386c90217c323f58030f9dadcbc938f807a940f4ff41cd4cead9562f5da7dc3836040518082815260200191505060405180910390a18373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a350505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a7e57600080fd5b601160019054906101000a900460ff16151515611a9a57600080fd5b60098054806001018281611aae9190613036565b91600052602060002090016000839091909150555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611b815780601f10611b5657610100808354040283529160200191611b81565b820191906000526020600020905b815481529060010190602001808311611b6457829003601f168201915b505050505081565b611b9282612819565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148015611bd95750600660009054906101000a900460ff165b80611c3057506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611c3b57600080fd5b80611c45836122dd565b10151515611c5257600080fd5b611c9b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261301d565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611cea6005548261301d565b6005819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a37f9a1b418bc061a5d80270261562e6986a35d995f8051145f277be16103abd3453816040518082815260200191505060405180910390a15050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611deb57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000601160009054906101000a900460ff161515611e4857fe5b611e5133612819565b600a80549050600f60009054906101000a900461ffff1661ffff16108015611ead5750600a600f60009054906101000a900461ffff1661ffff16815481101515611e9757fe5b9060005260206000209060030201600001544210155b15611ec757611ebb33612a47565b50611ec583612a47565b505b81611ed1336122dd565b10151515611ede57600080fd5b611f27600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361301d565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118015611ff7575042600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612048576120473384600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548561251a565b5b612091600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836126e9565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120dd83612707565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b601160009054906101000a900460ff1681565b60008084905061216f8585610b88565b156122d4578073ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338630876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561226957808201518184015260208101905061224e565b50505050905090810190601f1680156122965780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15156122b757600080fd5b6102c65a03f115156122c857600080fd5b505050600191506122d5565b5b509392505050565b6000612378600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008081526020019081526020016000205461301d565b9050919050565b600c8181548110151561238e57fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6008602052816000526040600020602052806000526040600020600091509150505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156124c557600080fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000600c80549050905090565b612574600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080815260200190815260200160002054826126e9565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080815260200190815260200160002081905550612622600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054826126e9565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f46a1749a7648b704d1ad3fe33741b13174a4b1641db362e808d00eab7250d1068385604051808381526020018281526020019250505060405180910390a350505050565b60008082840190508381101515156126fd57fe5b8091505092915050565b600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515612816576001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600c80548060010182816127c69190613062565b9160005260206000209001600083909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b50565b600080600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080815260200190815260200160002054141561287857612a43565b600090505b600980549050811015612a42574260098281548110151561289a57fe5b9060005260206000209001541015612a3557612970600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080815260200190815260200160002054600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060098581548110151561295057fe5b90600052602060002090015481526020019081526020016000205461301d565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808152602001908152602001600020819055506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600984815481101515612a1657fe5b9060005260206000209001548152602001908152602001600020819055505b808060010191505061287d565b5b5050565b6000806000600f60009054906101000a900461ffff1661ffff16601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515612ab15760009250613016565b6103e8600a600f60009054906101000a900461ffff1661ffff16815481101515612ad757fe5b906000526020600020906003020160010154600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205402811515612b3357fe5b049150612b7f600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836126e9565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a37f9386c90217c323f58030f9dadcbc938f807a940f4ff41cd4cead9562f5da7dc3826040518082815260200191505060405180910390a1612c6a600554836126e9565b6005819055506000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808152602001908152602001600020541115612fb957612db6600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808152602001908152602001600020546103e8600a600f60009054906101000a900461ffff1661ffff16815481101515612d4357fe5b906000526020600020906003020160010154600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008081526020019081526020016000205402811515612db057fe5b046126e9565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080815260200190815260200160002081905550600090505b600980549050811015612fb857612f3d600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600984815481101515612e6f57fe5b9060005260206000209001548152602001908152602001600020546103e8600a600f60009054906101000a900461ffff1661ffff16815481101515612eb057fe5b906000526020600020906003020160010154600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600987815481101515612f1257fe5b90600052602060002090015481526020019081526020016000205402811515612f3757fe5b046126e9565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600984815481101515612f8d57fe5b9060005260206000209001548152602001908152602001600020819055508080600101915050612e0f565b5b600f60009054906101000a900461ffff1661ffff16601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600192505b5050919050565b600081831015151561302b57fe5b818303905092915050565b81548183558181151161305d5781836000526020600020918201910161305c919061308e565b5b505050565b81548183558181151161308957818360005260206000209182019101613088919061308e565b5b505050565b6130b091905b808211156130ac576000816000905550600101613094565b5090565b905600a165627a7a7230582087117159ae647689bd0b8791a5edd716d903bdd98c3fc7da8c096f0a027619840029
Deployed Bytecode
0x606060405260043610610196576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063037ca6c4146101a657806306fdde03146101bb578063095ea7b3146102495780631608f18f146102a357806318160ddd146102c857806323a36d2b146102f157806323b872dd1461033c5780632cf86006146103b557806330762e2e146103d8578063313ce5671461040557806341c0e1b51461043457806342966c681461044957806354da5393146104845780635a3b7e421461049957806370a082311461052757806371766ae31461057457806379fc468714610599578063867904b4146105ae5780638d37f52c146105f05780638da5cb5b1461061357806395d89b4114610668578063a24835d1146106f6578063a6f9dae114610738578063a9059cbb14610771578063bef97c87146107cb578063cae9ca51146107f8578063d294cb0f14610895578063d8ab9208146108e2578063dd62ed3e14610945578063e27f0236146109b1578063ea6ca18214610a07578063ec530de614610a49575b34156101a157600080fd5b600080fd5b34156101b157600080fd5b6101b9610a72565b005b34156101c657600080fd5b6101ce610aea565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561020e5780820151818401526020810190506101f3565b50505050905090810190601f16801561023b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561025457600080fd5b610289600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610b88565b604051808215151515815260200191505060405180910390f35b34156102ae57600080fd5b6102c660048080351515906020019091905050610c7a565b005b34156102d357600080fd5b6102db610cf3565b6040518082815260200191505060405180910390f35b34156102fc57600080fd5b61033a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091908035906020019091905050610cfd565b005b341561034757600080fd5b61039b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610ed6565b604051808215151515815260200191505060405180910390f35b34156103c057600080fd5b6103d66004808035906020019091905050611386565b005b34156103e357600080fd5b6103eb611546565b604051808215151515815260200191505060405180910390f35b341561041057600080fd5b610418611559565b604051808260ff1660ff16815260200191505060405180910390f35b341561043f57600080fd5b61044761156c565b005b341561045457600080fd5b61046a6004808035906020019091905050611601565b604051808215151515815260200191505060405180910390f35b341561048f57600080fd5b610497611664565b005b34156104a457600080fd5b6104ac611666565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104ec5780820151818401526020810190506104d1565b50505050905090810190601f1680156105195780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561053257600080fd5b61055e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611704565b6040518082815260200191505060405180910390f35b341561057f57600080fd5b6105976004808035151590602001909190505061174d565b005b34156105a457600080fd5b6105ac6117c6565b005b34156105b957600080fd5b6105ee600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061181c565b005b34156105fb57600080fd5b6106116004808035906020019091905050611a23565b005b341561061e57600080fd5b610626611ac6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561067357600080fd5b61067b611aeb565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106bb5780820151818401526020810190506106a0565b50505050905090810190601f1680156106e85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561070157600080fd5b610736600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611b89565b005b341561074357600080fd5b61076f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611d90565b005b341561077c57600080fd5b6107b1600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611e2e565b604051808215151515815260200191505060405180910390f35b34156107d657600080fd5b6107de61214c565b604051808215151515815260200191505060405180910390f35b341561080357600080fd5b61087b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061215f565b604051808215151515815260200191505060405180910390f35b34156108a057600080fd5b6108cc600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506122dd565b6040518082815260200191505060405180910390f35b34156108ed57600080fd5b610903600480803590602001909190505061237f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561095057600080fd5b61099b600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506123be565b6040518082815260200191505060405180910390f35b34156109bc57600080fd5b6109f1600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612445565b6040518082815260200191505060405180910390f35b3415610a1257600080fd5b610a47600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061246a565b005b3415610a5457600080fd5b610a5c61250d565b6040518082815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610acd57600080fd5b6001601160016101000a81548160ff021916908315150217905550565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b805780601f10610b5557610100808354040283529160200191610b80565b820191906000526020600020905b815481529060010190602001808311610b6357829003601f168201915b505050505081565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610cd557600080fd5b8015601160006101000a81548160ff02191690831515021790555050565b6000600554905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d5857600080fd5b42811115610d8e57610d8d6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684838561251a565b5b610dd7600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836126e9565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e26600554836126e9565b6005819055507f9386c90217c323f58030f9dadcbc938f807a940f4ff41cd4cead9562f5da7dc3826040518082815260200191505060405180910390a1610e6c83612707565b8273ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505050565b6000601160009054906101000a900460ff161515610ef057fe5b610ef984612819565b600a80549050600f60009054906101000a900461ffff1661ffff16108015610f555750600a600f60009054906101000a900461ffff1661ffff16815481101515610f3f57fe5b9060005260206000209060030201600001544210155b15610f6f57610f6384612a47565b50610f6d83612a47565b505b81610f79856122dd565b10151515610f8657600080fd5b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561101157600080fd5b61105a600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361301d565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506110e6600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836126e9565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111af600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361301d565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180156112bc575042600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561130d5761130c8484600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548561251a565b5b61131683612707565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b6000600a600f60009054906101000a900461ffff1661ffff168154811015156113ab57fe5b90600052602060002090600302016000015442101515156113cb57600080fd5b6000821115156113da57600080fd5b611418600a600f60009054906101000a900461ffff1661ffff1681548110151561140057fe5b906000526020600020906003020160020154836126e9565b9150600c8054905082111561143057600c8054905091505b600a600f60009054906101000a900461ffff1661ffff1681548110151561145357fe5b90600052602060002090600302016002015490505b818110156114c1576114b3600c8281548110151561148257fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612a47565b508080600101915050611468565b600c8054905082141561150857600f600081819054906101000a900461ffff168092919060010191906101000a81548161ffff021916908361ffff16021790555050611542565b81600a600f60009054906101000a900461ffff1661ffff1681548110151561152c57fe5b9060005260206000209060030201600201819055505b5050565b600660009054906101000a900460ff1681565b600460009054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115c757600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b600061160d3383611b89565b3373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5836040518082815260200191505060405180910390a260019050919050565b565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156116fc5780601f106116d1576101008083540402835291602001916116fc565b820191906000526020600020905b8154815290600101906020018083116116df57829003601f168201915b505050505081565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117a857600080fd5b8015600660006101000a81548160ff02191690831515021790555050565b600a600f60009054906101000a900461ffff1661ffff168154811015156117e957fe5b906000526020600020906003020160000154421015151561180957600080fd5b61181233612a47565b151561181a57fe5b565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561187757600080fd5b8160008173ffffffffffffffffffffffffffffffffffffffff161415151561189e57600080fd5b823073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156118da57600080fd5b6118e6600554846126e9565b600581905550611935600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846126e9565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061198184612707565b7f9386c90217c323f58030f9dadcbc938f807a940f4ff41cd4cead9562f5da7dc3836040518082815260200191505060405180910390a18373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a350505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a7e57600080fd5b601160019054906101000a900460ff16151515611a9a57600080fd5b60098054806001018281611aae9190613036565b91600052602060002090016000839091909150555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611b815780601f10611b5657610100808354040283529160200191611b81565b820191906000526020600020905b815481529060010190602001808311611b6457829003601f168201915b505050505081565b611b9282612819565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148015611bd95750600660009054906101000a900460ff165b80611c3057506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611c3b57600080fd5b80611c45836122dd565b10151515611c5257600080fd5b611c9b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261301d565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611cea6005548261301d565b6005819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a37f9a1b418bc061a5d80270261562e6986a35d995f8051145f277be16103abd3453816040518082815260200191505060405180910390a15050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611deb57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000601160009054906101000a900460ff161515611e4857fe5b611e5133612819565b600a80549050600f60009054906101000a900461ffff1661ffff16108015611ead5750600a600f60009054906101000a900461ffff1661ffff16815481101515611e9757fe5b9060005260206000209060030201600001544210155b15611ec757611ebb33612a47565b50611ec583612a47565b505b81611ed1336122dd565b10151515611ede57600080fd5b611f27600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361301d565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118015611ff7575042600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612048576120473384600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548561251a565b5b612091600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836126e9565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120dd83612707565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b601160009054906101000a900460ff1681565b60008084905061216f8585610b88565b156122d4578073ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338630876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561226957808201518184015260208101905061224e565b50505050905090810190601f1680156122965780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15156122b757600080fd5b6102c65a03f115156122c857600080fd5b505050600191506122d5565b5b509392505050565b6000612378600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008081526020019081526020016000205461301d565b9050919050565b600c8181548110151561238e57fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6008602052816000526040600020602052806000526040600020600091509150505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156124c557600080fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000600c80549050905090565b612574600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080815260200190815260200160002054826126e9565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080815260200190815260200160002081905550612622600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054826126e9565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f46a1749a7648b704d1ad3fe33741b13174a4b1641db362e808d00eab7250d1068385604051808381526020018281526020019250505060405180910390a350505050565b60008082840190508381101515156126fd57fe5b8091505092915050565b600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515612816576001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600c80548060010182816127c69190613062565b9160005260206000209001600083909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505b50565b600080600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080815260200190815260200160002054141561287857612a43565b600090505b600980549050811015612a42574260098281548110151561289a57fe5b9060005260206000209001541015612a3557612970600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080815260200190815260200160002054600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060098581548110151561295057fe5b90600052602060002090015481526020019081526020016000205461301d565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808152602001908152602001600020819055506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600984815481101515612a1657fe5b9060005260206000209001548152602001908152602001600020819055505b808060010191505061287d565b5b5050565b6000806000600f60009054906101000a900461ffff1661ffff16601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101515612ab15760009250613016565b6103e8600a600f60009054906101000a900461ffff1661ffff16815481101515612ad757fe5b906000526020600020906003020160010154600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205402811515612b3357fe5b049150612b7f600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836126e9565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a37f9386c90217c323f58030f9dadcbc938f807a940f4ff41cd4cead9562f5da7dc3826040518082815260200191505060405180910390a1612c6a600554836126e9565b6005819055506000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808152602001908152602001600020541115612fb957612db6600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000808152602001908152602001600020546103e8600a600f60009054906101000a900461ffff1661ffff16815481101515612d4357fe5b906000526020600020906003020160010154600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008081526020019081526020016000205402811515612db057fe5b046126e9565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600080815260200190815260200160002081905550600090505b600980549050811015612fb857612f3d600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600984815481101515612e6f57fe5b9060005260206000209001548152602001908152602001600020546103e8600a600f60009054906101000a900461ffff1661ffff16815481101515612eb057fe5b906000526020600020906003020160010154600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600987815481101515612f1257fe5b90600052602060002090015481526020019081526020016000205402811515612f3757fe5b046126e9565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600984815481101515612f8d57fe5b9060005260206000209001548152602001908152602001600020819055508080600101915050612e0f565b5b600f60009054906101000a900461ffff1661ffff16601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600192505b5050919050565b600081831015151561302b57fe5b818303905092915050565b81548183558181151161305d5781836000526020600020918201910161305c919061308e565b5b505050565b81548183558181151161308957818360005260206000209182019101613088919061308e565b5b505050565b6130b091905b808211156130ac576000816000905550600101613094565b5090565b905600a165627a7a7230582087117159ae647689bd0b8791a5edd716d903bdd98c3fc7da8c096f0a027619840029
Swarm Source
bzzr://87117159ae647689bd0b8791a5edd716d903bdd98c3fc7da8c096f0a02761984
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.