Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Source Code
Overview
Max Total Supply
94.174985968105508687 SATS
Holders
234
Transfers
-
0
Market
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
| # | Exchange | Pair | Price | 24H Volume | % Volume |
|---|
Contract Name:
Satoshi
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2023-07-03
*/
/*
* Satoshi P2P e-cash paper
*
* Satoshi Nakamoto
* satoshin@gmx.com
* www.bitcoin.org
*
* Abstract:
*
* A purely decentralized implementation of an Ethereum contract, inspired by
* Bitcoin's peer-to-peer electronic cash system, enables the direct transfer
* of tokens from one party to another without a third-party intermediary.
* Cryptographic methods provide part of the solution, but primary advantages
* are lost if a trusted authority is still needed to manage token supply and
* prevent over-spending.
*
* We propose a solution to the token supply management using a
* contract-level automated feature. The contract manages the token supply by
* calculating the rewards from a block and applying the "BlockReward" event,
* forming a record that cannot be altered without redoing the reward event.
* The reward event not only serves as evidence of the sequence of operations,
* but also as evidence of the largest pool of token holders. As long as a
* majority of token holders are not cooperating to disrupt the contract,
* they'll validate the longest chain of events and outpace potential adversaries.
*
* The contract itself requires minimal structure. Transactions are executed
* on a first-come-first-serve basis, and addresses can interact with the
* contract at will, accepting the outcome of the longest chain of events as
* proof of what happened in their absence. In addition, the contract
* periodically contributes tokens to the Satoshi Contribution, effectively
* removing them from the circulating supply. This contributes to the scarcity
* and potentially the value of the token over time, reflecting the spirit of
* Satoshi Nakamoto's vision in the context of an Ethereum contract.
*
* https://twitter.com/0xSatoshiETH
*/
pragma solidity 0.8.19;
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address who) external view returns (uint256);
function allowance(address owner, address spender) external view returns (uint256);
function transfer(address to, uint256 value) external returns (bool);
function approve(address spender, uint256 value) external returns (bool);
function transferFrom(address from, address to, uint256 value) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
interface InterfaceLP {
function sync() external;
function mint(address to) external returns (uint liquidity);
}
abstract contract ERC20Detailed is IERC20 {
string private _name;
string private _symbol;
uint8 private _decimals;
constructor(
string memory _tokenName,
string memory _tokenSymbol,
uint8 _tokenDecimals
) {
_name = _tokenName;
_symbol = _tokenSymbol;
_decimals = _tokenDecimals;
}
function name() public view returns (string memory) {
return _name;
}
function symbol() public view returns (string memory) {
return _symbol;
}
function decimals() public view returns (uint8) {
return _decimals;
}
}
interface IDEXRouter {
function factory() external pure returns (address);
function WETH() external pure returns (address);
}
interface IDEXFactory {
function createPair(address tokenA, address tokenB)
external
returns (address pair);
}
contract Ownable {
address private _owner;
event OwnershipRenounced(address indexed previousOwner);
event OwnershipTransferred(
address indexed previousOwner,
address indexed newOwner
);
constructor() {
_owner = msg.sender;
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(msg.sender == _owner, "Not owner");
_;
}
function renounceOwnership() public onlyOwner {
emit OwnershipRenounced(_owner);
_owner = address(0);
}
function transferOwnership(address newOwner) public onlyOwner {
_transferOwnership(newOwner);
}
function _transferOwnership(address newOwner) internal {
require(newOwner != address(0));
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
interface IWETH {
function deposit() external payable;
}
contract Satoshi is ERC20Detailed, Ownable {
uint256 public halvingRateNumerator = 810101010;
uint256 public halvingRateDenominator = 100000000000;
uint256 public blockRewardInterval = 2 hours;
uint256 public nextBlockReward;
bool public autoBlockReward = true;
uint256 public maxTxnAmount;
uint256 public maxWallet;
uint256 public percentForSatoshi = 50;
bool public satoshiEnabled = true;
uint256 public satoshiFrequency = 2 hours;
uint256 public nextSatoshi;
uint256 private constant DECIMALS = 18;
uint256 private constant INITIAL_COINS_SUPPLY = 21_000_000 * 10**DECIMALS;
uint256 private constant TOTAL_UNITS = type(uint256).max - (type(uint256).max % INITIAL_COINS_SUPPLY);
uint256 private constant MIN_SUPPLY = 21 * 10**DECIMALS;
event BlockReward(uint256 indexed time, uint256 totalSupply);
event RemovedLimits();
event SatoshiContribution(uint256 indexed amount);
IWETH public immutable weth;
IDEXRouter public immutable router;
address public immutable pair;
bool public limitsInEffect = true;
bool public lpAdded = false;
uint256 private _totalSupply;
uint256 private _unitsPerCoin;
mapping(address => uint256) private _unitBalances;
mapping(address => mapping(address => uint256)) private _allowedCoins;
modifier validRecipient(address to) {
require(to != address(0x0));
_;
}
constructor() ERC20Detailed(block.chainid==1 ? "SATOSHI" : "SAT", block.chainid==1 ? "SATS" : "SAT", 18) {
address dexAddress;
if(block.chainid == 1){
dexAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
} else if(block.chainid == 5){
dexAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
} else if (block.chainid == 97){
dexAddress = 0xD99D1c33F9fC3444f8101754aBC46c52416550D1;
} else {
revert("Chain not configured");
}
router = IDEXRouter(dexAddress);
_totalSupply = INITIAL_COINS_SUPPLY;
_unitBalances[address(this)] = TOTAL_UNITS;
_unitsPerCoin = TOTAL_UNITS/(_totalSupply);
maxTxnAmount = _totalSupply * 1 / 100;
maxWallet = _totalSupply * 1 / 100;
weth = IWETH(router.WETH());
pair = IDEXFactory(router.factory()).createPair(address(this), router.WETH());
emit Transfer(address(0x0), address(this), balanceOf(address(this)));
}
function _msgSender() internal view returns (address payable) {
return payable(msg.sender);
}
function totalSupply() external view override returns (uint256) {
return _totalSupply;
}
function allowance(address owner_, address spender) external view override returns (uint256){
return _allowedCoins[owner_][spender];
}
function balanceOf(address who) public view override returns (uint256) {
return _unitBalances[who]/(_unitsPerCoin);
}
function transfer(address recipient, uint256 amount) public override validRecipient(recipient) returns (bool) {
_transferFrom(_msgSender(), recipient, amount);
return true;
}
function approve(address spender, uint256 coins) public override returns (bool) {
_allowedCoins[_msgSender()][spender] = coins;
emit Approval(_msgSender(), spender, coins);
return true;
}
function transferFrom(address sender, address recipient, uint256 amount) public override validRecipient(recipient) returns (bool) {
require(amount <= _allowedCoins[sender][_msgSender()], "Transfer amount exceeds allowance");
_allowedCoins[sender][_msgSender()] = _allowedCoins[sender][_msgSender()]-amount;
_transferFrom(sender, recipient, amount);
return true;
}
function _transferFrom(address sender, address recipient, uint256 amount) internal {
if(limitsInEffect){
if (sender == pair || recipient == pair){
require(amount <= maxTxnAmount, "Max Transaction Amount Exceeded");
}
if (recipient != pair){
require(balanceOf(recipient) + amount <= maxWallet, "Max Wallet Amount Exceeded");
}
}
if(recipient == pair){
if(autoBlockReward && shouldReward()){
blockReward();
}
if (shouldReward()) {
autoSatoshi();
}
}
uint256 unitAmount = amount*(_unitsPerCoin);
_unitBalances[sender] = _unitBalances[sender]-(unitAmount);
_unitBalances[recipient] = _unitBalances[recipient]+(unitAmount);
emit Transfer(sender, recipient, unitAmount/(_unitsPerCoin));
}
function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool){
uint256 oldValue = _allowedCoins[_msgSender()][spender];
if (subtractedValue >= oldValue) {
_allowedCoins[_msgSender()][spender] = 0;
} else {
_allowedCoins[_msgSender()][spender] = oldValue - subtractedValue;
}
emit Approval(_msgSender(), spender, _allowedCoins[_msgSender()][spender]);
return true;
}
function increaseAllowance(address spender, uint256 addedValue) external returns (bool){
_allowedCoins[_msgSender()][spender] = _allowedCoins[_msgSender()][spender] + addedValue;
emit Approval(_msgSender(), spender, _allowedCoins[_msgSender()][spender]);
return true;
}
function getSupplyDeltaOnNextBlockReward() external view returns (uint256){
return (_totalSupply*halvingRateNumerator)/halvingRateDenominator;
}
function shouldReward() public view returns (bool) {
return nextBlockReward <= block.timestamp;
}
function lpSync() internal {
InterfaceLP _pair = InterfaceLP(pair);
_pair.sync();
}
function blockReward() private returns (uint256) {
uint256 time = block.timestamp;
uint256 supplyDelta = (_totalSupply*halvingRateNumerator)/halvingRateDenominator;
nextBlockReward += blockRewardInterval;
if (supplyDelta == 0) {
emit BlockReward(time, _totalSupply);
return _totalSupply;
}
_totalSupply = _totalSupply - supplyDelta;
if (_totalSupply < MIN_SUPPLY) {
_totalSupply = MIN_SUPPLY;
autoBlockReward = false;
}
_unitsPerCoin = TOTAL_UNITS / _totalSupply;
lpSync();
emit BlockReward(time, _totalSupply);
return _totalSupply;
}
function manualBlockReward() external onlyOwner {
require(shouldReward(), "Not yet time for block reward");
blockReward();
}
function autoSatoshi() internal {
nextSatoshi = block.timestamp + satoshiFrequency;
uint256 liquidityPairBalance = balanceOf(pair);
uint256 amountToContribute = liquidityPairBalance * percentForSatoshi / 10000;
if (amountToContribute > 0) {
uint256 unitAmountToContribute = amountToContribute * _unitsPerCoin;
_unitBalances[pair] -= unitAmountToContribute;
_unitBalances[address(0xdead)] += unitAmountToContribute;
emit Transfer(pair, address(0xdead), amountToContribute);
}
InterfaceLP _pair = InterfaceLP(pair);
_pair.sync();
emit SatoshiContribution(amountToContribute);
}
function manualSatoshi() external onlyOwner {
require(shouldReward(), "Must wait for cooldown to finish");
nextSatoshi = block.timestamp + satoshiFrequency;
uint256 liquidityPairBalance = balanceOf(pair);
uint256 amountToContribute = liquidityPairBalance * percentForSatoshi / 10000;
if (amountToContribute > 0) {
uint256 unitAmountToContribute = amountToContribute * _unitsPerCoin;
_unitBalances[pair] -= unitAmountToContribute;
_unitBalances[address(0xdead)] += unitAmountToContribute;
emit Transfer(pair, address(0xdead), amountToContribute);
}
InterfaceLP _pair = InterfaceLP(pair);
_pair.sync();
emit SatoshiContribution(amountToContribute);
}
function genesisBlock(address[] calldata _to) external payable onlyOwner {
require(!lpAdded, "LP already added");
require(address(this).balance > 0 && balanceOf(address(this)) > 0);
uint256 totalDistribution = (_to.length * (INITIAL_COINS_SUPPLY * 3 / 1000));
uint256 toDistribute = INITIAL_COINS_SUPPLY * 3 / 1000 * _unitsPerCoin;
require(balanceOf(address(this)) >= totalDistribution, "Insufficient balance to distribute");
for (uint256 i = 0; i < _to.length; i++) {
_unitBalances[_to[i]] += (toDistribute);
}
weth.deposit{value: address(this).balance}();
uint lpBalance = (_unitBalances[address(this)] - (totalDistribution * _unitsPerCoin));
_unitBalances[pair] += lpBalance;
_unitBalances[address(this)] = 0;
emit Transfer(address(this), pair, _unitBalances[pair] / _unitsPerCoin);
IERC20(address(weth)).transfer(address(pair), IERC20(address(weth)).balanceOf(address(this)));
InterfaceLP(pair).mint(owner());
lpAdded = true;
nextBlockReward = block.timestamp + blockRewardInterval;
nextSatoshi = block.timestamp + satoshiFrequency;
//The NY Times 4/07/2023 Israel Launches Biggest Air Attack on West Bank in Nearly Two Decades
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"time","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"BlockReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SatoshiContribution","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"coins","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoBlockReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blockRewardInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_to","type":"address[]"}],"name":"genesisBlock","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getSupplyDeltaOnNextBlockReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"halvingRateDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"halvingRateNumerator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualBlockReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSatoshi","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTxnAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextBlockReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextSatoshi","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForSatoshi","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"satoshiEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"satoshiFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"shouldReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"weth","outputs":[{"internalType":"contract IWETH","name":"","type":"address"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60e0604052633049291260035564174876e800600455611c20600581905560078054600160ff1991821681179092556032600a55600b805490911682179055600c91909155600e805461ffff191690911790553480156200005f57600080fd5b50466001146200008b576040518060400160405280600381526020016214d05560ea1b815250620000ac565b604051806040016040528060078152602001665341544f53484960c81b8152505b46600114620000d7576040518060400160405280600381526020016214d05560ea1b815250620000f5565b604051806040016040528060048152602001635341545360e01b8152505b60126000620001058482620005fa565b506001620001148382620005fa565b506002805460ff929092166001600160a81b0319909216919091176101003302179055506000905046600103620001615750737a250d5630b4cf539739df2c5dacb4c659f2488d620001f7565b46600503620001865750737a250d5630b4cf539739df2c5dacb4c659f2488d620001f7565b46606103620001ab575073d99d1c33f9fc3444f8101754abc46c52416550d1620001f7565b60405162461bcd60e51b815260206004820152601460248201527f436861696e206e6f7420636f6e66696775726564000000000000000000000000604482015260640160405180910390fd5b6001600160a01b03811660a052620002126012600a620007d9565b62000222906301406f40620007ee565b600f55620002336012600a620007d9565b62000243906301406f40620007ee565b62000251906000196200081e565b6200025f9060001962000835565b30600090815260116020526040902055600f54620002806012600a620007d9565b62000290906301406f40620007ee565b6200029e906000196200081e565b620002ac9060001962000835565b620002b891906200084b565b601055600f54606490620002ce906001620007ee565b620002da91906200084b565b600855600f54606490620002f0906001620007ee565b620002fc91906200084b565b60098190555060a0516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000343573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000369919062000862565b6001600160a01b03166080816001600160a01b03168152505060a0516001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e9919062000862565b6001600160a01b031663c9c653963060a0516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000439573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200045f919062000862565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620004ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004d3919062000862565b6001600160a01b031660c0523060007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200050e8362000526565b60405190815260200160405180910390a3506200088d565b6010546001600160a01b03821660009081526011602052604081205490916200054f916200084b565b92915050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200058057607f821691505b602082108103620005a157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620005f557600081815260208120601f850160051c81016020861015620005d05750805b601f850160051c820191505b81811015620005f157828155600101620005dc565b5050505b505050565b81516001600160401b0381111562000616576200061662000555565b6200062e816200062784546200056b565b84620005a7565b602080601f8311600181146200066657600084156200064d5750858301515b600019600386901b1c1916600185901b178555620005f1565b600085815260208120601f198616915b82811015620006975788860151825594840194600190910190840162000676565b5085821015620006b65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200071d578160001904821115620007015762000701620006c6565b808516156200070f57918102915b93841c9390800290620006e1565b509250929050565b60008262000736575060016200054f565b8162000745575060006200054f565b81600181146200075e5760028114620007695762000789565b60019150506200054f565b60ff8411156200077d576200077d620006c6565b50506001821b6200054f565b5060208310610133831016604e8410600b8410161715620007ae575081810a6200054f565b620007ba8383620006dc565b8060001904821115620007d157620007d1620006c6565b029392505050565b6000620007e7838362000725565b9392505050565b80820281158282048414176200054f576200054f620006c6565b634e487b7160e01b600052601260045260246000fd5b60008262000830576200083062000808565b500690565b818103818111156200054f576200054f620006c6565b6000826200085d576200085d62000808565b500490565b6000602082840312156200087557600080fd5b81516001600160a01b0381168114620007e757600080fd5b60805160a05160c051611cb162000926600039600081816104e301528181610ccc01528181610d2c01528181610de201528181610ec001528181611161015281816111c601528181611265015281816112b9015281816113a2015281816113dd0152818161146a0152818161150801526118220152600061061301526000818161032501528181610c260152610db10152611cb16000f3fe6080604052600436106102045760003560e01c80637dc7278f11610118578063af8deddb116100a0578063dd62ed3e1161006f578063dd62ed3e14610586578063e9500015146105cc578063f2fde38b146105e1578063f887ea4014610601578063f8b45b051461063557600080fd5b8063af8deddb14610525578063bd334d8114610544578063c3083bf81461055a578063cf46f24c1461057057600080fd5b806395d89b41116100e757806395d89b4114610482578063a457c2d714610497578063a58c9382146104b7578063a8aa1b31146104d1578063a9059cbb1461050557600080fd5b80637dc7278f1461041c57806381285a0e146104325780638a9e98c41461044c5780638da5cb5b1461045f57600080fd5b80633fc8cef31161019b5780636519b5a91161016a5780636519b5a9146103a557806370a08231146103bb578063715018a6146103db57806374fd41a5146103f05780637af2c4221461040657600080fd5b80633fc8cef31461031357806344b0c73f1461035f5780634a62bb65146103765780635e7dd5361461039057600080fd5b806321395349116101d7578063213953491461029957806323b872dd146102b1578063313ce567146102d157806339509351146102f357600080fd5b806306fdde0314610209578063095ea7b31461023457806318160ddd1461026457806318d954ef14610283575b600080fd5b34801561021557600080fd5b5061021e61064b565b60405161022b9190611899565b60405180910390f35b34801561024057600080fd5b5061025461024f366004611903565b6106dd565b604051901515815260200161022b565b34801561027057600080fd5b50600f545b60405190815260200161022b565b34801561028f57600080fd5b50610275600c5481565b3480156102a557600080fd5b50600654421015610254565b3480156102bd57600080fd5b506102546102cc36600461192d565b610746565b3480156102dd57600080fd5b5060025460405160ff909116815260200161022b565b3480156102ff57600080fd5b5061025461030e366004611903565b610847565b34801561031f57600080fd5b506103477f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161022b565b34801561036b57600080fd5b506103746108cd565b005b34801561038257600080fd5b50600e546102549060ff1681565b34801561039c57600080fd5b50610275610959565b3480156103b157600080fd5b5061027560035481565b3480156103c757600080fd5b506102756103d6366004611969565b61097d565b3480156103e757600080fd5b506103746109a4565b3480156103fc57600080fd5b5061027560045481565b34801561041257600080fd5b5061027560065481565b34801561042857600080fd5b50610275600a5481565b34801561043e57600080fd5b506007546102549060ff1681565b61037461045a36600461198b565b610a22565b34801561046b57600080fd5b5060025461010090046001600160a01b0316610347565b34801561048e57600080fd5b5061021e610fa6565b3480156104a357600080fd5b506102546104b2366004611903565b610fb5565b3480156104c357600080fd5b50600b546102549060ff1681565b3480156104dd57600080fd5b506103477f000000000000000000000000000000000000000000000000000000000000000081565b34801561051157600080fd5b50610254610520366004611903565b61109e565b34801561053157600080fd5b50600e5461025490610100900460ff1681565b34801561055057600080fd5b5061027560055481565b34801561056657600080fd5b50610275600d5481565b34801561057c57600080fd5b5061027560085481565b34801561059257600080fd5b506102756105a1366004611a00565b6001600160a01b03918216600090815260126020908152604080832093909416825291909152205490565b3480156105d857600080fd5b506103746110c9565b3480156105ed57600080fd5b506103746105fc366004611969565b61135d565b34801561060d57600080fd5b506103477f000000000000000000000000000000000000000000000000000000000000000081565b34801561064157600080fd5b5061027560095481565b60606000805461065a90611a33565b80601f016020809104026020016040519081016040528092919081815260200182805461068690611a33565b80156106d35780601f106106a8576101008083540402835291602001916106d3565b820191906000526020600020905b8154815290600101906020018083116106b657829003601f168201915b5050505050905090565b3360008181526012602090815260408083206001600160a01b03871680855290835281842086905590518581529293909290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a35060015b92915050565b6000826001600160a01b03811661075c57600080fd5b6001600160a01b03851660009081526012602090815260408083203384529091529020548311156107de5760405162461bcd60e51b815260206004820152602160248201527f5472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636044820152606560f81b60648201526084015b60405180910390fd5b6001600160a01b038516600090815260126020908152604080832033845290915290205461080d908490611a83565b6001600160a01b038616600090815260126020908152604080832033845290915290205561083c858585611395565b506001949350505050565b3360009081526012602090815260408083206001600160a01b0386168452909152812054610876908390611a96565b3360008181526012602090815260408083206001600160a01b038916808552908352928190208590555193845290927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259101610734565b60025461010090046001600160a01b031633146108fc5760405162461bcd60e51b81526004016107d590611aa9565b60065442101561094e5760405162461bcd60e51b815260206004820152601d60248201527f4e6f74207965742074696d6520666f7220626c6f636b2072657761726400000060448201526064016107d5565b610956611641565b50565b6000600454600354600f5461096e9190611acc565b6109789190611af9565b905090565b6010546001600160a01b038216600090815260116020526040812054909161074091611af9565b60025461010090046001600160a01b031633146109d35760405162461bcd60e51b81526004016107d590611aa9565b6002546040516101009091046001600160a01b0316907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a260028054610100600160a81b0319169055565b60025461010090046001600160a01b03163314610a515760405162461bcd60e51b81526004016107d590611aa9565b600e54610100900460ff1615610a9c5760405162461bcd60e51b815260206004820152601060248201526f131408185b1c9958591e48185919195960821b60448201526064016107d5565b600047118015610ab457506000610ab23061097d565b115b610abd57600080fd5b60006103e8610ace6012600a611bf1565b610adc906301406f40611acc565b610ae7906003611acc565b610af19190611af9565b610afb9083611acc565b905060006010546103e86012600a610b139190611bf1565b610b21906301406f40611acc565b610b2c906003611acc565b610b369190611af9565b610b409190611acc565b905081610b4c3061097d565b1015610ba55760405162461bcd60e51b815260206004820152602260248201527f496e73756666696369656e742062616c616e636520746f206469737472696275604482015261746560f01b60648201526084016107d5565b60005b83811015610c23578160116000878785818110610bc757610bc7611bfd565b9050602002016020810190610bdc9190611969565b6001600160a01b03166001600160a01b031681526020019081526020016000206000828254610c0b9190611a96565b90915550819050610c1b81611c13565b915050610ba8565b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0476040518263ffffffff1660e01b81526004016000604051808303818588803b158015610c7f57600080fd5b505af1158015610c93573d6000803e3d6000fd5b5050505050600060105483610ca89190611acc565b30600090815260116020526040902054610cc29190611a83565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600090815260116020526040812080549293508392909190610d0f908490611a96565b9091555050306000818152601160205260408082208290556010547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031680845291909220549092917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91610d8b9190611af9565b60405190815260200160405180910390a36040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb907f00000000000000000000000000000000000000000000000000000000000000009083906370a0823190602401602060405180830381865afa158015610e2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4e9190611c2c565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610e99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebd9190611c45565b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636a627842610f056002546001600160a01b036101009091041690565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015610f4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6f9190611c2c565b50600e805461ff001916610100179055600554610f8c9042611a96565b600655600c54610f9c9042611a96565b600d555050505050565b60606001805461065a90611a33565b3360009081526012602090815260408083206001600160a01b0386168452909152812054808310611009573360009081526012602090815260408083206001600160a01b0388168452909152812055611038565b6110138382611a83565b3360009081526012602090815260408083206001600160a01b03891684529091529020555b3360008181526012602090815260408083206001600160a01b0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b6000826001600160a01b0381166110b457600080fd5b6110bf338585611395565b5060019392505050565b60025461010090046001600160a01b031633146110f85760405162461bcd60e51b81526004016107d590611aa9565b60065442101561114a5760405162461bcd60e51b815260206004820181905260248201527f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e69736860448201526064016107d5565b600c546111579042611a96565b600d5560006111857f000000000000000000000000000000000000000000000000000000000000000061097d565b90506000612710600a548361119a9190611acc565b6111a49190611af9565b905080156112b5576000601054826111bc9190611acc565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600090815260116020526040812080549293508392909190611209908490611a83565b909155505061dead600090815260116020527f97847ee99463795296047093514439c3127772df3715e628aa85601cf8541716805483929061124c908490611a96565b909155505060405182815261dead906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505b60007f00000000000000000000000000000000000000000000000000000000000000009050806001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561131557600080fd5b505af1158015611329573d6000803e3d6000fd5b50506040518492507f1685c550ad58388ebb3da9b30d9eec840c8645b16dc2005eee26e1c189eb2a829150600090a2505050565b60025461010090046001600160a01b0316331461138c5760405162461bcd60e51b81526004016107d590611aa9565b610956816117a4565b600e5460ff1615611506577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316148061141157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b15611468576008548111156114685760405162461bcd60e51b815260206004820152601f60248201527f4d6178205472616e73616374696f6e20416d6f756e742045786365656465640060448201526064016107d5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161461150657600954816114ae8461097d565b6114b89190611a96565b11156115065760405162461bcd60e51b815260206004820152601a60248201527f4d61782057616c6c657420416d6f756e7420457863656564656400000000000060448201526064016107d5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036115735760075460ff16801561155357506006544210155b1561156257611560611641565b505b60065442106115735761157361114a565b6000601054826115839190611acc565b6001600160a01b0385166000908152601160205260409020549091506115aa908290611a83565b6001600160a01b0380861660009081526011602052604080822093909355908516815220546115da908290611a96565b6001600160a01b03808516600081815260116020526040902092909255601054908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061162a9085611af9565b60405190815260200160405180910390a350505050565b6000804290506000600454600354600f5461165c9190611acc565b6116669190611af9565b90506005546006600082825461167c9190611a96565b909155505060008190036116d057817f5e5cbad37ad18afa5c7996238fadfdb52098750278bd00aac82ab54a4a49cb36600f546040516116be91815260200190565b60405180910390a2600f549250505090565b80600f546116de9190611a83565b600f556116ed6012600a611bf1565b6116f8906015611acc565b600f5410156117265761170d6012600a611bf1565b611718906015611acc565b600f556007805460ff191690555b600f546117356012600a611bf1565b611743906301406f40611acc565b61174f90600019611c67565b61175b90600019611a83565b6117659190611af9565b60105561177061181e565b817f5e5cbad37ad18afa5c7996238fadfdb52098750278bd00aac82ab54a4a49cb36600f546040516116be91815260200190565b6001600160a01b0381166117b757600080fd5b6002546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600280546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b60007f00000000000000000000000000000000000000000000000000000000000000009050806001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561187e57600080fd5b505af1158015611892573d6000803e3d6000fd5b5050505050565b600060208083528351808285015260005b818110156118c6578581018301518582016040015282016118aa565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146118fe57600080fd5b919050565b6000806040838503121561191657600080fd5b61191f836118e7565b946020939093013593505050565b60008060006060848603121561194257600080fd5b61194b846118e7565b9250611959602085016118e7565b9150604084013590509250925092565b60006020828403121561197b57600080fd5b611984826118e7565b9392505050565b6000806020838503121561199e57600080fd5b823567ffffffffffffffff808211156119b657600080fd5b818501915085601f8301126119ca57600080fd5b8135818111156119d957600080fd5b8660208260051b85010111156119ee57600080fd5b60209290920196919550909350505050565b60008060408385031215611a1357600080fd5b611a1c836118e7565b9150611a2a602084016118e7565b90509250929050565b600181811c90821680611a4757607f821691505b602082108103611a6757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561074057610740611a6d565b8082018082111561074057610740611a6d565b6020808252600990820152682737ba1037bbb732b960b91b604082015260600190565b808202811582820484141761074057610740611a6d565b634e487b7160e01b600052601260045260246000fd5b600082611b0857611b08611ae3565b500490565b600181815b80851115611b48578160001904821115611b2e57611b2e611a6d565b80851615611b3b57918102915b93841c9390800290611b12565b509250929050565b600082611b5f57506001610740565b81611b6c57506000610740565b8160018114611b825760028114611b8c57611ba8565b6001915050610740565b60ff841115611b9d57611b9d611a6d565b50506001821b610740565b5060208310610133831016604e8410600b8410161715611bcb575081810a610740565b611bd58383611b0d565b8060001904821115611be957611be9611a6d565b029392505050565b60006119848383611b50565b634e487b7160e01b600052603260045260246000fd5b600060018201611c2557611c25611a6d565b5060010190565b600060208284031215611c3e57600080fd5b5051919050565b600060208284031215611c5757600080fd5b8151801515811461198457600080fd5b600082611c7657611c76611ae3565b50069056fea2646970667358221220f90f7e258f74fc0e76e452eaec74e94b99ddc3fb54f58f9738db819b7b274de764736f6c63430008130033
Deployed Bytecode
0x6080604052600436106102045760003560e01c80637dc7278f11610118578063af8deddb116100a0578063dd62ed3e1161006f578063dd62ed3e14610586578063e9500015146105cc578063f2fde38b146105e1578063f887ea4014610601578063f8b45b051461063557600080fd5b8063af8deddb14610525578063bd334d8114610544578063c3083bf81461055a578063cf46f24c1461057057600080fd5b806395d89b41116100e757806395d89b4114610482578063a457c2d714610497578063a58c9382146104b7578063a8aa1b31146104d1578063a9059cbb1461050557600080fd5b80637dc7278f1461041c57806381285a0e146104325780638a9e98c41461044c5780638da5cb5b1461045f57600080fd5b80633fc8cef31161019b5780636519b5a91161016a5780636519b5a9146103a557806370a08231146103bb578063715018a6146103db57806374fd41a5146103f05780637af2c4221461040657600080fd5b80633fc8cef31461031357806344b0c73f1461035f5780634a62bb65146103765780635e7dd5361461039057600080fd5b806321395349116101d7578063213953491461029957806323b872dd146102b1578063313ce567146102d157806339509351146102f357600080fd5b806306fdde0314610209578063095ea7b31461023457806318160ddd1461026457806318d954ef14610283575b600080fd5b34801561021557600080fd5b5061021e61064b565b60405161022b9190611899565b60405180910390f35b34801561024057600080fd5b5061025461024f366004611903565b6106dd565b604051901515815260200161022b565b34801561027057600080fd5b50600f545b60405190815260200161022b565b34801561028f57600080fd5b50610275600c5481565b3480156102a557600080fd5b50600654421015610254565b3480156102bd57600080fd5b506102546102cc36600461192d565b610746565b3480156102dd57600080fd5b5060025460405160ff909116815260200161022b565b3480156102ff57600080fd5b5061025461030e366004611903565b610847565b34801561031f57600080fd5b506103477f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b6040516001600160a01b03909116815260200161022b565b34801561036b57600080fd5b506103746108cd565b005b34801561038257600080fd5b50600e546102549060ff1681565b34801561039c57600080fd5b50610275610959565b3480156103b157600080fd5b5061027560035481565b3480156103c757600080fd5b506102756103d6366004611969565b61097d565b3480156103e757600080fd5b506103746109a4565b3480156103fc57600080fd5b5061027560045481565b34801561041257600080fd5b5061027560065481565b34801561042857600080fd5b50610275600a5481565b34801561043e57600080fd5b506007546102549060ff1681565b61037461045a36600461198b565b610a22565b34801561046b57600080fd5b5060025461010090046001600160a01b0316610347565b34801561048e57600080fd5b5061021e610fa6565b3480156104a357600080fd5b506102546104b2366004611903565b610fb5565b3480156104c357600080fd5b50600b546102549060ff1681565b3480156104dd57600080fd5b506103477f0000000000000000000000005b431e0f7fe1a38b040712bf5d47922a50f43ebd81565b34801561051157600080fd5b50610254610520366004611903565b61109e565b34801561053157600080fd5b50600e5461025490610100900460ff1681565b34801561055057600080fd5b5061027560055481565b34801561056657600080fd5b50610275600d5481565b34801561057c57600080fd5b5061027560085481565b34801561059257600080fd5b506102756105a1366004611a00565b6001600160a01b03918216600090815260126020908152604080832093909416825291909152205490565b3480156105d857600080fd5b506103746110c9565b3480156105ed57600080fd5b506103746105fc366004611969565b61135d565b34801561060d57600080fd5b506103477f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561064157600080fd5b5061027560095481565b60606000805461065a90611a33565b80601f016020809104026020016040519081016040528092919081815260200182805461068690611a33565b80156106d35780601f106106a8576101008083540402835291602001916106d3565b820191906000526020600020905b8154815290600101906020018083116106b657829003601f168201915b5050505050905090565b3360008181526012602090815260408083206001600160a01b03871680855290835281842086905590518581529293909290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a35060015b92915050565b6000826001600160a01b03811661075c57600080fd5b6001600160a01b03851660009081526012602090815260408083203384529091529020548311156107de5760405162461bcd60e51b815260206004820152602160248201527f5472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636044820152606560f81b60648201526084015b60405180910390fd5b6001600160a01b038516600090815260126020908152604080832033845290915290205461080d908490611a83565b6001600160a01b038616600090815260126020908152604080832033845290915290205561083c858585611395565b506001949350505050565b3360009081526012602090815260408083206001600160a01b0386168452909152812054610876908390611a96565b3360008181526012602090815260408083206001600160a01b038916808552908352928190208590555193845290927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259101610734565b60025461010090046001600160a01b031633146108fc5760405162461bcd60e51b81526004016107d590611aa9565b60065442101561094e5760405162461bcd60e51b815260206004820152601d60248201527f4e6f74207965742074696d6520666f7220626c6f636b2072657761726400000060448201526064016107d5565b610956611641565b50565b6000600454600354600f5461096e9190611acc565b6109789190611af9565b905090565b6010546001600160a01b038216600090815260116020526040812054909161074091611af9565b60025461010090046001600160a01b031633146109d35760405162461bcd60e51b81526004016107d590611aa9565b6002546040516101009091046001600160a01b0316907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a260028054610100600160a81b0319169055565b60025461010090046001600160a01b03163314610a515760405162461bcd60e51b81526004016107d590611aa9565b600e54610100900460ff1615610a9c5760405162461bcd60e51b815260206004820152601060248201526f131408185b1c9958591e48185919195960821b60448201526064016107d5565b600047118015610ab457506000610ab23061097d565b115b610abd57600080fd5b60006103e8610ace6012600a611bf1565b610adc906301406f40611acc565b610ae7906003611acc565b610af19190611af9565b610afb9083611acc565b905060006010546103e86012600a610b139190611bf1565b610b21906301406f40611acc565b610b2c906003611acc565b610b369190611af9565b610b409190611acc565b905081610b4c3061097d565b1015610ba55760405162461bcd60e51b815260206004820152602260248201527f496e73756666696369656e742062616c616e636520746f206469737472696275604482015261746560f01b60648201526084016107d5565b60005b83811015610c23578160116000878785818110610bc757610bc7611bfd565b9050602002016020810190610bdc9190611969565b6001600160a01b03166001600160a01b031681526020019081526020016000206000828254610c0b9190611a96565b90915550819050610c1b81611c13565b915050610ba8565b507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031663d0e30db0476040518263ffffffff1660e01b81526004016000604051808303818588803b158015610c7f57600080fd5b505af1158015610c93573d6000803e3d6000fd5b5050505050600060105483610ca89190611acc565b30600090815260116020526040902054610cc29190611a83565b6001600160a01b037f0000000000000000000000005b431e0f7fe1a38b040712bf5d47922a50f43ebd16600090815260116020526040812080549293508392909190610d0f908490611a96565b9091555050306000818152601160205260408082208290556010547f0000000000000000000000005b431e0f7fe1a38b040712bf5d47922a50f43ebd6001600160a01b031680845291909220549092917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91610d8b9190611af9565b60405190815260200160405180910390a36040516370a0823160e01b81523060048201527f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03169063a9059cbb907f0000000000000000000000005b431e0f7fe1a38b040712bf5d47922a50f43ebd9083906370a0823190602401602060405180830381865afa158015610e2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4e9190611c2c565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610e99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebd9190611c45565b507f0000000000000000000000005b431e0f7fe1a38b040712bf5d47922a50f43ebd6001600160a01b0316636a627842610f056002546001600160a01b036101009091041690565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024016020604051808303816000875af1158015610f4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6f9190611c2c565b50600e805461ff001916610100179055600554610f8c9042611a96565b600655600c54610f9c9042611a96565b600d555050505050565b60606001805461065a90611a33565b3360009081526012602090815260408083206001600160a01b0386168452909152812054808310611009573360009081526012602090815260408083206001600160a01b0388168452909152812055611038565b6110138382611a83565b3360009081526012602090815260408083206001600160a01b03891684529091529020555b3360008181526012602090815260408083206001600160a01b0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b6000826001600160a01b0381166110b457600080fd5b6110bf338585611395565b5060019392505050565b60025461010090046001600160a01b031633146110f85760405162461bcd60e51b81526004016107d590611aa9565b60065442101561114a5760405162461bcd60e51b815260206004820181905260248201527f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e69736860448201526064016107d5565b600c546111579042611a96565b600d5560006111857f0000000000000000000000005b431e0f7fe1a38b040712bf5d47922a50f43ebd61097d565b90506000612710600a548361119a9190611acc565b6111a49190611af9565b905080156112b5576000601054826111bc9190611acc565b6001600160a01b037f0000000000000000000000005b431e0f7fe1a38b040712bf5d47922a50f43ebd16600090815260116020526040812080549293508392909190611209908490611a83565b909155505061dead600090815260116020527f97847ee99463795296047093514439c3127772df3715e628aa85601cf8541716805483929061124c908490611a96565b909155505060405182815261dead906001600160a01b037f0000000000000000000000005b431e0f7fe1a38b040712bf5d47922a50f43ebd16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505b60007f0000000000000000000000005b431e0f7fe1a38b040712bf5d47922a50f43ebd9050806001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561131557600080fd5b505af1158015611329573d6000803e3d6000fd5b50506040518492507f1685c550ad58388ebb3da9b30d9eec840c8645b16dc2005eee26e1c189eb2a829150600090a2505050565b60025461010090046001600160a01b0316331461138c5760405162461bcd60e51b81526004016107d590611aa9565b610956816117a4565b600e5460ff1615611506577f0000000000000000000000005b431e0f7fe1a38b040712bf5d47922a50f43ebd6001600160a01b0316836001600160a01b0316148061141157507f0000000000000000000000005b431e0f7fe1a38b040712bf5d47922a50f43ebd6001600160a01b0316826001600160a01b0316145b15611468576008548111156114685760405162461bcd60e51b815260206004820152601f60248201527f4d6178205472616e73616374696f6e20416d6f756e742045786365656465640060448201526064016107d5565b7f0000000000000000000000005b431e0f7fe1a38b040712bf5d47922a50f43ebd6001600160a01b0316826001600160a01b03161461150657600954816114ae8461097d565b6114b89190611a96565b11156115065760405162461bcd60e51b815260206004820152601a60248201527f4d61782057616c6c657420416d6f756e7420457863656564656400000000000060448201526064016107d5565b7f0000000000000000000000005b431e0f7fe1a38b040712bf5d47922a50f43ebd6001600160a01b0316826001600160a01b0316036115735760075460ff16801561155357506006544210155b1561156257611560611641565b505b60065442106115735761157361114a565b6000601054826115839190611acc565b6001600160a01b0385166000908152601160205260409020549091506115aa908290611a83565b6001600160a01b0380861660009081526011602052604080822093909355908516815220546115da908290611a96565b6001600160a01b03808516600081815260116020526040902092909255601054908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061162a9085611af9565b60405190815260200160405180910390a350505050565b6000804290506000600454600354600f5461165c9190611acc565b6116669190611af9565b90506005546006600082825461167c9190611a96565b909155505060008190036116d057817f5e5cbad37ad18afa5c7996238fadfdb52098750278bd00aac82ab54a4a49cb36600f546040516116be91815260200190565b60405180910390a2600f549250505090565b80600f546116de9190611a83565b600f556116ed6012600a611bf1565b6116f8906015611acc565b600f5410156117265761170d6012600a611bf1565b611718906015611acc565b600f556007805460ff191690555b600f546117356012600a611bf1565b611743906301406f40611acc565b61174f90600019611c67565b61175b90600019611a83565b6117659190611af9565b60105561177061181e565b817f5e5cbad37ad18afa5c7996238fadfdb52098750278bd00aac82ab54a4a49cb36600f546040516116be91815260200190565b6001600160a01b0381166117b757600080fd5b6002546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600280546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b60007f0000000000000000000000005b431e0f7fe1a38b040712bf5d47922a50f43ebd9050806001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561187e57600080fd5b505af1158015611892573d6000803e3d6000fd5b5050505050565b600060208083528351808285015260005b818110156118c6578581018301518582016040015282016118aa565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146118fe57600080fd5b919050565b6000806040838503121561191657600080fd5b61191f836118e7565b946020939093013593505050565b60008060006060848603121561194257600080fd5b61194b846118e7565b9250611959602085016118e7565b9150604084013590509250925092565b60006020828403121561197b57600080fd5b611984826118e7565b9392505050565b6000806020838503121561199e57600080fd5b823567ffffffffffffffff808211156119b657600080fd5b818501915085601f8301126119ca57600080fd5b8135818111156119d957600080fd5b8660208260051b85010111156119ee57600080fd5b60209290920196919550909350505050565b60008060408385031215611a1357600080fd5b611a1c836118e7565b9150611a2a602084016118e7565b90509250929050565b600181811c90821680611a4757607f821691505b602082108103611a6757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561074057610740611a6d565b8082018082111561074057610740611a6d565b6020808252600990820152682737ba1037bbb732b960b91b604082015260600190565b808202811582820484141761074057610740611a6d565b634e487b7160e01b600052601260045260246000fd5b600082611b0857611b08611ae3565b500490565b600181815b80851115611b48578160001904821115611b2e57611b2e611a6d565b80851615611b3b57918102915b93841c9390800290611b12565b509250929050565b600082611b5f57506001610740565b81611b6c57506000610740565b8160018114611b825760028114611b8c57611ba8565b6001915050610740565b60ff841115611b9d57611b9d611a6d565b50506001821b610740565b5060208310610133831016604e8410600b8410161715611bcb575081810a610740565b611bd58383611b0d565b8060001904821115611be957611be9611a6d565b029392505050565b60006119848383611b50565b634e487b7160e01b600052603260045260246000fd5b600060018201611c2557611c25611a6d565b5060010190565b600060208284031215611c3e57600080fd5b5051919050565b600060208284031215611c5757600080fd5b8151801515811461198457600080fd5b600082611c7657611c76611ae3565b50069056fea2646970667358221220f90f7e258f74fc0e76e452eaec74e94b99ddc3fb54f58f9738db819b7b274de764736f6c63430008130033
Deployed Bytecode Sourcemap
4563:9791:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3021:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7829:219;;;;;;;;;;-1:-1:-1;7829:219:0;;;;;:::i;:::-;;:::i;:::-;;;1169:14:1;;1162:22;1144:41;;1132:2;1117:18;7829:219:0;1004:187:1;7219:102:0;;;;;;;;;;-1:-1:-1;7301:12:0;;7219:102;;;1342:25:1;;;1330:2;1315:18;7219:102:0;1196:177:1;5012:41:0;;;;;;;;;;;;;;;;10383:111;;;;;;;;;;-1:-1:-1;10452:15:0;;10471;-1:-1:-1;10452:34:0;10383:111;;8056:404;;;;;;;;;;-1:-1:-1;8056:404:0;;;;;:::i;:::-;;:::i;3207:83::-;;;;;;;;;;-1:-1:-1;3273:9:0;;3207:83;;3273:9;;;;1853:36:1;;1841:2;1826:18;3207:83:0;1711:184:1;9908:301:0;;;;;;;;;;-1:-1:-1;9908:301:0;;;;;:::i;:::-;;:::i;5545:27::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2077:32:1;;;2059:51;;2047:2;2032:18;5545:27:0;1900:216:1;11339:147:0;;;;;;;;;;;;;:::i;:::-;;5664:33;;;;;;;;;;-1:-1:-1;5664:33:0;;;;;;;;10217:158;;;;;;;;;;;;;:::i;4615:47::-;;;;;;;;;;;;;;;;7485:131;;;;;;;;;;-1:-1:-1;7485:131:0;;;;;:::i;:::-;;:::i;4052:126::-;;;;;;;;;;;;;:::i;4669:52::-;;;;;;;;;;;;;;;;4781:30;;;;;;;;;;;;;;;;4928:37;;;;;;;;;;;;;;;;4818:34;;;;;;;;;;-1:-1:-1;4818:34:0;;;;;;;;13018:1331;;;;;;:::i;:::-;;:::i;3863:79::-;;;;;;;;;;-1:-1:-1;3928:6:0;;;;;-1:-1:-1;;;;;3928:6:0;3863:79;;3112:87;;;;;;;;;;;;;:::i;9419:481::-;;;;;;;;;;-1:-1:-1;9419:481:0;;;;;:::i;:::-;;:::i;4972:33::-;;;;;;;;;;-1:-1:-1;4972:33:0;;;;;;;;5622:29;;;;;;;;;;;;;;;7624:197;;;;;;;;;;-1:-1:-1;7624:197:0;;;;;:::i;:::-;;:::i;5704:27::-;;;;;;;;;;-1:-1:-1;5704:27:0;;;;;;;;;;;4730:44;;;;;;;;;;;;;;;;5060:26;;;;;;;;;;;;;;;;4861:27;;;;;;;;;;;;;;;;7329:148;;;;;;;;;;-1:-1:-1;7329:148:0;;;;;:::i;:::-;-1:-1:-1;;;;;7439:21:0;;;7413:7;7439:21;;;:13;:21;;;;;;;;:30;;;;;;;;;;;;;7329:148;12214:796;;;;;;;;;;;;;:::i;4186:109::-;;;;;;;;;;-1:-1:-1;4186:109:0;;;;;:::i;:::-;;:::i;5581:34::-;;;;;;;;;;;;;;;4895:24;;;;;;;;;;;;;;;;3021:83;3058:13;3091:5;3084:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3021:83;:::o;7829:219::-;7192:10;7903:4;7920:27;;;:13;:27;;;;;;;;-1:-1:-1;;;;;7920:36:0;;;;;;;;;;;:44;;;7980:38;;1342:25:1;;;7903:4:0;;7920:36;;7192:10;;7980:38;;1315:18:1;7980:38:0;;;;;;;;-1:-1:-1;8036:4:0;7829:219;;;;;:::o;8056:404::-;8180:4;8160:9;-1:-1:-1;;;;;6006:18:0;;5998:27;;;;;;-1:-1:-1;;;;;8215:21:0;::::1;;::::0;;;:13:::1;:21;::::0;;;;;;;7192:10;8215:35;;;;;;;;8205:45;::::1;;8197:91;;;::::0;-1:-1:-1;;;8197:91:0;;4218:2:1;8197:91:0::1;::::0;::::1;4200:21:1::0;4257:2;4237:18;;;4230:30;4296:34;4276:18;;;4269:62;-1:-1:-1;;;4347:18:1;;;4340:31;4388:19;;8197:91:0::1;;;;;;;;;-1:-1:-1::0;;;;;8337:21:0;::::1;;::::0;;;:13:::1;:21;::::0;;;;;;;7192:10;8337:35;;;;;;;;:42:::1;::::0;8373:6;;8337:42:::1;:::i;:::-;-1:-1:-1::0;;;;;8299:21:0;::::1;;::::0;;;:13:::1;:21;::::0;;;;;;;7192:10;8299:35;;;;;;;:80;8390:40:::1;8299:21:::0;8412:9;8423:6;8390:13:::1;:40::i;:::-;-1:-1:-1::0;8448:4:0::1;::::0;8056:404;-1:-1:-1;;;;8056:404:0:o;9908:301::-;7192:10;9990:4;10045:27;;;:13;:27;;;;;;;;-1:-1:-1;;;;;10045:36:0;;;;;;;;;;:49;;10084:10;;10045:49;:::i;:::-;7192:10;10006:27;;;;:13;:27;;;;;;;;-1:-1:-1;;;;;10006:36:0;;;;;;;;;;;;:88;;;10110:69;1342:25:1;;;10006:36:0;;10110:69;;1315:18:1;10110:69:0;1196:177:1;11339:147:0;4004:6;;;;;-1:-1:-1;;;;;4004:6:0;3990:10;:20;3982:42;;;;-1:-1:-1;;;3982:42:0;;;;;;;:::i;:::-;10452:15;;10471;-1:-1:-1;10452:34:0;11398:56:::1;;;::::0;-1:-1:-1;;;11398:56:0;;5352:2:1;11398:56:0::1;::::0;::::1;5334:21:1::0;5391:2;5371:18;;;5364:30;5430:31;5410:18;;;5403:59;5479:18;;11398:56:0::1;5150:353:1::0;11398:56:0::1;11465:13;:11;:13::i;:::-;;11339:147::o:0;10217:158::-;10283:7;10345:22;;10323:20;;10310:12;;:33;;;;:::i;:::-;10309:58;;;;:::i;:::-;10302:65;;10217:158;:::o;7485:131::-;7594:13;;-1:-1:-1;;;;;7574:18:0;;7547:7;7574:18;;;:13;:18;;;;;;7547:7;;7574:34;;;:::i;4052:126::-;4004:6;;;;;-1:-1:-1;;;;;4004:6:0;3990:10;:20;3982:42;;;;-1:-1:-1;;;3982:42:0;;;;;;;:::i;:::-;4133:6:::1;::::0;4114:26:::1;::::0;4133:6:::1;::::0;;::::1;-1:-1:-1::0;;;;;4133:6:0::1;::::0;4114:26:::1;::::0;;;::::1;4151:6;:19:::0;;-1:-1:-1;;;;;;4151:19:0::1;::::0;;4052:126::o;13018:1331::-;4004:6;;;;;-1:-1:-1;;;;;4004:6:0;3990:10;:20;3982:42;;;;-1:-1:-1;;;3982:42:0;;;;;;;:::i;:::-;13111:7:::1;::::0;::::1;::::0;::::1;;;13110:8;13102:37;;;::::0;-1:-1:-1;;;13102:37:0;;6140:2:1;13102:37:0::1;::::0;::::1;6122:21:1::0;6179:2;6159:18;;;6152:30;-1:-1:-1;;;6198:18:1;;;6191:46;6254:18;;13102:37:0::1;5938:340:1::0;13102:37:0::1;13182:1;13158:21;:25;:57;;;;;13214:1;13187:24;13205:4;13187:9;:24::i;:::-;:28;13158:57;13150:66;;;::::0;::::1;;13229:25;13299:4;5201:12;5131:2;5201;:12;:::i;:::-;5188:25;::::0;:10:::1;:25;:::i;:::-;13272:24;::::0;13295:1:::1;13272:24;:::i;:::-;:31;;;;:::i;:::-;13258:46;::::0;:3;:46:::1;:::i;:::-;13229:76;;13316:20;13373:13;;13366:4;5131:2;5201;:12;;;;:::i;:::-;5188:25;::::0;:10:::1;:25;:::i;:::-;13339:24;::::0;13362:1:::1;13339:24;:::i;:::-;:31;;;;:::i;:::-;:47;;;;:::i;:::-;13316:70;;13435:17;13407:24;13425:4;13407:9;:24::i;:::-;:45;;13399:92;;;::::0;-1:-1:-1;;;13399:92:0;;7859:2:1;13399:92:0::1;::::0;::::1;7841:21:1::0;7898:2;7878:18;;;7871:30;7937:34;7917:18;;;7910:62;-1:-1:-1;;;7988:18:1;;;7981:32;8030:19;;13399:92:0::1;7657:398:1::0;13399:92:0::1;13509:9;13504:107;13524:14:::0;;::::1;13504:107;;;13586:12;13560:13;:21;13574:3;;13578:1;13574:6;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13560:21:0::1;-1:-1:-1::0;;;;;13560:21:0::1;;;;;;;;;;;;;:39;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;13540:3:0;;-1:-1:-1;13540:3:0::1;::::0;::::1;:::i;:::-;;;;13504:107;;;;13623:4;-1:-1:-1::0;;;;;13623:12:0::1;;13643:21;13623:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;13680:14;13750:13;;13730:17;:33;;;;:::i;:::-;13720:4;13698:28;::::0;;;:13:::1;:28;::::0;;;;;:66:::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;;;;;13790:4:0::1;13776:19;;::::0;;;:13:::1;:19;::::0;;;;:32;;13680:85;;-1:-1:-1;13680:85:0;;13776:19;;;:32:::1;::::0;13680:85;;13776:32:::1;:::i;:::-;::::0;;;-1:-1:-1;;13841:4:0::1;13850:1;13819:28:::0;;;:13:::1;:28;::::0;;;;;:32;;;13919:13:::1;::::0;13891:4:::1;-1:-1:-1::0;;;;;13867:66:0::1;13897:19:::0;;;;;;;;13867:66;;13841:4;13867:66:::1;::::0;13897:35:::1;::::0;13919:13;13897:35:::1;:::i;:::-;13867:66;::::0;1342:25:1;;;1330:2;1315:18;13867:66:0::1;;;;;;;13992:46;::::0;-1:-1:-1;;;13992:46:0;;14032:4:::1;13992:46;::::0;::::1;2059:51:1::0;13961:4:0::1;-1:-1:-1::0;;;;;13946:30:0::1;::::0;::::1;::::0;13985:4:::1;::::0;13946:30;;13992:31:::1;::::0;2032:18:1;;13992:46:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13946:93;::::0;-1:-1:-1;;;;;;13946:93:0::1;::::0;;;;;;-1:-1:-1;;;;;8713:32:1;;;13946:93:0::1;::::0;::::1;8695:51:1::0;8762:18;;;8755:34;8668:18;;13946:93:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14064:4;-1:-1:-1::0;;;;;14052:22:0::1;;14075:7;3928:6:::0;;-1:-1:-1;;;;;3928:6:0;;;;;;3863:79;14075:7:::1;14052:31;::::0;-1:-1:-1;;;;;;14052:31:0::1;::::0;;;;;;-1:-1:-1;;;;;2077:32:1;;;14052:31:0::1;::::0;::::1;2059:51:1::0;2032:18;;14052:31:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;14094:7:0::1;:14:::0;;-1:-1:-1;;14094:14:0::1;;;::::0;;14157:19:::1;::::0;14139:37:::1;::::0;:15:::1;:37;:::i;:::-;14121:15;:55:::0;14219:16:::1;::::0;14201:34:::1;::::0;:15:::1;:34;:::i;:::-;14187:11;:48:::0;-1:-1:-1;;;;;13018:1331:0:o;3112:87::-;3151:13;3184:7;3177:14;;;;;:::i;9419:481::-;7192:10;9506:4;9541:27;;;:13;:27;;;;;;;;-1:-1:-1;;;;;9541:36:0;;;;;;;;;;9592:27;;;9588:198;;7192:10;9675:1;9636:27;;;:13;:27;;;;;;;;-1:-1:-1;;;;;9636:36:0;;;;;;;;;:40;9588:198;;;9748:26;9759:15;9748:8;:26;:::i;:::-;7192:10;9709:27;;;;:13;:27;;;;;;;;-1:-1:-1;;;;;9709:36:0;;;;;;;;;:65;9588:198;7192:10;9833:27;;;;:13;:27;;;;;;;;-1:-1:-1;;;;;9801:69:0;;9833:36;;;;;;;;;;;9801:69;;1342:25:1;;;9801:69:0;;;;7192:10;9801:69;;;;;;;;;;;-1:-1:-1;9888:4:0;;9419:481;-1:-1:-1;;;9419:481:0:o;7624:197::-;7728:4;7708:9;-1:-1:-1;;;;;6006:18:0;;5998:27;;;;;;7745:46:::1;7192:10:::0;7773:9:::1;7784:6;7745:13;:46::i;:::-;-1:-1:-1::0;7809:4:0::1;::::0;7624:197;-1:-1:-1;;;7624:197:0:o;12214:796::-;4004:6;;;;;-1:-1:-1;;;;;4004:6:0;3990:10;:20;3982:42;;;;-1:-1:-1;;;3982:42:0;;;;;;;:::i;:::-;10452:15;;10471;-1:-1:-1;10452:34:0;12269:59:::1;;;::::0;-1:-1:-1;;;12269:59:0;;9284:2:1;12269:59:0::1;::::0;::::1;9266:21:1::0;;;9303:18;;;9296:30;9362:34;9342:18;;;9335:62;9414:18;;12269:59:0::1;9082:356:1::0;12269:59:0::1;12373:16;::::0;12355:34:::1;::::0;:15:::1;:34;:::i;:::-;12341:11;:48:::0;12402:28:::1;12433:15;12443:4;12433:9;:15::i;:::-;12402:46;;12461:26;12533:5;12513:17;;12490:20;:40;;;;:::i;:::-;:48;;;;:::i;:::-;12461:77:::0;-1:-1:-1;12555:22:0;;12551:324:::1;;12594:30;12648:13;;12627:18;:34;;;;:::i;:::-;-1:-1:-1::0;;;;;12690:4:0::1;12676:19;;::::0;;;:13:::1;:19;::::0;;;;:45;;12594:67;;-1:-1:-1;12594:67:0;;12676:19;;;:45:::1;::::0;12594:67;;12676:45:::1;:::i;:::-;::::0;;;-1:-1:-1;;12758:6:0::1;12736:30;::::0;;;:13:::1;:30;::::0;;:56;;12770:22;;12736:30;:56:::1;::::0;12770:22;;12736:56:::1;:::i;:::-;::::0;;;-1:-1:-1;;12812:51:0::1;::::0;1342:25:1;;;12835:6:0::1;::::0;-1:-1:-1;;;;;12821:4:0::1;12812:51;::::0;::::1;::::0;1330:2:1;1315:18;12812:51:0::1;;;;;;;12579:296;12551:324;12887:17;12919:4;12887:37;;12935:5;-1:-1:-1::0;;;;;12935:10:0::1;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;12963:39:0::1;::::0;12983:18;;-1:-1:-1;12963:39:0::1;::::0;-1:-1:-1;12963:39:0;;::::1;12258:752;;;12214:796::o:0;4186:109::-;4004:6;;;;;-1:-1:-1;;;;;4004:6:0;3990:10;:20;3982:42;;;;-1:-1:-1;;;3982:42:0;;;;;;;:::i;:::-;4259:28:::1;4278:8;4259:18;:28::i;8468:939::-:0;8565:14;;;;8562:337;;;8609:4;-1:-1:-1;;;;;8599:14:0;:6;-1:-1:-1;;;;;8599:14:0;;:35;;;;8630:4;-1:-1:-1;;;;;8617:17:0;:9;-1:-1:-1;;;;;8617:17:0;;8599:35;8595:141;;;8672:12;;8662:6;:22;;8654:66;;;;-1:-1:-1;;;8654:66:0;;9645:2:1;8654:66:0;;;9627:21:1;9684:2;9664:18;;;9657:30;9723:33;9703:18;;;9696:61;9774:18;;8654:66:0;9443:355:1;8654:66:0;8767:4;-1:-1:-1;;;;;8754:17:0;:9;-1:-1:-1;;;;;8754:17:0;;8750:138;;8832:9;;8822:6;8799:20;8809:9;8799;:20::i;:::-;:29;;;;:::i;:::-;:42;;8791:81;;;;-1:-1:-1;;;8791:81:0;;10005:2:1;8791:81:0;;;9987:21:1;10044:2;10024:18;;;10017:30;10083:28;10063:18;;;10056:56;10129:18;;8791:81:0;9803:350:1;8791:81:0;8927:4;-1:-1:-1;;;;;8914:17:0;:9;-1:-1:-1;;;;;8914:17:0;;8911:214;;8950:15;;;;:33;;;;-1:-1:-1;10452:15:0;;10471;-1:-1:-1;10452:34:0;8969:14;8947:85;;;9003:13;:11;:13::i;:::-;;8947:85;10452:15;;10471;-1:-1:-1;9046:68:0;;9085:13;:11;:13::i;:::-;9137:18;9166:13;;9158:6;:22;;;;:::i;:::-;-1:-1:-1;;;;;9217:21:0;;;;;;:13;:21;;;;;;9137:43;;-1:-1:-1;9217:34:0;;9137:43;;9217:34;:::i;:::-;-1:-1:-1;;;;;9193:21:0;;;;;;;:13;:21;;;;;;:58;;;;9289:24;;;;;;;:37;;9315:10;;9289:37;:::i;:::-;-1:-1:-1;;;;;9262:24:0;;;;;;;:13;:24;;;;;:64;;;;9384:13;;9344:55;;;;;;9372:26;;:10;:26;:::i;:::-;9344:55;;1342:25:1;;;1330:2;1315:18;9344:55:0;;;;;;;8551:856;8468:939;;;:::o;10616:715::-;10656:7;10676:12;10691:15;10676:30;;10719:19;10777:22;;10755:20;;10742:12;;:33;;;;:::i;:::-;10741:58;;;;:::i;:::-;10719:80;;10831:19;;10812:15;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;;10882:1:0;10867:16;;;10863:119;;10917:4;10905:31;10923:12;;10905:31;;;;1342:25:1;;1330:2;1315:18;;1196:177;10905:31:0;;;;;;;;10958:12;;10951:19;;;;10616:715;:::o;10863:119::-;11024:11;11009:12;;:26;;;;:::i;:::-;10994:12;:41;5371:12;5131:2;5371;:12;:::i;:::-;5366:17;;:2;:17;:::i;:::-;11052:12;;:25;11048:121;;;5371:12;5131:2;5371;:12;:::i;:::-;5366:17;;:2;:17;:::i;:::-;11094:12;:25;11134:15;:23;;-1:-1:-1;;11134:23:0;;;11048:121;11211:12;;5201;5131:2;5201;:12;:::i;:::-;5188:25;;:10;:25;:::i;:::-;5280:40;;-1:-1:-1;;5280:40:0;:::i;:::-;5259:62;;-1:-1:-1;;5259:62:0;:::i;:::-;11197:26;;;;:::i;:::-;11181:13;:42;11236:8;:6;:8::i;:::-;11274:4;11262:31;11280:12;;11262:31;;;;1342:25:1;;1330:2;1315:18;;1196:177;4303:187:0;-1:-1:-1;;;;;4377:22:0;;4369:31;;;;;;4437:6;;4416:38;;-1:-1:-1;;;;;4416:38:0;;;;4437:6;;;;;4416:38;;;;;4465:6;:17;;-1:-1:-1;;;;;4465:17:0;;;;;-1:-1:-1;;;;;;4465:17:0;;;;;;;;;4303:187::o;10502:106::-;10540:17;10572:4;10540:37;;10588:5;-1:-1:-1;;;;;10588:10:0;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10529:79;10502:106::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:173::-;635:20;;-1:-1:-1;;;;;684:31:1;;674:42;;664:70;;730:1;727;720:12;664:70;567:173;;;:::o;745:254::-;813:6;821;874:2;862:9;853:7;849:23;845:32;842:52;;;890:1;887;880:12;842:52;913:29;932:9;913:29;:::i;:::-;903:39;989:2;974:18;;;;961:32;;-1:-1:-1;;;745:254:1:o;1378:328::-;1455:6;1463;1471;1524:2;1512:9;1503:7;1499:23;1495:32;1492:52;;;1540:1;1537;1530:12;1492:52;1563:29;1582:9;1563:29;:::i;:::-;1553:39;;1611:38;1645:2;1634:9;1630:18;1611:38;:::i;:::-;1601:48;;1696:2;1685:9;1681:18;1668:32;1658:42;;1378:328;;;;;:::o;2121:186::-;2180:6;2233:2;2221:9;2212:7;2208:23;2204:32;2201:52;;;2249:1;2246;2239:12;2201:52;2272:29;2291:9;2272:29;:::i;:::-;2262:39;2121:186;-1:-1:-1;;;2121:186:1:o;2312:615::-;2398:6;2406;2459:2;2447:9;2438:7;2434:23;2430:32;2427:52;;;2475:1;2472;2465:12;2427:52;2515:9;2502:23;2544:18;2585:2;2577:6;2574:14;2571:34;;;2601:1;2598;2591:12;2571:34;2639:6;2628:9;2624:22;2614:32;;2684:7;2677:4;2673:2;2669:13;2665:27;2655:55;;2706:1;2703;2696:12;2655:55;2746:2;2733:16;2772:2;2764:6;2761:14;2758:34;;;2788:1;2785;2778:12;2758:34;2841:7;2836:2;2826:6;2823:1;2819:14;2815:2;2811:23;2807:32;2804:45;2801:65;;;2862:1;2859;2852:12;2801:65;2893:2;2885:11;;;;;2915:6;;-1:-1:-1;2312:615:1;;-1:-1:-1;;;;2312:615:1:o;3140:260::-;3208:6;3216;3269:2;3257:9;3248:7;3244:23;3240:32;3237:52;;;3285:1;3282;3275:12;3237:52;3308:29;3327:9;3308:29;:::i;:::-;3298:39;;3356:38;3390:2;3379:9;3375:18;3356:38;:::i;:::-;3346:48;;3140:260;;;;;:::o;3631:380::-;3710:1;3706:12;;;;3753;;;3774:61;;3828:4;3820:6;3816:17;3806:27;;3774:61;3881:2;3873:6;3870:14;3850:18;3847:38;3844:161;;3927:10;3922:3;3918:20;3915:1;3908:31;3962:4;3959:1;3952:15;3990:4;3987:1;3980:15;3844:161;;3631:380;;;:::o;4418:127::-;4479:10;4474:3;4470:20;4467:1;4460:31;4510:4;4507:1;4500:15;4534:4;4531:1;4524:15;4550:128;4617:9;;;4638:11;;;4635:37;;;4652:18;;:::i;4683:125::-;4748:9;;;4769:10;;;4766:36;;;4782:18;;:::i;4813:332::-;5015:2;4997:21;;;5054:1;5034:18;;;5027:29;-1:-1:-1;;;5087:2:1;5072:18;;5065:39;5136:2;5121:18;;4813:332::o;5508:168::-;5581:9;;;5612;;5629:15;;;5623:22;;5609:37;5599:71;;5650:18;;:::i;5681:127::-;5742:10;5737:3;5733:20;5730:1;5723:31;5773:4;5770:1;5763:15;5797:4;5794:1;5787:15;5813:120;5853:1;5879;5869:35;;5884:18;;:::i;:::-;-1:-1:-1;5918:9:1;;5813:120::o;6283:422::-;6372:1;6415:5;6372:1;6429:270;6450:7;6440:8;6437:21;6429:270;;;6509:4;6505:1;6501:6;6497:17;6491:4;6488:27;6485:53;;;6518:18;;:::i;:::-;6568:7;6558:8;6554:22;6551:55;;;6588:16;;;;6551:55;6667:22;;;;6627:15;;;;6429:270;;;6433:3;6283:422;;;;;:::o;6710:806::-;6759:5;6789:8;6779:80;;-1:-1:-1;6830:1:1;6844:5;;6779:80;6878:4;6868:76;;-1:-1:-1;6915:1:1;6929:5;;6868:76;6960:4;6978:1;6973:59;;;;7046:1;7041:130;;;;6953:218;;6973:59;7003:1;6994:10;;7017:5;;;7041:130;7078:3;7068:8;7065:17;7062:43;;;7085:18;;:::i;:::-;-1:-1:-1;;7141:1:1;7127:16;;7156:5;;6953:218;;7255:2;7245:8;7242:16;7236:3;7230:4;7227:13;7223:36;7217:2;7207:8;7204:16;7199:2;7193:4;7190:12;7186:35;7183:77;7180:159;;;-1:-1:-1;7292:19:1;;;7324:5;;7180:159;7371:34;7396:8;7390:4;7371:34;:::i;:::-;7441:6;7437:1;7433:6;7429:19;7420:7;7417:32;7414:58;;;7452:18;;:::i;:::-;7490:20;;6710:806;-1:-1:-1;;;6710:806:1:o;7521:131::-;7581:5;7610:36;7637:8;7631:4;7610:36;:::i;8060:127::-;8121:10;8116:3;8112:20;8109:1;8102:31;8152:4;8149:1;8142:15;8176:4;8173:1;8166:15;8192:135;8231:3;8252:17;;;8249:43;;8272:18;;:::i;:::-;-1:-1:-1;8319:1:1;8308:13;;8192:135::o;8332:184::-;8402:6;8455:2;8443:9;8434:7;8430:23;8426:32;8423:52;;;8471:1;8468;8461:12;8423:52;-1:-1:-1;8494:16:1;;8332:184;-1:-1:-1;8332:184:1:o;8800:277::-;8867:6;8920:2;8908:9;8899:7;8895:23;8891:32;8888:52;;;8936:1;8933;8926:12;8888:52;8968:9;8962:16;9021:5;9014:13;9007:21;9000:5;8997:32;8987:60;;9043:1;9040;9033:12;10158:112;10190:1;10216;10206:35;;10221:18;;:::i;:::-;-1:-1:-1;10255:9:1;;10158:112::o
Swarm Source
ipfs://f90f7e258f74fc0e76e452eaec74e94b99ddc3fb54f58f9738db819b7b274de7
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.
Add Token to MetaMask (Web3)