Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 67 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Transfer | 11086157 | 1959 days ago | IN | 0 ETH | 0.00215684 | ||||
| Transfer | 11086149 | 1959 days ago | IN | 0 ETH | 0.00210424 | ||||
| Transfer | 11042390 | 1965 days ago | IN | 0 ETH | 0.00152557 | ||||
| Transfer | 11040976 | 1966 days ago | IN | 0 ETH | 0.00299854 | ||||
| Transfer | 11021950 | 1969 days ago | IN | 0 ETH | 0.0035772 | ||||
| Transfer | 11021780 | 1969 days ago | IN | 0 ETH | 0.00483864 | ||||
| Transfer | 11015886 | 1969 days ago | IN | 0 ETH | 0.00488288 | ||||
| Transfer | 10971559 | 1976 days ago | IN | 0 ETH | 0.00430488 | ||||
| Transfer | 10971097 | 1976 days ago | IN | 0 ETH | 0.00583926 | ||||
| Transfer | 10970985 | 1977 days ago | IN | 0 ETH | 0.00338454 | ||||
| Transfer | 10964371 | 1978 days ago | IN | 0 ETH | 0.00641793 | ||||
| Transfer | 10964259 | 1978 days ago | IN | 0 ETH | 0.0044375 | ||||
| Transfer | 10964230 | 1978 days ago | IN | 0 ETH | 0.00421187 | ||||
| Transfer | 10964203 | 1978 days ago | IN | 0 ETH | 0.00413534 | ||||
| Transfer | 10964171 | 1978 days ago | IN | 0 ETH | 0.00409905 | ||||
| Transfer | 10964038 | 1978 days ago | IN | 0 ETH | 0.00402384 | ||||
| Transfer | 10964022 | 1978 days ago | IN | 0 ETH | 0.00402384 | ||||
| Transfer | 10963990 | 1978 days ago | IN | 0 ETH | 0.00357257 | ||||
| Transfer | 10963976 | 1978 days ago | IN | 0 ETH | 0.00349735 | ||||
| Transfer | 10963957 | 1978 days ago | IN | 0 ETH | 0.00345975 | ||||
| Transfer | 10963955 | 1978 days ago | IN | 0 ETH | 0.00483975 | ||||
| Transfer Pre Sig... | 10939248 | 1981 days ago | IN | 0 ETH | 0.01007312 | ||||
| Transfer | 10873690 | 1992 days ago | IN | 0 ETH | 0.00571611 | ||||
| Transfer | 10873590 | 1992 days ago | IN | 0 ETH | 0.00545461 | ||||
| Transfer | 10873514 | 1992 days ago | IN | 0 ETH | 0.00522723 |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
GiftCoin
Compiler Version
v0.4.24+commit.e67f0147
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2020-08-07
*/
pragma solidity 0.4.24;
/**
* @title SafeMath
* @dev Math operations with safety checks that throw on error
**/
library SafeMathLib{
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a * b;
assert(a == 0 || c / a == b);
return c;
}
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;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
assert(b <= a);
return a - b;
}
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
assert(c >= a);
return c;
}
}
/**
* @title Ownable
* @dev The Ownable contract has an owner address, and provides basic authorization control
* functions, this simplifies the implementation of "user permissions".
**/
contract Ownable {
address public owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev The Ownable constructor sets the original `owner` of the contract to the sender
* account.
*/
function Ownable() public {
owner = msg.sender;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(msg.sender == owner);
_;
}
/**
* @dev Allows the current owner to transfer control of the contract to a newOwner.
* @param newOwner The address to transfer ownership to.
*/
function transferOwnership(address newOwner) onlyOwner public {
require(newOwner != address(0));
emit OwnershipTransferred(owner, newOwner);
owner = newOwner;
}
}
/**
* @dev Abstract contract for approveAndCall.
**/
contract ApproveAndCallFallBack {
function receiveApproval(address from, uint256 tokens, address token, bytes data) public;
}
/**
* @title Gift COIN Token
* @dev ERC20 contract utilizing ERC865-ish structure (3esmit's implementation with alterations).
* @dev to allow users to pay Ethereum fees in tokens.
**/
contract GiftCoin is Ownable {
using SafeMathLib for uint256;
string public constant symbol = "G";
string public constant name = "Gift Coin";
uint8 public constant decimals = 18;
uint256 private _totalSupply = 1000000000000 * (10 ** 18);
// Function sigs to be used within contract for signature recovery.
bytes4 internal constant transferSig = 0xa9059cbb;
bytes4 internal constant approveSig = 0x095ea7b3;
bytes4 internal constant increaseApprovalSig = 0xd73dd623;
bytes4 internal constant decreaseApprovalSig = 0x66188463;
bytes4 internal constant approveAndCallSig = 0xcae9ca51;
bytes4 internal constant revokeSignatureSig = 0xe40d89e5;
// Balances for each account
mapping(address => uint256) balances;
// Owner of account approves the transfer of an amount to another account
mapping(address => mapping (address => uint256)) allowed;
// Keeps track of the last nonce sent from user. Used for delegated functions.
mapping (address => uint256) nonces;
// Mapping of past used hashes: true if already used.
mapping (address => mapping (bytes => bool)) invalidSignatures;
// Mapping of finalized ERC865 standard sigs => our function sigs for future-proofing
mapping (bytes4 => bytes4) public standardSigs;
event Transfer(address indexed from, address indexed to, uint tokens);
event Approval(address indexed from, address indexed spender, uint tokens);
event SignatureRedeemed(bytes _sig, address indexed from);
/**
* @dev Set owner and beginning balance.
**/
constructor()
public
{
balances[msg.sender] = _totalSupply;
}
/**
* @dev This code allows us to redirect pre-signed calls with different function selectors to our own.
**/
function ()
public
{
bytes memory calldata = msg.data;
bytes4 new_selector = standardSigs[msg.sig];
require(new_selector != 0);
assembly {
mstore(add(0x20, calldata), new_selector)
}
require(address(this).delegatecall(calldata));
assembly {
if iszero(eq(returndatasize, 0x20)) { revert(0, 0) }
returndatacopy(0, 0, returndatasize)
return(0, returndatasize)
}
}
/** ******************************** ERC20 ********************************* **/
/**
* @dev Transfers coins from one address to another.
* @param _to The recipient of the transfer amount.
* @param _amount The amount of tokens to transfer.
**/
function transfer(address _to, uint256 _amount)
public
returns (bool success)
{
require(_transfer(msg.sender, _to, _amount));
return true;
}
/**
* @dev An allowed address can transfer tokens from another's address.
* @param _from The owner of the tokens to be transferred.
* @param _to The address to which the tokens will be transferred.
* @param _amount The amount of tokens to be transferred.
**/
function transferFrom(address _from, address _to, uint _amount)
public
returns (bool success)
{
require(balances[_from] >= _amount && allowed[_from][msg.sender] >= _amount);
allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_amount);
require(_transfer(_from, _to, _amount));
return true;
}
/**
* @dev Approves a wallet to transfer tokens on one's behalf.
* @param _spender The wallet approved to spend tokens.
* @param _amount The amount of tokens approved to spend.
**/
function approve(address _spender, uint256 _amount)
public
returns (bool success)
{
require(_approve(msg.sender, _spender, _amount));
return true;
}
/**
* @dev Increases the allowed amount for spender from msg.sender.
* @param _spender The address to increase allowed amount for.
* @param _amount The amount of tokens to increase allowed amount by.
**/
function increaseApproval(address _spender, uint256 _amount)
public
returns (bool success)
{
require(_increaseApproval(msg.sender, _spender, _amount));
return true;
}
/**
* @dev Decreases the allowed amount for spender from msg.sender.
* @param _spender The address to decrease allowed amount for.
* @param _amount The amount of tokens to decrease allowed amount by.
**/
function decreaseApproval(address _spender, uint256 _amount)
public
returns (bool success)
{
require(_decreaseApproval(msg.sender, _spender, _amount));
return true;
}
/**
* @dev Used to approve an address and call a function on it in the same transaction.
* @dev _spender The address to be approved to spend COIN.
* @dev _amount The amount of COIN to be approved to spend.
* @dev _data The data to send to the called contract.
**/
function approveAndCall(address _spender, uint256 _amount, bytes _data)
public
returns (bool success)
{
require(_approve(msg.sender, _spender, _amount));
ApproveAndCallFallBack(_spender).receiveApproval(msg.sender, _amount, address(this), _data);
return true;
}
/** ****************************** Internal ******************************** **/
/**
* @dev Internal transfer for all functions that transfer.
* @param _from The address that is transferring coins.
* @param _to The receiving address of the coins.
* @param _amount The amount of coins being transferred.
**/
function _transfer(address _from, address _to, uint256 _amount)
internal
returns (bool success)
{
require (_to != address(0));
require(balances[_from] >= _amount);
balances[_from] = balances[_from].sub(_amount);
balances[_to] = balances[_to].add(_amount);
emit Transfer(_from, _to, _amount);
return true;
}
/**
* @dev Internal approve for all functions that require an approve.
* @param _owner The owner who is allowing spender to use their balance.
* @param _spender The wallet approved to spend tokens.
* @param _amount The amount of tokens approved to spend.
**/
function _approve(address _owner, address _spender, uint256 _amount)
internal
returns (bool success)
{
allowed[_owner][_spender] = _amount;
emit Approval(_owner, _spender, _amount);
return true;
}
/**
* @dev Increases the allowed by "_amount" for "_spender" from "owner"
* @param _owner The address that tokens may be transferred from.
* @param _spender The address that may transfer these tokens.
* @param _amount The amount of tokens to transfer.
**/
function _increaseApproval(address _owner, address _spender, uint256 _amount)
internal
returns (bool success)
{
allowed[_owner][_spender] = allowed[_owner][_spender].add(_amount);
emit Approval(_owner, _spender, allowed[_owner][_spender]);
return true;
}
/**
* @dev Decreases the allowed by "_amount" for "_spender" from "_owner"
* @param _owner The owner of the tokens to decrease allowed for.
* @param _spender The spender whose allowed will decrease.
* @param _amount The amount of tokens to decrease allowed by.
**/
function _decreaseApproval(address _owner, address _spender, uint256 _amount)
internal
returns (bool success)
{
if (allowed[_owner][_spender] <= _amount) allowed[_owner][_spender] = 0;
else allowed[_owner][_spender] = allowed[_owner][_spender].sub(_amount);
emit Approval(_owner, _spender, allowed[_owner][_spender]);
return true;
}
/** ************************ Delegated Functions *************************** **/
/**
* @dev Called by delegate with a signed hash of the transaction data to allow a user
* @dev to transfer tokens without paying gas in Ether (they pay in COIN instead).
* @param _signature Signed hash of data for this transfer.
* @param _to The address to transfer COIN to.
* @param _value The amount of COIN to transfer.
* @param _nonce Nonce of the user's new transaction.
**/
function transferPreSigned(
bytes _signature,
address _to,
uint256 _value,
bytes _extraData,
uint256 _nonce)
public
validPayload(292)
returns (bool)
{
// Log starting gas left of transaction for later gas price calculations.
// Recover signer address from signature; ensure address is valid.
address from = recoverPreSigned(_signature, transferSig, _to, _value, _extraData, _nonce);
require(from != address(0));
// Require the hash has not been used, declare it used, increment nonce.
require(!invalidSignatures[from][_signature]);
invalidSignatures[from][_signature] = true;
nonces[from]++;
// Internal transfer.
require(_transfer(from, _to, _value));
emit SignatureRedeemed(_signature, from);
return true;
}
/**
* @dev Called by a delegate with signed hash to approve a transaction for user.
* @dev All variables equivalent to transfer except _to:
* @param _to The address that will be approved to transfer COIN from user's wallet.
**/
function approvePreSigned(
bytes _signature,
address _to,
uint256 _value,
bytes _extraData,
uint256 _nonce)
public
validPayload(292)
returns (bool)
{
address from = recoverPreSigned(_signature, approveSig, _to, _value, _extraData, _nonce);
require(from != address(0));
require(!invalidSignatures[from][_signature]);
invalidSignatures[from][_signature] = true;
nonces[from]++;
require(_approve(from, _to, _value));
emit SignatureRedeemed(_signature, from);
return true;
}
/**
* @dev Used to increase the amount allowed for "_to" to spend from "from"
* @dev A bare approve allows potentially nasty race conditions when using a delegate.
**/
function increaseApprovalPreSigned(
bytes _signature,
address _to,
uint256 _value,
bytes _extraData,
uint256 _nonce)
public
validPayload(292)
returns (bool)
{
address from = recoverPreSigned(_signature, increaseApprovalSig, _to, _value, _extraData, _nonce);
require(from != address(0));
require(!invalidSignatures[from][_signature]);
invalidSignatures[from][_signature] = true;
nonces[from]++;
require(_increaseApproval(from, _to, _value));
emit SignatureRedeemed(_signature, from);
return true;
}
/**
* @dev Added for the same reason as increaseApproval. Decreases to 0 if "_value" is greater than allowed.
**/
function decreaseApprovalPreSigned(
bytes _signature,
address _to,
uint256 _value,
bytes _extraData,
uint256 _nonce)
public
validPayload(292)
returns (bool)
{
address from = recoverPreSigned(_signature, decreaseApprovalSig, _to, _value, _extraData, _nonce);
require(from != address(0));
require(!invalidSignatures[from][_signature]);
invalidSignatures[from][_signature] = true;
nonces[from]++;
require(_decreaseApproval(from, _to, _value));
emit SignatureRedeemed(_signature, from);
return true;
}
/**
* @dev approveAndCallPreSigned allows a user to approve a contract and call a function on it
* @dev in the same transaction. As with the other presigneds, a delegate calls this with signed data from user.
* @dev This function is the big reason we're using gas price and calculating gas use.
* @dev Using this with the investment contract can result in varying gas costs.
* @param _extraData The data to send to the contract.
**/
function approveAndCallPreSigned(
bytes _signature,
address _to,
uint256 _value,
bytes _extraData,
uint256 _nonce)
public
validPayload(356)
returns (bool)
{
address from = recoverPreSigned(_signature, approveAndCallSig, _to, _value, _extraData, _nonce);
require(from != address(0));
require(!invalidSignatures[from][_signature]);
invalidSignatures[from][_signature] = true;
nonces[from]++;
require(_approve(from, _to, _value));
ApproveAndCallFallBack(_to).receiveApproval(from, _value, address(this), _extraData);
emit SignatureRedeemed(_signature, from);
return true;
}
/** *************************** Revoke PreSigned ************************** **/
/**
* @dev Revoke signature without going through a delegate.
* @param _sigToRevoke The signature that you no longer want to be used.
**/
function revokeSignature(bytes _sigToRevoke)
public
returns (bool)
{
invalidSignatures[msg.sender][_sigToRevoke] = true;
emit SignatureRedeemed(_sigToRevoke, msg.sender);
return true;
}
/**
* @dev Revoke signature through a delegate.
* @param _signature The signature allowing this revocation.
* @param _sigToRevoke The signature that you would like revoked.
**/
function revokeSignaturePreSigned(
bytes _signature,
bytes _sigToRevoke
)
public
validPayload(356)
returns (bool)
{
address from = recoverRevokeHash(_signature, _sigToRevoke);
require(!invalidSignatures[from][_signature]);
invalidSignatures[from][_signature] = true;
invalidSignatures[from][_sigToRevoke] = true;
emit SignatureRedeemed(_signature, from);
return true;
}
/**
* @dev Get hash for a revocation.
* @param _sigToRevoke The signature to be revoked.
**/
function getRevokeHash(bytes _sigToRevoke)
public
pure
returns (bytes32 txHash)
{
return keccak256(revokeSignatureSig, _sigToRevoke);
}
/**
* @dev Recover the address from a revocation signature.
* @param _sigToRevoke The signature to be revoked.
* @param _signature The signature allowing this revocation.
**/
function recoverRevokeHash(bytes _signature, bytes _sigToRevoke)
public
pure
returns (address from)
{
return ecrecoverFromSig(getSignHash(getRevokeHash(_sigToRevoke)), _signature);
}
/** ************************** PreSigned Constants ************************ **/
/**
* @dev Used in frontend and contract to get hashed data of any given pre-signed transaction.
* @param _to The address to transfer COIN to.
* @param _value The amount of COIN to be transferred.
* @param _extraData Extra data of tx if needed. Transfers and approves will leave this null.
* @param _function Function signature of the pre-signed function being used.
* @param _nonce The user's nonce of the new transaction.
**/
function getPreSignedHash(
bytes4 _function,
address _to,
uint256 _value,
bytes _extraData,
uint256 _nonce)
public
view
returns (bytes32 txHash)
{
return keccak256(address(this), _function, _to, _value, _extraData, _nonce);
}
/**
* @dev Recover an address from a signed pre-signed hash.
* @param _sig The signed hash.
* @param _function The function signature for function being called.
* @param _to The address to transfer/approve/transferFrom/etc. tokens to.
* @param _value The amont of tokens to transfer/approve/etc.
* @param _extraData The extra data included in the transaction, if any.
* @param _nonce The user's nonce for this transaction.
**/
function recoverPreSigned(
bytes _sig,
bytes4 _function,
address _to,
uint256 _value,
bytes _extraData,
uint256 _nonce)
public
view
returns (address recovered)
{
bytes32 hexdData = getPreSignedHash(_function, _to, _value, _extraData, _nonce);
return ecrecoverFromSig( keccak256("\x19Ethereum Signed Message:\n32",hexdData), _sig);
}
/**
* @dev Add signature prefix to hash for recovery à la ERC191.
* @param _hash The hashed transaction to add signature prefix to.
**/
function getSignHash(bytes32 _hash)
public
pure
returns (bytes32 signHash)
{
return keccak256("\x19Ethereum Signed Message:\n32", _hash);
}
/**
* @dev Helps to reduce stack depth problems for delegations. Thank you to Bokky for this!
* @param hash The hash of signed data for the transaction.
* @param sig Contains r, s, and v for recovery of address from the hash.
**/
function ecrecoverFromSig(bytes32 hash, bytes sig)
public
pure
returns (address recoveredAddress)
{
bytes32 r;
bytes32 s;
uint8 v;
if (sig.length != 65) return address(0);
assembly {
r := mload(add(sig, 32))
s := mload(add(sig, 64))
// Here we are loading the last 32 bytes. We exploit the fact that 'mload' will pad with zeroes if we overread.
// There is no 'mload8' to do this, but that would be nicer.
v := byte(0, mload(add(sig, 96)))
}
// Albeit non-transactional signatures are not specified by the YP, one would expect it to match the YP range of [27, 28]
// geth uses [0, 1] and some clients have followed. This might change, see https://github.com/ethereum/go-ethereum/issues/2053
if (v < 27) {
v += 27;
}
if (v != 27 && v != 28) return address(0);
return ecrecover(hash, v, r, s);
}
/**
* @dev Frontend queries to find the next nonce of the user so they can find the new nonce to send.
* @param _owner Address that will be sending the COIN.
**/
function getNonce(address _owner)
external
view
returns (uint256 nonce)
{
return nonces[_owner];
}
/** ****************************** Constants ******************************* **/
/**
* @dev Return total supply of token.
**/
function totalSupply()
external
view
returns (uint256)
{
return _totalSupply;
}
/**
* @dev Return balance of a certain address.
* @param _owner The address whose balance we want to check.
**/
function balanceOf(address _owner)
external
view
returns (uint256)
{
return balances[_owner];
}
/**
* @dev Allowed amount for a user to spend of another's tokens.
* @param _owner The owner of the tokens approved to spend.
* @param _spender The address of the user allowed to spend the tokens.
**/
function allowance(address _owner, address _spender)
external
view
returns (uint256)
{
return allowed[_owner][_spender];
}
/** ****************************** onlyOwner ******************************* **/
/**
* @dev Allow the owner to take ERC20 tokens off of this contract if they are accidentally sent.
**/
function token_escape(address _tokenContract)
external
onlyOwner
{
GiftCoin lostToken = GiftCoin(_tokenContract);
uint256 stuckTokens = lostToken.balanceOf(address(this));
lostToken.transfer(owner, stuckTokens);
}
/**
* @dev Owner may set the standard sig to redirect to one of our pre-signed functions.
* @dev Added in order to prepare for the ERC865 standard function names to be different from ours.
* @param _standardSig The function signature of the finalized standard function.
* @param _ourSig The function signature of our implemented function.
**/
function updateStandard(bytes4 _standardSig, bytes4 _ourSig)
external
onlyOwner
returns (bool success)
{
// These 6 are the signatures of our pre-signed functions. Don't want the owner messin' around.
require(_ourSig == 0x1296830d || _ourSig == 0x617b390b || _ourSig == 0xadb8249e ||
_ourSig == 0x8be52783 || _ourSig == 0xc8d4b389 || _ourSig == 0xe391a7c4);
standardSigs[_standardSig] = _ourSig;
return true;
}
/** ***************************** Modifiers ******************************** **/
modifier validPayload(uint _size) {
uint payload_size;
assembly {
payload_size := calldatasize
}
require(payload_size >= _size);
_;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_amount","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"getNonce","outputs":[{"name":"nonce","type":"uint256"}],"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":"_sig","type":"bytes"},{"name":"_function","type":"bytes4"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_extraData","type":"bytes"},{"name":"_nonce","type":"uint256"}],"name":"recoverPreSigned","outputs":[{"name":"recovered","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_amount","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_signature","type":"bytes"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_extraData","type":"bytes"},{"name":"_nonce","type":"uint256"}],"name":"approvePreSigned","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_function","type":"bytes4"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_extraData","type":"bytes"},{"name":"_nonce","type":"uint256"}],"name":"getPreSignedHash","outputs":[{"name":"txHash","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_signature","type":"bytes"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_extraData","type":"bytes"},{"name":"_nonce","type":"uint256"}],"name":"approveAndCallPreSigned","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_signature","type":"bytes"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_extraData","type":"bytes"},{"name":"_nonce","type":"uint256"}],"name":"decreaseApprovalPreSigned","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes4"}],"name":"standardSigs","outputs":[{"name":"","type":"bytes4"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_hash","type":"bytes32"}],"name":"getSignHash","outputs":[{"name":"signHash","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_signature","type":"bytes"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_extraData","type":"bytes"},{"name":"_nonce","type":"uint256"}],"name":"increaseApprovalPreSigned","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_standardSig","type":"bytes4"},{"name":"_ourSig","type":"bytes4"}],"name":"updateStandard","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_signature","type":"bytes"},{"name":"_sigToRevoke","type":"bytes"}],"name":"revokeSignaturePreSigned","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_sigToRevoke","type":"bytes"}],"name":"revokeSignature","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenContract","type":"address"}],"name":"token_escape","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"hash","type":"bytes32"},{"name":"sig","type":"bytes"}],"name":"ecrecoverFromSig","outputs":[{"name":"recoveredAddress","type":"address"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_signature","type":"bytes"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_extraData","type":"bytes"},{"name":"_nonce","type":"uint256"}],"name":"transferPreSigned","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_amount","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":true,"inputs":[{"name":"_sigToRevoke","type":"bytes"}],"name":"getRevokeHash","outputs":[{"name":"txHash","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"_signature","type":"bytes"},{"name":"_sigToRevoke","type":"bytes"}],"name":"recoverRevokeHash","outputs":[{"name":"from","type":"address"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","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":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_sig","type":"bytes"},{"indexed":true,"name":"from","type":"address"}],"name":"SignatureRedeemed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]Contract Creation Code
60806040526c0c9f2c9cd04674edea4000000060015534801561002157600080fd5b5060008054600160a060020a0319163390811782556001549082526002602052604090912055612750806100566000396000f3006080604052600436106101715763ffffffff60e060020a60003504166306fdde03811461027b578063095ea7b31461030557806318160ddd1461033d57806323b872dd146103645780632d0335ab1461038e578063313ce567146103af57806347b5c2a3146103da57806366188463146104b45780636970fe8b146104d857806370a082311461058757806370c3a1b7146105a85780638b4d7634146106235780638da5cb5b146106d2578063930c112b146106e757806395d89b411461079657806398718948146107ab578063a9059cbb146107ea578063b15aa5b71461080e578063b552698714610826578063c22f8250146108d5578063cae9ca51146108fd578063cc5ece1814610966578063ccbfc6ed146109fd578063d035e45f14610a56578063d4acaf6c14610a79578063d5ce97ee14610ad7578063d73dd62314610b86578063dd62ed3e14610baa578063e40d89e514610bd1578063e87b97b214610c2a578063f2fde38b14610cc1575b34801561017d57600080fd5b506060600080368080601f016020809104026020016040519081016040528093929190818152602001838380828437505050600160e060020a031960008035821681526006602052604090205494965060e060020a9094029450505050811615156101e757600080fd5b602082018181526040518351309285929182919080838360005b83811015610219578181015183820152602001610201565b50505050905090810190601f1680156102465780820380516001836020036101000a031916815260200191505b50915050600060405180830381855af4915050151561026457600080fd5b3d60201461027157600080fd5b3d6000803e3d6000f35b34801561028757600080fd5b50610290610ce2565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102ca5781810151838201526020016102b2565b50505050905090810190601f1680156102f75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031157600080fd5b50610329600160a060020a0360043516602435610d19565b604080519115158252519081900360200190f35b34801561034957600080fd5b50610352610d3a565b60408051918252519081900360200190f35b34801561037057600080fd5b50610329600160a060020a0360043581169060243516604435610d40565b34801561039a57600080fd5b50610352600160a060020a0360043516610e0e565b3480156103bb57600080fd5b506103c4610e29565b6040805160ff9092168252519081900360200190f35b3480156103e657600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261049894369492936024939284019190819084018382808284375050604080516020601f60608a01358b0180359182018390048302840183018552818452989b600160e060020a03198b35169b600160a060020a03848d0135169b958601359a9199509750608090940195509193509182019181908401838280828437509497505093359450610e2e9350505050565b60408051600160a060020a039092168252519081900360200190f35b3480156104c057600080fd5b50610329600160a060020a0360043516602435610e90565b3480156104e457600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375050604080516020888301358a018035601f8101839004830284018301909452838352979a8935600160a060020a03169a8a8301359a919990985060609091019650919450908101925081908401838280828437509497505093359450610e9d9350505050565b34801561059357600080fd5b50610352600160a060020a03600435166110f1565b3480156105b457600080fd5b50604080516020601f60643560048181013592830184900484028501840190955281845261035294600160e060020a031981351694600160a060020a036024803591909116956044359536956084949301918190840183828082843750949750509335945061110c9350505050565b34801561062f57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375050604080516020888301358a018035601f8101839004830284018301909452838352979a8935600160a060020a03169a8a8301359a9199909850606090910196509194509081019250819084018382808284375094975050933594506111c19350505050565b3480156106de57600080fd5b506104986114ca565b3480156106f357600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375050604080516020888301358a018035601f8101839004830284018301909452838352979a8935600160a060020a03169a8a8301359a9199909850606090910196509194509081019250819084018382808284375094975050933594506114d99350505050565b3480156107a257600080fd5b50610290611682565b3480156107b757600080fd5b506107cd600160e060020a0319600435166116b9565b60408051600160e060020a03199092168252519081900360200190f35b3480156107f657600080fd5b50610329600160a060020a03600435166024356116d1565b34801561081a57600080fd5b506103526004356116de565b34801561083257600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375050604080516020888301358a018035601f8101839004830284018301909452838352979a8935600160a060020a03169a8a8301359a91999098506060909101965091945090810192508190840183828082843750949750509335945061171c9350505050565b3480156108e157600080fd5b50610329600160e060020a0319600435811690602435166118c5565b34801561090957600080fd5b50604080516020600460443581810135601f8101849004840285018401909552848452610329948235600160a060020a0316946024803595369594606494920191908190840183828082843750949750611a509650505050505050565b34801561097257600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a999881019791965091820194509250829150840183828082843750949750611b6c9650505050505050565b348015610a0957600080fd5b506040805160206004803580820135601f8101849004840285018401909552848452610329943694929360249392840191908190840183828082843750949750611dd39650505050505050565b348015610a6257600080fd5b50610a77600160a060020a0360043516611edf565b005b348015610a8557600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261049895833595369560449491939091019190819084018382808284375094975061202e9650505050505050565b348015610ae357600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375050604080516020888301358a018035601f8101839004830284018301909452838352979a8935600160a060020a03169a8a8301359a9199909850606090910196509194509081019250819084018382808284375094975050933594506121029350505050565b348015610b9257600080fd5b50610329600160a060020a03600435166024356122ab565b348015610bb657600080fd5b50610352600160a060020a03600435811690602435166122b8565b348015610bdd57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103529436949293602493928401919081908401838280828437509497506122e39650505050505050565b348015610c3657600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261049894369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506123719650505050505050565b348015610ccd57600080fd5b50610a77600160a060020a0360043516612394565b60408051808201909152600981527f4769667420436f696e0000000000000000000000000000000000000000000000602082015281565b6000610d26338484612428565b1515610d3157600080fd5b50600192915050565b60015490565b600160a060020a0383166000908152600260205260408120548211801590610d8b5750600160a060020a03841660009081526003602090815260408083203384529091529020548211155b1515610d9657600080fd5b600160a060020a0384166000908152600360209081526040808320338452909152902054610dca908363ffffffff61249316565b600160a060020a0385166000908152600360209081526040808320338452909152902055610df98484846124a5565b1515610e0457600080fd5b5060019392505050565b600160a060020a031660009081526004602052604090205490565b601281565b600080610e3e878787878761110c565b604080517f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c8101839052905190819003603c019020909150610e84908961202e565b98975050505050505050565b6000610d263384846125a0565b6000806101243681811015610eb157600080fd5b610edf897f095ea7b3000000000000000000000000000000000000000000000000000000008a8a8a8a610e2e565b9250600160a060020a0383161515610ef657600080fd5b6005600084600160a060020a0316600160a060020a03168152602001908152602001600020896040518082805190602001908083835b60208310610f4b5780518252601f199092019160209182019101610f2c565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff16159150610f88905057600080fd5b60016005600085600160a060020a0316600160a060020a031681526020019081526020016000208a6040518082805190602001908083835b60208310610fdf5780518252601f199092019160209182019101610fc0565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420805460ff1916951515959095179094555050600160a060020a03851660009081526004909252902080546001019055611046838989612428565b151561105157600080fd5b82600160a060020a03166000805160206127058339815191528a6040518080602001828103825283818151815260200191508051906020019080838360005b838110156110a8578181015183820152602001611090565b50505050905090810190601f1680156110d55780820380516001836020036101000a031916815260200191505b509250505060405180910390a250600198975050505050505050565b600160a060020a031660009081526002602052604090205490565b604051306c010000000000000000000000008181028352600160e060020a031988166014840152600160a060020a038716026018830152602c8201859052835160009288918891889188918891604c82019060208501908083835b602083106111865780518252601f199092019160209182019101611167565b51815160209384036101000a600019018019909216911617905292019384525060405192839003019091209c9b505050505050505050505050565b60008061016436818110156111d557600080fd5b611203897fcae9ca51000000000000000000000000000000000000000000000000000000008a8a8a8a610e2e565b9250600160a060020a038316151561121a57600080fd5b6005600084600160a060020a0316600160a060020a03168152602001908152602001600020896040518082805190602001908083835b6020831061126f5780518252601f199092019160209182019101611250565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff161591506112ac905057600080fd5b60016005600085600160a060020a0316600160a060020a031681526020019081526020016000208a6040518082805190602001908083835b602083106113035780518252601f1990920191602091820191016112e4565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420805460ff1916951515959095179094555050600160a060020a0385166000908152600490925290208054600101905561136a838989612428565b151561137557600080fd5b87600160a060020a0316638f4ffcb18489308a6040518563ffffffff1660e060020a0281526004018085600160a060020a0316600160a060020a0316815260200184815260200183600160a060020a0316600160a060020a0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561140d5781810151838201526020016113f5565b50505050905090810190601f16801561143a5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561145c57600080fd5b505af1158015611470573d6000803e3d6000fd5b5050505082600160a060020a03166000805160206127058339815191528a604051808060200182810382528381815181526020019150805190602001908083836000838110156110a8578181015183820152602001611090565b600054600160a060020a031681565b60008061012436818110156114ed57600080fd5b61151b897f66188463000000000000000000000000000000000000000000000000000000008a8a8a8a610e2e565b9250600160a060020a038316151561153257600080fd5b6005600084600160a060020a0316600160a060020a03168152602001908152602001600020896040518082805190602001908083835b602083106115875780518252601f199092019160209182019101611568565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff161591506115c4905057600080fd5b60016005600085600160a060020a0316600160a060020a031681526020019081526020016000208a6040518082805190602001908083835b6020831061161b5780518252601f1990920191602091820191016115fc565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420805460ff1916951515959095179094555050600160a060020a038516600090815260049092529020805460010190556110468389896125a0565b60408051808201909152600181527f4700000000000000000000000000000000000000000000000000000000000000602082015281565b60066020526000908152604090205460e060020a0281565b6000610d263384846124a5565b604080517f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c8101839052905190819003603c019020919050565b600080610124368181101561173057600080fd5b61175e897fd73dd623000000000000000000000000000000000000000000000000000000008a8a8a8a610e2e565b9250600160a060020a038316151561177557600080fd5b6005600084600160a060020a0316600160a060020a03168152602001908152602001600020896040518082805190602001908083835b602083106117ca5780518252601f1990920191602091820191016117ab565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff16159150611807905057600080fd5b60016005600085600160a060020a0316600160a060020a031681526020019081526020016000208a6040518082805190602001908083835b6020831061185e5780518252601f19909201916020918201910161183f565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420805460ff1916951515959095179094555050600160a060020a038516600090815260049092529020805460010190556110468389896126bd565b60008054600160a060020a031633146118dd57600080fd5b7f1296830d00000000000000000000000000000000000000000000000000000000600160e060020a03198316148061193e57507f617b390b00000000000000000000000000000000000000000000000000000000600160e060020a03198316145b8061197257507fadb8249e00000000000000000000000000000000000000000000000000000000600160e060020a03198316145b806119a657507f8be5278300000000000000000000000000000000000000000000000000000000600160e060020a03198316145b806119da57507fc8d4b38900000000000000000000000000000000000000000000000000000000600160e060020a03198316145b80611a0e57507fe391a7c400000000000000000000000000000000000000000000000000000000600160e060020a03198316145b1515611a1957600080fd5b50600160e060020a031982166000908152600660205260409020805460e060020a830463ffffffff19909116179055600192915050565b6000611a5d338585612428565b1515611a6857600080fd5b6040517f8f4ffcb10000000000000000000000000000000000000000000000000000000081523360048201818152602483018690523060448401819052608060648501908152865160848601528651600160a060020a038a1695638f4ffcb195948a94938a939192909160a490910190602085019080838360005b83811015611afb578181015183820152602001611ae3565b50505050905090810190601f168015611b285780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611b4a57600080fd5b505af1158015611b5e573d6000803e3d6000fd5b506001979650505050505050565b6000806101643681811015611b8057600080fd5b611b8a8686612371565b92506005600084600160a060020a0316600160a060020a03168152602001908152602001600020866040518082805190602001908083835b60208310611be15780518252601f199092019160209182019101611bc2565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff16159150611c1e905057600080fd5b60016005600085600160a060020a0316600160a060020a03168152602001908152602001600020876040518082805190602001908083835b60208310611c755780518252601f199092019160209182019101611c56565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520805460ff191696151596909617909555600160a060020a03881660009081526005825294909420895160019591948b9450925082918401908083835b60208310611cfc5780518252601f199092019160209182019101611cdd565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520805460ff1916961515969096179095558084528a51848201528a51600160a060020a03891695600080516020612705833981519152958d955093508392908301919085019080838360005b83811015611d8b578181015183820152602001611d73565b50505050905090810190601f168015611db85780820380516001836020036101000a031916815260200191505b509250505060405180910390a2600193505b50505092915050565b3360009081526005602090815260408083209051845160019386929182918401908083835b60208310611e175780518252601f199092019160209182019101611df8565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520805460ff191696151596909617909555808452865184820152865133956000805160206127058339815191529589955093508392908301919085019080838360005b83811015611e9d578181015183820152602001611e85565b50505050905090810190601f168015611eca5780820380516001836020036101000a031916815260200191505b509250505060405180910390a2506001919050565b600080548190600160a060020a03163314611ef957600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051849350600160a060020a038416916370a082319160248083019260209291908290030181600087803b158015611f5d57600080fd5b505af1158015611f71573d6000803e3d6000fd5b505050506040513d6020811015611f8757600080fd5b505160008054604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201526024810185905290519394509085169263a9059cbb92604480840193602093929083900390910190829087803b158015611ffd57600080fd5b505af1158015612011573d6000803e3d6000fd5b505050506040513d602081101561202757600080fd5b5050505050565b600080600080845160411415156120485760009350611dca565b50505060208201516040830151606084015160001a601b60ff8216101561206d57601b015b8060ff16601b1415801561208557508060ff16601c14155b156120935760009350611dca565b60408051600080825260208083018085528a905260ff8516838501526060830187905260808301869052925160019360a0808501949193601f19840193928390039091019190865af11580156120ed573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b600080610124368181101561211657600080fd5b612144897fa9059cbb000000000000000000000000000000000000000000000000000000008a8a8a8a610e2e565b9250600160a060020a038316151561215b57600080fd5b6005600084600160a060020a0316600160a060020a03168152602001908152602001600020896040518082805190602001908083835b602083106121b05780518252601f199092019160209182019101612191565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff161591506121ed905057600080fd5b60016005600085600160a060020a0316600160a060020a031681526020019081526020016000208a6040518082805190602001908083835b602083106122445780518252601f199092019160209182019101612225565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420805460ff1916951515959095179094555050600160a060020a038516600090815260049092529020805460010190556110468389896124a5565b6000610d263384846126bd565b600160a060020a03918216600090815260036020908152604080832093909416825291909152205490565b6040517fe40d89e50000000000000000000000000000000000000000000000000000000080825282516000928491600482019060208401908083835b6020831061233e5780518252601f19909201916020918201910161231f565b5181516020939093036101000a600019018019909116921691909117905260405192018290039091209695505050505050565b600061238d612387612382846122e3565b6116de565b8461202e565b9392505050565b600054600160a060020a031633146123ab57600080fd5b600160a060020a03811615156123c057600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a03808416600081815260036020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b60008282111561249f57fe5b50900390565b6000600160a060020a03831615156124bc57600080fd5b600160a060020a0384166000908152600260205260409020548211156124e157600080fd5b600160a060020a03841660009081526002602052604090205461250a908363ffffffff61249316565b600160a060020a03808616600090815260026020526040808220939093559085168152205461253f908363ffffffff6126f516565b600160a060020a0380851660008181526002602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019392505050565b600160a060020a03808416600090815260036020908152604080832093861683529290529081205482106125fb57600160a060020a038085166000908152600360209081526040808320938716835292905290812055612658565b600160a060020a03808516600090815260036020908152604080832093871683529290522054612631908363ffffffff61249316565b600160a060020a038086166000908152600360209081526040808320938816835292905220555b600160a060020a0384811660008181526003602090815260408083209488168084529482529182902054825190815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a35060019392505050565b600160a060020a038084166000908152600360209081526040808320938616835292905290812054612631908363ffffffff6126f516565b60008282018381101561238d57fe0084ec66954b0f997bff83c5e952edcedd277db78a2432e21fbed3d67b9d8d07e9a165627a7a7230582064a8180ea229c306b55680c97614d549fc9d164840886ba995a60f8fd21643bf0029
Deployed Bytecode
0x6080604052600436106101715763ffffffff60e060020a60003504166306fdde03811461027b578063095ea7b31461030557806318160ddd1461033d57806323b872dd146103645780632d0335ab1461038e578063313ce567146103af57806347b5c2a3146103da57806366188463146104b45780636970fe8b146104d857806370a082311461058757806370c3a1b7146105a85780638b4d7634146106235780638da5cb5b146106d2578063930c112b146106e757806395d89b411461079657806398718948146107ab578063a9059cbb146107ea578063b15aa5b71461080e578063b552698714610826578063c22f8250146108d5578063cae9ca51146108fd578063cc5ece1814610966578063ccbfc6ed146109fd578063d035e45f14610a56578063d4acaf6c14610a79578063d5ce97ee14610ad7578063d73dd62314610b86578063dd62ed3e14610baa578063e40d89e514610bd1578063e87b97b214610c2a578063f2fde38b14610cc1575b34801561017d57600080fd5b506060600080368080601f016020809104026020016040519081016040528093929190818152602001838380828437505050600160e060020a031960008035821681526006602052604090205494965060e060020a9094029450505050811615156101e757600080fd5b602082018181526040518351309285929182919080838360005b83811015610219578181015183820152602001610201565b50505050905090810190601f1680156102465780820380516001836020036101000a031916815260200191505b50915050600060405180830381855af4915050151561026457600080fd5b3d60201461027157600080fd5b3d6000803e3d6000f35b34801561028757600080fd5b50610290610ce2565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102ca5781810151838201526020016102b2565b50505050905090810190601f1680156102f75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031157600080fd5b50610329600160a060020a0360043516602435610d19565b604080519115158252519081900360200190f35b34801561034957600080fd5b50610352610d3a565b60408051918252519081900360200190f35b34801561037057600080fd5b50610329600160a060020a0360043581169060243516604435610d40565b34801561039a57600080fd5b50610352600160a060020a0360043516610e0e565b3480156103bb57600080fd5b506103c4610e29565b6040805160ff9092168252519081900360200190f35b3480156103e657600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261049894369492936024939284019190819084018382808284375050604080516020601f60608a01358b0180359182018390048302840183018552818452989b600160e060020a03198b35169b600160a060020a03848d0135169b958601359a9199509750608090940195509193509182019181908401838280828437509497505093359450610e2e9350505050565b60408051600160a060020a039092168252519081900360200190f35b3480156104c057600080fd5b50610329600160a060020a0360043516602435610e90565b3480156104e457600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375050604080516020888301358a018035601f8101839004830284018301909452838352979a8935600160a060020a03169a8a8301359a919990985060609091019650919450908101925081908401838280828437509497505093359450610e9d9350505050565b34801561059357600080fd5b50610352600160a060020a03600435166110f1565b3480156105b457600080fd5b50604080516020601f60643560048181013592830184900484028501840190955281845261035294600160e060020a031981351694600160a060020a036024803591909116956044359536956084949301918190840183828082843750949750509335945061110c9350505050565b34801561062f57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375050604080516020888301358a018035601f8101839004830284018301909452838352979a8935600160a060020a03169a8a8301359a9199909850606090910196509194509081019250819084018382808284375094975050933594506111c19350505050565b3480156106de57600080fd5b506104986114ca565b3480156106f357600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375050604080516020888301358a018035601f8101839004830284018301909452838352979a8935600160a060020a03169a8a8301359a9199909850606090910196509194509081019250819084018382808284375094975050933594506114d99350505050565b3480156107a257600080fd5b50610290611682565b3480156107b757600080fd5b506107cd600160e060020a0319600435166116b9565b60408051600160e060020a03199092168252519081900360200190f35b3480156107f657600080fd5b50610329600160a060020a03600435166024356116d1565b34801561081a57600080fd5b506103526004356116de565b34801561083257600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375050604080516020888301358a018035601f8101839004830284018301909452838352979a8935600160a060020a03169a8a8301359a91999098506060909101965091945090810192508190840183828082843750949750509335945061171c9350505050565b3480156108e157600080fd5b50610329600160e060020a0319600435811690602435166118c5565b34801561090957600080fd5b50604080516020600460443581810135601f8101849004840285018401909552848452610329948235600160a060020a0316946024803595369594606494920191908190840183828082843750949750611a509650505050505050565b34801561097257600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a999881019791965091820194509250829150840183828082843750949750611b6c9650505050505050565b348015610a0957600080fd5b506040805160206004803580820135601f8101849004840285018401909552848452610329943694929360249392840191908190840183828082843750949750611dd39650505050505050565b348015610a6257600080fd5b50610a77600160a060020a0360043516611edf565b005b348015610a8557600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261049895833595369560449491939091019190819084018382808284375094975061202e9650505050505050565b348015610ae357600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261032994369492936024939284019190819084018382808284375050604080516020888301358a018035601f8101839004830284018301909452838352979a8935600160a060020a03169a8a8301359a9199909850606090910196509194509081019250819084018382808284375094975050933594506121029350505050565b348015610b9257600080fd5b50610329600160a060020a03600435166024356122ab565b348015610bb657600080fd5b50610352600160a060020a03600435811690602435166122b8565b348015610bdd57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103529436949293602493928401919081908401838280828437509497506122e39650505050505050565b348015610c3657600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261049894369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506123719650505050505050565b348015610ccd57600080fd5b50610a77600160a060020a0360043516612394565b60408051808201909152600981527f4769667420436f696e0000000000000000000000000000000000000000000000602082015281565b6000610d26338484612428565b1515610d3157600080fd5b50600192915050565b60015490565b600160a060020a0383166000908152600260205260408120548211801590610d8b5750600160a060020a03841660009081526003602090815260408083203384529091529020548211155b1515610d9657600080fd5b600160a060020a0384166000908152600360209081526040808320338452909152902054610dca908363ffffffff61249316565b600160a060020a0385166000908152600360209081526040808320338452909152902055610df98484846124a5565b1515610e0457600080fd5b5060019392505050565b600160a060020a031660009081526004602052604090205490565b601281565b600080610e3e878787878761110c565b604080517f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c8101839052905190819003603c019020909150610e84908961202e565b98975050505050505050565b6000610d263384846125a0565b6000806101243681811015610eb157600080fd5b610edf897f095ea7b3000000000000000000000000000000000000000000000000000000008a8a8a8a610e2e565b9250600160a060020a0383161515610ef657600080fd5b6005600084600160a060020a0316600160a060020a03168152602001908152602001600020896040518082805190602001908083835b60208310610f4b5780518252601f199092019160209182019101610f2c565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff16159150610f88905057600080fd5b60016005600085600160a060020a0316600160a060020a031681526020019081526020016000208a6040518082805190602001908083835b60208310610fdf5780518252601f199092019160209182019101610fc0565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420805460ff1916951515959095179094555050600160a060020a03851660009081526004909252902080546001019055611046838989612428565b151561105157600080fd5b82600160a060020a03166000805160206127058339815191528a6040518080602001828103825283818151815260200191508051906020019080838360005b838110156110a8578181015183820152602001611090565b50505050905090810190601f1680156110d55780820380516001836020036101000a031916815260200191505b509250505060405180910390a250600198975050505050505050565b600160a060020a031660009081526002602052604090205490565b604051306c010000000000000000000000008181028352600160e060020a031988166014840152600160a060020a038716026018830152602c8201859052835160009288918891889188918891604c82019060208501908083835b602083106111865780518252601f199092019160209182019101611167565b51815160209384036101000a600019018019909216911617905292019384525060405192839003019091209c9b505050505050505050505050565b60008061016436818110156111d557600080fd5b611203897fcae9ca51000000000000000000000000000000000000000000000000000000008a8a8a8a610e2e565b9250600160a060020a038316151561121a57600080fd5b6005600084600160a060020a0316600160a060020a03168152602001908152602001600020896040518082805190602001908083835b6020831061126f5780518252601f199092019160209182019101611250565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff161591506112ac905057600080fd5b60016005600085600160a060020a0316600160a060020a031681526020019081526020016000208a6040518082805190602001908083835b602083106113035780518252601f1990920191602091820191016112e4565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420805460ff1916951515959095179094555050600160a060020a0385166000908152600490925290208054600101905561136a838989612428565b151561137557600080fd5b87600160a060020a0316638f4ffcb18489308a6040518563ffffffff1660e060020a0281526004018085600160a060020a0316600160a060020a0316815260200184815260200183600160a060020a0316600160a060020a0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561140d5781810151838201526020016113f5565b50505050905090810190601f16801561143a5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561145c57600080fd5b505af1158015611470573d6000803e3d6000fd5b5050505082600160a060020a03166000805160206127058339815191528a604051808060200182810382528381815181526020019150805190602001908083836000838110156110a8578181015183820152602001611090565b600054600160a060020a031681565b60008061012436818110156114ed57600080fd5b61151b897f66188463000000000000000000000000000000000000000000000000000000008a8a8a8a610e2e565b9250600160a060020a038316151561153257600080fd5b6005600084600160a060020a0316600160a060020a03168152602001908152602001600020896040518082805190602001908083835b602083106115875780518252601f199092019160209182019101611568565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff161591506115c4905057600080fd5b60016005600085600160a060020a0316600160a060020a031681526020019081526020016000208a6040518082805190602001908083835b6020831061161b5780518252601f1990920191602091820191016115fc565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420805460ff1916951515959095179094555050600160a060020a038516600090815260049092529020805460010190556110468389896125a0565b60408051808201909152600181527f4700000000000000000000000000000000000000000000000000000000000000602082015281565b60066020526000908152604090205460e060020a0281565b6000610d263384846124a5565b604080517f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c8101839052905190819003603c019020919050565b600080610124368181101561173057600080fd5b61175e897fd73dd623000000000000000000000000000000000000000000000000000000008a8a8a8a610e2e565b9250600160a060020a038316151561177557600080fd5b6005600084600160a060020a0316600160a060020a03168152602001908152602001600020896040518082805190602001908083835b602083106117ca5780518252601f1990920191602091820191016117ab565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff16159150611807905057600080fd5b60016005600085600160a060020a0316600160a060020a031681526020019081526020016000208a6040518082805190602001908083835b6020831061185e5780518252601f19909201916020918201910161183f565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420805460ff1916951515959095179094555050600160a060020a038516600090815260049092529020805460010190556110468389896126bd565b60008054600160a060020a031633146118dd57600080fd5b7f1296830d00000000000000000000000000000000000000000000000000000000600160e060020a03198316148061193e57507f617b390b00000000000000000000000000000000000000000000000000000000600160e060020a03198316145b8061197257507fadb8249e00000000000000000000000000000000000000000000000000000000600160e060020a03198316145b806119a657507f8be5278300000000000000000000000000000000000000000000000000000000600160e060020a03198316145b806119da57507fc8d4b38900000000000000000000000000000000000000000000000000000000600160e060020a03198316145b80611a0e57507fe391a7c400000000000000000000000000000000000000000000000000000000600160e060020a03198316145b1515611a1957600080fd5b50600160e060020a031982166000908152600660205260409020805460e060020a830463ffffffff19909116179055600192915050565b6000611a5d338585612428565b1515611a6857600080fd5b6040517f8f4ffcb10000000000000000000000000000000000000000000000000000000081523360048201818152602483018690523060448401819052608060648501908152865160848601528651600160a060020a038a1695638f4ffcb195948a94938a939192909160a490910190602085019080838360005b83811015611afb578181015183820152602001611ae3565b50505050905090810190601f168015611b285780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611b4a57600080fd5b505af1158015611b5e573d6000803e3d6000fd5b506001979650505050505050565b6000806101643681811015611b8057600080fd5b611b8a8686612371565b92506005600084600160a060020a0316600160a060020a03168152602001908152602001600020866040518082805190602001908083835b60208310611be15780518252601f199092019160209182019101611bc2565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff16159150611c1e905057600080fd5b60016005600085600160a060020a0316600160a060020a03168152602001908152602001600020876040518082805190602001908083835b60208310611c755780518252601f199092019160209182019101611c56565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520805460ff191696151596909617909555600160a060020a03881660009081526005825294909420895160019591948b9450925082918401908083835b60208310611cfc5780518252601f199092019160209182019101611cdd565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520805460ff1916961515969096179095558084528a51848201528a51600160a060020a03891695600080516020612705833981519152958d955093508392908301919085019080838360005b83811015611d8b578181015183820152602001611d73565b50505050905090810190601f168015611db85780820380516001836020036101000a031916815260200191505b509250505060405180910390a2600193505b50505092915050565b3360009081526005602090815260408083209051845160019386929182918401908083835b60208310611e175780518252601f199092019160209182019101611df8565b51815160209384036101000a6000190180199092169116179052920194855250604080519485900382018520805460ff191696151596909617909555808452865184820152865133956000805160206127058339815191529589955093508392908301919085019080838360005b83811015611e9d578181015183820152602001611e85565b50505050905090810190601f168015611eca5780820380516001836020036101000a031916815260200191505b509250505060405180910390a2506001919050565b600080548190600160a060020a03163314611ef957600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051849350600160a060020a038416916370a082319160248083019260209291908290030181600087803b158015611f5d57600080fd5b505af1158015611f71573d6000803e3d6000fd5b505050506040513d6020811015611f8757600080fd5b505160008054604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201526024810185905290519394509085169263a9059cbb92604480840193602093929083900390910190829087803b158015611ffd57600080fd5b505af1158015612011573d6000803e3d6000fd5b505050506040513d602081101561202757600080fd5b5050505050565b600080600080845160411415156120485760009350611dca565b50505060208201516040830151606084015160001a601b60ff8216101561206d57601b015b8060ff16601b1415801561208557508060ff16601c14155b156120935760009350611dca565b60408051600080825260208083018085528a905260ff8516838501526060830187905260808301869052925160019360a0808501949193601f19840193928390039091019190865af11580156120ed573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b600080610124368181101561211657600080fd5b612144897fa9059cbb000000000000000000000000000000000000000000000000000000008a8a8a8a610e2e565b9250600160a060020a038316151561215b57600080fd5b6005600084600160a060020a0316600160a060020a03168152602001908152602001600020896040518082805190602001908083835b602083106121b05780518252601f199092019160209182019101612191565b51815160209384036101000a600019018019909216911617905292019485525060405193849003019092205460ff161591506121ed905057600080fd5b60016005600085600160a060020a0316600160a060020a031681526020019081526020016000208a6040518082805190602001908083835b602083106122445780518252601f199092019160209182019101612225565b51815160209384036101000a600019018019909216911617905292019485525060408051948590038201909420805460ff1916951515959095179094555050600160a060020a038516600090815260049092529020805460010190556110468389896124a5565b6000610d263384846126bd565b600160a060020a03918216600090815260036020908152604080832093909416825291909152205490565b6040517fe40d89e50000000000000000000000000000000000000000000000000000000080825282516000928491600482019060208401908083835b6020831061233e5780518252601f19909201916020918201910161231f565b5181516020939093036101000a600019018019909116921691909117905260405192018290039091209695505050505050565b600061238d612387612382846122e3565b6116de565b8461202e565b9392505050565b600054600160a060020a031633146123ab57600080fd5b600160a060020a03811615156123c057600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600160a060020a03808416600081815260036020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b60008282111561249f57fe5b50900390565b6000600160a060020a03831615156124bc57600080fd5b600160a060020a0384166000908152600260205260409020548211156124e157600080fd5b600160a060020a03841660009081526002602052604090205461250a908363ffffffff61249316565b600160a060020a03808616600090815260026020526040808220939093559085168152205461253f908363ffffffff6126f516565b600160a060020a0380851660008181526002602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019392505050565b600160a060020a03808416600090815260036020908152604080832093861683529290529081205482106125fb57600160a060020a038085166000908152600360209081526040808320938716835292905290812055612658565b600160a060020a03808516600090815260036020908152604080832093871683529290522054612631908363ffffffff61249316565b600160a060020a038086166000908152600360209081526040808320938816835292905220555b600160a060020a0384811660008181526003602090815260408083209488168084529482529182902054825190815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a35060019392505050565b600160a060020a038084166000908152600360209081526040808320938616835292905290812054612631908363ffffffff6126f516565b60008282018381101561238d57fe0084ec66954b0f997bff83c5e952edcedd277db78a2432e21fbed3d67b9d8d07e9a165627a7a7230582064a8180ea229c306b55680c97614d549fc9d164840886ba995a60f8fd21643bf0029
Deployed Bytecode Sourcemap
2239:21776:0:-;;;;;;;;;-1:-1:-1;;;2239:21776:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2239:21776:0;4158:21;4201:19;4182:8;;4158:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;4223:21:0;4236:7;;;;4223:21;;:12;:21;;;;;;4158:32;;-1:-1:-1;;;;4223:21:0;;;;-1:-1:-1;;;;4263:17:0;;;;4255:26;;;;;;4336:4;4332:19;;4325:41;;;4405:36;;;;4413:4;;4342:8;;4405:36;;;4332:19;4405:36;;4332:19;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4405:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4397:45;;;;;;;;4500:14;4516:4;4497:24;4487:2;;4535:1;4532;4525:12;4487:2;4574:14;4571:1;4568;4553:36;4613:14;4610:1;4603:25;2359:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2359:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2359:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5994:189;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5994:189:0;-1:-1:-1;;;;;5994:189:0;;;;;;;;;;;;;;;;;;;;;;;;;21538:120;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21538:120:0;;;;;;;;;;;;;;;;;;;;5414:359;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5414:359:0;-1:-1:-1;;;;;5414:359:0;;;;;;;;;;;;21241:136;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;21241:136:0;-1:-1:-1;;;;;21241:136:0;;;;;2413:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2413:35:0;;;;;;;;;;;;;;;;;;;;;;;18991:434;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;18991:434:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18991:434:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18991:434:0;;;;-1:-1:-1;;;;;18991:434:0;;;;;;;;;;;;;-1:-1:-1;18991:434:0;-1:-1:-1;18991:434:0;;;;;-1:-1:-1;18991:434:0;;-1:-1:-1;18991:434:0;;;;;;;;;;;;;;-1:-1:-1;18991:434:0;;-1:-1:-1;;18991:434:0;;;-1:-1:-1;18991:434:0;;-1:-1:-1;;;;18991:434:0;;;;;-1:-1:-1;;;;;18991:434:0;;;;;;;;;;;;;;6878:207;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6878:207:0;-1:-1:-1;;;;;6878:207:0;;;;;;;12051:652;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12051:652:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12051:652:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12051:652:0;;;;;;;;;;;-1:-1:-1;12051:652:0;;;;;-1:-1:-1;12051:652:0;;-1:-1:-1;12051:652:0;;;;-1:-1:-1;12051:652:0;;;;;;;;;;-1:-1:-1;12051:652:0;;-1:-1:-1;;12051:652:0;;;-1:-1:-1;12051:652:0;;-1:-1:-1;;;;12051:652:0;21800:135;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;21800:135:0;-1:-1:-1;;;;;21800:135:0;;;;;18190:310;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;18190:310:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18190:310:0;;;;-1:-1:-1;;;;;18190:310:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18190:310:0;;-1:-1:-1;;18190:310:0;;;-1:-1:-1;18190:310:0;;-1:-1:-1;;;;18190:310:0;14897:768;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;14897:768:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14897:768:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14897:768:0;;;;;;;;;;;-1:-1:-1;14897:768:0;;;;;-1:-1:-1;14897:768:0;;-1:-1:-1;14897:768:0;;;;-1:-1:-1;14897:768:0;;;;;;;;;;-1:-1:-1;14897:768:0;;-1:-1:-1;;14897:768:0;;;-1:-1:-1;14897:768:0;;-1:-1:-1;;;;14897:768:0;1052:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1052:20:0;;;;13725:687;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;13725:687:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13725:687:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13725:687:0;;;;;;;;;;;-1:-1:-1;13725:687:0;;;;;-1:-1:-1;13725:687:0;;-1:-1:-1;13725:687:0;;;;-1:-1:-1;13725:687:0;;;;;;;;;;-1:-1:-1;13725:687:0;;-1:-1:-1;;13725:687:0;;;-1:-1:-1;13725:687:0;;-1:-1:-1;;;;13725:687:0;2317:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2317:35:0;;;;3544:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3544:46:0;-1:-1:-1;;;;;;3544:46:0;;;;;;;;;-1:-1:-1;;;;;;3544:46:0;;;;;;;;;;;;;;4928:181;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;4928:181:0;-1:-1:-1;;;;;4928:181:0;;;;;;;19596:177;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;19596:177:0;;;;;12905:678;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;12905:678:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12905:678:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12905:678:0;;;;;;;;;;;-1:-1:-1;12905:678:0;;;;;-1:-1:-1;12905:678:0;;-1:-1:-1;12905:678:0;;;;-1:-1:-1;12905:678:0;;;;;;;;;;-1:-1:-1;12905:678:0;;-1:-1:-1;;12905:678:0;;;-1:-1:-1;12905:678:0;;-1:-1:-1;;;;12905:678:0;23222:488;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;23222:488:0;-1:-1:-1;;;;;;23222:488:0;;;;;;;;;;7395:312;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7395:312:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7395:312:0;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7395:312:0;;-1:-1:-1;7395:312:0;;-1:-1:-1;;;;;;;7395:312:0;16381:509;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;16381:509:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16381:509:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16381:509:0;;;;-1:-1:-1;16381:509:0;-1:-1:-1;16381:509:0;;-1:-1:-1;16381:509:0;;;;;;;;-1:-1:-1;16381:509:0;;-1:-1:-1;16381:509:0;;-1:-1:-1;;;;;;;16381:509:0;15920:244;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;15920:244:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15920:244:0;;-1:-1:-1;15920:244:0;;-1:-1:-1;;;;;;;15920:244:0;22559:274;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;22559:274:0;-1:-1:-1;;;;;22559:274:0;;;;;;;20039:1010;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;20039:1010:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20039:1010:0;;-1:-1:-1;20039:1010:0;;-1:-1:-1;;;;;;;20039:1010:0;10855:928;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;10855:928:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10855:928:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10855:928:0;;;;;;;;;;;-1:-1:-1;10855:928:0;;;;;-1:-1:-1;10855:928:0;;-1:-1:-1;10855:928:0;;;;-1:-1:-1;10855:928:0;;;;;;;;;;-1:-1:-1;10855:928:0;;-1:-1:-1;;10855:928:0;;;-1:-1:-1;10855:928:0;;-1:-1:-1;;;;10855:928:0;6427:207;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6427:207:0;-1:-1:-1;;;;;6427:207:0;;;;;;;22176:163;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;22176:163:0;-1:-1:-1;;;;;22176:163:0;;;;;;;;;;17017:173;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;17017:173:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17017:173:0;;-1:-1:-1;17017:173:0;;-1:-1:-1;;;;;;;17017:173:0;17401:220;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;17401:220:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17401:220:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17401:220:0;;;;-1:-1:-1;17401:220:0;-1:-1:-1;17401:220:0;;-1:-1:-1;17401:220:0;;;;;;;;-1:-1:-1;17401:220:0;;-1:-1:-1;17401:220:0;;-1:-1:-1;;;;;;;17401:220:0;1668:178;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1668:178:0;-1:-1:-1;;;;;1668:178:0;;;;;2359:41;;;;;;;;;;;;;;;;;;;:::o;5994:189::-;6075:12;6113:39;6122:10;6134:8;6144:7;6113:8;:39::i;:::-;6105:48;;;;;;;;-1:-1:-1;6171:4:0;5994:189;;;;:::o;21538:120::-;21638:12;;21538:120;:::o;5414:359::-;-1:-1:-1;;;;;5544:15:0;;5506:12;5544:15;;;:8;:15;;;;;;:26;-1:-1:-1;5544:26:0;;;:67;;-1:-1:-1;;;;;;5574:14:0;;;;;;:7;:14;;;;;;;;5589:10;5574:26;;;;;;;;:37;-1:-1:-1;5574:37:0;5544:67;5536:76;;;;;;;;-1:-1:-1;;;;;5654:14:0;;;;;;:7;:14;;;;;;;;5669:10;5654:26;;;;;;;;:39;;5685:7;5654:39;:30;:39;:::i;:::-;-1:-1:-1;;;;;5625:14:0;;;;;;:7;:14;;;;;;;;5640:10;5625:26;;;;;;;:68;5712:30;5633:5;5729:3;5734:7;5712:9;:30::i;:::-;5704:39;;;;;;;;-1:-1:-1;5761:4:0;5414:359;;;;;:::o;21241:136::-;-1:-1:-1;;;;;21355:14:0;21317:13;21355:14;;;:6;:14;;;;;;;21241:136::o;2413:35::-;2446:2;2413:35;:::o;18991:434::-;19206:17;19241:16;19260:60;19277:9;19288:3;19293:6;19301:10;19313:6;19260:16;:60::i;:::-;19356:54;;;;;;;;;;;;;;;;;;;;;;19241:79;;-1:-1:-1;19338:79:0;;19412:4;19338:16;:79::i;:::-;19331:86;18991:434;-1:-1:-1;;;;;;;;18991:434:0:o;6878:207::-;6968:12;7006:48;7024:10;7036:8;7046:7;7006:17;:48::i;12051:652::-;12260:4;;12241:3;23923:12;23964:21;;;;23956:30;;;;;;12298:73;12315:10;12327;12339:3;12344:6;12352:10;12364:6;12298:16;:73::i;:::-;12283:88;-1:-1:-1;;;;;;12390:18:0;;;;12382:27;;;;;;12429:17;:23;12447:4;-1:-1:-1;;;;;12429:23:0;-1:-1:-1;;;;;12429:23:0;;;;;;;;;;;;12453:10;12429:35;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;12429:35:0;;;;;-1:-1:-1;12429:35:0;;;;;;;;;;;;;12428:36;;-1:-1:-1;12420:45:0;;-1:-1:-1;12420:45:0;;;;;12524:4;12486:17;:23;12504:4;-1:-1:-1;;;;;12486:23:0;-1:-1:-1;;;;;12486:23:0;;;;;;;;;;;;12510:10;12486:35;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;12486:35:0;;;;;-1:-1:-1;12486:35:0;;;;;;;;;;;;:42;;-1:-1:-1;;12486:42:0;;;;;;;;;;;-1:-1:-1;;;;;;;12539:12:0;;-1:-1:-1;12539:12:0;;;:6;:12;;;;;:14;;-1:-1:-1;12539:14:0;;;12582:27;12539:12;12597:3;12602:6;12582:8;:27::i;:::-;12574:36;;;;;;;;12668:4;-1:-1:-1;;;;;12638:35:0;-1:-1:-1;;;;;;;;;;;12656:10:0;12638:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;12638:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12691:4:0;;12051:652;-1:-1:-1;;;;;;;;12051:652:0:o;21800:135::-;-1:-1:-1;;;;;21911:16:0;21878:7;21911:16;;;:8;:16;;;;;;;21800:135::o;18190:310::-;18424:68;;18442:4;18424:68;;;;;;-1:-1:-1;;;;;;18424:68:0;;;;;;-1:-1:-1;;;;;18424:68:0;;;;;;;;;;;;;;;-1:-1:-1;;18424:68:0;;;;;;;;18485:6;;18424:68;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;18424:68:0;;;;;-1:-1:-1;18424:68:0;;;;;;;;;;;18190:310;-1:-1:-1;;;;;;;;;;;;18190:310:0:o;14897:768::-;15112:4;;15093:3;23923:12;23964:21;;;;23956:30;;;;;;15150:80;15167:10;15179:17;15198:3;15203:6;15211:10;15223:6;15150:16;:80::i;:::-;15135:95;-1:-1:-1;;;;;;15249:18:0;;;;15241:27;;;;;;15288:17;:23;15306:4;-1:-1:-1;;;;;15288:23:0;-1:-1:-1;;;;;15288:23:0;;;;;;;;;;;;15312:10;15288:35;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;15288:35:0;;;;;-1:-1:-1;15288:35:0;;;;;;;;;;;;;15287:36;;-1:-1:-1;15279:45:0;;-1:-1:-1;15279:45:0;;;;;15383:4;15345:17;:23;15363:4;-1:-1:-1;;;;;15345:23:0;-1:-1:-1;;;;;15345:23:0;;;;;;;;;;;;15369:10;15345:35;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;15345:35:0;;;;;-1:-1:-1;15345:35:0;;;;;;;;;;;;:42;;-1:-1:-1;;15345:42:0;;;;;;;;;;;-1:-1:-1;;;;;;;15398:12:0;;-1:-1:-1;15398:12:0;;;:6;:12;;;;;:14;;-1:-1:-1;15398:14:0;;;15441:27;15398:12;15456:3;15461:6;15441:8;:27::i;:::-;15433:36;;;;;;;;15503:3;-1:-1:-1;;;;;15480:43:0;;15524:4;15530:6;15546:4;15553:10;15480:84;;;;;-1:-1:-1;;;15480:84:0;;;;;;;-1:-1:-1;;;;;15480:84:0;-1:-1:-1;;;;;15480:84:0;;;;;;;;;;;-1:-1:-1;;;;;15480:84:0;-1:-1:-1;;;;;15480:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;15480:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15480:84:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15480:84:0;;;;15630:4;-1:-1:-1;;;;;15600:35:0;-1:-1:-1;;;;;;;;;;;15618:10:0;15600:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;1052:20:0;;;-1:-1:-1;;;;;1052:20:0;;:::o;13725:687::-;13945:4;;13926:3;23923:12;23964:21;;;;23956:30;;;;;;13993:82;14010:10;14022:19;14043:3;14048:6;14056:10;14068:6;13993:16;:82::i;:::-;13978:97;-1:-1:-1;;;;;;14094:18:0;;;;14086:27;;;;;;14133:17;:23;14151:4;-1:-1:-1;;;;;14133:23:0;-1:-1:-1;;;;;14133:23:0;;;;;;;;;;;;14157:10;14133:35;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;14133:35:0;;;;;-1:-1:-1;14133:35:0;;;;;;;;;;;;;14132:36;;-1:-1:-1;14124:45:0;;-1:-1:-1;14124:45:0;;;;;14228:4;14190:17;:23;14208:4;-1:-1:-1;;;;;14190:23:0;-1:-1:-1;;;;;14190:23:0;;;;;;;;;;;;14214:10;14190:35;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;14190:35:0;;;;;-1:-1:-1;14190:35:0;;;;;;;;;;;;:42;;-1:-1:-1;;14190:42:0;;;;;;;;;;;-1:-1:-1;;;;;;;14243:12:0;;-1:-1:-1;14243:12:0;;;:6;:12;;;;;:14;;-1:-1:-1;14243:14:0;;;14286:36;14243:12;14310:3;14315:6;14286:17;:36::i;2317:35::-;;;;;;;;;;;;;;;;;;;:::o;3544:46::-;;;;;;;;;;;;-1:-1:-1;;;3544:46:0;;:::o;4928:181::-;5005:12;5043:35;5053:10;5065:3;5070:7;5043:9;:35::i;19596:177::-;19713:52;;;;;;;;;;;;;;;;;;;;;;19596:177;;;:::o;12905:678::-;13122:4;;13103:3;23923:12;23964:21;;;;23956:30;;;;;;13160:82;13177:10;13189:19;13210:3;13215:6;13223:10;13235:6;13160:16;:82::i;:::-;13145:97;-1:-1:-1;;;;;;13261:18:0;;;;13253:27;;;;;;13300:17;:23;13318:4;-1:-1:-1;;;;;13300:23:0;-1:-1:-1;;;;;13300:23:0;;;;;;;;;;;;13324:10;13300:35;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;13300:35:0;;;;;-1:-1:-1;13300:35:0;;;;;;;;;;;;;13299:36;;-1:-1:-1;13291:45:0;;-1:-1:-1;13291:45:0;;;;;13395:4;13357:17;:23;13375:4;-1:-1:-1;;;;;13357:23:0;-1:-1:-1;;;;;13357:23:0;;;;;;;;;;;;13381:10;13357:35;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;13357:35:0;;;;;-1:-1:-1;13357:35:0;;;;;;;;;;;;:42;;-1:-1:-1;;13357:42:0;;;;;;;;;;;-1:-1:-1;;;;;;;13410:12:0;;-1:-1:-1;13410:12:0;;;:6;:12;;;;;:14;;-1:-1:-1;13410:14:0;;;13453:36;13410:12;13477:3;13482:6;13453:17;:36::i;23222:488::-;23330:12;1481:5;;-1:-1:-1;;;;;1481:5:0;1467:10;:19;1459:28;;;;;;23473:21;-1:-1:-1;;;;;;23473:21:0;;;;:46;;-1:-1:-1;23498:21:0;-1:-1:-1;;;;;;23498:21:0;;;23473:46;:71;;;-1:-1:-1;23523:21:0;-1:-1:-1;;;;;;23523:21:0;;;23473:71;:109;;;-1:-1:-1;23561:21:0;-1:-1:-1;;;;;;23561:21:0;;;23473:109;:134;;;-1:-1:-1;23586:21:0;-1:-1:-1;;;;;;23586:21:0;;;23473:134;:159;;;-1:-1:-1;23611:21:0;-1:-1:-1;;;;;;23611:21:0;;;23473:159;23465:168;;;;;;;;-1:-1:-1;;;;;;;23644:26:0;;;;;;:12;:26;;;;;:36;;-1:-1:-1;;;23644:36:0;;-1:-1:-1;;23644:36:0;;;;;;;23222:488;;;;:::o;7395:312::-;7496:12;7535:39;7544:10;7556:8;7566:7;7535:8;:39::i;:::-;7527:48;;;;;;;;7586:91;;;;;7635:10;7586:91;;;;;;;;;;;;7664:4;7586:91;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7586:48:0;;;;;7635:10;7647:7;;7664:4;7671:5;;7586:91;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7586:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7586:91:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;7695:4:0;;7395:312;-1:-1:-1;;;;;;;7395:312:0:o;16381:509::-;16535:4;;16516:3;23923:12;23964:21;;;;23956:30;;;;;;16572:43;16590:10;16602:12;16572:17;:43::i;:::-;16557:58;;16635:17;:23;16653:4;-1:-1:-1;;;;;16635:23:0;-1:-1:-1;;;;;16635:23:0;;;;;;;;;;;;16659:10;16635:35;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;16635:35:0;;;;;-1:-1:-1;16635:35:0;;;;;;;;;;;;;16634:36;;-1:-1:-1;16626:45:0;;-1:-1:-1;16626:45:0;;;;;16720:4;16682:17;:23;16700:4;-1:-1:-1;;;;;16682:23:0;-1:-1:-1;;;;;16682:23:0;;;;;;;;;;;;16706:10;16682:35;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;16682:35:0;;;;;-1:-1:-1;16682:35:0;;;;;;;;;;;:42;;-1:-1:-1;;16682:42:0;;;;;;;;;;;-1:-1:-1;;;;;16745:23:0;;-1:-1:-1;16745:23:0;;;:17;:23;;;;;;:37;;-1:-1:-1;;16745:23:0;;:37;;-1:-1:-1;16682:35:0;-1:-1:-1;16682:35:0;;16745:37;;;;16682:35;16745:37;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;16745:37:0;;;;;-1:-1:-1;16745:37:0;;;;;;;;;;;:44;;-1:-1:-1;;16745:44:0;;;;;;;;;;;16825:35;;;;;;;;;;;-1:-1:-1;;;;;16825:35:0;;;-1:-1:-1;;;;;;;;;;;16825:35:0;;;-1:-1:-1;16745:37:0;-1:-1:-1;16745:37:0;;16825:35;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;16825:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16878:4;16871:11;;23997:1;16381:509;;;;;;;:::o;15920:244::-;16033:10;15993:4;16015:29;;;:17;:29;;;;;;;;:43;;;;16061:4;;16045:12;;16015:43;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;16015:43:0;;;;;-1:-1:-1;16015:43:0;;;;;;;;;;;:50;;-1:-1:-1;;16015:50:0;;;;;;;;;;;16091:43;;;;;;;;;;;16123:10;;-1:-1:-1;;;;;;;;;;;16091:43:0;;;-1:-1:-1;16015:43:0;-1:-1:-1;16015:43:0;;16091;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;16091:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16152:4:0;15920:244;;;:::o;22559:274::-;22654:18;1481:5;;22654:18;;-1:-1:-1;;;;;1481:5:0;1467:10;:19;1459:28;;;;;;22742:34;;;;;;22770:4;22742:34;;;;;;22684:14;;-1:-1:-1;;;;;;22742:19:0;;;;;:34;;;;;;;;;;;;;;-1:-1:-1;22742:19:0;:34;;;5:2:-1;;;;30:1;27;20:12;5:2;22742:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22742:34:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;22742:34:0;22806:5;;;22787:38;;;;;;-1:-1:-1;;;;;22806:5:0;;;22787:38;;;;;;;;;;;;22742:34;;-1:-1:-1;22787:18:0;;;;;;:38;;;;;22742:34;;22787:38;;;;;;;;;;;:18;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;22787:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22787:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;22559:274:0:o;20039:1010::-;20133:24;20176:9;20196;20216:7;20238:3;:10;20252:2;20238:16;;20234:39;;;20271:1;20256:17;;;;20234:39;-1:-1:-1;;;20328:2:0;20319:12;;20313:19;20366:2;20357:12;;20351:19;20611:2;20602:12;;20596:19;20593:1;20588:28;20912:2;20908:6;;;;20904:44;;;20934:2;20929:7;20904:44;20962:1;:7;;20967:2;20962:7;;:18;;;;;20973:1;:7;;20978:2;20973:7;;20962:18;20958:41;;;20997:1;20982:17;;;;20958:41;21017:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21017:24:0;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;21017:24:0;;-1:-1:-1;;21017:24:0;;;20039:1010;-1:-1:-1;;;;;;;20039:1010:0:o;10855:928::-;11065:4;;11046:3;23923:12;23964:21;;;;23956:30;;;;;;11264:74;11281:10;11293:11;11306:3;11311:6;11319:10;11331:6;11264:16;:74::i;:::-;11249:89;-1:-1:-1;;;;;;11357:18:0;;;;11349:27;;;;;;11488:17;:23;11506:4;-1:-1:-1;;;;;11488:23:0;-1:-1:-1;;;;;11488:23:0;;;;;;;;;;;;11512:10;11488:35;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;11488:35:0;;;;;-1:-1:-1;11488:35:0;;;;;;;;;;;;;11487:36;;-1:-1:-1;11479:45:0;;-1:-1:-1;11479:45:0;;;;;11573:4;11535:17;:23;11553:4;-1:-1:-1;;;;;11535:23:0;-1:-1:-1;;;;;11535:23:0;;;;;;;;;;;;11559:10;11535:35;;;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;11535:35:0;;;;;-1:-1:-1;11535:35:0;;;;;;;;;;;;:42;;-1:-1:-1;;11535:42:0;;;;;;;;;;;-1:-1:-1;;;;;;;11588:12:0;;-1:-1:-1;11588:12:0;;;:6;:12;;;;;:14;;-1:-1:-1;11588:14:0;;;11662:28;11588:12;11678:3;11683:6;11662:9;:28::i;6427:207::-;6517:12;6555:48;6573:10;6585:8;6595:7;6555:17;:48::i;22176:163::-;-1:-1:-1;;;;;22306:15:0;;;22273:7;22306:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;;;;22176:163::o;17017:173::-;17139:43;;17149:18;17139:43;;;;;17100:14;;17169:12;;17139:43;;;;;;;;;;;36:153:-1;66:2;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;;;;365:33;;17139:43:0;;;;;;;;;;;;-1:-1:-1;;;;;;17017:173:0:o;17401:220::-;17506:12;17543:70;17560:40;17572:27;17586:12;17572:13;:27::i;:::-;17560:11;:40::i;:::-;17602:10;17543:16;:70::i;:::-;17536:77;17401:220;-1:-1:-1;;;17401:220:0:o;1668:178::-;1481:5;;-1:-1:-1;;;;;1481:5:0;1467:10;:19;1459:28;;;;;;-1:-1:-1;;;;;1745:22:0;;;;1737:31;;;;;;1801:5;;;1780:37;;-1:-1:-1;;;;;1780:37:0;;;;1801:5;;;1780:37;;;1824:5;:16;;-1:-1:-1;;1824:16:0;-1:-1:-1;;;;;1824:16:0;;;;;;;;;;1668:178::o;8770:246::-;-1:-1:-1;;;;;8900:15:0;;;8870:12;8900:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;;;:35;;;8951;;;;;;;8870:12;;8900:25;:15;8951:35;;;;;;;;;;;-1:-1:-1;9004:4:0;8770:246;;;;;:::o;574:113::-;632:7;655:6;;;;648:14;;;;-1:-1:-1;676:5:0;;;574:113::o;8063:402::-;8157:12;-1:-1:-1;;;;;8196:17:0;;;;8187:27;;;;;;-1:-1:-1;;;;;8233:15:0;;;;;;:8;:15;;;;;;:26;-1:-1:-1;8233:26:0;8225:35;;;;;;-1:-1:-1;;;;;8299:15:0;;;;;;:8;:15;;;;;;:28;;8319:7;8299:28;:19;:28;:::i;:::-;-1:-1:-1;;;;;8281:15:0;;;;;;;:8;:15;;;;;;:46;;;;8354:13;;;;;;;:26;;8372:7;8354:26;:17;:26;:::i;:::-;-1:-1:-1;;;;;8338:13:0;;;;;;;:8;:13;;;;;;;;;:42;;;;8406:29;;;;;;;8338:13;;8406:29;;;;;;;;;;;;;-1:-1:-1;8453:4:0;8063:402;;;;;:::o;9932:400::-;-1:-1:-1;;;;;10074:15:0;;;10040:12;10074:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;;;:36;-1:-1:-1;10070:153:0;;-1:-1:-1;;;;;10112:15:0;;;10140:1;10112:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;;:29;10070:153;;;-1:-1:-1;;;;;10185:15:0;;;;;;;:7;:15;;;;;;;;:25;;;;;;;;;;:38;;10215:7;10185:38;:29;:38;:::i;:::-;-1:-1:-1;;;;;10157:15:0;;;;;;;:7;:15;;;;;;;;:25;;;;;;;;;:66;10070:153;-1:-1:-1;;;;;10249:53:0;;;10276:15;;;;:7;:15;;;;;;;;10249:53;;;10276:25;;;;;;;;;;;10249:53;;;;;;;;;;;;;;;;;-1:-1:-1;10320:4:0;9932:400;;;;;:::o;9318:303::-;-1:-1:-1;;;;;9484:15:0;;;9426:12;9484:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;;;:38;;9514:7;9484:38;:29;:38;:::i;695:133::-;753:7;781:5;;;800:6;;;;793:14;;
Swarm Source
bzzr://64a8180ea229c306b55680c97614d549fc9d164840886ba995a60f8fd21643bf
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 ]
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.