Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
28,000,000 28
Holders
144
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.000000000001634309 28Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
XXVIII
Compiler Version
v0.8.6+commit.11564f7e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-08-03 */ /** * SPDX-License-Identifier: MIT */ // 28 // 28 // 28 // 28 // 28 // 28 // 28 // 28 pragma solidity ^0.8.6; library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b > a) return (false, 0); return (true, a - b); } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a / b); } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a % b); } 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) { require(b <= a, "SafeMath: subtraction overflow"); return a - b; } 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) { require(b > 0, "SafeMath: division by zero"); return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "SafeMath: modulo by zero"); return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); return a - b; } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); return a / b; } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); return a % b; } } 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); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } abstract contract Context { function _msgSender() internal view virtual returns (address) {return msg.sender;} function _msgData() internal view virtual returns (bytes calldata) {this; return msg.data;} } library Address { function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance");(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"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else {revert(errorMessage);} } } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(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; } } interface IPancakeV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function createPair(address tokenA, address tokenB) external returns (address pair); } interface IPancakeV2Router { 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 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 XXVIII is IERC20Metadata, Ownable { using SafeMath for uint256; using Address for address; address internal deadAddress = 0x000000000000000000000000000000000000dEaD; address public marketingWallet = 0x6d18fC4C3B258EA73bed8C5913A98ADbC1066B6C; string constant _name = "28"; string constant _symbol = "28"; uint8 constant _decimals = 18; uint256 internal constant _totalSupply = 28_000_000 * (10**18); uint256 public maxTxAmount = _totalSupply / 50; // 2% of the total supply uint256 public maxWalletBalance = _totalSupply / 50; // 2% of the total supply bool public takeFeeEnabled = true; bool private swapping; bool public swapEnabled = true; uint256 public swapTokensAtAmount = 1_000 * (10**18); uint256 private constant FEES_DIVISOR = 10**3; uint256 private totalFee; IPancakeV2Router public router; address public pair; mapping (address => uint256) internal _balances; mapping (address => mapping (address => uint256)) internal _allowances; mapping(address => bool) private automatedMarketMakerPairs; mapping (address => bool) internal _isExcludedFromFee; event UpdatePancakeswapRouter(address indexed newAddress, address indexed oldAddress); event ExcludeFromFees(address indexed account, bool isExcluded); event MarketingWalletUpdated(address indexed newMarketingWallet, address indexed oldMarketingWallet); event SwapTokensForETH(uint256 amountIn, address[] path); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); modifier zeroAddressCheck(address _theAddress) { require(_theAddress != address(0), "Address cannot be the zero address"); _; } constructor () { _balances[msg.sender] = _totalSupply; IPancakeV2Router _newPancakeRouter = IPancakeV2Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // update pair = IPancakeV2Factory(_newPancakeRouter.factory()).createPair(address(this), _newPancakeRouter.WETH()); router = _newPancakeRouter; _setAutomatedMarketMakerPair(address(pair), true); // set fees totalFee = 10; // 1% // exclude owner and this contract from fee _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _approve(owner(), address(router), ~uint256(0)); emit Transfer(address(0), owner(), _totalSupply); } receive() external payable { } function name() external pure override returns (string memory) { return _name; } function symbol() external pure override returns (string memory) { return _symbol; } function decimals() external pure override returns (uint8) { return _decimals; } function totalSupply() external pure override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) external override returns (bool){ _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) external view override returns (uint256){ return _allowances[owner][spender]; } function approve(address spender, uint256 amount) external override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool){ _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function _approve(address owner, address spender, uint256 amount) internal { require(owner != address(0), "BaseRfiToken: approve from the zero address"); require(spender != address(0), "BaseRfiToken: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _setAutomatedMarketMakerPair(address pair_, bool value) private { automatedMarketMakerPairs[pair_] = value; emit SetAutomatedMarketMakerPair(pair_, value); } function setExcludedFromFee(address account, bool value) external onlyOwner { _isExcludedFromFee[account] = value; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function setSwapEnabled(bool _enabled) external onlyOwner { swapEnabled = _enabled; } function updateSwapTokensAt(uint256 _swaptokens) external onlyOwner { swapTokensAtAmount = _swaptokens * (10**18); } function updateWalletMax(uint256 _walletMax) external onlyOwner { maxWalletBalance = _walletMax * (10**18); } function updateTransactionMax(uint256 _txMax) external onlyOwner { maxTxAmount = _txMax * (10**18); } function updateFees( uint256 newFee) external onlyOwner { require(newFee <= 100, "Total Fees cannot be greater than 10% (100)"); totalFee = newFee; } function updateMarketingWallet(address newWallet) external onlyOwner zeroAddressCheck(newWallet) { require(newWallet != marketingWallet, "The Marketing wallet is already this address"); emit MarketingWalletUpdated(newWallet, marketingWallet); marketingWallet = newWallet; } function updateTakeFeeEnabled(bool _value) external onlyOwner { takeFeeEnabled = _value; } function updateRouterAddress(address newAddress) external onlyOwner { require(newAddress != address(router), "The router already has that address"); emit UpdatePancakeswapRouter(newAddress, address(router)); router = IPancakeV2Router(newAddress); } function takeFee(address sender, uint256 amount) internal returns (uint256) { uint256 feeAmount = amount.mul(totalFee).div(FEES_DIVISOR); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); return amount.sub(feeAmount); } function _transfer(address sender, address recipient, uint256 amount) private { require(sender != address(0), "Token: transfer from the zero address"); require(recipient != address(0), "Token: transfer to the zero address"); require(sender != address(deadAddress), "Token: transfer from the burn address"); require(amount > 0, "Transfer amount must be greater than zero"); if ( sender != address(router) && !_isExcludedFromFee[recipient] && //no max for those excluded from fees !_isExcludedFromFee[sender] ) { require(amount <= maxTxAmount, "Transfer amount exceeds the Max Transaction Amount."); } if ( maxWalletBalance > 0 && !_isExcludedFromFee[recipient] && !_isExcludedFromFee[sender] && !automatedMarketMakerPairs[recipient] ) { uint256 recipientBalance = balanceOf(recipient); require(recipientBalance + amount <= maxWalletBalance, "New balance would exceed the maxWalletBalance"); } // Exchange tokens _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); // indicates whether or not fee should be deducted from the transfer bool _isTakeFee = takeFeeEnabled; // if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]) { _isTakeFee = false; } // transfer between wallets- no fees if(!automatedMarketMakerPairs[sender] && !automatedMarketMakerPairs[recipient]) { _isTakeFee = false; } _beforeTokenTransfer(sender); uint256 amountReceived = _isTakeFee ? takeFee(sender, amount) : amount; _balances[recipient] = _balances[recipient].add(amountReceived); emit Transfer(sender, recipient, amountReceived); } function _beforeTokenTransfer(address sender) private { uint256 contractTokenBalance = balanceOf(address(this)); // swap bool canSwap = contractTokenBalance >= swapTokensAtAmount; if (!swapping && canSwap && swapEnabled && !automatedMarketMakerPairs[sender]) { swapping = true; swapBack(); swapping = false; } } function swapBack() private { uint256 amountToSwap = balanceOf(address(this)); uint256 balanceBefore = address(this).balance; swapTokensForETH(amountToSwap); // make the swap uint256 amountETH = address(this).balance.sub(balanceBefore); //Send to addresses transferToAddress(payable(marketingWallet), amountETH); } 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] = router.WETH(); _approve(address(this), address(router), tokenAmount); // make the swap router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); emit SwapTokensForETH(tokenAmount, path); } function transferToAddress(address payable recipient, uint256 amount) private { require(recipient != address(0), "Cannot transfer the ETH to a zero address"); recipient.transfer(amount); } function removeStuckETH(address payable recipient, uint256 amount) external onlyOwner { require(recipient != address(0), "Cannot withdraw the ETH balance to a zero address"); recipient.transfer(amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newMarketingWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldMarketingWallet","type":"address"}],"name":"MarketingWalletUpdated","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":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdatePancakeswapRouter","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"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":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"removeStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IPancakeV2Router","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"takeFeeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":[{"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateRouterAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swaptokens","type":"uint256"}],"name":"updateSwapTokensAt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"updateTakeFeeEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_txMax","type":"uint256"}],"name":"updateTransactionMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_walletMax","type":"uint256"}],"name":"updateWalletMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600180546001600160a01b031990811661dead1790915560028054909116736d18fc4c3b258ea73bed8c5913a98adbc1066b6c1790556200005260326a17293b0a9e69fd9c00000062000568565b6003556200006d60326a17293b0a9e69fd9c00000062000568565b6004556005805462ff00ff191662010001179055683635c9adc5dea000006006553480156200009b57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350336000908152600a60209081526040918290206a17293b0a9e69fd9c0000009055815163c45a015560e01b81529151737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a015592600480840193829003018186803b1580156200014557600080fd5b505afa1580156200015a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000180919062000536565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620001c957600080fd5b505afa158015620001de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000204919062000536565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200024d57600080fd5b505af115801562000262573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000288919062000536565b600980546001600160a01b039283166001600160a01b03199182168117909255600880549385169390911692909217909155620002c7906001620003a7565b600a6007556001600d6000620002e56000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152600d909252902080549091166001179055620003516200033c6000546001600160a01b031690565b6008546001600160a01b0316600019620003fb565b600080546040516a17293b0a9e69fd9c00000081526001600160a01b0390911691907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3506200058b565b6001600160a01b0382166000818152600c6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0383166200046b5760405162461bcd60e51b815260206004820152602b60248201527f42617365526669546f6b656e3a20617070726f76652066726f6d20746865207a60448201526a65726f206164647265737360a81b60648201526084015b60405180910390fd5b6001600160a01b038216620004d55760405162461bcd60e51b815260206004820152602960248201527f42617365526669546f6b656e3a20617070726f766520746f20746865207a65726044820152686f206164647265737360b81b606482015260840162000462565b6001600160a01b038381166000818152600b602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000602082840312156200054957600080fd5b81516001600160a01b03811681146200056157600080fd5b9392505050565b6000826200058657634e487b7160e01b600052601260045260246000fd5b500490565b611d81806200059b6000396000f3fe6080604052600436106101f15760003560e01c80638c0b5e221161010d578063b225d4b7116100a0578063e01af92c1161006f578063e01af92c146105d3578063e2f45605146105f3578063e62d071714610609578063f2fde38b14610629578063f887ea401461064957600080fd5b8063b225d4b714610537578063bbde77c114610557578063dd62ed3e1461056d578063de5bfb97146105b357600080fd5b8063a457c2d7116100dc578063a457c2d7146104b7578063a8aa1b31146104d7578063a9059cbb146104f7578063aacebbe31461051757600080fd5b80638c0b5e22146104635780638da5cb5b1461047957806391053d941461049757806395d89b411461021f57600080fd5b80635342acb411610185578063715018a611610154578063715018a6146103d657806375f0a874146103eb57806378dacee1146104235780637d8dbe241461044357600080fd5b80635342acb4146103275780636612e66f146103605780636ddd17131461038057806370a08231146103a057600080fd5b806323b872dd116101c157806323b872dd146102b1578063313ce567146102d157806339509351146102ed578063450dde461461030d57600080fd5b8062e6be7b146101fd57806306fdde031461021f578063095ea7b31461025957806318160ddd1461028957600080fd5b366101f857005b600080fd5b34801561020957600080fd5b5061021d6102183660046119de565b610669565b005b34801561022b57600080fd5b506040805180820182526002815261064760f31b602082015290516102509190611b6b565b60405180910390f35b34801561026557600080fd5b50610279610274366004611a18565b610763565b6040519015158152602001610250565b34801561029557600080fd5b506a17293b0a9e69fd9c0000005b604051908152602001610250565b3480156102bd57600080fd5b506102796102cc366004611a7d565b61077a565b3480156102dd57600080fd5b5060405160128152602001610250565b3480156102f957600080fd5b50610279610308366004611a18565b6107e3565b34801561031957600080fd5b506005546102799060ff1681565b34801561033357600080fd5b506102796103423660046119de565b6001600160a01b03166000908152600d602052604090205460ff1690565b34801561036c57600080fd5b5061021d61037b366004611abe565b610819565b34801561038c57600080fd5b506005546102799062010000900460ff1681565b3480156103ac57600080fd5b506102a36103bb3660046119de565b6001600160a01b03166000908152600a602052604090205490565b3480156103e257600080fd5b5061021d61086e565b3480156103f757600080fd5b5060025461040b906001600160a01b031681565b6040516001600160a01b039091168152602001610250565b34801561042f57600080fd5b5061021d61043e366004611b0e565b6108e2565b34801561044f57600080fd5b5061021d61045e366004611b0e565b610976565b34801561046f57600080fd5b506102a360035481565b34801561048557600080fd5b506000546001600160a01b031661040b565b3480156104a357600080fd5b5061021d6104b2366004611b0e565b6109b8565b3480156104c357600080fd5b506102796104d2366004611a18565b6109fa565b3480156104e357600080fd5b5060095461040b906001600160a01b031681565b34801561050357600080fd5b50610279610512366004611a18565b610a49565b34801561052357600080fd5b5061021d6105323660046119de565b610a56565b34801561054357600080fd5b5061021d610552366004611b0e565b610bb3565b34801561056357600080fd5b506102a360045481565b34801561057957600080fd5b506102a3610588366004611a44565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b3480156105bf57600080fd5b5061021d6105ce366004611af3565b610bf5565b3480156105df57600080fd5b5061021d6105ee366004611af3565b610c32565b3480156105ff57600080fd5b506102a360065481565b34801561061557600080fd5b5061021d610624366004611a18565b610c78565b34801561063557600080fd5b5061021d6106443660046119de565b610d4d565b34801561065557600080fd5b5060085461040b906001600160a01b031681565b6000546001600160a01b0316331461069c5760405162461bcd60e51b815260040161069390611bc0565b60405180910390fd5b6008546001600160a01b03828116911614156107065760405162461bcd60e51b815260206004820152602360248201527f54686520726f7574657220616c7265616479206861732074686174206164647260448201526265737360e81b6064820152608401610693565b6008546040516001600160a01b03918216918316907fc4382ee892d64a85fffb798adefd9dd8fcdeb2b1ababe74b46cdae7fe88da4e090600090a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6000610770338484610e37565b5060015b92915050565b6000610787848484610f6a565b6107d984336107d485604051806060016040528060288152602001611cff602891396001600160a01b038a166000908152600b602090815260408083203384529091529020549190611477565b610e37565b5060019392505050565b336000818152600b602090815260408083206001600160a01b038716845290915281205490916107709185906107d490866114ae565b6000546001600160a01b031633146108435760405162461bcd60e51b815260040161069390611bc0565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146108985760405162461bcd60e51b815260040161069390611bc0565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461090c5760405162461bcd60e51b815260040161069390611bc0565b60648111156109715760405162461bcd60e51b815260206004820152602b60248201527f546f74616c20466565732063616e6e6f7420626520677265617465722074686160448201526a6e2031302520283130302960a81b6064820152608401610693565b600755565b6000546001600160a01b031633146109a05760405162461bcd60e51b815260040161069390611bc0565b6109b281670de0b6b3a7640000611c84565b60035550565b6000546001600160a01b031633146109e25760405162461bcd60e51b815260040161069390611bc0565b6109f481670de0b6b3a7640000611c84565b60045550565b600061077033846107d485604051806060016040528060258152602001611d2760259139336000908152600b602090815260408083206001600160a01b038d1684529091529020549190611477565b6000610770338484610f6a565b6000546001600160a01b03163314610a805760405162461bcd60e51b815260040161069390611bc0565b806001600160a01b038116610ae25760405162461bcd60e51b815260206004820152602260248201527f416464726573732063616e6e6f7420626520746865207a65726f206164647265604482015261737360f01b6064820152608401610693565b6002546001600160a01b0383811691161415610b555760405162461bcd60e51b815260206004820152602c60248201527f546865204d61726b6574696e672077616c6c657420697320616c72656164792060448201526b74686973206164647265737360a01b6064820152608401610693565b6002546040516001600160a01b03918216918416907f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc6790600090a350600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610bdd5760405162461bcd60e51b815260040161069390611bc0565b610bef81670de0b6b3a7640000611c84565b60065550565b6000546001600160a01b03163314610c1f5760405162461bcd60e51b815260040161069390611bc0565b6005805460ff1916911515919091179055565b6000546001600160a01b03163314610c5c5760405162461bcd60e51b815260040161069390611bc0565b60058054911515620100000262ff000019909216919091179055565b6000546001600160a01b03163314610ca25760405162461bcd60e51b815260040161069390611bc0565b6001600160a01b038216610d125760405162461bcd60e51b815260206004820152603160248201527f43616e6e6f7420776974686472617720746865204554482062616c616e636520604482015270746f2061207a65726f206164647265737360781b6064820152608401610693565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610d48573d6000803e3d6000fd5b505050565b6000546001600160a01b03163314610d775760405162461bcd60e51b815260040161069390611bc0565b6001600160a01b038116610ddc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610693565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610ea15760405162461bcd60e51b815260206004820152602b60248201527f42617365526669546f6b656e3a20617070726f76652066726f6d20746865207a60448201526a65726f206164647265737360a81b6064820152608401610693565b6001600160a01b038216610f095760405162461bcd60e51b815260206004820152602960248201527f42617365526669546f6b656e3a20617070726f766520746f20746865207a65726044820152686f206164647265737360b81b6064820152608401610693565b6001600160a01b038381166000818152600b602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610fce5760405162461bcd60e51b815260206004820152602560248201527f546f6b656e3a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610693565b6001600160a01b0382166110305760405162461bcd60e51b815260206004820152602360248201527f546f6b656e3a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610693565b6001546001600160a01b038481169116141561109c5760405162461bcd60e51b815260206004820152602560248201527f546f6b656e3a207472616e736665722066726f6d20746865206275726e206164604482015264647265737360d81b6064820152608401610693565b600081116110fe5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610693565b6008546001600160a01b0384811691161480159061113557506001600160a01b0382166000908152600d602052604090205460ff16155b801561115a57506001600160a01b0383166000908152600d602052604090205460ff16155b156111cd576003548111156111cd5760405162461bcd60e51b815260206004820152603360248201527f5472616e7366657220616d6f756e74206578636565647320746865204d6178206044820152722a3930b739b0b1ba34b7b71020b6b7bab73a1760691b6064820152608401610693565b60006004541180156111f857506001600160a01b0382166000908152600d602052604090205460ff16155b801561121d57506001600160a01b0383166000908152600d602052604090205460ff16155b801561124257506001600160a01b0382166000908152600c602052604090205460ff16155b156112d3576001600160a01b0382166000908152600a602052604090205460045461126d8383611c4a565b11156112d15760405162461bcd60e51b815260206004820152602d60248201527f4e65772062616c616e636520776f756c642065786365656420746865206d617860448201526c57616c6c657442616c616e636560981b6064820152608401610693565b505b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600a9091529190912054611325918390611477565b6001600160a01b0384166000908152600a6020908152604080832093909355600554600d9091529190205460ff91821691168061137a57506001600160a01b0383166000908152600d602052604090205460ff165b15611383575060005b6001600160a01b0384166000908152600c602052604090205460ff161580156113c557506001600160a01b0383166000908152600c602052604090205460ff16155b156113ce575060005b6113d784611514565b6000816113e457826113ee565b6113ee85846115a6565b6001600160a01b0385166000908152600a602052604090205490915061141490826114ae565b6001600160a01b038086166000818152600a602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114689085815260200190565b60405180910390a35050505050565b6000818484111561149b5760405162461bcd60e51b81526004016106939190611b6b565b506114a68385611ca3565b949350505050565b6000806114bb8385611c4a565b90508381101561150d5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610693565b9392505050565b306000908152600a60205260409020546006546005549082101590610100900460ff161580156115415750805b8015611555575060055462010000900460ff165b801561157a57506001600160a01b0383166000908152600c602052604090205460ff16155b15610d48576005805461ff00191661010017905561159661164a565b6005805461ff0019169055505050565b6000806115ca6103e86115c46007548661168990919063ffffffff16565b90611708565b306000908152600a60205260409020549091506115e790826114ae565b306000818152600a6020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116389085815260200190565b60405180910390a36114a68382611763565b306000908152600a602052604090205447611664826117bf565b60006116704783611763565b600254909150610d48906001600160a01b031682611961565b60008261169857506000610774565b60006116a48385611c84565b9050826116b18583611c62565b1461150d5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610693565b60008082116117595760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f0000000000006044820152606401610693565b61150d8284611c62565b6000828211156117b55760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006044820152606401610693565b61150d8284611ca3565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106117f4576117f4611cd0565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561184857600080fd5b505afa15801561185c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188091906119fb565b8160018151811061189357611893611cd0565b6001600160a01b0392831660209182029290920101526008546118b99130911684610e37565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac947906118f2908590600090869030904290600401611c0e565b600060405180830381600087803b15801561190c57600080fd5b505af1158015611920573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611955929190611bf5565b60405180910390a15050565b6001600160a01b038216610d125760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f74207472616e73666572207468652045544820746f2061207a65726044820152686f206164647265737360b81b6064820152608401610693565b803580151581146119d957600080fd5b919050565b6000602082840312156119f057600080fd5b813561150d81611ce6565b600060208284031215611a0d57600080fd5b815161150d81611ce6565b60008060408385031215611a2b57600080fd5b8235611a3681611ce6565b946020939093013593505050565b60008060408385031215611a5757600080fd5b8235611a6281611ce6565b91506020830135611a7281611ce6565b809150509250929050565b600080600060608486031215611a9257600080fd5b8335611a9d81611ce6565b92506020840135611aad81611ce6565b929592945050506040919091013590565b60008060408385031215611ad157600080fd5b8235611adc81611ce6565b9150611aea602084016119c9565b90509250929050565b600060208284031215611b0557600080fd5b61150d826119c9565b600060208284031215611b2057600080fd5b5035919050565b600081518084526020808501945080840160005b83811015611b605781516001600160a01b031687529582019590820190600101611b3b565b509495945050505050565b600060208083528351808285015260005b81811015611b9857858101830151858201604001528201611b7c565b81811115611baa576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8281526040602082015260006114a66040830184611b27565b85815284602082015260a060408201526000611c2d60a0830186611b27565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115611c5d57611c5d611cba565b500190565b600082611c7f57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611c9e57611c9e611cba565b500290565b600082821015611cb557611cb5611cba565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114611cfb57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122012182b850c1e617cda02368955136867501ed679ea95e84ebf96afa8c6871ec964736f6c63430008060033
Deployed Bytecode
0x6080604052600436106101f15760003560e01c80638c0b5e221161010d578063b225d4b7116100a0578063e01af92c1161006f578063e01af92c146105d3578063e2f45605146105f3578063e62d071714610609578063f2fde38b14610629578063f887ea401461064957600080fd5b8063b225d4b714610537578063bbde77c114610557578063dd62ed3e1461056d578063de5bfb97146105b357600080fd5b8063a457c2d7116100dc578063a457c2d7146104b7578063a8aa1b31146104d7578063a9059cbb146104f7578063aacebbe31461051757600080fd5b80638c0b5e22146104635780638da5cb5b1461047957806391053d941461049757806395d89b411461021f57600080fd5b80635342acb411610185578063715018a611610154578063715018a6146103d657806375f0a874146103eb57806378dacee1146104235780637d8dbe241461044357600080fd5b80635342acb4146103275780636612e66f146103605780636ddd17131461038057806370a08231146103a057600080fd5b806323b872dd116101c157806323b872dd146102b1578063313ce567146102d157806339509351146102ed578063450dde461461030d57600080fd5b8062e6be7b146101fd57806306fdde031461021f578063095ea7b31461025957806318160ddd1461028957600080fd5b366101f857005b600080fd5b34801561020957600080fd5b5061021d6102183660046119de565b610669565b005b34801561022b57600080fd5b506040805180820182526002815261064760f31b602082015290516102509190611b6b565b60405180910390f35b34801561026557600080fd5b50610279610274366004611a18565b610763565b6040519015158152602001610250565b34801561029557600080fd5b506a17293b0a9e69fd9c0000005b604051908152602001610250565b3480156102bd57600080fd5b506102796102cc366004611a7d565b61077a565b3480156102dd57600080fd5b5060405160128152602001610250565b3480156102f957600080fd5b50610279610308366004611a18565b6107e3565b34801561031957600080fd5b506005546102799060ff1681565b34801561033357600080fd5b506102796103423660046119de565b6001600160a01b03166000908152600d602052604090205460ff1690565b34801561036c57600080fd5b5061021d61037b366004611abe565b610819565b34801561038c57600080fd5b506005546102799062010000900460ff1681565b3480156103ac57600080fd5b506102a36103bb3660046119de565b6001600160a01b03166000908152600a602052604090205490565b3480156103e257600080fd5b5061021d61086e565b3480156103f757600080fd5b5060025461040b906001600160a01b031681565b6040516001600160a01b039091168152602001610250565b34801561042f57600080fd5b5061021d61043e366004611b0e565b6108e2565b34801561044f57600080fd5b5061021d61045e366004611b0e565b610976565b34801561046f57600080fd5b506102a360035481565b34801561048557600080fd5b506000546001600160a01b031661040b565b3480156104a357600080fd5b5061021d6104b2366004611b0e565b6109b8565b3480156104c357600080fd5b506102796104d2366004611a18565b6109fa565b3480156104e357600080fd5b5060095461040b906001600160a01b031681565b34801561050357600080fd5b50610279610512366004611a18565b610a49565b34801561052357600080fd5b5061021d6105323660046119de565b610a56565b34801561054357600080fd5b5061021d610552366004611b0e565b610bb3565b34801561056357600080fd5b506102a360045481565b34801561057957600080fd5b506102a3610588366004611a44565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b3480156105bf57600080fd5b5061021d6105ce366004611af3565b610bf5565b3480156105df57600080fd5b5061021d6105ee366004611af3565b610c32565b3480156105ff57600080fd5b506102a360065481565b34801561061557600080fd5b5061021d610624366004611a18565b610c78565b34801561063557600080fd5b5061021d6106443660046119de565b610d4d565b34801561065557600080fd5b5060085461040b906001600160a01b031681565b6000546001600160a01b0316331461069c5760405162461bcd60e51b815260040161069390611bc0565b60405180910390fd5b6008546001600160a01b03828116911614156107065760405162461bcd60e51b815260206004820152602360248201527f54686520726f7574657220616c7265616479206861732074686174206164647260448201526265737360e81b6064820152608401610693565b6008546040516001600160a01b03918216918316907fc4382ee892d64a85fffb798adefd9dd8fcdeb2b1ababe74b46cdae7fe88da4e090600090a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6000610770338484610e37565b5060015b92915050565b6000610787848484610f6a565b6107d984336107d485604051806060016040528060288152602001611cff602891396001600160a01b038a166000908152600b602090815260408083203384529091529020549190611477565b610e37565b5060019392505050565b336000818152600b602090815260408083206001600160a01b038716845290915281205490916107709185906107d490866114ae565b6000546001600160a01b031633146108435760405162461bcd60e51b815260040161069390611bc0565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146108985760405162461bcd60e51b815260040161069390611bc0565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461090c5760405162461bcd60e51b815260040161069390611bc0565b60648111156109715760405162461bcd60e51b815260206004820152602b60248201527f546f74616c20466565732063616e6e6f7420626520677265617465722074686160448201526a6e2031302520283130302960a81b6064820152608401610693565b600755565b6000546001600160a01b031633146109a05760405162461bcd60e51b815260040161069390611bc0565b6109b281670de0b6b3a7640000611c84565b60035550565b6000546001600160a01b031633146109e25760405162461bcd60e51b815260040161069390611bc0565b6109f481670de0b6b3a7640000611c84565b60045550565b600061077033846107d485604051806060016040528060258152602001611d2760259139336000908152600b602090815260408083206001600160a01b038d1684529091529020549190611477565b6000610770338484610f6a565b6000546001600160a01b03163314610a805760405162461bcd60e51b815260040161069390611bc0565b806001600160a01b038116610ae25760405162461bcd60e51b815260206004820152602260248201527f416464726573732063616e6e6f7420626520746865207a65726f206164647265604482015261737360f01b6064820152608401610693565b6002546001600160a01b0383811691161415610b555760405162461bcd60e51b815260206004820152602c60248201527f546865204d61726b6574696e672077616c6c657420697320616c72656164792060448201526b74686973206164647265737360a01b6064820152608401610693565b6002546040516001600160a01b03918216918416907f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc6790600090a350600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610bdd5760405162461bcd60e51b815260040161069390611bc0565b610bef81670de0b6b3a7640000611c84565b60065550565b6000546001600160a01b03163314610c1f5760405162461bcd60e51b815260040161069390611bc0565b6005805460ff1916911515919091179055565b6000546001600160a01b03163314610c5c5760405162461bcd60e51b815260040161069390611bc0565b60058054911515620100000262ff000019909216919091179055565b6000546001600160a01b03163314610ca25760405162461bcd60e51b815260040161069390611bc0565b6001600160a01b038216610d125760405162461bcd60e51b815260206004820152603160248201527f43616e6e6f7420776974686472617720746865204554482062616c616e636520604482015270746f2061207a65726f206164647265737360781b6064820152608401610693565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610d48573d6000803e3d6000fd5b505050565b6000546001600160a01b03163314610d775760405162461bcd60e51b815260040161069390611bc0565b6001600160a01b038116610ddc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610693565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610ea15760405162461bcd60e51b815260206004820152602b60248201527f42617365526669546f6b656e3a20617070726f76652066726f6d20746865207a60448201526a65726f206164647265737360a81b6064820152608401610693565b6001600160a01b038216610f095760405162461bcd60e51b815260206004820152602960248201527f42617365526669546f6b656e3a20617070726f766520746f20746865207a65726044820152686f206164647265737360b81b6064820152608401610693565b6001600160a01b038381166000818152600b602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610fce5760405162461bcd60e51b815260206004820152602560248201527f546f6b656e3a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610693565b6001600160a01b0382166110305760405162461bcd60e51b815260206004820152602360248201527f546f6b656e3a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610693565b6001546001600160a01b038481169116141561109c5760405162461bcd60e51b815260206004820152602560248201527f546f6b656e3a207472616e736665722066726f6d20746865206275726e206164604482015264647265737360d81b6064820152608401610693565b600081116110fe5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610693565b6008546001600160a01b0384811691161480159061113557506001600160a01b0382166000908152600d602052604090205460ff16155b801561115a57506001600160a01b0383166000908152600d602052604090205460ff16155b156111cd576003548111156111cd5760405162461bcd60e51b815260206004820152603360248201527f5472616e7366657220616d6f756e74206578636565647320746865204d6178206044820152722a3930b739b0b1ba34b7b71020b6b7bab73a1760691b6064820152608401610693565b60006004541180156111f857506001600160a01b0382166000908152600d602052604090205460ff16155b801561121d57506001600160a01b0383166000908152600d602052604090205460ff16155b801561124257506001600160a01b0382166000908152600c602052604090205460ff16155b156112d3576001600160a01b0382166000908152600a602052604090205460045461126d8383611c4a565b11156112d15760405162461bcd60e51b815260206004820152602d60248201527f4e65772062616c616e636520776f756c642065786365656420746865206d617860448201526c57616c6c657442616c616e636560981b6064820152608401610693565b505b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600a9091529190912054611325918390611477565b6001600160a01b0384166000908152600a6020908152604080832093909355600554600d9091529190205460ff91821691168061137a57506001600160a01b0383166000908152600d602052604090205460ff165b15611383575060005b6001600160a01b0384166000908152600c602052604090205460ff161580156113c557506001600160a01b0383166000908152600c602052604090205460ff16155b156113ce575060005b6113d784611514565b6000816113e457826113ee565b6113ee85846115a6565b6001600160a01b0385166000908152600a602052604090205490915061141490826114ae565b6001600160a01b038086166000818152600a602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114689085815260200190565b60405180910390a35050505050565b6000818484111561149b5760405162461bcd60e51b81526004016106939190611b6b565b506114a68385611ca3565b949350505050565b6000806114bb8385611c4a565b90508381101561150d5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610693565b9392505050565b306000908152600a60205260409020546006546005549082101590610100900460ff161580156115415750805b8015611555575060055462010000900460ff165b801561157a57506001600160a01b0383166000908152600c602052604090205460ff16155b15610d48576005805461ff00191661010017905561159661164a565b6005805461ff0019169055505050565b6000806115ca6103e86115c46007548661168990919063ffffffff16565b90611708565b306000908152600a60205260409020549091506115e790826114ae565b306000818152600a6020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116389085815260200190565b60405180910390a36114a68382611763565b306000908152600a602052604090205447611664826117bf565b60006116704783611763565b600254909150610d48906001600160a01b031682611961565b60008261169857506000610774565b60006116a48385611c84565b9050826116b18583611c62565b1461150d5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610693565b60008082116117595760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f0000000000006044820152606401610693565b61150d8284611c62565b6000828211156117b55760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f7700006044820152606401610693565b61150d8284611ca3565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106117f4576117f4611cd0565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561184857600080fd5b505afa15801561185c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188091906119fb565b8160018151811061189357611893611cd0565b6001600160a01b0392831660209182029290920101526008546118b99130911684610e37565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac947906118f2908590600090869030904290600401611c0e565b600060405180830381600087803b15801561190c57600080fd5b505af1158015611920573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611955929190611bf5565b60405180910390a15050565b6001600160a01b038216610d125760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f74207472616e73666572207468652045544820746f2061207a65726044820152686f206164647265737360b81b6064820152608401610693565b803580151581146119d957600080fd5b919050565b6000602082840312156119f057600080fd5b813561150d81611ce6565b600060208284031215611a0d57600080fd5b815161150d81611ce6565b60008060408385031215611a2b57600080fd5b8235611a3681611ce6565b946020939093013593505050565b60008060408385031215611a5757600080fd5b8235611a6281611ce6565b91506020830135611a7281611ce6565b809150509250929050565b600080600060608486031215611a9257600080fd5b8335611a9d81611ce6565b92506020840135611aad81611ce6565b929592945050506040919091013590565b60008060408385031215611ad157600080fd5b8235611adc81611ce6565b9150611aea602084016119c9565b90509250929050565b600060208284031215611b0557600080fd5b61150d826119c9565b600060208284031215611b2057600080fd5b5035919050565b600081518084526020808501945080840160005b83811015611b605781516001600160a01b031687529582019590820190600101611b3b565b509495945050505050565b600060208083528351808285015260005b81811015611b9857858101830151858201604001528201611b7c565b81811115611baa576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8281526040602082015260006114a66040830184611b27565b85815284602082015260a060408201526000611c2d60a0830186611b27565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115611c5d57611c5d611cba565b500190565b600082611c7f57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611c9e57611c9e611cba565b500290565b600082821015611cb557611cb5611cba565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114611cfb57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122012182b850c1e617cda02368955136867501ed679ea95e84ebf96afa8c6871ec964736f6c63430008060033
Deployed Bytecode Sourcemap
9502:11286:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16076:293;;;;;;;;;;-1:-1:-1;16076:293:0;;;;;:::i;:::-;;:::i;:::-;;12149:94;;;;;;;;;;-1:-1:-1;12230:5:0;;;;;;;;;;;-1:-1:-1;;;12230:5:0;;;;12149:94;;;;12230:5;12149:94;:::i;:::-;;;;;;;;13060:167;;;;;;;;;;-1:-1:-1;13060:167:0;;;;;:::i;:::-;;:::i;:::-;;;3718:14:1;;3711:22;3693:41;;3681:2;3666:18;13060:167:0;3648:92:1;12459:102:0;;;;;;;;;;-1:-1:-1;9952:21:0;12459:102;;;12707:25:1;;;12695:2;12680:18;12459:102:0;12662:76:1;13243:318:0;;;;;;;;;;-1:-1:-1;13243:318:0;;;;;:::i;:::-;;:::i;12357:94::-;;;;;;;;;;-1:-1:-1;12357:94:0;;9896:2;13809:36:1;;13797:2;13782:18;12357:94:0;13764:87:1;13583:218:0;;;;;;;;;;-1:-1:-1;13583:218:0;;;;;:::i;:::-;;:::i;10153:33::-;;;;;;;;;;-1:-1:-1;10153:33:0;;;;;;;;14805:125;;;;;;;;;;-1:-1:-1;14805:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;14894:27:0;14869:4;14894:27;;;:18;:27;;;;;;;;;14805:125;14659:132;;;;;;;;;;-1:-1:-1;14659:132:0;;;;;:::i;:::-;;:::i;10227:30::-;;;;;;;;;;-1:-1:-1;10227:30:0;;;;;;;;;;;12569:121;;;;;;;;;;-1:-1:-1;12569:121:0;;;;;:::i;:::-;-1:-1:-1;;;;;12663:18:0;12635:7;12663:18;;;:9;:18;;;;;;;12569:121;7512:148;;;;;;;;;;;;;:::i;9709:75::-;;;;;;;;;;-1:-1:-1;9709:75:0;;;;-1:-1:-1;;;;;9709:75:0;;;;;;-1:-1:-1;;;;;3509:32:1;;;3491:51;;3479:2;3464:18;9709:75:0;3446:102:1;15452:172:0;;;;;;;;;;-1:-1:-1;15452:172:0;;;;;:::i;:::-;;:::i;15329:115::-;;;;;;;;;;-1:-1:-1;15329:115:0;;;;;:::i;:::-;;:::i;9984:46::-;;;;;;;;;;;;;;;;7287:79;;;;;;;;;;-1:-1:-1;7325:7:0;7352:6;-1:-1:-1;;;;;7352:6:0;7287:79;;15194:123;;;;;;;;;;-1:-1:-1;15194:123:0;;;;;:::i;:::-;;:::i;13813:269::-;;;;;;;;;;-1:-1:-1;13813:269:0;;;;;:::i;:::-;;:::i;10457:19::-;;;;;;;;;;-1:-1:-1;10457:19:0;;;;-1:-1:-1;;;;;10457:19:0;;;12712:172;;;;;;;;;;-1:-1:-1;12712:172:0;;;;;:::i;:::-;;:::i;15637:315::-;;;;;;;;;;-1:-1:-1;15637:315:0;;;;;:::i;:::-;;:::i;15052:130::-;;;;;;;;;;-1:-1:-1;15052:130:0;;;;;:::i;:::-;;:::i;10063:51::-;;;;;;;;;;;;;;;;12900:148;;;;;;;;;;-1:-1:-1;12900:148:0;;;;;:::i;:::-;-1:-1:-1;;;;;13009:18:0;;;12983:7;13009:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;12900:148;15960:104;;;;;;;;;;-1:-1:-1;15960:104:0;;;;;:::i;:::-;;:::i;14940:100::-;;;;;;;;;;-1:-1:-1;14940:100:0;;;;;:::i;:::-;;:::i;10264:52::-;;;;;;;;;;;;;;;;20552:227;;;;;;;;;;-1:-1:-1;20552:227:0;;;;;:::i;:::-;;:::i;7668:244::-;;;;;;;;;;-1:-1:-1;7668:244:0;;;;;:::i;:::-;;:::i;10420:30::-;;;;;;;;;;-1:-1:-1;10420:30:0;;;;-1:-1:-1;;;;;10420:30:0;;;16076:293;7421:6;;-1:-1:-1;;;;;7421:6:0;3613:10;7421:22;7413:67;;;;-1:-1:-1;;;7413:67:0;;;;;;;:::i;:::-;;;;;;;;;16185:6:::1;::::0;-1:-1:-1;;;;;16163:29:0;;::::1;16185:6:::0;::::1;16163:29;;16155:77;;;::::0;-1:-1:-1;;;16155:77:0;;6780:2:1;16155:77:0::1;::::0;::::1;6762:21:1::0;6819:2;6799:18;;;6792:30;6858:34;6838:18;;;6831:62;-1:-1:-1;;;6909:18:1;;;6902:33;6952:19;;16155:77:0::1;6752:225:1::0;16155:77:0::1;16292:6;::::0;16248:52:::1;::::0;-1:-1:-1;;;;;16292:6:0;;::::1;::::0;16248:52;::::1;::::0;::::1;::::0;16292:6:::1;::::0;16248:52:::1;16321:6;:37:::0;;-1:-1:-1;;;;;;16321:37:0::1;-1:-1:-1::0;;;;;16321:37:0;;;::::1;::::0;;;::::1;::::0;;16076:293::o;13060:167::-;13137:4;13154:39;3613:10;13177:7;13186:6;13154:8;:39::i;:::-;-1:-1:-1;13211:4:0;13060:167;;;;;:::o;13243:318::-;13343:4;13359:36;13369:6;13377:9;13388:6;13359:9;:36::i;:::-;13406:121;13415:6;3613:10;13437:89;13475:6;13437:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13437:19:0;;;;;;:11;:19;;;;;;;;3613:10;13437:33;;;;;;;;;;:37;:89::i;:::-;13406:8;:121::i;:::-;-1:-1:-1;13545:4:0;13243:318;;;;;:::o;13583:218::-;3613:10;13671:4;13720:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13720:34:0;;;;;;;;;;13671:4;;13688:83;;13711:7;;13720:50;;13759:10;13720:38;:50::i;14659:132::-;7421:6;;-1:-1:-1;;;;;7421:6:0;3613:10;7421:22;7413:67;;;;-1:-1:-1;;;7413:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14747:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;14747:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14659:132::o;7512:148::-;7421:6;;-1:-1:-1;;;;;7421:6:0;3613:10;7421:22;7413:67;;;;-1:-1:-1;;;7413:67:0;;;;;;;:::i;:::-;7619:1:::1;7603:6:::0;;7582:40:::1;::::0;-1:-1:-1;;;;;7603:6:0;;::::1;::::0;7582:40:::1;::::0;7619:1;;7582:40:::1;7650:1;7633:19:::0;;-1:-1:-1;;;;;;7633:19:0::1;::::0;;7512:148::o;15452:172::-;7421:6;;-1:-1:-1;;;;;7421:6:0;3613:10;7421:22;7413:67;;;;-1:-1:-1;;;7413:67:0;;;;;;;:::i;:::-;15537:3:::1;15527:6;:13;;15519:69;;;::::0;-1:-1:-1;;;15519:69:0;;8705:2:1;15519:69:0::1;::::0;::::1;8687:21:1::0;8744:2;8724:18;;;8717:30;8783:34;8763:18;;;8756:62;-1:-1:-1;;;8834:18:1;;;8827:41;8885:19;;15519:69:0::1;8677:233:1::0;15519:69:0::1;15599:8;:17:::0;15452:172::o;15329:115::-;7421:6;;-1:-1:-1;;;;;7421:6:0;3613:10;7421:22;7413:67;;;;-1:-1:-1;;;7413:67:0;;;;;;;:::i;:::-;15419:17:::1;:6:::0;15429::::1;15419:17;:::i;:::-;15405:11;:31:::0;-1:-1:-1;15329:115:0:o;15194:123::-;7421:6;;-1:-1:-1;;;;;7421:6:0;3613:10;7421:22;7413:67;;;;-1:-1:-1;;;7413:67:0;;;;;;;:::i;:::-;15288:21:::1;:10:::0;15302:6:::1;15288:21;:::i;:::-;15269:16;:40:::0;-1:-1:-1;15194:123:0:o;13813:269::-;13906:4;13923:129;3613:10;13946:7;13955:96;13994:15;13955:96;;;;;;;;;;;;;;;;;3613:10;13955:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13955:34:0;;;;;;;;;;;;:38;:96::i;12712:172::-;12792:4;12808:42;3613:10;12832:9;12843:6;12808:9;:42::i;15637:315::-;7421:6;;-1:-1:-1;;;;;7421:6:0;3613:10;7421:22;7413:67;;;;-1:-1:-1;;;7413:67:0;;;;;;;:::i;:::-;15723:9;-1:-1:-1;;;;;11237:25:0;::::1;11229:72;;;::::0;-1:-1:-1;;;11229:72:0;;7543:2:1;11229:72:0::1;::::0;::::1;7525:21:1::0;7582:2;7562:18;;;7555:30;7621:34;7601:18;;;7594:62;-1:-1:-1;;;7672:18:1;;;7665:32;7714:19;;11229:72:0::1;7515:224:1::0;11229:72:0::1;15766:15:::2;::::0;-1:-1:-1;;;;;15753:28:0;;::::2;15766:15:::0;::::2;15753:28;;15745:85;;;::::0;-1:-1:-1;;;15745:85:0;;11530:2:1;15745:85:0::2;::::0;::::2;11512:21:1::0;11569:2;11549:18;;;11542:30;11608:34;11588:18;;;11581:62;-1:-1:-1;;;11659:18:1;;;11652:42;11711:19;;15745:85:0::2;11502:234:1::0;15745:85:0::2;15880:15;::::0;15846:50:::2;::::0;-1:-1:-1;;;;;15880:15:0;;::::2;::::0;15846:50;::::2;::::0;::::2;::::0;15880:15:::2;::::0;15846:50:::2;-1:-1:-1::0;15917:15:0::2;:27:::0;;-1:-1:-1;;;;;;15917:27:0::2;-1:-1:-1::0;;;;;15917:27:0;;;::::2;::::0;;;::::2;::::0;;15637:315::o;15052:130::-;7421:6;;-1:-1:-1;;;;;7421:6:0;3613:10;7421:22;7413:67;;;;-1:-1:-1;;;7413:67:0;;;;;;;:::i;:::-;15152:22:::1;:11:::0;15167:6:::1;15152:22;:::i;:::-;15131:18;:43:::0;-1:-1:-1;15052:130:0:o;15960:104::-;7421:6;;-1:-1:-1;;;;;7421:6:0;3613:10;7421:22;7413:67;;;;-1:-1:-1;;;7413:67:0;;;;;;;:::i;:::-;16033:14:::1;:23:::0;;-1:-1:-1;;16033:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15960:104::o;14940:100::-;7421:6;;-1:-1:-1;;;;;7421:6:0;3613:10;7421:22;7413:67;;;;-1:-1:-1;;;7413:67:0;;;;;;;:::i;:::-;15009:11:::1;:23:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;15009:23:0;;::::1;::::0;;;::::1;::::0;;14940:100::o;20552:227::-;7421:6;;-1:-1:-1;;;;;7421:6:0;3613:10;7421:22;7413:67;;;;-1:-1:-1;;;7413:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20657:23:0;::::1;20649:85;;;::::0;-1:-1:-1;;;20649:85:0;;5599:2:1;20649:85:0::1;::::0;::::1;5581:21:1::0;5638:2;5618:18;;;5611:30;5677:34;5657:18;;;5650:62;-1:-1:-1;;;5728:18:1;;;5721:47;5785:19;;20649:85:0::1;5571:239:1::0;20649:85:0::1;20745:26;::::0;-1:-1:-1;;;;;20745:18:0;::::1;::::0;:26;::::1;;;::::0;20764:6;;20745:26:::1;::::0;;;20764:6;20745:18;:26;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;20552:227:::0;;:::o;7668:244::-;7421:6;;-1:-1:-1;;;;;7421:6:0;3613:10;7421:22;7413:67;;;;-1:-1:-1;;;7413:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7757:22:0;::::1;7749:73;;;::::0;-1:-1:-1;;;7749:73:0;;6017:2:1;7749:73:0::1;::::0;::::1;5999:21:1::0;6056:2;6036:18;;;6029:30;6095:34;6075:18;;;6068:62;-1:-1:-1;;;6146:18:1;;;6139:36;6192:19;;7749:73:0::1;5989:228:1::0;7749:73:0::1;7859:6;::::0;;7838:38:::1;::::0;-1:-1:-1;;;;;7838:38:0;;::::1;::::0;7859:6;::::1;::::0;7838:38:::1;::::0;::::1;7887:6;:17:::0;;-1:-1:-1;;;;;;7887:17:0::1;-1:-1:-1::0;;;;;7887:17:0;;;::::1;::::0;;;::::1;::::0;;7668:244::o;14094:352::-;-1:-1:-1;;;;;14188:19:0;;14180:75;;;;-1:-1:-1;;;14180:75:0;;4781:2:1;14180:75:0;;;4763:21:1;4820:2;4800:18;;;4793:30;4859:34;4839:18;;;4832:62;-1:-1:-1;;;4910:18:1;;;4903:41;4961:19;;14180:75:0;4753:233:1;14180:75:0;-1:-1:-1;;;;;14274:21:0;;14266:75;;;;-1:-1:-1;;;14266:75:0;;11943:2:1;14266:75:0;;;11925:21:1;11982:2;11962:18;;;11955:30;12021:34;12001:18;;;11994:62;-1:-1:-1;;;12072:18:1;;;12065:39;12121:19;;14266:75:0;11915:231:1;14266:75:0;-1:-1:-1;;;;;14354:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14406:32;;12707:25:1;;;14406:32:0;;12680:18:1;14406:32:0;;;;;;;14094:352;;;:::o;16735:2061::-;-1:-1:-1;;;;;16832:20:0;;16824:70;;;;-1:-1:-1;;;16824:70:0;;5193:2:1;16824:70:0;;;5175:21:1;5232:2;5212:18;;;5205:30;5271:34;5251:18;;;5244:62;-1:-1:-1;;;5322:18:1;;;5315:35;5367:19;;16824:70:0;5165:227:1;16824:70:0;-1:-1:-1;;;;;16913:23:0;;16905:71;;;;-1:-1:-1;;;16905:71:0;;7946:2:1;16905:71:0;;;7928:21:1;7985:2;7965:18;;;7958:30;8024:34;8004:18;;;7997:62;-1:-1:-1;;;8075:18:1;;;8068:33;8118:19;;16905:71:0;7918:225:1;16905:71:0;17013:11;;-1:-1:-1;;;;;16995:30:0;;;17013:11;;16995:30;;16987:80;;;;-1:-1:-1;;;16987:80:0;;10710:2:1;16987:80:0;;;10692:21:1;10749:2;10729:18;;;10722:30;10788:34;10768:18;;;10761:62;-1:-1:-1;;;10839:18:1;;;10832:35;10884:19;;16987:80:0;10682:227:1;16987:80:0;17095:1;17086:6;:10;17078:64;;;;-1:-1:-1;;;17078:64:0;;10300:2:1;17078:64:0;;;10282:21:1;10339:2;10319:18;;;10312:30;10378:34;10358:18;;;10351:62;-1:-1:-1;;;10429:18:1;;;10422:39;10478:19;;17078:64:0;10272:231:1;17078:64:0;17199:6;;-1:-1:-1;;;;;17181:25:0;;;17199:6;;17181:25;;;;:73;;-1:-1:-1;;;;;;17225:29:0;;;;;;:18;:29;;;;;;;;17224:30;17181:73;:155;;;;-1:-1:-1;;;;;;17310:26:0;;;;;;:18;:26;;;;;;;;17309:27;17181:155;17163:312;;;17382:11;;17372:6;:21;;17364:85;;;;-1:-1:-1;;;17364:85:0;;9117:2:1;17364:85:0;;;9099:21:1;9156:2;9136:18;;;9129:30;9195:34;9175:18;;;9168:62;-1:-1:-1;;;9246:18:1;;;9239:49;9305:19;;17364:85:0;9089:241:1;17364:85:0;17519:1;17500:16;;:20;:54;;;;-1:-1:-1;;;;;;17525:29:0;;;;;;:18;:29;;;;;;;;17524:30;17500:54;:95;;;;-1:-1:-1;;;;;;17569:26:0;;;;;;:18;:26;;;;;;;;17568:27;17500:95;:136;;;;-1:-1:-1;;;;;;17600:36:0;;;;;;:25;:36;;;;;;;;17599:37;17500:136;17495:358;;;-1:-1:-1;;;;;12663:18:0;;17668:24;12663:18;;;:9;:18;;;;;;17771:16;;17742:25;17761:6;12663:18;17742:25;:::i;:::-;:45;;17734:103;;;;-1:-1:-1;;;17734:103:0;;11116:2:1;17734:103:0;;;11098:21:1;11155:2;11135:18;;;11128:30;11194:34;11174:18;;;11167:62;-1:-1:-1;;;11245:18:1;;;11238:43;11298:19;;17734:103:0;11088:235:1;17734:103:0;17649:204;17495:358;17913:53;;;;;;;;;;;-1:-1:-1;;;17913:53:0;;;;;;;;-1:-1:-1;;;;;17913:17:0;;-1:-1:-1;17913:17:0;;;:9;:17;;;;;;;;:53;;17935:6;;17913:21;:53::i;:::-;-1:-1:-1;;;;;17893:17:0;;;;;;:9;:17;;;;;;;;:73;;;;18088:14;;18212:18;:26;;;;;;;18088:14;;;;;18212:26;;:59;;-1:-1:-1;;;;;;18242:29:0;;;;;;:18;:29;;;;;;;;18212:59;18209:111;;;-1:-1:-1;18302:5:0;18209:111;-1:-1:-1;;;;;18382:33:0;;;;;;:25;:33;;;;;;;;18381:34;:75;;;;-1:-1:-1;;;;;;18420:36:0;;;;;;:25;:36;;;;;;;;18419:37;18381:75;18378:125;;;-1:-1:-1;18486:5:0;18378:125;18523:28;18544:6;18523:20;:28::i;:::-;18573:22;18598:10;:45;;18637:6;18598:45;;;18611:23;18619:6;18627;18611:7;:23::i;:::-;-1:-1:-1;;;;;18677:20:0;;;;;;:9;:20;;;;;;18573:70;;-1:-1:-1;18677:40:0;;18573:70;18677:24;:40::i;:::-;-1:-1:-1;;;;;18654:20:0;;;;;;;:9;:20;;;;;;;:63;;;;18735:43;;;;;;;;;;18763:14;12707:25:1;;12695:2;12680:18;;12662:76;18735:43:0;;;;;;;;16813:1983;;16735:2061;;;:::o;1988:200::-;2108:7;2144:12;2136:6;;;;2128:29;;;;-1:-1:-1;;;2128:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2175:5:0;2179:1;2175;:5;:::i;:::-;2168:12;1988:200;-1:-1:-1;;;;1988:200:0:o;1083:179::-;1141:7;;1173:5;1177:1;1173;:5;:::i;:::-;1161:17;;1202:1;1197;:6;;1189:46;;;;-1:-1:-1;;;1189:46:0;;6424:2:1;1189:46:0;;;6406:21:1;6463:2;6443:18;;;6436:30;6502:29;6482:18;;;6475:57;6549:18;;1189:46:0;6396:177:1;1189:46:0;1253:1;1083:179;-1:-1:-1;;;1083:179:0:o;18808:473::-;18936:4;18887:28;12663:18;;;:9;:18;;;;;;19010;;19058:8;;18986:42;;;;;19058:8;;;;;19057:9;:20;;;;;19070:7;19057:20;:35;;;;-1:-1:-1;19081:11:0;;;;;;;19057:35;:73;;;;-1:-1:-1;;;;;;19097:33:0;;;;;;:25;:33;;;;;;;;19096:34;19057:73;19053:213;;;19147:8;:15;;-1:-1:-1;;19147:15:0;;;;;19195:10;:8;:10::i;:::-;19238:8;:16;;-1:-1:-1;;19238:16:0;;;18862:419;;18808:473;:::o;16383:330::-;16450:7;16471:17;16491:38;10365:5;16491:20;16502:8;;16491:6;:10;;:20;;;;:::i;:::-;:24;;:38::i;:::-;16587:4;16569:24;;;;:9;:24;;;;;;16471:58;;-1:-1:-1;16569:39:0;;16471:58;16569:28;:39::i;:::-;16560:4;16542:24;;;;:9;:24;;;;;;;:66;;;;16624:42;;-1:-1:-1;;;;;16624:42:0;;;;;;;16656:9;12707:25:1;;12695:2;12680:18;;12662:76;16624:42:0;;;;;;;;16684:21;:6;16695:9;16684:10;:21::i;19293:389::-;19373:4;19332:20;12663:18;;;:9;:18;;;;;;19414:21;19456:30;12663:18;19456:16;:30::i;:::-;19516:17;19536:40;:21;19562:13;19536:25;:40::i;:::-;19646:15;;19516:60;;-1:-1:-1;19620:54:0;;-1:-1:-1;;;;;19646:15:0;19516:60;19620:17;:54::i;1438:220::-;1496:7;1520:6;1516:20;;-1:-1:-1;1535:1:0;1528:8;;1516:20;1547:9;1559:5;1563:1;1559;:5;:::i;:::-;1547:17;-1:-1:-1;1592:1:0;1583:5;1587:1;1547:17;1583:5;:::i;:::-;:10;1575:56;;;;-1:-1:-1;;;1575:56:0;;9537:2:1;1575:56:0;;;9519:21:1;9576:2;9556:18;;;9549:30;9615:34;9595:18;;;9588:62;-1:-1:-1;;;9666:18:1;;;9659:31;9707:19;;1575:56:0;9509:223:1;1666:153:0;1724:7;1756:1;1752;:5;1744:44;;;;-1:-1:-1;;;1744:44:0;;8350:2:1;1744:44:0;;;8332:21:1;8389:2;8369:18;;;8362:30;8428:28;8408:18;;;8401:56;8474:18;;1744:44:0;8322:176:1;1744:44:0;1806:5;1810:1;1806;:5;:::i;1270:158::-;1328:7;1361:1;1356;:6;;1348:49;;;;-1:-1:-1;;;1348:49:0;;7184:2:1;1348:49:0;;;7166:21:1;7223:2;7203:18;;;7196:30;7262:32;7242:18;;;7235:60;7312:18;;1348:49:0;7156:180:1;1348:49:0;1415:5;1419:1;1415;:5;:::i;19694:623::-;19844:16;;;19858:1;19844:16;;;;;;;;19820:21;;19844:16;;;;;;;;;;-1:-1:-1;19844:16:0;19820:40;;19889:4;19871;19876:1;19871:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19871:23:0;;;:7;;;;;;;;;;:23;;;;19915:6;;:13;;;-1:-1:-1;;;19915:13:0;;;;:6;;;;;:11;;:13;;;;;19871:7;;19915:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19905:4;19910:1;19905:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19905:23:0;;;:7;;;;;;;;;:23;19973:6;;19941:53;;19958:4;;19973:6;19982:11;19941:8;:53::i;:::-;20033:6;;:215;;-1:-1:-1;;;20033:215:0;;-1:-1:-1;;;;;20033:6:0;;;;:57;;:215;;20105:11;;20033:6;;20175:4;;20202;;20222:15;;20033:215;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20274:35;20291:11;20304:4;20274:35;;;;;;;:::i;:::-;;;;;;;;19749:568;19694:623;:::o;20329:211::-;-1:-1:-1;;;;;20426:23:0;;20418:77;;;;-1:-1:-1;;;20418:77:0;;12353:2:1;20418:77:0;;;12335:21:1;12392:2;12372:18;;;12365:30;12431:34;12411:18;;;12404:62;-1:-1:-1;;;12482:18:1;;;12475:39;12531:19;;20418:77:0;12325:231:1;14:160;79:20;;135:13;;128:21;118:32;;108:2;;164:1;161;154:12;108:2;60:114;;;:::o;179:247::-;238:6;291:2;279:9;270:7;266:23;262:32;259:2;;;307:1;304;297:12;259:2;346:9;333:23;365:31;390:5;365:31;:::i;431:251::-;501:6;554:2;542:9;533:7;529:23;525:32;522:2;;;570:1;567;560:12;522:2;602:9;596:16;621:31;646:5;621:31;:::i;687:323::-;763:6;771;824:2;812:9;803:7;799:23;795:32;792:2;;;840:1;837;830:12;792:2;879:9;866:23;898:31;923:5;898:31;:::i;:::-;948:5;1000:2;985:18;;;;972:32;;-1:-1:-1;;;782:228:1:o;1015:388::-;1083:6;1091;1144:2;1132:9;1123:7;1119:23;1115:32;1112:2;;;1160:1;1157;1150:12;1112:2;1199:9;1186:23;1218:31;1243:5;1218:31;:::i;:::-;1268:5;-1:-1:-1;1325:2:1;1310:18;;1297:32;1338:33;1297:32;1338:33;:::i;:::-;1390:7;1380:17;;;1102:301;;;;;:::o;1408:456::-;1485:6;1493;1501;1554:2;1542:9;1533:7;1529:23;1525:32;1522:2;;;1570:1;1567;1560:12;1522:2;1609:9;1596:23;1628:31;1653:5;1628:31;:::i;:::-;1678:5;-1:-1:-1;1735:2:1;1720:18;;1707:32;1748:33;1707:32;1748:33;:::i;:::-;1512:352;;1800:7;;-1:-1:-1;;;1854:2:1;1839:18;;;;1826:32;;1512:352::o;1869:315::-;1934:6;1942;1995:2;1983:9;1974:7;1970:23;1966:32;1963:2;;;2011:1;2008;2001:12;1963:2;2050:9;2037:23;2069:31;2094:5;2069:31;:::i;:::-;2119:5;-1:-1:-1;2143:35:1;2174:2;2159:18;;2143:35;:::i;:::-;2133:45;;1953:231;;;;;:::o;2509:180::-;2565:6;2618:2;2606:9;2597:7;2593:23;2589:32;2586:2;;;2634:1;2631;2624:12;2586:2;2657:26;2673:9;2657:26;:::i;2694:180::-;2753:6;2806:2;2794:9;2785:7;2781:23;2777:32;2774:2;;;2822:1;2819;2812:12;2774:2;-1:-1:-1;2845:23:1;;2764:110;-1:-1:-1;2764:110:1:o;2879:461::-;2932:3;2970:5;2964:12;2997:6;2992:3;2985:19;3023:4;3052:2;3047:3;3043:12;3036:19;;3089:2;3082:5;3078:14;3110:1;3120:195;3134:6;3131:1;3128:13;3120:195;;;3199:13;;-1:-1:-1;;;;;3195:39:1;3183:52;;3255:12;;;;3290:15;;;;3231:1;3149:9;3120:195;;;-1:-1:-1;3331:3:1;;2940:400;-1:-1:-1;;;;;2940:400:1:o;3977:597::-;4089:4;4118:2;4147;4136:9;4129:21;4179:6;4173:13;4222:6;4217:2;4206:9;4202:18;4195:34;4247:1;4257:140;4271:6;4268:1;4265:13;4257:140;;;4366:14;;;4362:23;;4356:30;4332:17;;;4351:2;4328:26;4321:66;4286:10;;4257:140;;;4415:6;4412:1;4409:13;4406:2;;;4485:1;4480:2;4471:6;4460:9;4456:22;4452:31;4445:42;4406:2;-1:-1:-1;4558:2:1;4537:15;-1:-1:-1;;4533:29:1;4518:45;;;;4565:2;4514:54;;4098:476;-1:-1:-1;;;4098:476:1:o;9737:356::-;9939:2;9921:21;;;9958:18;;;9951:30;10017:34;10012:2;9997:18;;9990:62;10084:2;10069:18;;9911:182::o;12743:332::-;12950:6;12939:9;12932:25;12993:2;12988;12977:9;12973:18;12966:30;12913:4;13013:56;13065:2;13054:9;13050:18;13042:6;13013:56;:::i;13080:582::-;13379:6;13368:9;13361:25;13422:6;13417:2;13406:9;13402:18;13395:34;13465:3;13460:2;13449:9;13445:18;13438:31;13342:4;13486:57;13538:3;13527:9;13523:19;13515:6;13486:57;:::i;:::-;-1:-1:-1;;;;;13579:32:1;;;;13574:2;13559:18;;13552:60;-1:-1:-1;13643:3:1;13628:19;13621:35;13478:65;13351:311;-1:-1:-1;;;13351:311:1:o;13856:128::-;13896:3;13927:1;13923:6;13920:1;13917:13;13914:2;;;13933:18;;:::i;:::-;-1:-1:-1;13969:9:1;;13904:80::o;13989:217::-;14029:1;14055;14045:2;;14099:10;14094:3;14090:20;14087:1;14080:31;14134:4;14131:1;14124:15;14162:4;14159:1;14152:15;14045:2;-1:-1:-1;14191:9:1;;14035:171::o;14211:168::-;14251:7;14317:1;14313;14309:6;14305:14;14302:1;14299:21;14294:1;14287:9;14280:17;14276:45;14273:2;;;14324:18;;:::i;:::-;-1:-1:-1;14364:9:1;;14263:116::o;14384:125::-;14424:4;14452:1;14449;14446:8;14443:2;;;14457:18;;:::i;:::-;-1:-1:-1;14494:9:1;;14433:76::o;14514:127::-;14575:10;14570:3;14566:20;14563:1;14556:31;14606:4;14603:1;14596:15;14630:4;14627:1;14620:15;14646:127;14707:10;14702:3;14698:20;14695:1;14688:31;14738:4;14735:1;14728:15;14762:4;14759:1;14752:15;14910:131;-1:-1:-1;;;;;14985:31:1;;14975:42;;14965:2;;15031:1;15028;15021:12;14965:2;14955:86;:::o
Swarm Source
ipfs://12182b850c1e617cda02368955136867501ed679ea95e84ebf96afa8c6871ec9
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.