Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 35 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 15780302 | 1245 days ago | IN | 0 ETH | 0.00069559 | ||||
| Transfer | 15780294 | 1245 days ago | IN | 0 ETH | 0.00047962 | ||||
| Set Max Tx Amoun... | 15780293 | 1245 days ago | IN | 0 ETH | 0.00046071 | ||||
| Set Sell Taxes | 15780292 | 1245 days ago | IN | 0 ETH | 0.00056096 | ||||
| Set Max Tx Amoun... | 15780283 | 1245 days ago | IN | 0 ETH | 0.00053153 | ||||
| Approve | 15780272 | 1245 days ago | IN | 0 ETH | 0.00084604 | ||||
| Approve | 15780272 | 1245 days ago | IN | 0 ETH | 0.00084604 | ||||
| Approve | 15780272 | 1245 days ago | IN | 0 ETH | 0.00084604 | ||||
| Approve | 15780272 | 1245 days ago | IN | 0 ETH | 0.00084604 | ||||
| Approve | 15780272 | 1245 days ago | IN | 0 ETH | 0.00084604 | ||||
| Approve | 15780272 | 1245 days ago | IN | 0 ETH | 0.00084604 | ||||
| Approve | 15780272 | 1245 days ago | IN | 0 ETH | 0.00084604 | ||||
| Approve | 15780272 | 1245 days ago | IN | 0 ETH | 0.00084604 | ||||
| Approve | 15780272 | 1245 days ago | IN | 0 ETH | 0.00084604 | ||||
| Approve | 15780272 | 1245 days ago | IN | 0 ETH | 0.00084604 | ||||
| Approve | 15780272 | 1245 days ago | IN | 0 ETH | 0.00084604 | ||||
| Approve | 15780272 | 1245 days ago | IN | 0 ETH | 0.00084604 | ||||
| Approve | 15780272 | 1245 days ago | IN | 0 ETH | 0.00084604 | ||||
| Approve | 15780272 | 1245 days ago | IN | 0 ETH | 0.00084604 | ||||
| Approve | 15780272 | 1245 days ago | IN | 0 ETH | 0.00084604 | ||||
| Approve | 15780272 | 1245 days ago | IN | 0 ETH | 0.00098786 | ||||
| Approve | 15780272 | 1245 days ago | IN | 0 ETH | 0.00100931 | ||||
| Manage_blacklist | 15780235 | 1245 days ago | IN | 0 ETH | 0.00080816 | ||||
| Approve | 15780234 | 1245 days ago | IN | 0 ETH | 0.00083755 | ||||
| Approve | 15780233 | 1245 days ago | IN | 0 ETH | 0.00091842 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Add Liquidity ET... | 15780314 | 1245 days ago | 0.00000594 ETH | ||||
| Transfer | 15780314 | 1245 days ago | 0.00001782 ETH | ||||
| Transfer | 15780314 | 1245 days ago | 0.00002971 ETH | ||||
| Transfer | 15780314 | 1245 days ago | 0 ETH | ||||
| Transfer | 15780297 | 1245 days ago | 0.00004927 ETH | ||||
| Add Liquidity ET... | 15780297 | 1245 days ago | 0.00208953 ETH | ||||
| Transfer | 15780297 | 1245 days ago | 0.0062686 ETH | ||||
| Transfer | 15780297 | 1245 days ago | 0.01044768 ETH | ||||
| Transfer | 15780297 | 1245 days ago | 0.01875233 ETH | ||||
| Transfer | 15780297 | 1245 days ago | 0.00005348 ETH | ||||
| Add Liquidity ET... | 15780297 | 1245 days ago | 0.00219516 ETH | ||||
| Transfer | 15780297 | 1245 days ago | 0.0065855 ETH | ||||
| Transfer | 15780297 | 1245 days ago | 0.01097584 ETH | ||||
| Transfer | 15780297 | 1245 days ago | 0.01969755 ETH | ||||
| Transfer | 15780297 | 1245 days ago | 0.00005348 ETH | ||||
| Add Liquidity ET... | 15780297 | 1245 days ago | 0.00219516 ETH | ||||
| Transfer | 15780297 | 1245 days ago | 0.0065855 ETH | ||||
| Transfer | 15780297 | 1245 days ago | 0.01097584 ETH | ||||
| Transfer | 15780297 | 1245 days ago | 0.01969755 ETH | ||||
| Transfer | 15780297 | 1245 days ago | 0.00005348 ETH | ||||
| Add Liquidity ET... | 15780297 | 1245 days ago | 0.00219516 ETH | ||||
| Transfer | 15780297 | 1245 days ago | 0.0065855 ETH | ||||
| Transfer | 15780297 | 1245 days ago | 0.01097584 ETH | ||||
| Transfer | 15780297 | 1245 days ago | 0.01969755 ETH | ||||
| Transfer | 15780297 | 1245 days ago | 0.00005348 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
REDCARD
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2022-10-19
*/
/**
WEBSITE: https://fifa-red-card.com
TWITTER: https://twitter.com/fifa_red_card
TELEGRAM : https://t.me/FifaRedCard
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
abstract contract Context {
function _msgSender() internal view virtual returns (address payable) {
return payable(msg.sender);
}
function _msgData() internal view virtual returns (bytes memory) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
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;
}
}
library Address {
function isContract(address account) internal view returns (bool) {
// According to EIP-1052, 0x0 is the value returned for not-yet created accounts
// and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
// for accounts without code, i.e. `keccak256('')`
bytes32 codehash;
bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
// solhint-disable-next-line no-inline-assembly
assembly { codehash := extcodehash(account) }
return (codehash != accountHash && codehash != 0x0);
}
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
// solhint-disable-next-line avoid-low-level-calls, avoid-call-value
(bool success, ) = recipient.call{ value: amount }("");
require(success, "Address: unable to send value, recipient may have reverted");
}
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
return _functionCallWithValue(target, data, 0, errorMessage);
}
function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
return _functionCallWithValue(target, data, value, errorMessage);
}
function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
require(isContract(target), "Address: call to non-contract");
(bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
if (success) {
return returndata;
} else {
if (returndata.length > 0) {
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
contract Ownable is Context {
address private _owner;
address private _previousOwner;
uint256 private _lockTime;
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 waiveOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
function getUnlockTime() public view returns (uint256) {
return _lockTime;
}
function getTime() public view returns (uint256) {
return block.timestamp;
}
function lock(uint256 time) public virtual onlyOwner {
_previousOwner = _owner;
_owner = address(0);
_lockTime = block.timestamp + time;
emit OwnershipTransferred(_owner, address(0));
}
function unlock() public virtual {
require(_previousOwner == msg.sender, "You don't have permission to unlock");
require(block.timestamp > _lockTime , "Contract is locked until 7 days");
emit OwnershipTransferred(_owner, _previousOwner);
_owner = _previousOwner;
}
}
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 REDCARD is Context, IERC20, Ownable {
using SafeMath for uint256;
using Address for address;
string private _name = "FIFA RED CARD";
string private _symbol = "REDCARD";
uint8 private _decimals = 9;
address payable public marketingWalletAddress = payable(0x0B4675DecaB965bd9a26Eacd5cDaa18d8640Da3e);
address payable public teamWalletAddress = payable(0x0B4675DecaB965bd9a26Eacd5cDaa18d8640Da3e);
address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
mapping (address => uint256) _balances;
mapping (address => mapping (address => uint256)) private _allowances;
mapping (address => bool) public isExcludedFromFee;
mapping (address => bool) public isWalletLimitExempt;
mapping (address => bool) public isTxLimitExempt;
mapping (address => bool) public isMarketPair;
bool public blacklistMode = true;
mapping (address => bool) public isBlacklisted;
uint256 public _buyLiquidityFee = 0;
uint256 public _buyMarketingFee = 5;
uint256 public _buyTeamFee = 5;
uint256 public _sellLiquidityFee = 5;
uint256 public _sellMarketingFee = 10;
uint256 public _sellTeamFee = 10;
uint256 public _liquidityShare = 20;
uint256 public _marketingShare = 50;
uint256 public _teamShare = 30;
uint256 public _totalTaxIfBuying = 10;
uint256 public _totalTaxIfSelling = 25;
uint256 public _totalDistributionShares = 35;
uint256 private _totalSupply = 1000000 * 10**_decimals;
uint256 public _maxTxAmount = _totalSupply;
uint256 public _walletMax = _totalSupply * 2 / 100;
uint256 private minimumTokensBeforeSwap = _totalSupply * 5 / 1000;
IUniswapV2Router02 public uniswapV2Router;
address public uniswapPair;
bool inSwapAndLiquify;
bool public swapAndLiquifyEnabled = true;
bool public swapAndLiquifyByLimitOnly = false;
bool public checkWalletLimit = 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)] = _totalSupply;
isExcludedFromFee[owner()] = true;
isExcludedFromFee[address(this)] = true;
_totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee);
_totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee);
_totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare);
isWalletLimitExempt[owner()] = true;
isWalletLimitExempt[address(uniswapPair)] = true;
isWalletLimitExempt[address(this)] = true;
isTxLimitExempt[owner()] = true;
isTxLimitExempt[address(this)] = true;
isMarketPair[address(uniswapPair)] = true;
_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 minimumTokensBeforeSwapAmount() public view returns (uint256) {
return minimumTokensBeforeSwap;
}
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 setMarketPairStatus(address account, bool newValue) public onlyOwner {
isMarketPair[account] = newValue;
}
function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
isTxLimitExempt[holder] = exempt;
}
function setIsExcludedFromFee(address account, bool newValue) public onlyOwner {
isExcludedFromFee[account] = newValue;
}
function setBuyTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newTeamTax) external onlyOwner() {
_buyLiquidityFee = newLiquidityTax;
_buyMarketingFee = newMarketingTax;
_buyTeamFee = newTeamTax;
_totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyTeamFee);
}
function setSellTaxes(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newTeamTax) external onlyOwner() {
_sellLiquidityFee = newLiquidityTax;
_sellMarketingFee = newMarketingTax;
_sellTeamFee = newTeamTax;
_totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellTeamFee);
}
function setDistributionSettings(uint256 newLiquidityShare, uint256 newMarketingShare, uint256 newTeamShare) external onlyOwner() {
_liquidityShare = newLiquidityShare;
_marketingShare = newMarketingShare;
_teamShare = newTeamShare;
_totalDistributionShares = _liquidityShare.add(_marketingShare).add(_teamShare);
}
function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
_maxTxAmount = _totalSupply * maxTxAmount / 1000;
}
function enableDisableWalletLimit(bool newValue) external onlyOwner {
checkWalletLimit = newValue;
}
function setIsWalletLimitExempt(address holder, bool exempt) external onlyOwner {
isWalletLimitExempt[holder] = exempt;
}
function enable_blacklist(bool _status) public onlyOwner {
blacklistMode = _status;
}
function manage_blacklist(address[] calldata addresses, bool status) public onlyOwner {
for (uint256 i; i < addresses.length; ++i) {
isBlacklisted[addresses[i]] = status;
}
}
function setWalletLimit(uint256 newLimit) external onlyOwner {
_walletMax = _totalSupply * newLimit / 1000;
}
function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
minimumTokensBeforeSwap = _totalSupply * newLimit / 1000;
}
function setMarketingWalletAddress(address newAddress) external onlyOwner() {
marketingWalletAddress = payable(newAddress);
}
function setTeamWalletAddress(address newAddress) external onlyOwner() {
teamWalletAddress = 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));
}
function transferToAddressETH(address payable recipient, uint256 amount) private {
recipient.transfer(amount);
}
function changeRouterVersion(address newRouterAddress) public onlyOwner returns(address newPairAddress) {
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress);
newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH());
if(newPairAddress == address(0)) //Create If Doesnt exist
{
newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory())
.createPair(address(this), _uniswapV2Router.WETH());
}
uniswapPair = newPairAddress; //Set new pair address
uniswapV2Router = _uniswapV2Router; //Set new router address
isWalletLimitExempt[address(uniswapPair)] = true;
isMarketPair[address(uniswapPair)] = true;
}
//to recieve ETH from uniswapV2Router when swaping
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");
// Blacklist
if(blacklistMode){
require(!isBlacklisted[sender] && !isBlacklisted[recipient],"Blacklisted");
}
if(inSwapAndLiquify)
{
return _basicTransfer(sender, recipient, amount);
}
else
{
if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient]) {
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 : takeFee(sender, recipient, amount);
if(checkWalletLimit && !isWalletLimitExempt[recipient])
require(balanceOf(recipient).add(finalAmount) <= _walletMax);
_balances[recipient] = _balances[recipient].add(finalAmount);
emit Transfer(sender, recipient, finalAmount);
return true;
}
}
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 tokensForLP = tAmount.mul(_liquidityShare).div(_totalDistributionShares).div(2);
uint256 tokensForSwap = tAmount.sub(tokensForLP);
swapTokensForEth(tokensForSwap);
uint256 amountReceived = address(this).balance;
uint256 totalBNBFee = _totalDistributionShares.sub(_liquidityShare.div(2));
uint256 amountBNBLiquidity = amountReceived.mul(_liquidityShare).div(totalBNBFee).div(2);
uint256 amountBNBTeam = amountReceived.mul(_teamShare).div(totalBNBFee);
uint256 amountBNBMarketing = amountReceived.sub(amountBNBLiquidity).sub(amountBNBTeam);
if(amountBNBMarketing > 0)
transferToAddressETH(marketingWalletAddress, amountBNBMarketing);
if(amountBNBTeam > 0)
transferToAddressETH(teamWalletAddress, amountBNBTeam);
if(amountBNBLiquidity > 0 && tokensForLP > 0)
addLiquidity(tokensForLP, amountBNBLiquidity);
}
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
owner(),
block.timestamp
);
}
function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
uint256 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);
}
}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":"_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":"_buyTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingShare","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":"_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":"_sellTeamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_teamShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalDistributionShares","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":"blacklistMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","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":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enable_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","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":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwapAmount","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":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newTeamTax","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityShare","type":"uint256"},{"internalType":"uint256","name":"newMarketingShare","type":"uint256"},{"internalType":"uint256","name":"newTeamShare","type":"uint256"}],"name":"setDistributionSettings","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":"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":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newTeamTax","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":"address","name":"newAddress","type":"address"}],"name":"setTeamWalletAddress","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":"teamWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"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":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60e0604052600d60a08190526c11925190481491510810d05491609a1b60c09081526200003091600391906200064b565b506040805180820190915260078082526614915110d0549160ca1b602090920191825262000061916004916200064b565b5060058054740b4675decab965bd9a26eacd5cdaa18d8640da3e096001600160a81b0319909116178155600680546001600160a01b031916730b4675decab965bd9a26eacd5cdaa18d8640da3e1790556ddead000000000000000000000000608052600d805460ff191660011790556000600f5560108190556011819055601255600a601381905560148181556015556032601655601e6017556018819055601980556023601a5562000117906009906200079f565b6200012690620f42406200086b565b601b55601b54601c556064601b5460026200014291906200086b565b6200014e919062000735565b601d556103e8601b5460056200016591906200086b565b62000171919062000735565b601e556020805462ffffff60a81b19166201000160a81b1790553480156200019857600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200022d57600080fd5b505afa15801562000242573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002689190620006f1565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002b157600080fd5b505afa158015620002c6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ec9190620006f1565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200033557600080fd5b505af11580156200034a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003709190620006f1565b602080546001600160a01b039283166001600160a01b0319918216178255601f8054858516921682179055601b54306000818152600885526040808220948252938552838120929092558154909416815260098352818120805460ff199081166001908117909255948252919020805490931617909155601154601054600f546200041e936200040a929062001a38620005dc821b17901c565b620005dc60201b62001a381790919060201c565b601881905550620004496014546200040a601354601254620005dc60201b62001a381790919060201c565b601981905550620004746017546200040a601654601554620005dc60201b62001a381790919060201c565b601a556001600a6000620004906000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905583549091168152600a90925280822080548416600190811790915530835290822080549093168117909255600b90620004ff6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152600b845282812080548616600190811790915584549092168152600c909352908220805490931617909155601b54906007906200056a3390565b6001600160a01b03168152602081019190915260400160002055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601b54604051620005cd91815260200190565b60405180910390a350620008e0565b600080620005eb83856200071a565b905083811015620006425760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640160405180910390fd5b90505b92915050565b82805462000659906200088d565b90600052602060002090601f0160209004810192826200067d5760008555620006c8565b82601f106200069857805160ff1916838001178555620006c8565b82800160010185558215620006c8579182015b82811115620006c8578251825591602001919060010190620006ab565b50620006d6929150620006da565b5090565b5b80821115620006d65760008155600101620006db565b60006020828403121562000703578081fd5b81516001600160a01b038116811462000642578182fd5b60008219821115620007305762000730620008ca565b500190565b6000826200075157634e487b7160e01b81526012600452602481fd5b500490565b600181815b80851115620007975781600019048211156200077b576200077b620008ca565b808516156200078957918102915b93841c93908002906200075b565b509250929050565b6000620007b060ff841683620007b7565b9392505050565b600082620007c85750600162000645565b81620007d75750600062000645565b8160018114620007f05760028114620007fb576200081b565b600191505062000645565b60ff8411156200080f576200080f620008ca565b50506001821b62000645565b5060208310610133831016604e8410600b841016171562000840575081810a62000645565b6200084c838362000756565b8060001904821115620008635762000863620008ca565b029392505050565b6000816000190483118215151615620008885762000888620008ca565b500290565b600181811c90821680620008a257607f821691505b60208210811415620008c457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60805160601c612c6a620009066000396000818161056f0152610e840152612c6a6000f3fe6080604052600436106103dd5760003560e01c80638b42507f116101fd578063c816841b11610118578063dd62ed3e116100ab578063f1d5f5171161007a578063f1d5f51714610b73578063f2fde38b14610b93578063f84ba65d14610bb3578063f872858a14610bd3578063fe575a8714610bf457600080fd5b8063dd62ed3e14610ad7578063ec28438a14610b1d578063ef422a1814610b3d578063f0cd1dac14610b5d57600080fd5b8063d158272d116100e7578063d158272d14610a5b578063da00097d14610a80578063dc44b6a014610aa1578063dd46706414610ab757600080fd5b8063c816841b146109df578063c8607952146109ff578063c867d60b14610a15578063cab0347114610a4557600080fd5b8063a5d69d1f11610190578063c2d4640e1161015f578063c2d4640e14610973578063c469b6dd14610993578063c49b9a80146109a9578063c5d24189146109c957600080fd5b8063a5d69d1f14610908578063a69df4b514610928578063a83f53a71461093d578063a9059cbb1461095357600080fd5b806395d89b41116101cc57806395d89b41146108a8578063a073d37f146108bd578063a08e671f146108d2578063a457c2d7146108e857600080fd5b80638b42507f146108255780638da5cb5b146108555780638e2eee8414610873578063914eb66a1461089357600080fd5b80633ecad271116102f8578063602bc62b1161028b578063807c2d9c1161025a578063807c2d9c146107a957806382eefb43146107bf578063844d591c146107d557806388790a68146107f5578063896648c11461080b57600080fd5b8063602bc62b1461073257806361a23c691461074757806370a082311461075d5780637d1db4a51461079357600080fd5b8063557ed1ba116102c7578063557ed1ba146106c957806357a5802f146106dc5780635881f3ef146106f25780635e562f3b1461071257600080fd5b80633ecad271146106285780634a74bb02146106585780634cb80fd5146106795780635342acb41461069957600080fd5b806323b872dd116103705780632c4b23341161033f5780632c4b2334146105a6578063313ce567146105c657806339509351146105e85780633b97084a1461060857600080fd5b806323b872dd1461051d5780632563ae831461053d57806327c8f8351461055d5780632b112e491461059157600080fd5b80631694505e116103ac5780631694505e1461049e57806318160ddd146104be5780631870517a146104dd5780632198cf6c146104fd57600080fd5b806306fdde03146103e95780630873321414610414578063095ea7b3146104365780631245e3471461046657600080fd5b366103e457005b600080fd5b3480156103f557600080fd5b506103fe610c24565b60405161040b91906129f0565b60405180910390f35b34801561042057600080fd5b5061043461042f366004612955565b610cb6565b005b34801561044257600080fd5b50610456610451366004612879565b610d14565b604051901515815260200161040b565b34801561047257600080fd5b50600654610486906001600160a01b031681565b6040516001600160a01b03909116815260200161040b565b3480156104aa57600080fd5b50601f54610486906001600160a01b031681565b3480156104ca57600080fd5b50601b545b60405190815260200161040b565b3480156104e957600080fd5b506104346104f8366004612955565b610d2b565b34801561050957600080fd5b50610434610518366004612845565b610d7a565b34801561052957600080fd5b50610456610538366004612805565b610dcf565b34801561054957600080fd5b50610434610558366004612923565b610e3a565b34801561056957600080fd5b506104867f000000000000000000000000000000000000000000000000000000000000000081565b34801561059d57600080fd5b506104cf610e82565b3480156105b257600080fd5b506104346105c1366004612795565b610ecc565b3480156105d257600080fd5b5060055460405160ff909116815260200161040b565b3480156105f457600080fd5b50610456610603366004612879565b610f18565b34801561061457600080fd5b5061043461062336600461293d565b610f4e565b34801561063457600080fd5b50610456610643366004612795565b600c6020526000908152604090205460ff1681565b34801561066457600080fd5b5060205461045690600160a81b900460ff1681565b34801561068557600080fd5b50610434610694366004612795565b610f99565b3480156106a557600080fd5b506104566106b4366004612795565b60096020526000908152604090205460ff1681565b3480156106d557600080fd5b50426104cf565b3480156106e857600080fd5b506104cf60155481565b3480156106fe57600080fd5b5061048661070d366004612795565b610feb565b34801561071e57600080fd5b5061043461072d366004612923565b611378565b34801561073e57600080fd5b506002546104cf565b34801561075357600080fd5b506104cf60165481565b34801561076957600080fd5b506104cf610778366004612795565b6001600160a01b031660009081526007602052604090205490565b34801561079f57600080fd5b506104cf601c5481565b3480156107b557600080fd5b506104cf601d5481565b3480156107cb57600080fd5b506104cf60195481565b3480156107e157600080fd5b506104346107f0366004612845565b6113b5565b34801561080157600080fd5b506104cf60125481565b34801561081757600080fd5b50600d546104569060ff1681565b34801561083157600080fd5b50610456610840366004612795565b600b6020526000908152604090205460ff1681565b34801561086157600080fd5b506000546001600160a01b0316610486565b34801561087f57600080fd5b5061043461088e3660046128a4565b61140a565b34801561089f57600080fd5b506104346114b7565b3480156108b457600080fd5b506103fe611519565b3480156108c957600080fd5b50601e546104cf565b3480156108de57600080fd5b506104cf601a5481565b3480156108f457600080fd5b50610456610903366004612879565b611528565b34801561091457600080fd5b50610434610923366004612923565b611577565b34801561093457600080fd5b506104346115bf565b34801561094957600080fd5b506104cf60175481565b34801561095f57600080fd5b5061045661096e366004612879565b6116c5565b34801561097f57600080fd5b5061043461098e366004612955565b6116d2565b34801561099f57600080fd5b506104cf60115481565b3480156109b557600080fd5b506104346109c4366004612923565b611721565b3480156109d557600080fd5b506104cf60105481565b3480156109eb57600080fd5b50602054610486906001600160a01b031681565b348015610a0b57600080fd5b506104cf60135481565b348015610a2157600080fd5b50610456610a30366004612795565b600a6020526000908152604090205460ff1681565b348015610a5157600080fd5b506104cf60145481565b348015610a6757600080fd5b506005546104869061010090046001600160a01b031681565b348015610a8c57600080fd5b5060205461045690600160b01b900460ff1681565b348015610aad57600080fd5b506104cf600f5481565b348015610ac357600080fd5b50610434610ad236600461293d565b61179b565b348015610ae357600080fd5b506104cf610af23660046127cd565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b348015610b2957600080fd5b50610434610b3836600461293d565b611820565b348015610b4957600080fd5b50610434610b58366004612845565b61186b565b348015610b6957600080fd5b506104cf60185481565b348015610b7f57600080fd5b50610434610b8e36600461293d565b6118c0565b348015610b9f57600080fd5b50610434610bae366004612795565b61190b565b348015610bbf57600080fd5b50610434610bce366004612845565b6119e3565b348015610bdf57600080fd5b5060205461045690600160b81b900460ff1681565b348015610c0057600080fd5b50610456610c0f366004612795565b600e6020526000908152604090205460ff1681565b606060038054610c3390612b43565b80601f0160208091040260200160405190810160405280929190818152602001828054610c5f90612b43565b8015610cac5780601f10610c8157610100808354040283529160200191610cac565b820191906000526020600020905b815481529060010190602001808311610c8f57829003601f168201915b5050505050905090565b6000546001600160a01b03163314610ce95760405162461bcd60e51b8152600401610ce090612a43565b60405180910390fd5b601283905560138290556014819055610d0c81610d068585611a38565b90611a38565b601955505050565b6000610d21338484611a97565b5060015b92915050565b6000546001600160a01b03163314610d555760405162461bcd60e51b8152600401610ce090612a43565b600f83905560108290556011819055610d7281610d068585611a38565b601855505050565b6000546001600160a01b03163314610da45760405162461bcd60e51b8152600401610ce090612a43565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000610ddc848484611bbb565b50610e2f8433610e2a85604051806060016040528060288152602001612bc8602891396001600160a01b038a1660009081526008602090815260408083203384529091529020549190612011565b611a97565b5060015b9392505050565b6000546001600160a01b03163314610e645760405162461bcd60e51b8152600401610ce090612a43565b60208054911515600160b81b0260ff60b81b19909216919091179055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316600090815260076020526040812054601b54610ec79161204b565b905090565b6000546001600160a01b03163314610ef65760405162461bcd60e51b8152600401610ce090612a43565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526008602090815260408083206001600160a01b03871684529091528120549091610d21918590610e2a9086611a38565b6000546001600160a01b03163314610f785760405162461bcd60e51b8152600401610ce090612a43565b6103e881601b54610f899190612b0d565b610f939190612aed565b601e5550565b6000546001600160a01b03163314610fc35760405162461bcd60e51b8152600401610ce090612a43565b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600080546001600160a01b031633146110165760405162461bcd60e51b8152600401610ce090612a43565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561105457600080fd5b505afa158015611068573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108c91906127b1565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156110d457600080fd5b505afa1580156110e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110c91906127b1565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561115257600080fd5b505afa158015611166573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118a91906127b1565b91506001600160a01b03821661130e57806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156111d357600080fd5b505afa1580156111e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120b91906127b1565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561125357600080fd5b505afa158015611267573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128b91906127b1565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156112d357600080fd5b505af11580156112e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130b91906127b1565b91505b602080546001600160a01b03199081166001600160a01b038581169182178455601f8054909316948116949094179091556000908152600a82526040808220805460ff19908116600190811790925584549095168352600c90935290208054909216179055919050565b6000546001600160a01b031633146113a25760405162461bcd60e51b8152600401610ce090612a43565b600d805460ff1916911515919091179055565b6000546001600160a01b031633146113df5760405162461bcd60e51b8152600401610ce090612a43565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146114345760405162461bcd60e51b8152600401610ce090612a43565b60005b828110156114b15781600e600086868581811061146457634e487b7160e01b600052603260045260246000fd5b90506020020160208101906114799190612795565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556114aa81612b7e565b9050611437565b50505050565b6000546001600160a01b031633146114e15760405162461bcd60e51b8152600401610ce090612a43565b600080546040516001600160a01b0390911690600080516020612bf0833981519152908390a3600080546001600160a01b0319169055565b606060048054610c3390612b43565b6000610d213384610e2a85604051806060016040528060258152602001612c10602591393360009081526008602090815260408083206001600160a01b038d1684529091529020549190612011565b6000546001600160a01b031633146115a15760405162461bcd60e51b8152600401610ce090612a43565b60208054911515600160b01b0260ff60b01b19909216919091179055565b6001546001600160a01b031633146116255760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610ce0565b60025442116116765760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006044820152606401610ce0565b600154600080546040516001600160a01b039384169390911691600080516020612bf083398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610e2f338484611bbb565b6000546001600160a01b031633146116fc5760405162461bcd60e51b8152600401610ce090612a43565b60158390556016829055601781905561171981610d068585611a38565b601a55505050565b6000546001600160a01b0316331461174b5760405162461bcd60e51b8152600401610ce090612a43565b6020805460ff60a81b1916600160a81b8315159081029190911782556040519081527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159910160405180910390a150565b6000546001600160a01b031633146117c55760405162461bcd60e51b8152600401610ce090612a43565b60008054600180546001600160a01b03199081166001600160a01b038416179091551690556117f48142612ad5565b600255600080546040516001600160a01b0390911690600080516020612bf0833981519152908390a350565b6000546001600160a01b0316331461184a5760405162461bcd60e51b8152600401610ce090612a43565b6103e881601b5461185b9190612b0d565b6118659190612aed565b601c5550565b6000546001600160a01b031633146118955760405162461bcd60e51b8152600401610ce090612a43565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146118ea5760405162461bcd60e51b8152600401610ce090612a43565b6103e881601b546118fb9190612b0d565b6119059190612aed565b601d5550565b6000546001600160a01b031633146119355760405162461bcd60e51b8152600401610ce090612a43565b6001600160a01b03811661199a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ce0565b600080546040516001600160a01b0380851693921691600080516020612bf083398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611a0d5760405162461bcd60e51b8152600401610ce090612a43565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b600080611a458385612ad5565b905083811015610e335760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610ce0565b6001600160a01b038316611af95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ce0565b6001600160a01b038216611b5a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ce0565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611c215760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ce0565b6001600160a01b038316611c835760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ce0565b600d5460ff1615611d0a576001600160a01b0384166000908152600e602052604090205460ff16158015611cd057506001600160a01b0383166000908152600e602052604090205460ff16155b611d0a5760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610ce0565b602054600160a01b900460ff1615611d2e57611d2784848461208d565b9050610e33565b6001600160a01b0384166000908152600b602052604090205460ff16158015611d7057506001600160a01b0383166000908152600b602052604090205460ff16155b15611dd857601c54821115611dd85760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610ce0565b30600090815260076020526040902054601e5481108015908190611e065750602054600160a01b900460ff16155b8015611e2b57506001600160a01b0386166000908152600c602052604090205460ff16155b8015611e405750602054600160a81b900460ff165b15611e6657602054600160b01b900460ff1615611e5d57601e5491505b611e6682612173565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038916600090815260079091529190912054611eb8918690612011565b6001600160a01b038716600090815260076020908152604080832093909355600990529081205460ff1680611f0557506001600160a01b03861660009081526009602052604090205460ff165b611f1957611f148787876122ae565b611f1b565b845b602054909150600160b81b900460ff168015611f5057506001600160a01b0386166000908152600a602052604090205460ff16155b15611f8657601d54611f7b82610d06896001600160a01b031660009081526007602052604090205490565b1115611f8657600080fd5b6001600160a01b038616600090815260076020526040902054611fa99082611a38565b6001600160a01b0380881660008181526007602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611ffd9085815260200190565b60405180910390a360019350505050610e33565b600081848411156120355760405162461bcd60e51b8152600401610ce091906129f0565b5060006120428486612b2c565b95945050505050565b6000610e3383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612011565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526007909152918220546120de918490612011565b6001600160a01b03808616600090815260076020526040808220939093559085168152205461210d9083611a38565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906121619086815260200190565b60405180910390a35060019392505050565b6020805460ff60a01b1916600160a01b179055601a546015546000916121a9916002916121a391829087906123b4565b90612433565b905060006121b7838361204b565b90506121c281612475565b60155447906000906121e2906121d9906002612433565b601a549061204b565b9050600061220460026121a3846121a3601554886123b490919063ffffffff16565b90506000612221836121a3601754876123b490919063ffffffff16565b9050600061223982612233878661204b565b9061204b565b9050801561225c5760055461225c9061010090046001600160a01b031682612633565b811561227857600654612278906001600160a01b031683612633565b6000831180156122885750600087115b1561229757612297878461266e565b50506020805460ff60a01b19169055505050505050565b6001600160a01b0383166000908152600c6020526040812054819060ff16156122f2576122eb60646121a3601854866123b490919063ffffffff16565b9050612330565b6001600160a01b0384166000908152600c602052604090205460ff16156123305761232d60646121a3601954866123b490919063ffffffff16565b90505b80156123aa57306000908152600760205260409020546123509082611a38565b30600081815260076020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906123a19085815260200190565b60405180910390a35b612042838261204b565b6000826123c357506000610d25565b60006123cf8385612b0d565b9050826123dc8583612aed565b14610e335760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610ce0565b6000610e3383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612752565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106124b857634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601f54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561250c57600080fd5b505afa158015612520573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061254491906127b1565b8160018151811061256557634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601f5461258b9130911684611a97565b601f5460405163791ac94760e01b81526001600160a01b039091169063791ac947906125c4908590600090869030904290600401612a99565b600060405180830381600087803b1580156125de57600080fd5b505af11580156125f2573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612627929190612a78565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015612669573d6000803e3d6000fd5b505050565b601f546126869030906001600160a01b031684611a97565b601f546001600160a01b031663f305d7198230856000806126af6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561271257600080fd5b505af1158015612726573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061274b9190612980565b5050505050565b600081836127735760405162461bcd60e51b8152600401610ce091906129f0565b5060006120428486612aed565b8035801515811461279057600080fd5b919050565b6000602082840312156127a6578081fd5b8135610e3381612baf565b6000602082840312156127c2578081fd5b8151610e3381612baf565b600080604083850312156127df578081fd5b82356127ea81612baf565b915060208301356127fa81612baf565b809150509250929050565b600080600060608486031215612819578081fd5b833561282481612baf565b9250602084013561283481612baf565b929592945050506040919091013590565b60008060408385031215612857578182fd5b823561286281612baf565b915061287060208401612780565b90509250929050565b6000806040838503121561288b578182fd5b823561289681612baf565b946020939093013593505050565b6000806000604084860312156128b8578283fd5b833567ffffffffffffffff808211156128cf578485fd5b818601915086601f8301126128e2578485fd5b8135818111156128f0578586fd5b8760208260051b8501011115612904578586fd5b60209283019550935061291a9186019050612780565b90509250925092565b600060208284031215612934578081fd5b610e3382612780565b60006020828403121561294e578081fd5b5035919050565b600080600060608486031215612969578283fd5b505081359360208301359350604090920135919050565b600080600060608486031215612994578283fd5b8351925060208401519150604084015190509250925092565b6000815180845260208085019450808401835b838110156129e55781516001600160a01b0316875295820195908201906001016129c0565b509495945050505050565b6000602080835283518082850152825b81811015612a1c57858101830151858201604001528201612a00565b81811115612a2d5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b828152604060208201526000612a9160408301846129ad565b949350505050565b85815284602082015260a060408201526000612ab860a08301866129ad565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115612ae857612ae8612b99565b500190565b600082612b0857634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615612b2757612b27612b99565b500290565b600082821015612b3e57612b3e612b99565b500390565b600181811c90821680612b5757607f821691505b60208210811415612b7857634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612b9257612b92612b99565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114612bc457600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220cb00e22418634cc4e7ee4bb91a534e6eb3b919874d5a7fb6cb8431f0410a1b3d64736f6c63430008040033
Deployed Bytecode
0x6080604052600436106103dd5760003560e01c80638b42507f116101fd578063c816841b11610118578063dd62ed3e116100ab578063f1d5f5171161007a578063f1d5f51714610b73578063f2fde38b14610b93578063f84ba65d14610bb3578063f872858a14610bd3578063fe575a8714610bf457600080fd5b8063dd62ed3e14610ad7578063ec28438a14610b1d578063ef422a1814610b3d578063f0cd1dac14610b5d57600080fd5b8063d158272d116100e7578063d158272d14610a5b578063da00097d14610a80578063dc44b6a014610aa1578063dd46706414610ab757600080fd5b8063c816841b146109df578063c8607952146109ff578063c867d60b14610a15578063cab0347114610a4557600080fd5b8063a5d69d1f11610190578063c2d4640e1161015f578063c2d4640e14610973578063c469b6dd14610993578063c49b9a80146109a9578063c5d24189146109c957600080fd5b8063a5d69d1f14610908578063a69df4b514610928578063a83f53a71461093d578063a9059cbb1461095357600080fd5b806395d89b41116101cc57806395d89b41146108a8578063a073d37f146108bd578063a08e671f146108d2578063a457c2d7146108e857600080fd5b80638b42507f146108255780638da5cb5b146108555780638e2eee8414610873578063914eb66a1461089357600080fd5b80633ecad271116102f8578063602bc62b1161028b578063807c2d9c1161025a578063807c2d9c146107a957806382eefb43146107bf578063844d591c146107d557806388790a68146107f5578063896648c11461080b57600080fd5b8063602bc62b1461073257806361a23c691461074757806370a082311461075d5780637d1db4a51461079357600080fd5b8063557ed1ba116102c7578063557ed1ba146106c957806357a5802f146106dc5780635881f3ef146106f25780635e562f3b1461071257600080fd5b80633ecad271146106285780634a74bb02146106585780634cb80fd5146106795780635342acb41461069957600080fd5b806323b872dd116103705780632c4b23341161033f5780632c4b2334146105a6578063313ce567146105c657806339509351146105e85780633b97084a1461060857600080fd5b806323b872dd1461051d5780632563ae831461053d57806327c8f8351461055d5780632b112e491461059157600080fd5b80631694505e116103ac5780631694505e1461049e57806318160ddd146104be5780631870517a146104dd5780632198cf6c146104fd57600080fd5b806306fdde03146103e95780630873321414610414578063095ea7b3146104365780631245e3471461046657600080fd5b366103e457005b600080fd5b3480156103f557600080fd5b506103fe610c24565b60405161040b91906129f0565b60405180910390f35b34801561042057600080fd5b5061043461042f366004612955565b610cb6565b005b34801561044257600080fd5b50610456610451366004612879565b610d14565b604051901515815260200161040b565b34801561047257600080fd5b50600654610486906001600160a01b031681565b6040516001600160a01b03909116815260200161040b565b3480156104aa57600080fd5b50601f54610486906001600160a01b031681565b3480156104ca57600080fd5b50601b545b60405190815260200161040b565b3480156104e957600080fd5b506104346104f8366004612955565b610d2b565b34801561050957600080fd5b50610434610518366004612845565b610d7a565b34801561052957600080fd5b50610456610538366004612805565b610dcf565b34801561054957600080fd5b50610434610558366004612923565b610e3a565b34801561056957600080fd5b506104867f000000000000000000000000000000000000000000000000000000000000dead81565b34801561059d57600080fd5b506104cf610e82565b3480156105b257600080fd5b506104346105c1366004612795565b610ecc565b3480156105d257600080fd5b5060055460405160ff909116815260200161040b565b3480156105f457600080fd5b50610456610603366004612879565b610f18565b34801561061457600080fd5b5061043461062336600461293d565b610f4e565b34801561063457600080fd5b50610456610643366004612795565b600c6020526000908152604090205460ff1681565b34801561066457600080fd5b5060205461045690600160a81b900460ff1681565b34801561068557600080fd5b50610434610694366004612795565b610f99565b3480156106a557600080fd5b506104566106b4366004612795565b60096020526000908152604090205460ff1681565b3480156106d557600080fd5b50426104cf565b3480156106e857600080fd5b506104cf60155481565b3480156106fe57600080fd5b5061048661070d366004612795565b610feb565b34801561071e57600080fd5b5061043461072d366004612923565b611378565b34801561073e57600080fd5b506002546104cf565b34801561075357600080fd5b506104cf60165481565b34801561076957600080fd5b506104cf610778366004612795565b6001600160a01b031660009081526007602052604090205490565b34801561079f57600080fd5b506104cf601c5481565b3480156107b557600080fd5b506104cf601d5481565b3480156107cb57600080fd5b506104cf60195481565b3480156107e157600080fd5b506104346107f0366004612845565b6113b5565b34801561080157600080fd5b506104cf60125481565b34801561081757600080fd5b50600d546104569060ff1681565b34801561083157600080fd5b50610456610840366004612795565b600b6020526000908152604090205460ff1681565b34801561086157600080fd5b506000546001600160a01b0316610486565b34801561087f57600080fd5b5061043461088e3660046128a4565b61140a565b34801561089f57600080fd5b506104346114b7565b3480156108b457600080fd5b506103fe611519565b3480156108c957600080fd5b50601e546104cf565b3480156108de57600080fd5b506104cf601a5481565b3480156108f457600080fd5b50610456610903366004612879565b611528565b34801561091457600080fd5b50610434610923366004612923565b611577565b34801561093457600080fd5b506104346115bf565b34801561094957600080fd5b506104cf60175481565b34801561095f57600080fd5b5061045661096e366004612879565b6116c5565b34801561097f57600080fd5b5061043461098e366004612955565b6116d2565b34801561099f57600080fd5b506104cf60115481565b3480156109b557600080fd5b506104346109c4366004612923565b611721565b3480156109d557600080fd5b506104cf60105481565b3480156109eb57600080fd5b50602054610486906001600160a01b031681565b348015610a0b57600080fd5b506104cf60135481565b348015610a2157600080fd5b50610456610a30366004612795565b600a6020526000908152604090205460ff1681565b348015610a5157600080fd5b506104cf60145481565b348015610a6757600080fd5b506005546104869061010090046001600160a01b031681565b348015610a8c57600080fd5b5060205461045690600160b01b900460ff1681565b348015610aad57600080fd5b506104cf600f5481565b348015610ac357600080fd5b50610434610ad236600461293d565b61179b565b348015610ae357600080fd5b506104cf610af23660046127cd565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b348015610b2957600080fd5b50610434610b3836600461293d565b611820565b348015610b4957600080fd5b50610434610b58366004612845565b61186b565b348015610b6957600080fd5b506104cf60185481565b348015610b7f57600080fd5b50610434610b8e36600461293d565b6118c0565b348015610b9f57600080fd5b50610434610bae366004612795565b61190b565b348015610bbf57600080fd5b50610434610bce366004612845565b6119e3565b348015610bdf57600080fd5b5060205461045690600160b81b900460ff1681565b348015610c0057600080fd5b50610456610c0f366004612795565b600e6020526000908152604090205460ff1681565b606060038054610c3390612b43565b80601f0160208091040260200160405190810160405280929190818152602001828054610c5f90612b43565b8015610cac5780601f10610c8157610100808354040283529160200191610cac565b820191906000526020600020905b815481529060010190602001808311610c8f57829003601f168201915b5050505050905090565b6000546001600160a01b03163314610ce95760405162461bcd60e51b8152600401610ce090612a43565b60405180910390fd5b601283905560138290556014819055610d0c81610d068585611a38565b90611a38565b601955505050565b6000610d21338484611a97565b5060015b92915050565b6000546001600160a01b03163314610d555760405162461bcd60e51b8152600401610ce090612a43565b600f83905560108290556011819055610d7281610d068585611a38565b601855505050565b6000546001600160a01b03163314610da45760405162461bcd60e51b8152600401610ce090612a43565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000610ddc848484611bbb565b50610e2f8433610e2a85604051806060016040528060288152602001612bc8602891396001600160a01b038a1660009081526008602090815260408083203384529091529020549190612011565b611a97565b5060015b9392505050565b6000546001600160a01b03163314610e645760405162461bcd60e51b8152600401610ce090612a43565b60208054911515600160b81b0260ff60b81b19909216919091179055565b7f000000000000000000000000000000000000000000000000000000000000dead6001600160a01b0316600090815260076020526040812054601b54610ec79161204b565b905090565b6000546001600160a01b03163314610ef65760405162461bcd60e51b8152600401610ce090612a43565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526008602090815260408083206001600160a01b03871684529091528120549091610d21918590610e2a9086611a38565b6000546001600160a01b03163314610f785760405162461bcd60e51b8152600401610ce090612a43565b6103e881601b54610f899190612b0d565b610f939190612aed565b601e5550565b6000546001600160a01b03163314610fc35760405162461bcd60e51b8152600401610ce090612a43565b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b600080546001600160a01b031633146110165760405162461bcd60e51b8152600401610ce090612a43565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561105457600080fd5b505afa158015611068573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108c91906127b1565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156110d457600080fd5b505afa1580156110e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110c91906127b1565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b15801561115257600080fd5b505afa158015611166573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118a91906127b1565b91506001600160a01b03821661130e57806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156111d357600080fd5b505afa1580156111e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120b91906127b1565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561125357600080fd5b505afa158015611267573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128b91906127b1565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156112d357600080fd5b505af11580156112e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130b91906127b1565b91505b602080546001600160a01b03199081166001600160a01b038581169182178455601f8054909316948116949094179091556000908152600a82526040808220805460ff19908116600190811790925584549095168352600c90935290208054909216179055919050565b6000546001600160a01b031633146113a25760405162461bcd60e51b8152600401610ce090612a43565b600d805460ff1916911515919091179055565b6000546001600160a01b031633146113df5760405162461bcd60e51b8152600401610ce090612a43565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146114345760405162461bcd60e51b8152600401610ce090612a43565b60005b828110156114b15781600e600086868581811061146457634e487b7160e01b600052603260045260246000fd5b90506020020160208101906114799190612795565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556114aa81612b7e565b9050611437565b50505050565b6000546001600160a01b031633146114e15760405162461bcd60e51b8152600401610ce090612a43565b600080546040516001600160a01b0390911690600080516020612bf0833981519152908390a3600080546001600160a01b0319169055565b606060048054610c3390612b43565b6000610d213384610e2a85604051806060016040528060258152602001612c10602591393360009081526008602090815260408083206001600160a01b038d1684529091529020549190612011565b6000546001600160a01b031633146115a15760405162461bcd60e51b8152600401610ce090612a43565b60208054911515600160b01b0260ff60b01b19909216919091179055565b6001546001600160a01b031633146116255760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610ce0565b60025442116116765760405162461bcd60e51b815260206004820152601f60248201527f436f6e7472616374206973206c6f636b656420756e74696c20372064617973006044820152606401610ce0565b600154600080546040516001600160a01b039384169390911691600080516020612bf083398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610e2f338484611bbb565b6000546001600160a01b031633146116fc5760405162461bcd60e51b8152600401610ce090612a43565b60158390556016829055601781905561171981610d068585611a38565b601a55505050565b6000546001600160a01b0316331461174b5760405162461bcd60e51b8152600401610ce090612a43565b6020805460ff60a81b1916600160a81b8315159081029190911782556040519081527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159910160405180910390a150565b6000546001600160a01b031633146117c55760405162461bcd60e51b8152600401610ce090612a43565b60008054600180546001600160a01b03199081166001600160a01b038416179091551690556117f48142612ad5565b600255600080546040516001600160a01b0390911690600080516020612bf0833981519152908390a350565b6000546001600160a01b0316331461184a5760405162461bcd60e51b8152600401610ce090612a43565b6103e881601b5461185b9190612b0d565b6118659190612aed565b601c5550565b6000546001600160a01b031633146118955760405162461bcd60e51b8152600401610ce090612a43565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146118ea5760405162461bcd60e51b8152600401610ce090612a43565b6103e881601b546118fb9190612b0d565b6119059190612aed565b601d5550565b6000546001600160a01b031633146119355760405162461bcd60e51b8152600401610ce090612a43565b6001600160a01b03811661199a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ce0565b600080546040516001600160a01b0380851693921691600080516020612bf083398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611a0d5760405162461bcd60e51b8152600401610ce090612a43565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b600080611a458385612ad5565b905083811015610e335760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610ce0565b6001600160a01b038316611af95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ce0565b6001600160a01b038216611b5a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ce0565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416611c215760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ce0565b6001600160a01b038316611c835760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ce0565b600d5460ff1615611d0a576001600160a01b0384166000908152600e602052604090205460ff16158015611cd057506001600160a01b0383166000908152600e602052604090205460ff16155b611d0a5760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610ce0565b602054600160a01b900460ff1615611d2e57611d2784848461208d565b9050610e33565b6001600160a01b0384166000908152600b602052604090205460ff16158015611d7057506001600160a01b0383166000908152600b602052604090205460ff16155b15611dd857601c54821115611dd85760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610ce0565b30600090815260076020526040902054601e5481108015908190611e065750602054600160a01b900460ff16155b8015611e2b57506001600160a01b0386166000908152600c602052604090205460ff16155b8015611e405750602054600160a81b900460ff165b15611e6657602054600160b01b900460ff1615611e5d57601e5491505b611e6682612173565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038916600090815260079091529190912054611eb8918690612011565b6001600160a01b038716600090815260076020908152604080832093909355600990529081205460ff1680611f0557506001600160a01b03861660009081526009602052604090205460ff165b611f1957611f148787876122ae565b611f1b565b845b602054909150600160b81b900460ff168015611f5057506001600160a01b0386166000908152600a602052604090205460ff16155b15611f8657601d54611f7b82610d06896001600160a01b031660009081526007602052604090205490565b1115611f8657600080fd5b6001600160a01b038616600090815260076020526040902054611fa99082611a38565b6001600160a01b0380881660008181526007602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611ffd9085815260200190565b60405180910390a360019350505050610e33565b600081848411156120355760405162461bcd60e51b8152600401610ce091906129f0565b5060006120428486612b2c565b95945050505050565b6000610e3383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612011565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526007909152918220546120de918490612011565b6001600160a01b03808616600090815260076020526040808220939093559085168152205461210d9083611a38565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906121619086815260200190565b60405180910390a35060019392505050565b6020805460ff60a01b1916600160a01b179055601a546015546000916121a9916002916121a391829087906123b4565b90612433565b905060006121b7838361204b565b90506121c281612475565b60155447906000906121e2906121d9906002612433565b601a549061204b565b9050600061220460026121a3846121a3601554886123b490919063ffffffff16565b90506000612221836121a3601754876123b490919063ffffffff16565b9050600061223982612233878661204b565b9061204b565b9050801561225c5760055461225c9061010090046001600160a01b031682612633565b811561227857600654612278906001600160a01b031683612633565b6000831180156122885750600087115b1561229757612297878461266e565b50506020805460ff60a01b19169055505050505050565b6001600160a01b0383166000908152600c6020526040812054819060ff16156122f2576122eb60646121a3601854866123b490919063ffffffff16565b9050612330565b6001600160a01b0384166000908152600c602052604090205460ff16156123305761232d60646121a3601954866123b490919063ffffffff16565b90505b80156123aa57306000908152600760205260409020546123509082611a38565b30600081815260076020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906123a19085815260200190565b60405180910390a35b612042838261204b565b6000826123c357506000610d25565b60006123cf8385612b0d565b9050826123dc8583612aed565b14610e335760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610ce0565b6000610e3383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612752565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106124b857634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601f54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561250c57600080fd5b505afa158015612520573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061254491906127b1565b8160018151811061256557634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601f5461258b9130911684611a97565b601f5460405163791ac94760e01b81526001600160a01b039091169063791ac947906125c4908590600090869030904290600401612a99565b600060405180830381600087803b1580156125de57600080fd5b505af11580156125f2573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612627929190612a78565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015612669573d6000803e3d6000fd5b505050565b601f546126869030906001600160a01b031684611a97565b601f546001600160a01b031663f305d7198230856000806126af6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561271257600080fd5b505af1158015612726573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061274b9190612980565b5050505050565b600081836127735760405162461bcd60e51b8152600401610ce091906129f0565b5060006120428486612aed565b8035801515811461279057600080fd5b919050565b6000602082840312156127a6578081fd5b8135610e3381612baf565b6000602082840312156127c2578081fd5b8151610e3381612baf565b600080604083850312156127df578081fd5b82356127ea81612baf565b915060208301356127fa81612baf565b809150509250929050565b600080600060608486031215612819578081fd5b833561282481612baf565b9250602084013561283481612baf565b929592945050506040919091013590565b60008060408385031215612857578182fd5b823561286281612baf565b915061287060208401612780565b90509250929050565b6000806040838503121561288b578182fd5b823561289681612baf565b946020939093013593505050565b6000806000604084860312156128b8578283fd5b833567ffffffffffffffff808211156128cf578485fd5b818601915086601f8301126128e2578485fd5b8135818111156128f0578586fd5b8760208260051b8501011115612904578586fd5b60209283019550935061291a9186019050612780565b90509250925092565b600060208284031215612934578081fd5b610e3382612780565b60006020828403121561294e578081fd5b5035919050565b600080600060608486031215612969578283fd5b505081359360208301359350604090920135919050565b600080600060608486031215612994578283fd5b8351925060208401519150604084015190509250925092565b6000815180845260208085019450808401835b838110156129e55781516001600160a01b0316875295820195908201906001016129c0565b509495945050505050565b6000602080835283518082850152825b81811015612a1c57858101830151858201604001528201612a00565b81811115612a2d5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b828152604060208201526000612a9160408301846129ad565b949350505050565b85815284602082015260a060408201526000612ab860a08301866129ad565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115612ae857612ae8612b99565b500190565b600082612b0857634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615612b2757612b27612b99565b500290565b600082821015612b3e57612b3e612b99565b500390565b600181811c90821680612b5757607f821691505b60208210811415612b7857634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612b9257612b92612b99565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114612bc457600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220cb00e22418634cc4e7ee4bb91a534e6eb3b919874d5a7fb6cb8431f0410a1b3d64736f6c63430008040033
Deployed Bytecode Sourcemap
15133:15431:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18883:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21451:341;;;;;;;;;;-1:-1:-1;21451:341:0;;;;;:::i;:::-;;:::i;:::-;;20177:161;;;;;;;;;;-1:-1:-1;20177:161:0;;;;;:::i;:::-;;:::i;:::-;;;6013:14:1;;6006:22;5988:41;;5976:2;5961:18;20177:161:0;5943:92:1;15493:94:0;;;;;;;;;;-1:-1:-1;15493:94:0;;;;-1:-1:-1;;;;;15493:94:0;;;;;;-1:-1:-1;;;;;4659:32:1;;;4641:51;;4629:2;4614:18;15493:94:0;4596:102:1;16906:41:0;;;;;;;;;;-1:-1:-1;16906:41:0;;;;-1:-1:-1;;;;;16906:41:0;;;19160:100;;;;;;;;;;-1:-1:-1;19240:12:0;;19160:100;;;11686:25:1;;;11674:2;11659:18;19160:100:0;11641:76:1;21110:333:0;;;;;;;;;;-1:-1:-1;21110:333:0;;;;;:::i;:::-;;:::i;22436:135::-;;;;;;;;;;-1:-1:-1;22436:135:0;;;;;:::i;:::-;;:::i;25148:313::-;;;;;;;;;;-1:-1:-1;25148:313:0;;;;;:::i;:::-;;:::i;22315:113::-;;;;;;;;;;-1:-1:-1;22315:113:0;;;;;:::i;:::-;;:::i;15595:81::-;;;;;;;;;;;;;;;23790:128;;;;;;;;;;;;;:::i;23337:129::-;;;;;;;;;;-1:-1:-1;23337:129:0;;;;;:::i;:::-;;:::i;19069:83::-;;;;;;;;;;-1:-1:-1;19135:9:0;;19069:83;;19135:9;;;;12788:36:1;;12776:2;12761:18;19069:83:0;12743:87:1;19546:218:0;;;;;;;;;;-1:-1:-1;19546:218:0;;;;;:::i;:::-;;:::i;23036:146::-;;;;;;;;;;-1:-1:-1;23036:146:0;;;;;:::i;:::-;;:::i;15987:45::-;;;;;;;;;;-1:-1:-1;15987:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17021:40;;;;;;;;;;-1:-1:-1;17021:40:0;;;;-1:-1:-1;;;17021:40:0;;;;;;23190:139;;;;;;;;;;-1:-1:-1;23190:139:0;;;;;:::i;:::-;;:::i;15816:50::-;;;;;;;;;;-1:-1:-1;15816:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6653:90;;;;;;;;;;-1:-1:-1;6720:15:0;6653:90;;16395:35;;;;;;;;;;;;;;;;24064:807;;;;;;;;;;-1:-1:-1;24064:807:0;;;;;:::i;:::-;;:::i;22579:99::-;;;;;;;;;;-1:-1:-1;22579:99:0;;;;;:::i;:::-;;:::i;6551:90::-;;;;;;;;;;-1:-1:-1;6624:9:0;;6551:90;;16437:35;;;;;;;;;;;;;;;;19268:119;;;;;;;;;;-1:-1:-1;19268:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;19361:18:0;19334:7;19361:18;;;:9;:18;;;;;;;19268:119;16726:42;;;;;;;;;;;;;;;;16775:50;;;;;;;;;;;;;;;;16564:38;;;;;;;;;;;;;;;;20691:129;;;;;;;;;;-1:-1:-1;20691:129:0;;;;;:::i;:::-;;:::i;16264:36::-;;;;;;;;;;;;;;;;16041:32;;;;;;;;;;-1:-1:-1;16041:32:0;;;;;;;;15932:48;;;;;;;;;;-1:-1:-1;15932:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5921:79;;;;;;;;;;-1:-1:-1;5959:7:0;5986:6;-1:-1:-1;;;;;5986:6:0;5921:79;;22686:210;;;;;;;;;;-1:-1:-1;22686:210:0;;;;;:::i;:::-;;:::i;6146:145::-;;;;;;;;;;;;;:::i;18974:87::-;;;;;;;;;;;;;:::i;20049:120::-;;;;;;;;;;-1:-1:-1;20138:23:0;;20049:120;;16611:44;;;;;;;;;;;;;;;;19772:269;;;;;;;;;;-1:-1:-1;19772:269:0;;;;;:::i;:::-;;:::i;23653:125::-;;;;;;;;;;-1:-1:-1;23653:125:0;;;;;:::i;:::-;;:::i;6989:305::-;;;;;;;;;;;;;:::i;16479:30::-;;;;;;;;;;;;;;;;24973:167;;;;;;;;;;-1:-1:-1;24973:167:0;;;;;:::i;:::-;;:::i;21804:358::-;;;;;;;;;;-1:-1:-1;21804:358:0;;;;;:::i;:::-;;:::i;16220:30::-;;;;;;;;;;;;;;;;23474:171;;;;;;;;;;-1:-1:-1;23474:171:0;;;;;:::i;:::-;;:::i;16177:35::-;;;;;;;;;;;;;;;;16954:26;;;;;;;;;;-1:-1:-1;16954:26:0;;;;-1:-1:-1;;;;;16954:26:0;;;16308:37;;;;;;;;;;;;;;;;15873:52;;;;;;;;;;-1:-1:-1;15873:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16353:32;;;;;;;;;;;;;;;;15386:99;;;;;;;;;;-1:-1:-1;15386:99:0;;;;;;;-1:-1:-1;;;;;15386:99:0;;;17068:45;;;;;;;;;;-1:-1:-1;17068:45:0;;;;-1:-1:-1;;;17068:45:0;;;;;;16135:35;;;;;;;;;;;;;;;;6751:226;;;;;;;;;;-1:-1:-1;6751:226:0;;;;;:::i;:::-;;:::i;19395:143::-;;;;;;;;;;-1:-1:-1;19395:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;19503:18:0;;;19476:7;19503:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;19395:143;22174:133;;;;;;;;;;-1:-1:-1;22174:133:0;;;;;:::i;:::-;;:::i;20967:135::-;;;;;;;;;;-1:-1:-1;20967:135:0;;;;;:::i;:::-;;:::i;16518:37::-;;;;;;;;;;;;;;;;22904:124;;;;;;;;;;-1:-1:-1;22904:124:0;;;;;:::i;:::-;;:::i;6299:244::-;;;;;;;;;;-1:-1:-1;6299:244:0;;;;;:::i;:::-;;:::i;20828:127::-;;;;;;;;;;-1:-1:-1;20828:127:0;;;;;:::i;:::-;;:::i;17120:35::-;;;;;;;;;;-1:-1:-1;17120:35:0;;;;-1:-1:-1;;;17120:35:0;;;;;;16080:46;;;;;;;;;;-1:-1:-1;16080:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18883:83;18920:13;18953:5;18946:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18883:83;:::o;21451:341::-;6055:6;;-1:-1:-1;;;;;6055:6:0;319:10;6055:22;6047:67;;;;-1:-1:-1;;;6047:67:0;;;;;;;:::i;:::-;;;;;;;;;21575:17:::1;:35:::0;;;21621:17:::1;:35:::0;;;21667:12:::1;:25:::0;;;21726:58:::1;21682:10:::0;21726:40:::1;21595:15:::0;21641;21726:21:::1;:40::i;:::-;:44:::0;::::1;:58::i;:::-;21705:18;:79:::0;-1:-1:-1;;;21451:341:0:o;20177:161::-;20252:4;20269:39;319:10;20292:7;20301:6;20269:8;:39::i;:::-;-1:-1:-1;20326:4:0;20177:161;;;;;:::o;21110:333::-;6055:6;;-1:-1:-1;;;;;6055:6:0;319:10;6055:22;6047:67;;;;-1:-1:-1;;;6047:67:0;;;;;;;:::i;:::-;21233:16:::1;:34:::0;;;21278:16:::1;:34:::0;;;21323:11:::1;:24:::0;;;21380:55:::1;21337:10:::0;21380:38:::1;21252:15:::0;21297;21380:20:::1;:38::i;:55::-;21360:17;:75:::0;-1:-1:-1;;;21110:333:0:o;22436:135::-;6055:6;;-1:-1:-1;;;;;6055:6:0;319:10;6055:22;6047:67;;;;-1:-1:-1;;;6047:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22527:27:0;;;::::1;;::::0;;;:19:::1;:27;::::0;;;;:36;;-1:-1:-1;;22527:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22436:135::o;25148:313::-;25246:4;25263:36;25273:6;25281:9;25292:6;25263:9;:36::i;:::-;-1:-1:-1;25310:121:0;25319:6;319:10;25341:89;25379:6;25341:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25341:19:0;;;;;;:11;:19;;;;;;;;319:10;25341:33;;;;;;;;;;:37;:89::i;:::-;25310:8;:121::i;:::-;-1:-1:-1;25449:4:0;25148:313;;;;;;:::o;22315:113::-;6055:6;;-1:-1:-1;;;;;6055:6:0;319:10;6055:22;6047:67;;;;-1:-1:-1;;;6047:67:0;;;;;;;:::i;:::-;22393:16:::1;:27:::0;;;::::1;;-1:-1:-1::0;;;22393:27:0::1;-1:-1:-1::0;;;;22393:27:0;;::::1;::::0;;;::::1;::::0;;22315:113::o;23790:128::-;23897:11;-1:-1:-1;;;;;19361:18:0;23843:7;19361:18;;;:9;:18;;;;;;23870:12;;:40;;:16;:40::i;:::-;23863:47;;23790:128;:::o;23337:129::-;6055:6;;-1:-1:-1;;;;;6055:6:0;319:10;6055:22;6047:67;;;;-1:-1:-1;;;6047:67:0;;;;;;;:::i;:::-;23419:17:::1;:39:::0;;-1:-1:-1;;;;;;23419:39:0::1;-1:-1:-1::0;;;;;23419:39:0;;;::::1;::::0;;;::::1;::::0;;23337:129::o;19546:218::-;319:10;19634:4;19683:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19683:34:0;;;;;;;;;;19634:4;;19651:83;;19674:7;;19683:50;;19722:10;19683:38;:50::i;23036:146::-;6055:6;;-1:-1:-1;;;;;6055:6:0;319:10;6055:22;6047:67;;;;-1:-1:-1;;;6047:67:0;;;;;;;:::i;:::-;23170:4:::1;23159:8;23144:12;;:23;;;;:::i;:::-;:30;;;;:::i;:::-;23118:23;:56:::0;-1:-1:-1;23036:146:0:o;23190:139::-;6055:6;;-1:-1:-1;;;;;6055:6:0;319:10;6055:22;6047:67;;;;-1:-1:-1;;;6047:67:0;;;;;;;:::i;:::-;23277:22:::1;:44:::0;;-1:-1:-1;;;;;23277:44:0;;::::1;;;-1:-1:-1::0;;;;;;23277:44:0;;::::1;::::0;;;::::1;::::0;;23190:139::o;24064:807::-;24144:22;6055:6;;-1:-1:-1;;;;;6055:6:0;319:10;6055:22;6047:67;;;;-1:-1:-1;;;6047:67:0;;;;;;;:::i;:::-;24181:35:::1;24238:16;24181:74;;24304:16;-1:-1:-1::0;;;;;24304:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24286:53:0::1;;24348:4;24355:16;-1:-1:-1::0;;;;;24355:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24286:93;::::0;-1:-1:-1;;;;;;24286:93:0::1;::::0;;;;;;-1:-1:-1;;;;;5157:15:1;;;24286:93:0::1;::::0;::::1;5139:34:1::0;5209:15;;5189:18;;;5182:43;5074:18;;24286:93:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24269:110:::0;-1:-1:-1;;;;;;24395:28:0;::::1;24392:225;;24509:16;-1:-1:-1::0;;;;;24509:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24491:74:0::1;;24574:4;24581:16;-1:-1:-1::0;;;;;24581:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24491:114;::::0;-1:-1:-1;;;;;;24491:114:0::1;::::0;;;;;;-1:-1:-1;;;;;5157:15:1;;;24491:114:0::1;::::0;::::1;5139:34:1::0;5209:15;;5189:18;;;5182:43;5074:18;;24491:114:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24474:131;;24392:225;24629:11;:28:::0;;-1:-1:-1;;;;;;24629:28:0;;::::1;-1:-1:-1::0;;;;;24629:28:0;;::::1;::::0;;::::1;::::0;;24691:15:::1;:34:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;24763:41:0;;;:19:::1;:41:::0;;;;;;:48;;-1:-1:-1;;24763:48:0;;::::1;-1:-1:-1::0;24763:48:0;;::::1;::::0;;;24843:11;;;;::::1;24822:34:::0;;:12:::1;:34:::0;;;;;:41;;;;::::1;;::::0;;24629:28;24643:14;-1:-1:-1;24064:807:0:o;22579:99::-;6055:6;;-1:-1:-1;;;;;6055:6:0;319:10;6055:22;6047:67;;;;-1:-1:-1;;;6047:67:0;;;;;;;:::i;:::-;22647:13:::1;:23:::0;;-1:-1:-1;;22647:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22579:99::o;20691:129::-;6055:6;;-1:-1:-1;;;;;6055:6:0;319:10;6055:22;6047:67;;;;-1:-1:-1;;;6047:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20780:21:0;;;::::1;;::::0;;;:12:::1;:21;::::0;;;;:32;;-1:-1:-1;;20780:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20691:129::o;22686:210::-;6055:6;;-1:-1:-1;;;;;6055:6:0;319:10;6055:22;6047:67;;;;-1:-1:-1;;;6047:67:0;;;;;;;:::i;:::-;22788:9:::1;22783:106;22799:20:::0;;::::1;22783:106;;;22871:6;22841:13;:27;22855:9;;22865:1;22855:12;;;;;-1:-1:-1::0;;;22855:12:0::1;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22841:27:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;22841:27:0;:36;;-1:-1:-1;;22841:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22821:3:::1;::::0;::::1;:::i;:::-;;;22783:106;;;;22686:210:::0;;;:::o;6146:145::-;6055:6;;-1:-1:-1;;;;;6055:6:0;319:10;6055:22;6047:67;;;;-1:-1:-1;;;6047:67:0;;;;;;;:::i;:::-;6250:1:::1;6234:6:::0;;6213:40:::1;::::0;-1:-1:-1;;;;;6234:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;6213:40:0;6250:1;;6213:40:::1;6281:1;6264:19:::0;;-1:-1:-1;;;;;;6264:19:0::1;::::0;;6146:145::o;18974:87::-;19013:13;19046:7;19039:14;;;;;:::i;19772:269::-;19865:4;19882:129;319:10;19905:7;19914:96;19953:15;19914:96;;;;;;;;;;;;;;;;;319:10;19914:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;19914:34:0;;;;;;;;;;;;:38;:96::i;23653:125::-;6055:6;;-1:-1:-1;;;;;6055:6:0;319:10;6055:22;6047:67;;;;-1:-1:-1;;;6047:67:0;;;;;;;:::i;:::-;23734:25:::1;:36:::0;;;::::1;;-1:-1:-1::0;;;23734:36:0::1;-1:-1:-1::0;;;;23734:36:0;;::::1;::::0;;;::::1;::::0;;23653:125::o;6989:305::-;7041:14;;-1:-1:-1;;;;;7041:14:0;7059:10;7041:28;7033:76;;;;-1:-1:-1;;;7033:76:0;;10998:2:1;7033:76:0;;;10980:21:1;11037:2;11017:18;;;11010:30;11076:34;11056:18;;;11049:62;-1:-1:-1;;;11127:18:1;;;11120:33;11170:19;;7033:76:0;10970:225:1;7033:76:0;7146:9;;7128:15;:27;7120:72;;;;-1:-1:-1;;;7120:72:0;;10638:2:1;7120:72:0;;;10620:21:1;10677:2;10657:18;;;10650:30;10716:33;10696:18;;;10689:61;10767:18;;7120:72:0;10610:181:1;7120:72:0;7237:14;;;7229:6;;7208:44;;-1:-1:-1;;;;;7237:14:0;;;;7229:6;;;;-1:-1:-1;;;;;;;;;;;7208:44:0;;7272:14;;;7263:23;;-1:-1:-1;;;;;;7263:23:0;-1:-1:-1;;;;;7272:14:0;;;7263:23;;;;;;6989:305::o;24973:167::-;25051:4;25068:42;319:10;25092:9;25103:6;25068:9;:42::i;21804:358::-;6055:6;;-1:-1:-1;;;;;6055:6:0;319:10;6055:22;6047:67;;;;-1:-1:-1;;;6047:67:0;;;;;;;:::i;:::-;21945:15:::1;:35:::0;;;21991:15:::1;:35:::0;;;22037:10:::1;:25:::0;;;22102:52:::1;22050:12:::0;22102:36:::1;21963:17:::0;22009;22102:19:::1;:36::i;:52::-;22075:24;:79:::0;-1:-1:-1;;;21804:358:0:o;23474:171::-;6055:6;;-1:-1:-1;;;;;6055:6:0;319:10;6055:22;6047:67;;;;-1:-1:-1;;;6047:67:0;;;;;;;:::i;:::-;23551:21:::1;:32:::0;;-1:-1:-1;;;;23551:32:0::1;-1:-1:-1::0;;;23551:32:0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;23599:38:::1;::::0;5988:41:1;;;23599:38:0::1;::::0;5961:18:1;23599:38:0::1;;;;;;;23474:171:::0;:::o;6751:226::-;6055:6;;-1:-1:-1;;;;;6055:6:0;319:10;6055:22;6047:67;;;;-1:-1:-1;;;6047:67:0;;;;;;;:::i;:::-;6832:6:::1;::::0;;;6815:23;;-1:-1:-1;;;;;;6815:23:0;;::::1;-1:-1:-1::0;;;;;6832:6:0;::::1;6815:23;::::0;;;6849:19:::1;::::0;;6891:22:::1;6909:4:::0;6891:15:::1;:22;:::i;:::-;6879:9;:34:::0;6966:1:::1;6950:6:::0;;6929:40:::1;::::0;-1:-1:-1;;;;;6950:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;6929:40:0;6966:1;;6929:40:::1;6751:226:::0;:::o;22174:133::-;6055:6;;-1:-1:-1;;;;;6055:6:0;319:10;6055:22;6047:67;;;;-1:-1:-1;;;6047:67:0;;;;;;;:::i;:::-;22295:4:::1;22281:11;22266:12;;:26;;;;:::i;:::-;:33;;;;:::i;:::-;22251:12;:48:::0;-1:-1:-1;22174:133:0:o;20967:135::-;6055:6;;-1:-1:-1;;;;;6055:6:0;319:10;6055:22;6047:67;;;;-1:-1:-1;;;6047:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21057:26:0;;;::::1;;::::0;;;:17:::1;:26;::::0;;;;:37;;-1:-1:-1;;21057:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20967:135::o;22904:124::-;6055:6;;-1:-1:-1;;;;;6055:6:0;319:10;6055:22;6047:67;;;;-1:-1:-1;;;6047:67:0;;;;;;;:::i;:::-;23016:4:::1;23005:8;22990:12;;:23;;;;:::i;:::-;:30;;;;:::i;:::-;22976:10;:44:::0;-1:-1:-1;22904:124:0:o;6299:244::-;6055:6;;-1:-1:-1;;;;;6055:6:0;319:10;6055:22;6047:67;;;;-1:-1:-1;;;6047:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6388:22:0;::::1;6380:73;;;::::0;-1:-1:-1;;;6380:73:0;;7489:2:1;6380:73:0::1;::::0;::::1;7471:21:1::0;7528:2;7508:18;;;7501:30;7567:34;7547:18;;;7540:62;-1:-1:-1;;;7618:18:1;;;7611:36;7664:19;;6380:73:0::1;7461:228:1::0;6380:73:0::1;6490:6;::::0;;6469:38:::1;::::0;-1:-1:-1;;;;;6469:38:0;;::::1;::::0;6490:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;6469:38:0;::::1;6518:6;:17:::0;;-1:-1:-1;;;;;;6518:17:0::1;-1:-1:-1::0;;;;;6518:17:0;;;::::1;::::0;;;::::1;::::0;;6299:244::o;20828:127::-;6055:6;;-1:-1:-1;;;;;6055:6:0;319:10;6055:22;6047:67;;;;-1:-1:-1;;;6047:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20915:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;20915:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20828:127::o;1291:181::-;1349:7;;1381:5;1385:1;1381;:5;:::i;:::-;1369:17;;1410:1;1405;:6;;1397:46;;;;-1:-1:-1;;;1397:46:0;;8299:2:1;1397:46:0;;;8281:21:1;8338:2;8318:18;;;8311:30;8377:29;8357:18;;;8350:57;8424:18;;1397:46:0;8271:177:1;20346:337:0;-1:-1:-1;;;;;20439:19:0;;20431:68;;;;-1:-1:-1;;;20431:68:0;;10233:2:1;20431:68:0;;;10215:21:1;10272:2;10252:18;;;10245:30;10311:34;10291:18;;;10284:62;-1:-1:-1;;;10362:18:1;;;10355:34;10406:19;;20431:68:0;10205:226:1;20431:68:0;-1:-1:-1;;;;;20518:21:0;;20510:68;;;;-1:-1:-1;;;20510:68:0;;7896:2:1;20510:68:0;;;7878:21:1;7935:2;7915:18;;;7908:30;7974:34;7954:18;;;7947:62;-1:-1:-1;;;8025:18:1;;;8018:32;8067:19;;20510:68:0;7868:224:1;20510:68:0;-1:-1:-1;;;;;20591:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;20643:32;;11686:25:1;;;20643:32:0;;11659:18:1;20643:32:0;;;;;;;20346:337;;;:::o;25469:1863::-;25556:4;-1:-1:-1;;;;;25583:20:0;;25575:70;;;;-1:-1:-1;;;25575:70:0;;9827:2:1;25575:70:0;;;9809:21:1;9866:2;9846:18;;;9839:30;9905:34;9885:18;;;9878:62;-1:-1:-1;;;9956:18:1;;;9949:35;10001:19;;25575:70:0;9799:227:1;25575:70:0;-1:-1:-1;;;;;25664:23:0;;25656:71;;;;-1:-1:-1;;;25656:71:0;;7085:2:1;25656:71:0;;;7067:21:1;7124:2;7104:18;;;7097:30;7163:34;7143:18;;;7136:62;-1:-1:-1;;;7214:18:1;;;7207:33;7257:19;;25656:71:0;7057:225:1;25656:71:0;25765:13;;;;25762:122;;;-1:-1:-1;;;;;25803:21:0;;;;;;:13;:21;;;;;;;;25802:22;:51;;;;-1:-1:-1;;;;;;25829:24:0;;;;;;:13;:24;;;;;;;;25828:25;25802:51;25794:74;;;;-1:-1:-1;;;25794:74:0;;11402:2:1;25794:74:0;;;11384:21:1;11441:2;11421:18;;;11414:30;-1:-1:-1;;;11460:18:1;;;11453:41;11511:18;;25794:74:0;11374:161:1;25794:74:0;25899:16;;-1:-1:-1;;;25899:16:0;;;;25896:1429;;;25949:41;25964:6;25972:9;25983:6;25949:14;:41::i;:::-;25942:48;;;;25896:1429;-1:-1:-1;;;;;26046:23:0;;;;;;:15;:23;;;;;;;;26045:24;:55;;;;-1:-1:-1;;;;;;26074:26:0;;;;;;:15;:26;;;;;;;;26073:27;26045:55;26042:170;;;26139:12;;26129:6;:22;;26121:75;;;;-1:-1:-1;;;26121:75:0;;8655:2:1;26121:75:0;;;8637:21:1;8694:2;8674:18;;;8667:30;8733:34;8713:18;;;8706:62;-1:-1:-1;;;8784:18:1;;;8777:38;8832:19;;26121:75:0;8627:230:1;26121:75:0;26289:4;26240:28;19361:18;;;:9;:18;;;;;;26365:23;;26341:47;;;;;;;26421:44;;-1:-1:-1;26449:16:0;;-1:-1:-1;;;26449:16:0;;;;26448:17;26421:44;:69;;;;-1:-1:-1;;;;;;26470:20:0;;;;;;:12;:20;;;;;;;;26469:21;26421:69;:94;;;;-1:-1:-1;26494:21:0;;-1:-1:-1;;;26494:21:0;;;;26421:94;26417:305;;;26553:25;;-1:-1:-1;;;26553:25:0;;;;26550:97;;;26624:23;;26601:46;;26550:97;26666:36;26681:20;26666:14;:36::i;:::-;26758:53;;;;;;;;;;;-1:-1:-1;;;26758:53:0;;;;;;;;-1:-1:-1;;;;;26758:17:0;;-1:-1:-1;26758:17:0;;;:9;:17;;;;;;;;:53;;26780:6;;26758:21;:53::i;:::-;-1:-1:-1;;;;;26738:17:0;;;;;;:9;:17;;;;;;;;:73;;;;26851:17;:25;;;;;;;;;:57;;-1:-1:-1;;;;;;26880:28:0;;;;;;:17;:28;;;;;;;;26851:57;26850:148;;26964:34;26972:6;26980:9;26991:6;26964:7;:34::i;:::-;26850:148;;;26955:6;26850:148;27018:16;;26828:170;;-1:-1:-1;;;;27018:16:0;;;;:51;;;;-1:-1:-1;;;;;;27039:30:0;;;;;;:19;:30;;;;;;;;27038:31;27018:51;27015:133;;;27137:10;;27096:37;27121:11;27096:20;27106:9;-1:-1:-1;;;;;19361:18:0;19334:7;19361:18;;;:9;:18;;;;;;;19268:119;27096:37;:51;;27088:60;;;;;;-1:-1:-1;;;;;27188:20:0;;;;;;:9;:20;;;;;;:37;;27213:11;27188:24;:37::i;:::-;-1:-1:-1;;;;;27165:20:0;;;;;;;:9;:20;;;;;;;:60;;;;27247:40;;;;;;;;;;27275:11;11686:25:1;;11674:2;11659:18;;11641:76;27247:40:0;;;;;;;;27309:4;27302:11;;;;;;;1624:192;1710:7;1746:12;1738:6;;;;1730:29;;;;-1:-1:-1;;;1730:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1770:9:0;1782:5;1786:1;1782;:5;:::i;:::-;1770:17;1624:192;-1:-1:-1;;;;;1624:192:0:o;1480:136::-;1538:7;1565:43;1569:1;1572;1565:43;;;;;;;;;;;;;;;;;:3;:43::i;27340:330::-;27470:53;;;;;;;;;;;-1:-1:-1;;;27470:53:0;;;;;;;;-1:-1:-1;;;;;27470:17:0;;27433:4;27470:17;;;:9;:17;;;;;;;:53;;27492:6;;27470:21;:53::i;:::-;-1:-1:-1;;;;;27450:17:0;;;;;;;:9;:17;;;;;;:73;;;;27557:20;;;;;;;:32;;27582:6;27557:24;:32::i;:::-;-1:-1:-1;;;;;27534:20:0;;;;;;;:9;:20;;;;;;;:55;;;;27605:35;;;;;;;;;;27633:6;11686:25:1;;11674:2;11659:18;;11641:76;27605:35:0;;;;;;;;-1:-1:-1;27658:4:0;27340:330;;;;;:::o;27678:1048::-;17578:16;:23;;-1:-1:-1;;;;17578:23:0;-1:-1:-1;;;17578:23:0;;;27815:24:::1;::::0;27794:15:::1;::::0;17578:23;;27782:65:::1;::::0;27845:1:::1;::::0;27782:58:::1;::::0;;;:7;;:11:::1;:28::i;:::-;:32:::0;::::1;:58::i;:65::-;27760:87:::0;-1:-1:-1;27858:21:0::1;27882:24;:7:::0;27760:87;27882:11:::1;:24::i;:::-;27858:48;;27919:31;27936:13;27919:16;:31::i;:::-;28071:15;::::0;27986:21:::1;::::0;27961:22:::1;::::0;28042:52:::1;::::0;28071:22:::1;::::0;28091:1:::1;28071:19;:22::i;:::-;28042:24;::::0;;:28:::1;:52::i;:::-;28020:74;;28115:26;28144:59;28201:1;28144:52;28184:11;28144:35;28163:15;;28144:14;:18;;:35;;;;:::i;:59::-;28115:88;;28214:21;28238:47;28273:11;28238:30;28257:10;;28238:14;:18;;:30;;;;:::i;:47::-;28214:71:::0;-1:-1:-1;28296:26:0::1;28325:57;28214:71:::0;28325:38:::1;:14:::0;28344:18;28325::::1;:38::i;:::-;:42:::0;::::1;:57::i;:::-;28296:86:::0;-1:-1:-1;28398:22:0;;28395:104:::1;;28456:22;::::0;28435:64:::1;::::0;28456:22:::1;::::0;::::1;-1:-1:-1::0;;;;;28456:22:0::1;28480:18:::0;28435:20:::1;:64::i;:::-;28515:17:::0;;28512:89:::1;;28568:17;::::0;28547:54:::1;::::0;-1:-1:-1;;;;;28568:17:0::1;28587:13:::0;28547:20:::1;:54::i;:::-;28638:1;28617:18;:22;:41;;;;;28657:1;28643:11;:15;28617:41;28614:104;;;28673:45;28686:11;28699:18;28673:12;:45::i;:::-;-1:-1:-1::0;;17624:16:0;:24;;-1:-1:-1;;;;17624:24:0;;;-1:-1:-1;;;;;;27678:1048:0:o;29933:622::-;-1:-1:-1;;;;;30094:20:0;;30019:7;30094:20;;;:12;:20;;;;;;30019:7;;30094:20;;30091:223;;;30143:38;30177:3;30143:29;30154:17;;30143:6;:10;;:29;;;;:::i;:38::-;30131:50;;30091:223;;;-1:-1:-1;;;;;30211:23:0;;;;;;:12;:23;;;;;;;;30208:106;;;30263:39;30298:3;30263:30;30274:18;;30263:6;:10;;:30;;;;:::i;:39::-;30251:51;;30208:106;30337:13;;30334:173;;30412:4;30394:24;;;;:9;:24;;;;;;:39;;30423:9;30394:28;:39::i;:::-;30385:4;30367:24;;;;:9;:24;;;;;;;:66;;;;30453:42;;-1:-1:-1;;;;;30453:42:0;;;;;;;30485:9;11686:25:1;;11674:2;11659:18;;11641:76;30453:42:0;;;;;;;;30334:173;30526:21;:6;30537:9;30526:10;:21::i;1824:250::-;1882:7;1906:6;1902:47;;-1:-1:-1;1936:1:0;1929:8;;1902:47;1961:9;1973:5;1977:1;1973;:5;:::i;:::-;1961:17;-1:-1:-1;2006:1:0;1997:5;2001:1;1961:17;1997:5;:::i;:::-;:10;1989:56;;;;-1:-1:-1;;;1989:56:0;;9064:2:1;1989:56:0;;;9046:21:1;9103:2;9083:18;;;9076:30;9142:34;9122:18;;;9115:62;-1:-1:-1;;;9193:18:1;;;9186:31;9234:19;;1989:56:0;9036:223:1;2082:132:0;2140:7;2167:39;2171:1;2174;2167:39;;;;;;;;;;;;;;;;;:3;:39::i;28738:666::-;28888:16;;;28902:1;28888:16;;;;;;;;28864:21;;28888:16;;;;;;;;;;-1:-1:-1;28888:16:0;28864:40;;28933:4;28915;28920:1;28915:7;;;;;;-1:-1:-1;;;28915:7:0;;;;;;;;;-1:-1:-1;;;;;28915:23:0;;;:7;;;;;;;;;;:23;;;;28959:15;;:22;;;-1:-1:-1;;;28959:22:0;;;;:15;;;;;:20;;:22;;;;;28915:7;;28959:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28949:4;28954:1;28949:7;;;;;;-1:-1:-1;;;28949:7:0;;;;;;;;;-1:-1:-1;;;;;28949:32:0;;;:7;;;;;;;;;:32;29026:15;;28994:62;;29011:4;;29026:15;29044:11;28994:8;:62::i;:::-;29095:15;;:240;;-1:-1:-1;;;29095:240:0;;-1:-1:-1;;;;;29095:15:0;;;;:66;;:240;;29176:11;;29095:15;;29246:4;;29273;;29309:15;;29095:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29361:35;29378:11;29391:4;29361:35;;;;;;;:::i;:::-;;;;;;;;28738:666;;:::o;23926:126::-;24018:26;;-1:-1:-1;;;;;24018:18:0;;;:26;;;;;24037:6;;24018:26;;;;24037:6;24018:18;:26;;;;;;;;;;;;;;;;;;;;;23926:126;;:::o;29412:513::-;29592:15;;29560:62;;29577:4;;-1:-1:-1;;;;;29592:15:0;29610:11;29560:8;:62::i;:::-;29665:15;;-1:-1:-1;;;;;29665:15:0;:31;29704:9;29737:4;29757:11;29665:15;;29869:7;5959;5986:6;-1:-1:-1;;;;;5986:6:0;;5921:79;29869:7;29665:252;;;;;;-1:-1:-1;;;;;;29665:252:0;;;-1:-1:-1;;;;;5595:15:1;;;29665:252:0;;;5577:34:1;5627:18;;;5620:34;;;;5670:18;;;5663:34;;;;5713:18;;;5706:34;5777:15;;;5756:19;;;5749:44;29891:15:0;5809:19:1;;;5802:35;5511:19;;29665:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;29412:513;;:::o;2222:278::-;2308:7;2343:12;2336:5;2328:28;;;;-1:-1:-1;;;2328:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2367:9:0;2379:5;2383:1;2379;:5;:::i;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:2;;164:1;161;154:12;108:2;60:114;;;:::o;179:257::-;238:6;291:2;279:9;270:7;266:23;262:32;259:2;;;312:6;304;297:22;259:2;356:9;343:23;375:31;400:5;375:31;:::i;441:261::-;511:6;564:2;552:9;543:7;539:23;535:32;532:2;;;585:6;577;570:22;532:2;622:9;616:16;641:31;666:5;641:31;:::i;707:398::-;775:6;783;836:2;824:9;815:7;811:23;807:32;804:2;;;857:6;849;842:22;804:2;901:9;888:23;920:31;945:5;920:31;:::i;:::-;970:5;-1:-1:-1;1027:2:1;1012:18;;999:32;1040:33;999:32;1040:33;:::i;:::-;1092:7;1082:17;;;794:311;;;;;:::o;1110:466::-;1187:6;1195;1203;1256:2;1244:9;1235:7;1231:23;1227:32;1224:2;;;1277:6;1269;1262:22;1224:2;1321:9;1308:23;1340:31;1365:5;1340:31;:::i;:::-;1390:5;-1:-1:-1;1447:2:1;1432:18;;1419:32;1460:33;1419:32;1460:33;:::i;:::-;1214:362;;1512:7;;-1:-1:-1;;;1566:2:1;1551:18;;;;1538:32;;1214:362::o;1581:325::-;1646:6;1654;1707:2;1695:9;1686:7;1682:23;1678:32;1675:2;;;1728:6;1720;1713:22;1675:2;1772:9;1759:23;1791:31;1816:5;1791:31;:::i;:::-;1841:5;-1:-1:-1;1865:35:1;1896:2;1881:18;;1865:35;:::i;:::-;1855:45;;1665:241;;;;;:::o;1911:325::-;1979:6;1987;2040:2;2028:9;2019:7;2015:23;2011:32;2008:2;;;2061:6;2053;2046:22;2008:2;2105:9;2092:23;2124:31;2149:5;2124:31;:::i;:::-;2174:5;2226:2;2211:18;;;;2198:32;;-1:-1:-1;;;1998:238:1:o;2241:739::-;2333:6;2341;2349;2402:2;2390:9;2381:7;2377:23;2373:32;2370:2;;;2423:6;2415;2408:22;2370:2;2468:9;2455:23;2497:18;2538:2;2530:6;2527:14;2524:2;;;2559:6;2551;2544:22;2524:2;2602:6;2591:9;2587:22;2577:32;;2647:7;2640:4;2636:2;2632:13;2628:27;2618:2;;2674:6;2666;2659:22;2618:2;2719;2706:16;2745:2;2737:6;2734:14;2731:2;;;2766:6;2758;2751:22;2731:2;2826:7;2819:4;2809:6;2806:1;2802:14;2798:2;2794:23;2790:34;2787:47;2784:2;;;2852:6;2844;2837:22;2784:2;2888:4;2880:13;;;;-1:-1:-1;2912:6:1;-1:-1:-1;2937:37:1;;2953:20;;;-1:-1:-1;2937:37:1;:::i;:::-;2927:47;;2360:620;;;;;:::o;2985:190::-;3041:6;3094:2;3082:9;3073:7;3069:23;3065:32;3062:2;;;3115:6;3107;3100:22;3062:2;3143:26;3159:9;3143:26;:::i;3180:190::-;3239:6;3292:2;3280:9;3271:7;3267:23;3263:32;3260:2;;;3313:6;3305;3298:22;3260:2;-1:-1:-1;3341:23:1;;3250:120;-1:-1:-1;3250:120:1:o;3375:326::-;3452:6;3460;3468;3521:2;3509:9;3500:7;3496:23;3492:32;3489:2;;;3542:6;3534;3527:22;3489:2;-1:-1:-1;;3570:23:1;;;3640:2;3625:18;;3612:32;;-1:-1:-1;3691:2:1;3676:18;;;3663:32;;3479:222;-1:-1:-1;3479:222:1:o;3706:316::-;3794:6;3802;3810;3863:2;3851:9;3842:7;3838:23;3834:32;3831:2;;;3884:6;3876;3869:22;3831:2;3918:9;3912:16;3902:26;;3968:2;3957:9;3953:18;3947:25;3937:35;;4012:2;4001:9;3997:18;3991:25;3981:35;;3821:201;;;;;:::o;4027:463::-;4080:3;4118:5;4112:12;4145:6;4140:3;4133:19;4171:4;4200:2;4195:3;4191:12;4184:19;;4237:2;4230:5;4226:14;4258:3;4270:195;4284:6;4281:1;4278:13;4270:195;;;4349:13;;-1:-1:-1;;;;;4345:39:1;4333:52;;4405:12;;;;4440:15;;;;4381:1;4299:9;4270:195;;;-1:-1:-1;4481:3:1;;4088:402;-1:-1:-1;;;;;4088:402:1:o;6275:603::-;6387:4;6416:2;6445;6434:9;6427:21;6477:6;6471:13;6520:6;6515:2;6504:9;6500:18;6493:34;6545:4;6558:140;6572:6;6569:1;6566:13;6558:140;;;6667:14;;;6663:23;;6657:30;6633:17;;;6652:2;6629:26;6622:66;6587:10;;6558:140;;;6716:6;6713:1;6710:13;6707:2;;;6786:4;6781:2;6772:6;6761:9;6757:22;6753:31;6746:45;6707:2;-1:-1:-1;6862:2:1;6841:15;-1:-1:-1;;6837:29:1;6822:45;;;;6869:2;6818:54;;6396:482;-1:-1:-1;;;6396:482:1:o;9264:356::-;9466:2;9448:21;;;9485:18;;;9478:30;9544:34;9539:2;9524:18;;9517:62;9611:2;9596:18;;9438:182::o;11722:332::-;11929:6;11918:9;11911:25;11972:2;11967;11956:9;11952:18;11945:30;11892:4;11992:56;12044:2;12033:9;12029:18;12021:6;11992:56;:::i;:::-;11984:64;11901:153;-1:-1:-1;;;;11901:153:1:o;12059:582::-;12358:6;12347:9;12340:25;12401:6;12396:2;12385:9;12381:18;12374:34;12444:3;12439:2;12428:9;12424:18;12417:31;12321:4;12465:57;12517:3;12506:9;12502:19;12494:6;12465:57;:::i;:::-;-1:-1:-1;;;;;12558:32:1;;;;12553:2;12538:18;;12531:60;-1:-1:-1;12622:3:1;12607:19;12600:35;12457:65;12330:311;-1:-1:-1;;;12330:311:1:o;12835:128::-;12875:3;12906:1;12902:6;12899:1;12896:13;12893:2;;;12912:18;;:::i;:::-;-1:-1:-1;12948:9:1;;12883:80::o;12968:217::-;13008:1;13034;13024:2;;-1:-1:-1;;;13059:31:1;;13113:4;13110:1;13103:15;13141:4;13066:1;13131:15;13024:2;-1:-1:-1;13170:9:1;;13014:171::o;13190:168::-;13230:7;13296:1;13292;13288:6;13284:14;13281:1;13278:21;13273:1;13266:9;13259:17;13255:45;13252:2;;;13303:18;;:::i;:::-;-1:-1:-1;13343:9:1;;13242:116::o;13363:125::-;13403:4;13431:1;13428;13425:8;13422:2;;;13436:18;;:::i;:::-;-1:-1:-1;13473:9:1;;13412:76::o;13493:380::-;13572:1;13568:12;;;;13615;;;13636:2;;13690:4;13682:6;13678:17;13668:27;;13636:2;13743;13735:6;13732:14;13712:18;13709:38;13706:2;;;13789:10;13784:3;13780:20;13777:1;13770:31;13824:4;13821:1;13814:15;13852:4;13849:1;13842:15;13706:2;;13548:325;;;:::o;13878:135::-;13917:3;-1:-1:-1;;13938:17:1;;13935:2;;;13958:18;;:::i;:::-;-1:-1:-1;14005:1:1;13994:13;;13925:88::o;14018:127::-;14079:10;14074:3;14070:20;14067:1;14060:31;14110:4;14107:1;14100:15;14134:4;14131:1;14124:15;14150:131;-1:-1:-1;;;;;14225:31:1;;14215:42;;14205:2;;14271:1;14268;14261:12;14205:2;14195:86;:::o
Swarm Source
ipfs://cb00e22418634cc4e7ee4bb91a534e6eb3b919874d5a7fb6cb8431f0410a1b3d
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.12
Net Worth in ETH
0.000053
Token Allocations
ETH
100.00%
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $2,329.91 | 0.00005349 | $0.124623 |
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.