ERC-20
Overview
Max Total Supply
10,000,000 DESC
Holders
135
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
13,527.338641436066649401 DESCValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
DestroCredit
Compiler Version
v0.8.24+commit.e11b9ed9
Contract Source Code (Solidity Standard Json-Input format)
/* Destro Credit - Redefining the Essence of Financial Interactions WEBSITE | https://destrocredit.cash TELEGRAM | https://t.me/DestroCredit_portal TWITTER | https://twitter.com/DestroCredit dAPP | https://t.me/DestroCreditbot DOC | https://docs.destrocredit.cash/ */ // SPDX-License-Identifier: MIT pragma solidity >=0.8.10 >=0.8.0 <0.9.0; pragma experimental ABIEncoderV2; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { _transferOwnership(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } 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); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf( address account ) public view virtual override returns (uint256) { return _balances[account]; } function transfer( address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance( address owner, address spender ) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve( address spender, uint256 amount ) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require( currentAllowance >= amount, "ERC20: transfer amount exceeds allowance" ); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance( address spender, uint256 addedValue ) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender] + addedValue ); return true; } function decreaseAllowance( address spender, uint256 subtractedValue ) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require( currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero" ); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require( senderBalance >= amount, "ERC20: transfer amount exceeds balance" ); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { 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 _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { function tryAdd( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); 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(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); 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, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 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 (uint256); function balanceOf(address owner) external view returns (uint256); function allowance( address owner, address spender ) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 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 (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); 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 (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn( address to ) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract DestroCredit is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; address public constant deadAddress = address(0xdead); bool private swapping; address private marketingWallet; address private developmentWallet; uint256 public percentForLPBurn = 0; bool public lpBurnEnabled = false; uint256 public lpBurnFrequency = 3600 seconds; uint256 public lastLpBurnTime; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = true; uint256 public manualBurnFrequency = 30 minutes; uint256 public lastManualLpBurnTime; mapping(address => uint256) private _holderLastTransferTimestamp; bool public transferDelayEnabled = true; struct FeeSet { uint8 buyTotalFees; uint8 buyMarketingFee; uint8 buyLiquidityFee; uint8 buyDevelopmentFee; // uint8 sellTotalFees; uint8 sellMarketingFee; uint8 sellLiquidityFee; uint8 sellDevelopmentFee; // uint8 finalBuyingFees; uint8 finalBuyMarketingFee; uint8 finalBuyLiquidityFee; uint8 finalBuyDevelopmentFee; // uint8 finalSellingFees; uint8 finalSellMarketingFee; uint8 finalSellLiquidityFee; uint8 finalSellDevelopmentFee; } FeeSet public feeSet; uint256 public maxSwapToFinal; uint16 public swapCount = 0; bool public stopCount = false; uint256 public lastTaxSaleHeight = 0; uint256 public lastTaxSaleAmount = 0; uint256 public tokensForMarketing; uint256 public tokensForLiquidity; uint256 public tokensForDev; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedMaxTransactionAmount; mapping(address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router( address indexed newAddress, address indexed oldAddress ); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event marketingWalletUpdated( address indexed newWallet, address indexed oldWallet ); event developmentWalletUpdated( address indexed newWallet, address indexed oldWallet ); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event AutoNukeLP(); event ManualNukeLP(); constructor() ERC20("Destro Credit", "DESC") { uint8 _buyMarketingFee = 2; uint8 _buyLiquidityFee = 0; uint8 _buyDevelopmentFee = 1; uint8 _sellMarketingFee = 2; uint8 _sellLiquidityFee = 0; uint8 _sellDevelopmentFee = 1; uint8 _finalBuyMarketingFee = 2; uint8 _finalBuyLiquidityFee = 0; uint8 _finalBuyDevelopmentFee = 1; uint8 _finalSellMarketingFee = 2; uint8 _finalSellLiquidityFee = 0; uint8 _finalSellDevelopmentFee = 1; uint256 _maxSwapToFinal = 200; uint256 totalSupply = 10000000 * 1e18; maxTransactionAmount = 160000 * 1e18; maxWallet = 160000 * 1e18; swapTokensAtAmount = (totalSupply * 5) / 10000; marketingWallet = address(0x08c8b2f723315AB83b8f86B718f18EaA00206bDa); developmentWallet = address(0xB538070bA7CF78b928de41C623BDc0598Fd069AE); maxSwapToFinal = _maxSwapToFinal; feeSet.buyMarketingFee = _buyMarketingFee; feeSet.buyLiquidityFee = _buyLiquidityFee; feeSet.buyDevelopmentFee = _buyDevelopmentFee; feeSet.buyTotalFees = feeSet.buyMarketingFee + feeSet.buyLiquidityFee + feeSet.buyDevelopmentFee; feeSet.sellMarketingFee = _sellMarketingFee; feeSet.sellLiquidityFee = _sellLiquidityFee; feeSet.sellDevelopmentFee = _sellDevelopmentFee; feeSet.sellTotalFees = feeSet.sellMarketingFee + feeSet.sellLiquidityFee + feeSet.sellDevelopmentFee; feeSet.finalBuyMarketingFee = _finalBuyMarketingFee; feeSet.finalBuyLiquidityFee = _finalBuyLiquidityFee; feeSet.finalBuyDevelopmentFee = _finalBuyDevelopmentFee; feeSet.finalBuyingFees = feeSet.finalBuyMarketingFee + feeSet.finalBuyLiquidityFee + feeSet.finalBuyDevelopmentFee; feeSet.finalSellMarketingFee = _finalSellMarketingFee; feeSet.finalSellLiquidityFee = _finalSellLiquidityFee; feeSet.finalSellDevelopmentFee = _finalSellDevelopmentFee; feeSet.finalSellingFees = feeSet.finalSellMarketingFee + feeSet.finalSellLiquidityFee + feeSet.finalSellDevelopmentFee; excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); _mint(msg.sender, totalSupply); } receive() external payable {} function createPair() external onlyOwner { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); } function enableTrade() external onlyOwner { tradingActive = true; swapEnabled = true; lastLpBurnTime = block.timestamp; } function removeLimits() external onlyOwner returns (bool) { limitsInEffect = false; return true; } function disableTransferDelay() external onlyOwner returns (bool) { transferDelayEnabled = false; return true; } function updateSwapTokensAtAmount( uint256 newAmount ) external onlyOwner returns (bool) { require( newAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply." ); require( newAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply." ); swapTokensAtAmount = newAmount; return true; } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set maxTransactionAmount lower than 0.1%" ); maxTransactionAmount = newNum * (10 ** 18); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 5) / 1000) / 1e18, "Cannot set maxWallet lower than 0.5%" ); maxWallet = newNum * (10 ** 18); } function excludeFromMaxTransaction( address updAds, bool isEx ) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function updateSwapEnabled(bool enabled) external onlyOwner { swapEnabled = enabled; } function updateBuyFees( uint8 _marketingFee, uint8 _liquidityFee, uint8 _developmentFee ) external onlyOwner { feeSet.buyMarketingFee = _marketingFee; feeSet.buyLiquidityFee = _liquidityFee; feeSet.buyDevelopmentFee = _developmentFee; uint256 newBuyTotalFees = feeSet.buyMarketingFee + feeSet.buyLiquidityFee + feeSet.buyDevelopmentFee; require(!stopCount, "Final fees are already set"); require(newBuyTotalFees <= 100, "Total fees cannot exceed 100%"); feeSet.buyTotalFees = uint8(newBuyTotalFees); // override the fees if the stopCount is true if (stopCount) { updateFeesToFinal(); } } function updateFeesToFinal() private { feeSet.buyMarketingFee = feeSet.finalBuyMarketingFee; feeSet.buyLiquidityFee = feeSet.finalBuyLiquidityFee; feeSet.buyDevelopmentFee = feeSet.finalBuyDevelopmentFee; feeSet.buyTotalFees = feeSet.finalBuyingFees; feeSet.sellMarketingFee = feeSet.finalSellMarketingFee; feeSet.sellLiquidityFee = feeSet.finalSellLiquidityFee; feeSet.sellDevelopmentFee = feeSet.finalSellDevelopmentFee; feeSet.sellTotalFees = feeSet.finalSellingFees; } function updateSellFees( uint8 _marketingFee, uint8 _liquidityFee, uint8 _developmentFee ) external onlyOwner { feeSet.sellMarketingFee = _marketingFee; feeSet.sellLiquidityFee = _liquidityFee; feeSet.sellDevelopmentFee = _developmentFee; uint256 newSellTotalFees = feeSet.sellMarketingFee + feeSet.sellLiquidityFee + feeSet.sellDevelopmentFee; require(newSellTotalFees <= 100, "Total fees cannot exceed 100%"); feeSet.sellTotalFees = uint8(newSellTotalFees); // override the fees if the stopCount is true if (stopCount) { updateFeesToFinal(); } } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair( address pair, bool value ) public onlyOwner { require( pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs" ); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updateMarketingWalletInfo( address newMarketingWallet ) external onlyOwner { emit marketingWalletUpdated(newMarketingWallet, marketingWallet); marketingWallet = newMarketingWallet; } function updateDevelopmentWalletInfo(address newWallet) external onlyOwner { emit developmentWalletUpdated(newWallet, developmentWallet); developmentWallet = newWallet; } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } event BoughtEarly(address indexed sniper); function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if (amount == 0) { super._transfer(from, to, 0); return; } if (limitsInEffect) { if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ) { if (!tradingActive) { require( _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active." ); } // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. if (transferDelayEnabled) { if ( to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair) ) { require( _holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed." ); _holderLastTransferTimestamp[tx.origin] = block.number; } } //when buy if ( automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to] ) { require( amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount." ); require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } //when sell else if ( automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from] ) { require( amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount." ); } else if (!_isExcludedMaxTransactionAmount[to]) { require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } if ( !swapping && automatedMarketMakerPairs[to] && lpBurnEnabled && block.timestamp >= lastLpBurnTime + lpBurnFrequency && !_isExcludedFromFees[from] ) { autoBurnLiquidityPairTokens(); } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; bool isSell = false; // only take fees on buys/sells, do not take on wallet transfers if (takeFee) { if (!stopCount) { swapCount += 1; if (swapCount > maxSwapToFinal) { stopCount = true; updateFeesToFinal(); } } // on sell if (automatedMarketMakerPairs[to] && feeSet.sellTotalFees > 0) { isSell = true; fees = amount.mul(feeSet.sellTotalFees).div(100); } // on buy else if ( automatedMarketMakerPairs[from] && feeSet.buyTotalFees > 0 ) { fees = amount.mul(feeSet.buyTotalFees).div(100); } if (fees > 0) { super._transfer(from, address(this), fees); if (isSell) { swapBeforeSell(amount); } } amount -= fees; } super._transfer(from, to, amount); } function swapBeforeSell(uint256 amount) private { uint256 twoPercent = (totalSupply() * 2) / 100; if (lastTaxSaleHeight == block.number) { // same block if (lastTaxSaleAmount >= twoPercent) { return; } else { // lastTaxSaleAmount < 2% && amount + lastTaxSaleAmount < 2% amount = amount < (twoPercent - lastTaxSaleAmount) ? amount : (twoPercent - lastTaxSaleAmount); // amount < tokenBalance uint256 tokenBalance = balanceOf(address(this)); amount = tokenBalance < amount ? tokenBalance : amount; lastTaxSaleAmount += amount; } } else { // new block // amount <= 2% of totalSupply amount = amount < twoPercent ? amount : twoPercent; // amount <= balance uint256 tokenBalance = balanceOf(address(this)); amount = tokenBalance < amount ? tokenBalance : amount; // reset lastTaxSaleHeight to now height lastTaxSaleHeight = block.number; lastTaxSaleAmount = amount; } if (amount > 0) { swapTokensForEth(amount); } } 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), block.timestamp ); } 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 deadAddress, block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev; bool success; if (contractBalance == 0 || totalTokensToSwap == 0) { return; } if (contractBalance > swapTokensAtAmount * 20) { contractBalance = swapTokensAtAmount * 20; } // Halve the amount of liquidity tokens uint256 liquidityTokens = (contractBalance * tokensForLiquidity) / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div( totalTokensToSwap ); uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev; tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDev = 0; (success, ) = address(developmentWallet).call{value: ethForDev}(""); if (liquidityTokens > 0 && ethForLiquidity > 0) { addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify( amountToSwapForETH, ethForLiquidity, tokensForLiquidity ); } (success, ) = address(marketingWallet).call{ value: address(this).balance }(""); } function manualswap() external { require( _msgSender() == developmentWallet || _msgSender() == marketingWallet ); uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualsend() external { require( _msgSender() == developmentWallet || _msgSender() == marketingWallet ); bool success; (success, ) = address(marketingWallet).call{ value: address(this).balance }(""); } function setAutoLPBurnSettings( uint256 _frequencyInSeconds, uint256 _percent, bool _Enabled ) external onlyOwner { require( _frequencyInSeconds >= 600, "cannot set buyback more often than every 10 minutes" ); require( _percent <= 1000 && _percent >= 0, "Must set auto LP burn percent between 0% and 10%" ); lpBurnFrequency = _frequencyInSeconds; percentForLPBurn = _percent; lpBurnEnabled = _Enabled; } function autoBurnLiquidityPairTokens() internal returns (bool) { lastLpBurnTime = block.timestamp; // get balance of liquidity pair uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair); // calculate amount to burn uint256 amountToBurn = liquidityPairBalance.mul(percentForLPBurn).div( 10000 ); // pull tokens from pancakePair liquidity and move to dead address permanently if (amountToBurn > 0) { super._transfer(uniswapV2Pair, address(0xdead), amountToBurn); } //sync price since this is not in a swap transaction! IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair); pair.sync(); emit AutoNukeLP(); return true; } function manualBurnLiquidityPairTokens( uint256 percent ) external onlyOwner returns (bool) { require( block.timestamp > lastManualLpBurnTime + manualBurnFrequency, "Must wait for cooldown to finish" ); require(percent <= 1000, "May not nuke more than 10% of tokens in LP"); lastManualLpBurnTime = block.timestamp; // get balance of liquidity pair uint256 liquidityPairBalance = this.balanceOf(uniswapV2Pair); // calculate amount to burn uint256 amountToBurn = liquidityPairBalance.mul(percent).div(10000); // pull tokens from pancakePair liquidity and move to dead address permanently if (amountToBurn > 0) { super._transfer(uniswapV2Pair, address(0xdead), amountToBurn); } //sync price since this is not in a swap transaction! IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair); pair.sync(); emit ManualNukeLP(); return true; } }
{ "optimizer": { "enabled": true, "runs": 200 }, "viaIR": true, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "remappings": [] }
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":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","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":[],"name":"ManualNukeLP","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":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","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":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"developmentWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createPair","outputs":[],"stateMutability":"nonpayable","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":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeSet","outputs":[{"internalType":"uint8","name":"buyTotalFees","type":"uint8"},{"internalType":"uint8","name":"buyMarketingFee","type":"uint8"},{"internalType":"uint8","name":"buyLiquidityFee","type":"uint8"},{"internalType":"uint8","name":"buyDevelopmentFee","type":"uint8"},{"internalType":"uint8","name":"sellTotalFees","type":"uint8"},{"internalType":"uint8","name":"sellMarketingFee","type":"uint8"},{"internalType":"uint8","name":"sellLiquidityFee","type":"uint8"},{"internalType":"uint8","name":"sellDevelopmentFee","type":"uint8"},{"internalType":"uint8","name":"finalBuyingFees","type":"uint8"},{"internalType":"uint8","name":"finalBuyMarketingFee","type":"uint8"},{"internalType":"uint8","name":"finalBuyLiquidityFee","type":"uint8"},{"internalType":"uint8","name":"finalBuyDevelopmentFee","type":"uint8"},{"internalType":"uint8","name":"finalSellingFees","type":"uint8"},{"internalType":"uint8","name":"finalSellMarketingFee","type":"uint8"},{"internalType":"uint8","name":"finalSellLiquidityFee","type":"uint8"},{"internalType":"uint8","name":"finalSellDevelopmentFee","type":"uint8"}],"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":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastManualLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastTaxSaleAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastTaxSaleHeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualBurnLiquidityPairTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxSwapToFinal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frequencyInSeconds","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"},{"internalType":"bool","name":"_Enabled","type":"bool"}],"name":"setAutoLPBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopCount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapCount","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","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":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"uniswapV2Pair","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":[{"internalType":"uint8","name":"_marketingFee","type":"uint8"},{"internalType":"uint8","name":"_liquidityFee","type":"uint8"},{"internalType":"uint8","name":"_developmentFee","type":"uint8"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevelopmentWalletInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWalletInfo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_marketingFee","type":"uint8"},{"internalType":"uint8","name":"_liquidityFee","type":"uint8"},{"internalType":"uint8","name":"_developmentFee","type":"uint8"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60803462000736576001600160401b03906040908082018381118282101762000722578252600d81526020906c11195cdd1c9bc810dc99591a5d609a1b828201528251938385018581108282111762000722578452600491828652634445534360e01b848701528051918083116200070f5760038054936001938486811c9616801562000704575b88871014620006f1578190601f968781116200069e575b5088908783116001146200063b575f926200062f575b50505f1982841b1c191690841b1781555b87519182116200061c5784548381811c9116801562000611575b87821014620005fe57848111620005b6575b50858483116001146200054f57829394959697985f9362000543575b505082841b925f19911b1c19161783555b60058054336001600160a01b03198083168217845593926001600160a01b039262000481929084167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a35f600a5573b538070ba7cf78b928de41c623bdc0598fd069ae60ff199586600b5416600b55610e10600c5562ffffff196201000181601154161760115561070860125586886015541617601555601854166018555f6019555f601a556921e19e0c9bab2400000080600e5560105569010f0cf064dd59200000600f557308c8b2f723315ab83b8f86b718f18eaa00206bda816008541617600855600954161760095560c86017556200026f6d0200010000000000000000000000690200010000000000000065020001000200601654630100020063ffffff001982161760ff9581876200026381809560101c16828460081c166200073a565b9160181c16906200073a565b169065ff00ffffffff1916171764ff00000000620002bf67010000000000000067ffff0000000000001984161786620002b3818360301c16828460281c166200073a565b9160381c16906200073a565b8d1b169069ff00ffff00ff000000001916171768ff0000000000000000620003216b0100000000000000000000006bffff00000000000000000000198416178562000315818360501c16828460481c166200073a565b9160581c16906200073a565b8d1b16906dff00ffff00ff0000000000000000191617176cff0000000000000000000000006200037e600160781b938461ffff60701b198516179062000372818360701c16828460681c166200073a565b9160781c16906200073a565b60601b16906fffff00ff00000000000000000000000019161717601655335f52601e8852885f2084868254161790558851928484527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df793848a3392a2620003ea33828454161462000763565b305f52601e8952895f2085878254161790558951858152848a3092a26200041633828454161462000763565b61dead8094815f52601e8b528b5f2087898254161790558a8c51888152a2808254166200044533821462000763565b5f52868952895f2085878254161790556200046533828454161462000763565b305f52868952895f208587825416179055339154161462000763565b5f52828552855f2091825416179055331562000504575050620004a6600254620007af565b600255335f525f8152815f20620004be8154620007af565b90555f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8351926a084595161401484a00000084523393a351612e8a9081620007c98239f35b60649284519262461bcd60e51b845283015260248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152fd5b015191505f806200010d565b90601f19831691865f52875f20925f5b818110620005a057509984869798999a9b1062000586575b50505050811b0183556200011e565b01519060f8845f19921b161c191690555f80808062000577565b8b8301518555938601939189019189016200055f565b855f52865f208580850160051c820192898610620005f4575b0160051c019084905b828110620005e8575050620000f1565b5f8155018490620005d8565b92508192620005cf565b602286634e487b7160e01b5f525260245ffd5b90607f1690620000df565b604185634e487b7160e01b5f525260245ffd5b015190505f80620000b4565b90869350601f19831691855f528a5f20925f5b8c8282106200068757505084116200066f575b505050811b018155620000c5565b01515f1983861b60f8161c191690555f808062000661565b8385015186558a979095019493840193016200064e565b909150835f52885f208780850160051c8201928b8610620006e7575b918891869594930160051c01915b828110620006d85750506200009e565b5f8155859450889101620006c8565b92508192620006ba565b602287634e487b7160e01b5f525260245ffd5b95607f169562000087565b604184634e487b7160e01b5f525260245ffd5b634e487b7160e01b5f52604160045260245ffd5b5f80fd5b9060ff8091169116019060ff82116200074f57565b634e487b7160e01b5f52601160045260245ffd5b156200076b57565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b906a084595161401484a00000082018092116200074f5756fe6040608081526004908136101561001f575b5050361561001d575f80fd5b005b5f905f3560e01c806299d38614611b8e578063057f202e14611b7057806306fdde0314611a7b578063095ea7b314611a5257806310d5de5314611a165780631694505e146119ee57806318160ddd146119d0578063184c16c5146119b2578063199ffc72146119945780631a8145bb146119765780631d003eb61461186c5780631f3fed8f1461184e578063203e727e1461178957806323b872dd146116cd57806327c8f835146116b15780632c3e486c146116935780632e82f1a0146116705780632eff0d9e1461164e578063313674dd14611630578063313ce5671461161557806338b2c461146115f757806339509351146115ab578063404bc41b146115855780634487c29f146114a657806349bd5a5e1461147e5780634a62bb651461145b5780634fbee1931461141f578063535e02d8146113ae5780636ddd1713146113885780636fc3eaec146113395780637040eb8b1461126c57806370a0823114611236578063715018a6146111d8578063730c1888146110a5578063751039fc1461106b5780637571336a1461100f5780637d831a8b14610f9e5780638da5cb5b14610f76578063924de9b714610f2957806395d89b4114610e265780639a7a23d614610d345780639e78fb4f14610b4b5780639ec22c0e14610b2d5780639fccce3214610b0f578063a457c2d714610a6a578063a4c82a0014610a4c578063a9059cbb14610a1c578063b62496f5146109e1578063bbc0c742146109bb578063c024666814610932578063c18bc1951461084e578063c3c8cd80146107fe578063c876d0b9146107db578063c8c8ebe4146107bd578063d257b34f14610665578063dd62ed3e1461061c578063e2f45605146105fe578063e884f260146105c4578063f2fde38b146104fc578063f8b45b05146104de5763fe72b27a146102c95750610011565b346103fa57602092836003193601126103fa576005546001600160a01b03908235906102f89083163314611c7c565b61030760135460125490611db6565b42111561049d576103e88111610447574260135581600754169084516370a0823160e01b815282858201528781602481305afa90811561043d575f9161040e575b506127109161035691611d85565b04806103fe575b50506007541690813b156103fa57825160016209351760e01b03198152915f918391829084905af180156103f0576103bd575b507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb90519180a160018152f35b6103c8919250611cc7565b5f907f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb610390565b82513d5f823e3d90fd5b5f80fd5b61040791612a29565b5f8061035d565b90508781813d8311610436575b6104258183611cef565b810103126103fa5751612710610348565b503d61041b565b86513d5f823e3d90fd5b835162461bcd60e51b8152808401879052602a60248201527f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60448201526906b656e7320696e204c560b41b6064820152608490fd5b606483878087519262461bcd60e51b845283015260248201527f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e6973686044820152fd5b50346103fa575f3660031901126103fa576020906010549051908152f35b5082346103fa5760203660031901126103fa57610517611c11565b6005546001600160a01b03808216939192610533338614611c7c565b169384156105725750506001600160a01b03191682176005557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b906020608492519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b50346103fa575f3660031901126103fa576020906105ed60018060a01b03600554163314611c7c565b60ff19601554166015555160018152f35b50346103fa575f3660031901126103fa57602090600f549051908152f35b50346103fa57806003193601126103fa57602090610638611c11565b610640611c27565b9060018060a01b038091165f5260018452825f2091165f528252805f20549051908152f35b8382346103fa5760203660031901126103fa57813561068f60018060a01b03600554163314611c7c565b60025480158180046001148117156107aa57620186a08204831061074957600582029182046005141715610736576103e8900481116106d65760209250600f555160018152f35b815162461bcd60e51b8152602081850152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608490fd5b601184634e487b7160e01b5f525260245ffd5b835162461bcd60e51b8152602081870152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608490fd5b601185634e487b7160e01b5f525260245ffd5b50346103fa575f3660031901126103fa57602090600e549051908152f35b50346103fa575f3660031901126103fa5760209060ff6015541690519015158152f35b50346103fa575f3660031901126103fa57600954336001600160a01b0391821614908115610840575b50156103fa5761001d90305f525f6020525f20546128bd565b905060085416331482610827565b5082346103fa5760203660031901126103fa57803561087860018060a01b03600554163314611c7c565b6002549260058402938085046005149015171561091f576103e893670de0b6b3a7640000948591040482106108d157508281029281840414901517156108be5750601055005b601190634e487b7160e01b5f525260245ffd5b5162461bcd60e51b81526020818401526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608490fd5b601183634e487b7160e01b5f525260245ffd5b50346103fa57806003193601126103fa577f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7602061096e611c11565b610976611c6d565b60055490916001600160a01b03916109919083163314611c7c565b1693845f52601e83526109b282825f209060ff801983541691151516179055565b519015158152a2005b50346103fa575f3660031901126103fa5760209060ff60115460081c1690519015158152f35b50346103fa5760203660031901126103fa576020906001600160a01b03610a06611c11565b165f5281805260ff815f20541690519015158152f35b50346103fa57806003193601126103fa57602090610a45610a3b611c11565b60243590336120f9565b5160018152f35b50346103fa575f3660031901126103fa57602090600d549051908152f35b5082346103fa57816003193601126103fa57610a84611c11565b9060243590335f526001602052835f2060018060a01b0384165f52602052835f205490828210610abe57602085610a458585038733611e21565b608490602086519162461bcd60e51b8352820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152fd5b50346103fa575f3660031901126103fa57602090601d549051908152f35b50346103fa575f3660031901126103fa576020906013549051908152f35b5082346103fa575f3660031901126103fa576005546001600160a01b039190610b809083163314610b7b81611c7c565b611c7c565b737a250d5630b4cf539739df2c5dacb4c659f2488d91825f52602092601f8452845f209260ff19936001858254161790556bffffffffffffffffffffffff60a01b9180836006541617600655865163c45a015560e01b815286818481855afa908115610d0b57839288915f93610d15575b5089516315ab88c960e31b815293849182905afa8015610d0b5785938489945f93610ce7575b505f90604493948c5197889687956364e329cb60e11b87523090870152166024850152165af190811561043d57918360019793928895935f91610cba575b501680916007541617600755610c7033836005541614611c7c565b5f52601f8552815f2083858254161790556007541693845f5280525f20918254161790557fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab5f80a3005b610cda9150883d8a11610ce0575b610cd28183611cef565b810190611e02565b89610c55565b503d610cc8565b6044935090610d035f92873d8911610ce057610cd28183611cef565b935090610c17565b88513d5f823e3d90fd5b610d2d919350823d8411610ce057610cd28183611cef565b918a610bf1565b5082346103fa57816003193601126103fa57610d4e611c11565b91610d57611c6d565b9160018060a01b03610d6e81600554163314611c7c565b80600754169416938414610dbe57505f8381526020805220805460ff191660ff831515161790551515907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab5f80a3005b6020608492519162461bcd60e51b8352820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152fd5b8382346103fa575f3660031901126103fa578051905f9280549060018260011c9160018416938415610f1f575b6020948585108114610f0c57848852908115610eea5750600114610e91575b610e8d8686610e83828b0383611cef565b5191829182611bca565b0390f35b5f9081529295507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b828410610ed75750505082610e8d94610e83928201019486610e72565b8054868501880152928601928101610eba565b60ff191687860152505050151560051b8301019250610e8382610e8d86610e72565b602283634e487b7160e01b5f525260245ffd5b92607f1692610e53565b83346103fa5760203660031901126103fa57358015158091036103fa57610f5b60018060a01b03600554163314611c7c565b62ff00006011549160101b169062ff00001916176011555f80f35b50346103fa575f3660031901126103fa5760055490516001600160a01b039091168152602090f35b346103fa5760203660031901126103fa57610fb7611c11565b6005546001600160a01b039190610fd19083163314611c7c565b816008549116918116827fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b056745f80a36001600160a01b03191617600855005b50346103fa57806003193601126103fa5761001d9061102c611c11565b90611035611c6d565b60055490926001600160a01b03916110509083163314611c7c565b165f52601f6020525f209060ff801983541691151516179055565b50346103fa575f3660031901126103fa5760209061109460018060a01b03600554163314611c7c565b60ff19601154166011555160018152f35b5082346103fa5760603660031901126103fa57803560243591604435938415158095036103fa576110e160018060a01b03600554163314611c7c565b6102588310611179576103e884111580611171575b15611115575050600c55600a5560ff8019600b5416911617600b555f80f35b906020608492519162461bcd60e51b8352820152603060248201527f4d75737420736574206175746f204c50206275726e2070657263656e7420626560448201526f747765656e20302520616e642031302560801b6064820152fd5b5060016110f6565b906020608492519162461bcd60e51b8352820152603360248201527f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e207468604482015272616e206576657279203130206d696e7574657360681b6064820152fd5b346103fa575f3660031901126103fa576005545f906001600160a01b03811690611203338314611c7c565b6001600160a01b0319166005557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b50346103fa5760203660031901126103fa576020906001600160a01b0361125b611c11565b165f525f8252805f20549051908152f35b50346103fa575f3660031901126103fa576102009060165460ff9081818451948282168652828260081c166020870152828260101c1681870152828260181c166060870152828260201c166080870152828260281c1660a0870152828260301c1660c0870152828260381c1660e08701521c16610100840152818160481c16610120840152818160501c16610140840152818160581c16610160840152818160601c16610180840152818160681c166101a0840152818160701c166101c084015260781c166101e0820152f35b346103fa575f3660031901126103fa576009546001600160a01b039081163314801561137b575b156103fa575f808080936008541647905af15061001d611dc3565b5080600854163314611360565b50346103fa575f3660031901126103fa5760209060ff60115460101c1690519015158152f35b346103fa5760203660031901126103fa576113c7611c11565b6005546001600160a01b0391906113e19083163314611c7c565b816009549116918116827ffaf1b77ed79f6e898c44dd8ab36b330c7b2fd39bcaab05ed6362480df87039655f80a36001600160a01b03191617600955005b50346103fa5760203660031901126103fa576020906001600160a01b03611444611c11565b165f52601e825260ff815f20541690519015158152f35b50346103fa575f3660031901126103fa5760209060ff6011541690519015158152f35b50346103fa575f3660031901126103fa5760075490516001600160a01b039091168152602090f35b346103fa5760603660031901126103fa576114bf611c3d565b6114c7611c4d565b6114cf611c5d565b6114e460018060a01b03600554163314611c7c565b60ff60381b66ff00000000000065ff00000000006016549560281b169360301b169160381b169164ff00000000611547848367ffffff00000000001988161785171760ff61153c818360301c16828460281c16611d11565b9160381c1690611d11565b611557606460ff83161115611d39565b60201b169367ffffffff0000000019161717171760165560ff60185460101c1661157d57005b61001d611f1f565b50346103fa575f3660031901126103fa5760209060ff60185460101c1690519015158152f35b50346103fa57806003193601126103fa57602090610a456115ca611c11565b335f5260018452825f2060018060a01b0382165f5284526115f0602435845f2054611db6565b9033611e21565b50346103fa575f3660031901126103fa576020906017549051908152f35b50346103fa575f3660031901126103fa576020905160128152f35b50346103fa575f3660031901126103fa57602090601a549051908152f35b50346103fa575f3660031901126103fa5760209061ffff601854169051908152f35b50346103fa575f3660031901126103fa5760209060ff600b541690519015158152f35b50346103fa575f3660031901126103fa57602090600c549051908152f35b50346103fa575f3660031901126103fa576020905161dead8152f35b5082346103fa5760603660031901126103fa576116e8611c11565b906116f1611c27565b906117006044358093856120f9565b60018060a01b0383165f526001602052835f20335f52602052835f20549082821061173557602085610a458585033388611e21565b608490602086519162461bcd60e51b8352820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152fd5b5082346103fa5760203660031901126103fa5780356117b360018060a01b03600554163314611c7c565b600254928380046001148415171561091f576103e893670de0b6b3a7640000948591040482106117f457508281029281840414901517156108be5750600e55005b5162461bcd60e51b8152602081840152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b6064820152608490fd5b50346103fa575f3660031901126103fa57602090601b549051908152f35b5082346103fa5760603660031901126103fa57611887611c3d565b61188f611c4d565b611897611c5d565b906118ad60018060a01b03600554163314611c7c565b63ff00000062ff000061ff006016549560081b169260101b169260181b169260ff6118ff858463ffffff0019851617861717826118f4818360101c16828460081c16611d11565b9160181c1690611d11565b169460ff60185460101c16968761193357505061191f6064861115611d39565b63ffffffff19161717171760165561157d57005b906020606492519162461bcd60e51b8352820152601a60248201527f46696e616c20666565732061726520616c7265616479207365740000000000006044820152fd5b50346103fa575f3660031901126103fa57602090601c549051908152f35b50346103fa575f3660031901126103fa57602090600a549051908152f35b50346103fa575f3660031901126103fa576020906012549051908152f35b50346103fa575f3660031901126103fa576020906002549051908152f35b50346103fa575f3660031901126103fa5760065490516001600160a01b039091168152602090f35b50346103fa5760203660031901126103fa576020906001600160a01b03611a3b611c11565b165f52601f825260ff815f20541690519015158152f35b50346103fa57806003193601126103fa57602090610a45611a71611c11565b6024359033611e21565b8382346103fa575f3660031901126103fa578051905f9260035460018160011c91600181168015611b66575b6020948585108214611b535750838752908115611b335750600114611ad9575b505050610e8382610e8d940383611cef565b60035f9081529295507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b828410611b205750505082610e8d94610e839282010194611ac7565b8054868501880152928601928101611b04565b60ff1916868501525050151560051b8301019250610e8382610e8d611ac7565b602290634e487b7160e01b5f525260245ffd5b92607f1692611aa7565b50346103fa575f3660031901126103fa576020906019549051908152f35b346103fa575f3660031901126103fa57611bb360018060a01b03600554163314611c7c565b6011805462ffff0019166201010017905542600d55005b602080825282518183018190529093925f5b828110611bfd57505060409293505f838284010152601f8019910116010190565b818101860151848201604001528501611bdc565b600435906001600160a01b03821682036103fa57565b602435906001600160a01b03821682036103fa57565b6004359060ff821682036103fa57565b6024359060ff821682036103fa57565b6044359060ff821682036103fa57565b6024359081151582036103fa57565b15611c8357565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b67ffffffffffffffff8111611cdb57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff821117611cdb57604052565b9060ff8091169116019060ff8211611d2557565b634e487b7160e01b5f52601160045260245ffd5b15611d4057565b60405162461bcd60e51b815260206004820152601d60248201527f546f74616c20666565732063616e6e6f742065786365656420313030250000006044820152606490fd5b81810292918115918404141715611d2557565b8115611da2570490565b634e487b7160e01b5f52601260045260245ffd5b91908201809211611d2557565b3d15611dfd573d9067ffffffffffffffff8211611cdb5760405191611df2601f8201601f191660200184611cef565b82523d5f602084013e565b606090565b908160209103126103fa57516001600160a01b03811681036103fa5790565b6001600160a01b03908116918215611ece5716918215611e7e5760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591835f526001825260405f20855f5282528060405f2055604051908152a3565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b601654604061ff0082821c1662ff00008161ff0019851617831c1663ff000000818362ffff001987161717841c1660ff818463ffffff0019881617841717851c169065ff0000000000828563ffffffff198916178517831717861c169266ff000000000000848665ff00ffffffff198a161783178417851717871c169464ff0000000060ff60381b878366ffff00ffffffff198c1617851786178717881717891c1697888367ffffff00ffffffff198c16178517861787178817891717901c169767ffffffffffffffff19161717171717171717601655565b15611fff57565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b1561205957565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b156120b157565b60405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606490fd5b91908203918211611d2557565b5f939291906001600160a01b038082168015159061211682611ff8565b828516908115159261212784612052565b871561286e57506011549260ff848180961661252c575b505050305f526020935f8552604090815f2054600f5411158061251e575b8061250f575b806124fc575b806124e8575b806124d4575b6124aa575b600754858160a01c161580612498575b8061248d575b80612475575b80612461575b612363575b50508360075460a01c161591808b52601e865284828c2054168015612354575b61234c575b8a938b936121e2575b505050505050506121e0939450612af7565b565b60189996979954868160101c16156122ca575b509a612245979695949392916121e09b9c8252878052858383205416806122bb575b15612277575050505050612236606491600194601654901c1683611d85565b04915b82612253575b506120ec565b9184935f80808080806121ce565b61225e833088612af7565b612269575b5f61223f565b61227281612d7f565b612263565b8152205491945091908116806122ae575b612293575b50612239565b60649193506122a6906016541683611d85565b04915f61228d565b5080601654161515612288565b5085601654891c161515612217565b61ffff60018183160181811161233857916121e09d9e93916122459b9a999897969593168061ffff19831617601855601754818684161711612319575b5050919c9b50919293949596976121f5565b620100009162ffffff19161717601855612331611f1f565b5f80612307565b634e487b7160e01b8f52601160045260248ffd5b8a92506121c5565b50838b5284828c2054166121c0565b819042600d551682516370a0823160e01b81528160048201528781602481305afa908115612457575f91612428575b506123a361271091600a5490611d85565b0480612418575b505060075416803b156103fa575f8091600484518094819363fff6cae960e01b83525af180156103f057612405575b507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d8a80a15f806121a0565b612410919a50611cc7565b5f985f6123d9565b61242191612a29565b5f806123aa565b90508781813d8311612450575b61243f8183611cef565b810103126103fa57516123a3612392565b503d612435565b84513d5f823e3d90fd5b50835f52601e875285835f2054161561219b565b50612485600d54600c5490611db6565b421015612195565b5085600b541661218f565b50845f5286805285835f205416612189565b6007805460ff60a01b19908116600160a01b179091556124c8612b72565b60075416600755612179565b50835f52601e865284825f20541615612174565b50825f52601e865284825f2054161561216e565b50825f5285805284825f20541615612168565b508460075460a01c1615612162565b508460115460101c1661215c565b866005541692838514159081612863575b8161285b575b508061284f575b80612840575b1561213e5760081c16156127d8575b83601554166126fe575b50805f52602080805260409084825f205416806126ea575b1561261757600e5489116125b7576125af915f6125a592868252525f205489611db6565b60105410156120aa565b5f838161213e565b608491519062461bcd60e51b82526004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152fd5b90835f5281805284815f205416806126d6575b156126a157600e54891161263f5750506125af565b60849250519062461bcd60e51b82526004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152fd5b90835f52601f815284825f205416156126bc575b50506125af565b6126cf915f6125a592525f205489611db6565b5f806126b5565b50825f52601f825284815f2054161561262a565b50835f52601f815284825f20541615612581565b821415806127ca575b806127bc575b612718575b5f612569565b325f52601460205260405f205443111561273f57325f5260146020524360405f2055612712565b60405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a490fd5b50836007541682141561270d565b508360065416821415612707565b815f52601e6020528360405f2054168015612830575b61255f5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606490fd5b50825f528360405f2054166127ee565b508160075460a01c1615612550565b5061dead85141561254a565b90505f612543565b86851415915061253d565b929450955095965061288a93506128859150611ff8565b612052565b5f602052815f527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206040515f8152a3565b60408051916060830183811067ffffffffffffffff821117611cdb57825260028352602080840190833683378451156129ec5730825260065484516315ab88c960e31b81526001600160a01b03949092909185168184600481845afa938415612a1f575f94612a00575b50875193600194600110156129ec576129489187859216898b015230611e21565b846006541694853b156103fa57918697949391975197889563791ac94760e01b875260a487019260048801525f602488015260a060448801525180925260c4860194935f905b8382106129d25750505050505091815f81819530606483015242608483015203925af19081156129c957506129c05750565b6121e090611cc7565b513d5f823e3d90fd5b8551811687528a975095820195948201949084019061298e565b634e487b7160e01b5f52603260045260245ffd5b612a18919450823d8411610ce057610cd28183611cef565b925f612927565b87513d5f823e3d90fd5b6001600160a01b0316612a3d811515611ff8565b805f525f60205260405f2054828110612aa3578290825f525f6020520360405f20557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602061dead93845f5260405f20612a98828254611db6565b9055604051908152a3565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b6001600160a01b0390811691612b0e831515611ff8565b1691612b1b831515612052565b815f525f60205260405f2054818110612aa357817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f5260405f20612a98828254611db6565b305f525f60205260405f2054601c54612b99612b90601b5483611db6565b601d5490611db6565b9082158015612d77575b612d7257600f54601481029080820460141490151715611d2557808411612d68575b50612bdc82612bd7612be69386611d85565b611d98565b60011c80936120ec565b612c2c612bfc47612bf6846128bd565b476120ec565b612c27612c1f612c1286612bd7601b5486611d85565b95612bd7601d5485611d85565b9485926120ec565b6120ec565b925f601c555f601b555f601d555f80808060018060a01b039687600954165af150612c55611dc3565b5080151580612d5f575b612c81575b50505f8080935080926008541647905af150612c7e611dc3565b50565b606081612c948693866006541630611e21565b60c4856006541691604051948593849263f305d71960e01b845230600485015260248401525f60448401525f606484015261dead60848401524260a48401525af18015612d5457612d29575b505f8093927f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56160608395948495601c549060405192835260208301526040820152a19250612c64565b606090813d8311612d4d575b612d3f8183611cef565b810103126103fa575f612ce0565b503d612d35565b6040513d5f823e3d90fd5b50831515612c5f565b9250612bdc612bc5565b505050565b508115612ba3565b6002548060011b9080820460021490151715611d25576064900460195443145f14612e1757601a5491818310612db457505050565b8282612dc382612dec956120ec565b831015612e085750505b305f525f60205260405f2054908082105f14612e0157505b8092611db6565b601a555b80612df85750565b6121e0906128bd565b9050612de5565b612e1292506120ec565b612dcd565b80821015612e4d57505b305f525f60205260405f2054908082105f14612e4657505b8043601955601a55612df0565b9050612e39565b9050612e2156fea264697066735822122020e6f33b6e74ccb59099106efc97be57363968d9f02b9a2dbfb2e3f93a13dbd264736f6c63430008180033
Deployed Bytecode
0x6040608081526004908136101561001f575b5050361561001d575f80fd5b005b5f905f3560e01c806299d38614611b8e578063057f202e14611b7057806306fdde0314611a7b578063095ea7b314611a5257806310d5de5314611a165780631694505e146119ee57806318160ddd146119d0578063184c16c5146119b2578063199ffc72146119945780631a8145bb146119765780631d003eb61461186c5780631f3fed8f1461184e578063203e727e1461178957806323b872dd146116cd57806327c8f835146116b15780632c3e486c146116935780632e82f1a0146116705780632eff0d9e1461164e578063313674dd14611630578063313ce5671461161557806338b2c461146115f757806339509351146115ab578063404bc41b146115855780634487c29f146114a657806349bd5a5e1461147e5780634a62bb651461145b5780634fbee1931461141f578063535e02d8146113ae5780636ddd1713146113885780636fc3eaec146113395780637040eb8b1461126c57806370a0823114611236578063715018a6146111d8578063730c1888146110a5578063751039fc1461106b5780637571336a1461100f5780637d831a8b14610f9e5780638da5cb5b14610f76578063924de9b714610f2957806395d89b4114610e265780639a7a23d614610d345780639e78fb4f14610b4b5780639ec22c0e14610b2d5780639fccce3214610b0f578063a457c2d714610a6a578063a4c82a0014610a4c578063a9059cbb14610a1c578063b62496f5146109e1578063bbc0c742146109bb578063c024666814610932578063c18bc1951461084e578063c3c8cd80146107fe578063c876d0b9146107db578063c8c8ebe4146107bd578063d257b34f14610665578063dd62ed3e1461061c578063e2f45605146105fe578063e884f260146105c4578063f2fde38b146104fc578063f8b45b05146104de5763fe72b27a146102c95750610011565b346103fa57602092836003193601126103fa576005546001600160a01b03908235906102f89083163314611c7c565b61030760135460125490611db6565b42111561049d576103e88111610447574260135581600754169084516370a0823160e01b815282858201528781602481305afa90811561043d575f9161040e575b506127109161035691611d85565b04806103fe575b50506007541690813b156103fa57825160016209351760e01b03198152915f918391829084905af180156103f0576103bd575b507f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb90519180a160018152f35b6103c8919250611cc7565b5f907f8462566617872a3fbab94534675218431ff9e204063ee3f4f43d965626a39abb610390565b82513d5f823e3d90fd5b5f80fd5b61040791612a29565b5f8061035d565b90508781813d8311610436575b6104258183611cef565b810103126103fa5751612710610348565b503d61041b565b86513d5f823e3d90fd5b835162461bcd60e51b8152808401879052602a60248201527f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60448201526906b656e7320696e204c560b41b6064820152608490fd5b606483878087519262461bcd60e51b845283015260248201527f4d757374207761697420666f7220636f6f6c646f776e20746f2066696e6973686044820152fd5b50346103fa575f3660031901126103fa576020906010549051908152f35b5082346103fa5760203660031901126103fa57610517611c11565b6005546001600160a01b03808216939192610533338614611c7c565b169384156105725750506001600160a01b03191682176005557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b906020608492519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b50346103fa575f3660031901126103fa576020906105ed60018060a01b03600554163314611c7c565b60ff19601554166015555160018152f35b50346103fa575f3660031901126103fa57602090600f549051908152f35b50346103fa57806003193601126103fa57602090610638611c11565b610640611c27565b9060018060a01b038091165f5260018452825f2091165f528252805f20549051908152f35b8382346103fa5760203660031901126103fa57813561068f60018060a01b03600554163314611c7c565b60025480158180046001148117156107aa57620186a08204831061074957600582029182046005141715610736576103e8900481116106d65760209250600f555160018152f35b815162461bcd60e51b8152602081850152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608490fd5b601184634e487b7160e01b5f525260245ffd5b835162461bcd60e51b8152602081870152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608490fd5b601185634e487b7160e01b5f525260245ffd5b50346103fa575f3660031901126103fa57602090600e549051908152f35b50346103fa575f3660031901126103fa5760209060ff6015541690519015158152f35b50346103fa575f3660031901126103fa57600954336001600160a01b0391821614908115610840575b50156103fa5761001d90305f525f6020525f20546128bd565b905060085416331482610827565b5082346103fa5760203660031901126103fa57803561087860018060a01b03600554163314611c7c565b6002549260058402938085046005149015171561091f576103e893670de0b6b3a7640000948591040482106108d157508281029281840414901517156108be5750601055005b601190634e487b7160e01b5f525260245ffd5b5162461bcd60e51b81526020818401526024808201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015263302e352560e01b6064820152608490fd5b601183634e487b7160e01b5f525260245ffd5b50346103fa57806003193601126103fa577f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7602061096e611c11565b610976611c6d565b60055490916001600160a01b03916109919083163314611c7c565b1693845f52601e83526109b282825f209060ff801983541691151516179055565b519015158152a2005b50346103fa575f3660031901126103fa5760209060ff60115460081c1690519015158152f35b50346103fa5760203660031901126103fa576020906001600160a01b03610a06611c11565b165f5281805260ff815f20541690519015158152f35b50346103fa57806003193601126103fa57602090610a45610a3b611c11565b60243590336120f9565b5160018152f35b50346103fa575f3660031901126103fa57602090600d549051908152f35b5082346103fa57816003193601126103fa57610a84611c11565b9060243590335f526001602052835f2060018060a01b0384165f52602052835f205490828210610abe57602085610a458585038733611e21565b608490602086519162461bcd60e51b8352820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152fd5b50346103fa575f3660031901126103fa57602090601d549051908152f35b50346103fa575f3660031901126103fa576020906013549051908152f35b5082346103fa575f3660031901126103fa576005546001600160a01b039190610b809083163314610b7b81611c7c565b611c7c565b737a250d5630b4cf539739df2c5dacb4c659f2488d91825f52602092601f8452845f209260ff19936001858254161790556bffffffffffffffffffffffff60a01b9180836006541617600655865163c45a015560e01b815286818481855afa908115610d0b57839288915f93610d15575b5089516315ab88c960e31b815293849182905afa8015610d0b5785938489945f93610ce7575b505f90604493948c5197889687956364e329cb60e11b87523090870152166024850152165af190811561043d57918360019793928895935f91610cba575b501680916007541617600755610c7033836005541614611c7c565b5f52601f8552815f2083858254161790556007541693845f5280525f20918254161790557fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab5f80a3005b610cda9150883d8a11610ce0575b610cd28183611cef565b810190611e02565b89610c55565b503d610cc8565b6044935090610d035f92873d8911610ce057610cd28183611cef565b935090610c17565b88513d5f823e3d90fd5b610d2d919350823d8411610ce057610cd28183611cef565b918a610bf1565b5082346103fa57816003193601126103fa57610d4e611c11565b91610d57611c6d565b9160018060a01b03610d6e81600554163314611c7c565b80600754169416938414610dbe57505f8381526020805220805460ff191660ff831515161790551515907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab5f80a3005b6020608492519162461bcd60e51b8352820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152fd5b8382346103fa575f3660031901126103fa578051905f9280549060018260011c9160018416938415610f1f575b6020948585108114610f0c57848852908115610eea5750600114610e91575b610e8d8686610e83828b0383611cef565b5191829182611bca565b0390f35b5f9081529295507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b828410610ed75750505082610e8d94610e83928201019486610e72565b8054868501880152928601928101610eba565b60ff191687860152505050151560051b8301019250610e8382610e8d86610e72565b602283634e487b7160e01b5f525260245ffd5b92607f1692610e53565b83346103fa5760203660031901126103fa57358015158091036103fa57610f5b60018060a01b03600554163314611c7c565b62ff00006011549160101b169062ff00001916176011555f80f35b50346103fa575f3660031901126103fa5760055490516001600160a01b039091168152602090f35b346103fa5760203660031901126103fa57610fb7611c11565b6005546001600160a01b039190610fd19083163314611c7c565b816008549116918116827fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b056745f80a36001600160a01b03191617600855005b50346103fa57806003193601126103fa5761001d9061102c611c11565b90611035611c6d565b60055490926001600160a01b03916110509083163314611c7c565b165f52601f6020525f209060ff801983541691151516179055565b50346103fa575f3660031901126103fa5760209061109460018060a01b03600554163314611c7c565b60ff19601154166011555160018152f35b5082346103fa5760603660031901126103fa57803560243591604435938415158095036103fa576110e160018060a01b03600554163314611c7c565b6102588310611179576103e884111580611171575b15611115575050600c55600a5560ff8019600b5416911617600b555f80f35b906020608492519162461bcd60e51b8352820152603060248201527f4d75737420736574206175746f204c50206275726e2070657263656e7420626560448201526f747765656e20302520616e642031302560801b6064820152fd5b5060016110f6565b906020608492519162461bcd60e51b8352820152603360248201527f63616e6e6f7420736574206275796261636b206d6f7265206f6674656e207468604482015272616e206576657279203130206d696e7574657360681b6064820152fd5b346103fa575f3660031901126103fa576005545f906001600160a01b03811690611203338314611c7c565b6001600160a01b0319166005557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b50346103fa5760203660031901126103fa576020906001600160a01b0361125b611c11565b165f525f8252805f20549051908152f35b50346103fa575f3660031901126103fa576102009060165460ff9081818451948282168652828260081c166020870152828260101c1681870152828260181c166060870152828260201c166080870152828260281c1660a0870152828260301c1660c0870152828260381c1660e08701521c16610100840152818160481c16610120840152818160501c16610140840152818160581c16610160840152818160601c16610180840152818160681c166101a0840152818160701c166101c084015260781c166101e0820152f35b346103fa575f3660031901126103fa576009546001600160a01b039081163314801561137b575b156103fa575f808080936008541647905af15061001d611dc3565b5080600854163314611360565b50346103fa575f3660031901126103fa5760209060ff60115460101c1690519015158152f35b346103fa5760203660031901126103fa576113c7611c11565b6005546001600160a01b0391906113e19083163314611c7c565b816009549116918116827ffaf1b77ed79f6e898c44dd8ab36b330c7b2fd39bcaab05ed6362480df87039655f80a36001600160a01b03191617600955005b50346103fa5760203660031901126103fa576020906001600160a01b03611444611c11565b165f52601e825260ff815f20541690519015158152f35b50346103fa575f3660031901126103fa5760209060ff6011541690519015158152f35b50346103fa575f3660031901126103fa5760075490516001600160a01b039091168152602090f35b346103fa5760603660031901126103fa576114bf611c3d565b6114c7611c4d565b6114cf611c5d565b6114e460018060a01b03600554163314611c7c565b60ff60381b66ff00000000000065ff00000000006016549560281b169360301b169160381b169164ff00000000611547848367ffffff00000000001988161785171760ff61153c818360301c16828460281c16611d11565b9160381c1690611d11565b611557606460ff83161115611d39565b60201b169367ffffffff0000000019161717171760165560ff60185460101c1661157d57005b61001d611f1f565b50346103fa575f3660031901126103fa5760209060ff60185460101c1690519015158152f35b50346103fa57806003193601126103fa57602090610a456115ca611c11565b335f5260018452825f2060018060a01b0382165f5284526115f0602435845f2054611db6565b9033611e21565b50346103fa575f3660031901126103fa576020906017549051908152f35b50346103fa575f3660031901126103fa576020905160128152f35b50346103fa575f3660031901126103fa57602090601a549051908152f35b50346103fa575f3660031901126103fa5760209061ffff601854169051908152f35b50346103fa575f3660031901126103fa5760209060ff600b541690519015158152f35b50346103fa575f3660031901126103fa57602090600c549051908152f35b50346103fa575f3660031901126103fa576020905161dead8152f35b5082346103fa5760603660031901126103fa576116e8611c11565b906116f1611c27565b906117006044358093856120f9565b60018060a01b0383165f526001602052835f20335f52602052835f20549082821061173557602085610a458585033388611e21565b608490602086519162461bcd60e51b8352820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152fd5b5082346103fa5760203660031901126103fa5780356117b360018060a01b03600554163314611c7c565b600254928380046001148415171561091f576103e893670de0b6b3a7640000948591040482106117f457508281029281840414901517156108be5750600e55005b5162461bcd60e51b8152602081840152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b6064820152608490fd5b50346103fa575f3660031901126103fa57602090601b549051908152f35b5082346103fa5760603660031901126103fa57611887611c3d565b61188f611c4d565b611897611c5d565b906118ad60018060a01b03600554163314611c7c565b63ff00000062ff000061ff006016549560081b169260101b169260181b169260ff6118ff858463ffffff0019851617861717826118f4818360101c16828460081c16611d11565b9160181c1690611d11565b169460ff60185460101c16968761193357505061191f6064861115611d39565b63ffffffff19161717171760165561157d57005b906020606492519162461bcd60e51b8352820152601a60248201527f46696e616c20666565732061726520616c7265616479207365740000000000006044820152fd5b50346103fa575f3660031901126103fa57602090601c549051908152f35b50346103fa575f3660031901126103fa57602090600a549051908152f35b50346103fa575f3660031901126103fa576020906012549051908152f35b50346103fa575f3660031901126103fa576020906002549051908152f35b50346103fa575f3660031901126103fa5760065490516001600160a01b039091168152602090f35b50346103fa5760203660031901126103fa576020906001600160a01b03611a3b611c11565b165f52601f825260ff815f20541690519015158152f35b50346103fa57806003193601126103fa57602090610a45611a71611c11565b6024359033611e21565b8382346103fa575f3660031901126103fa578051905f9260035460018160011c91600181168015611b66575b6020948585108214611b535750838752908115611b335750600114611ad9575b505050610e8382610e8d940383611cef565b60035f9081529295507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b828410611b205750505082610e8d94610e839282010194611ac7565b8054868501880152928601928101611b04565b60ff1916868501525050151560051b8301019250610e8382610e8d611ac7565b602290634e487b7160e01b5f525260245ffd5b92607f1692611aa7565b50346103fa575f3660031901126103fa576020906019549051908152f35b346103fa575f3660031901126103fa57611bb360018060a01b03600554163314611c7c565b6011805462ffff0019166201010017905542600d55005b602080825282518183018190529093925f5b828110611bfd57505060409293505f838284010152601f8019910116010190565b818101860151848201604001528501611bdc565b600435906001600160a01b03821682036103fa57565b602435906001600160a01b03821682036103fa57565b6004359060ff821682036103fa57565b6024359060ff821682036103fa57565b6044359060ff821682036103fa57565b6024359081151582036103fa57565b15611c8357565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b67ffffffffffffffff8111611cdb57604052565b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff821117611cdb57604052565b9060ff8091169116019060ff8211611d2557565b634e487b7160e01b5f52601160045260245ffd5b15611d4057565b60405162461bcd60e51b815260206004820152601d60248201527f546f74616c20666565732063616e6e6f742065786365656420313030250000006044820152606490fd5b81810292918115918404141715611d2557565b8115611da2570490565b634e487b7160e01b5f52601260045260245ffd5b91908201809211611d2557565b3d15611dfd573d9067ffffffffffffffff8211611cdb5760405191611df2601f8201601f191660200184611cef565b82523d5f602084013e565b606090565b908160209103126103fa57516001600160a01b03811681036103fa5790565b6001600160a01b03908116918215611ece5716918215611e7e5760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591835f526001825260405f20855f5282528060405f2055604051908152a3565b60405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b601654604061ff0082821c1662ff00008161ff0019851617831c1663ff000000818362ffff001987161717841c1660ff818463ffffff0019881617841717851c169065ff0000000000828563ffffffff198916178517831717861c169266ff000000000000848665ff00ffffffff198a161783178417851717871c169464ff0000000060ff60381b878366ffff00ffffffff198c1617851786178717881717891c1697888367ffffff00ffffffff198c16178517861787178817891717901c169767ffffffffffffffff19161717171717171717601655565b15611fff57565b60405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608490fd5b1561205957565b60405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608490fd5b156120b157565b60405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606490fd5b91908203918211611d2557565b5f939291906001600160a01b038082168015159061211682611ff8565b828516908115159261212784612052565b871561286e57506011549260ff848180961661252c575b505050305f526020935f8552604090815f2054600f5411158061251e575b8061250f575b806124fc575b806124e8575b806124d4575b6124aa575b600754858160a01c161580612498575b8061248d575b80612475575b80612461575b612363575b50508360075460a01c161591808b52601e865284828c2054168015612354575b61234c575b8a938b936121e2575b505050505050506121e0939450612af7565b565b60189996979954868160101c16156122ca575b509a612245979695949392916121e09b9c8252878052858383205416806122bb575b15612277575050505050612236606491600194601654901c1683611d85565b04915b82612253575b506120ec565b9184935f80808080806121ce565b61225e833088612af7565b612269575b5f61223f565b61227281612d7f565b612263565b8152205491945091908116806122ae575b612293575b50612239565b60649193506122a6906016541683611d85565b04915f61228d565b5080601654161515612288565b5085601654891c161515612217565b61ffff60018183160181811161233857916121e09d9e93916122459b9a999897969593168061ffff19831617601855601754818684161711612319575b5050919c9b50919293949596976121f5565b620100009162ffffff19161717601855612331611f1f565b5f80612307565b634e487b7160e01b8f52601160045260248ffd5b8a92506121c5565b50838b5284828c2054166121c0565b819042600d551682516370a0823160e01b81528160048201528781602481305afa908115612457575f91612428575b506123a361271091600a5490611d85565b0480612418575b505060075416803b156103fa575f8091600484518094819363fff6cae960e01b83525af180156103f057612405575b507f454c91ae84fcc766ddda0dcb289f26b3d0176efeacf4061fc219fa6ca8c3048d8a80a15f806121a0565b612410919a50611cc7565b5f985f6123d9565b61242191612a29565b5f806123aa565b90508781813d8311612450575b61243f8183611cef565b810103126103fa57516123a3612392565b503d612435565b84513d5f823e3d90fd5b50835f52601e875285835f2054161561219b565b50612485600d54600c5490611db6565b421015612195565b5085600b541661218f565b50845f5286805285835f205416612189565b6007805460ff60a01b19908116600160a01b179091556124c8612b72565b60075416600755612179565b50835f52601e865284825f20541615612174565b50825f52601e865284825f2054161561216e565b50825f5285805284825f20541615612168565b508460075460a01c1615612162565b508460115460101c1661215c565b866005541692838514159081612863575b8161285b575b508061284f575b80612840575b1561213e5760081c16156127d8575b83601554166126fe575b50805f52602080805260409084825f205416806126ea575b1561261757600e5489116125b7576125af915f6125a592868252525f205489611db6565b60105410156120aa565b5f838161213e565b608491519062461bcd60e51b82526004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b6064820152fd5b90835f5281805284815f205416806126d6575b156126a157600e54891161263f5750506125af565b60849250519062461bcd60e51b82526004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b6064820152fd5b90835f52601f815284825f205416156126bc575b50506125af565b6126cf915f6125a592525f205489611db6565b5f806126b5565b50825f52601f825284815f2054161561262a565b50835f52601f815284825f20541615612581565b821415806127ca575b806127bc575b612718575b5f612569565b325f52601460205260405f205443111561273f57325f5260146020524360405f2055612712565b60405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a490fd5b50836007541682141561270d565b508360065416821415612707565b815f52601e6020528360405f2054168015612830575b61255f5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606490fd5b50825f528360405f2054166127ee565b508160075460a01c1615612550565b5061dead85141561254a565b90505f612543565b86851415915061253d565b929450955095965061288a93506128859150611ff8565b612052565b5f602052815f527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206040515f8152a3565b60408051916060830183811067ffffffffffffffff821117611cdb57825260028352602080840190833683378451156129ec5730825260065484516315ab88c960e31b81526001600160a01b03949092909185168184600481845afa938415612a1f575f94612a00575b50875193600194600110156129ec576129489187859216898b015230611e21565b846006541694853b156103fa57918697949391975197889563791ac94760e01b875260a487019260048801525f602488015260a060448801525180925260c4860194935f905b8382106129d25750505050505091815f81819530606483015242608483015203925af19081156129c957506129c05750565b6121e090611cc7565b513d5f823e3d90fd5b8551811687528a975095820195948201949084019061298e565b634e487b7160e01b5f52603260045260245ffd5b612a18919450823d8411610ce057610cd28183611cef565b925f612927565b87513d5f823e3d90fd5b6001600160a01b0316612a3d811515611ff8565b805f525f60205260405f2054828110612aa3578290825f525f6020520360405f20557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602061dead93845f5260405f20612a98828254611db6565b9055604051908152a3565b60405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608490fd5b6001600160a01b0390811691612b0e831515611ff8565b1691612b1b831515612052565b815f525f60205260405f2054818110612aa357817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92602092855f525f84520360405f2055845f5260405f20612a98828254611db6565b305f525f60205260405f2054601c54612b99612b90601b5483611db6565b601d5490611db6565b9082158015612d77575b612d7257600f54601481029080820460141490151715611d2557808411612d68575b50612bdc82612bd7612be69386611d85565b611d98565b60011c80936120ec565b612c2c612bfc47612bf6846128bd565b476120ec565b612c27612c1f612c1286612bd7601b5486611d85565b95612bd7601d5485611d85565b9485926120ec565b6120ec565b925f601c555f601b555f601d555f80808060018060a01b039687600954165af150612c55611dc3565b5080151580612d5f575b612c81575b50505f8080935080926008541647905af150612c7e611dc3565b50565b606081612c948693866006541630611e21565b60c4856006541691604051948593849263f305d71960e01b845230600485015260248401525f60448401525f606484015261dead60848401524260a48401525af18015612d5457612d29575b505f8093927f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56160608395948495601c549060405192835260208301526040820152a19250612c64565b606090813d8311612d4d575b612d3f8183611cef565b810103126103fa575f612ce0565b503d612d35565b6040513d5f823e3d90fd5b50831515612c5f565b9250612bdc612bc5565b505050565b508115612ba3565b6002548060011b9080820460021490151715611d25576064900460195443145f14612e1757601a5491818310612db457505050565b8282612dc382612dec956120ec565b831015612e085750505b305f525f60205260405f2054908082105f14612e0157505b8092611db6565b601a555b80612df85750565b6121e0906128bd565b9050612de5565b612e1292506120ec565b612dcd565b80821015612e4d57505b305f525f60205260405f2054908082105f14612e4657505b8043601955601a55612df0565b9050612e39565b9050612e2156fea264697066735822122020e6f33b6e74ccb59099106efc97be57363968d9f02b9a2dbfb2e3f93a13dbd264736f6c63430008180033
Deployed Bytecode Sourcemap
15130:22736:0:-:0;;;;;;;;;;;;-1:-1:-1;15130:22736:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;973:6;15130:22736;-1:-1:-1;;;;;15130:22736:0;;;;1023:68;;15130:22736;;522:10;1031:23;1023:68;:::i;:::-;37003:42;:20;15130:22736;37026:19;15130:22736;37003:42;;:::i;:::-;36985:15;:60;15130:22736;;;37132:4;37121:15;;15130:22736;;36985:15;37003:20;15130:22736;;37329:13;15130:22736;;;;;;;;37314:29;;;;;;15130:22736;37314:4;;15130:22736;37314:4;;:29;;;;;;;15130:22736;37314:29;;;15130:22736;9300:5;37451;9300;;;;:::i;:::-;15130:22736;37559:16;37555:108;;15130:22736;;;37329:13;15130:22736;;37796:11;;;;;;15130:22736;;-1:-1:-1;;;;;;37796:11:0;;15130:22736;;;;;;;;;37796:11;;;;;;;;15130:22736;;37822:14;15130:22736;;37822:14;;;15130:22736;;;;37796:11;;;;;;:::i;:::-;15130:22736;;37822:14;37796:11;;;15130:22736;;;;;;;;;37796:11;15130:22736;;;37555:108;37639:12;;;:::i;:::-;37555:108;;;;37314:29;;;;;;;;;;;;;;;;:::i;:::-;;;15130:22736;;;;;37451:5;37314:29;;;;;;;;15130:22736;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;15702:24;15130:22736;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;:::i;:::-;973:6;15130:22736;-1:-1:-1;;;;;15130:22736:0;;;;;;1023:68;522:10;1031:23;;1023:68;:::i;:::-;15130:22736;1323:22;;;15130:22736;;-1:-1:-1;;;;;;;;15130:22736:0;;;973:6;15130:22736;1600:40;15130:22736;;1600:40;15130:22736;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;1023:68;15130:22736;;;;;973:6;15130:22736;;522:10;1031:23;1023:68;:::i;:::-;15130:22736;;21433:28;15130:22736;;21433:28;15130:22736;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;15663:33;15130:22736;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;3939:11;15130:22736;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;1023:68;15130:22736;;;;;973:6;15130:22736;;522:10;1031:23;1023:68;:::i;:::-;3432:12;15130:22736;;;;;;;;;;;;;21662:6;15130:22736;;21627:41;;15130:22736;;973:6;15130:22736;;;;;973:6;15130:22736;;;;;21813:4;15130:22736;;21778:39;;15130:22736;;;;;21905:30;15130:22736;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;15622:35;15130:22736;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;;16013:39;15130:22736;;;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;35070:17;15130:22736;522:10;-1:-1:-1;;;;;15130:22736:0;;;35054:33;;:68;;;;15130:22736;;;;;35219:15;35186:4;;15130:22736;;;;;;;;35219:15;:::i;35054:68::-;15130:22736;;35107:15;15130:22736;;522:10;35091:31;35054:68;;;15130:22736;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;1023:68;15130:22736;;;;;973:6;15130:22736;;522:10;1031:23;1023:68;:::i;:::-;3432:12;15130:22736;;973:6;15130:22736;;;;;;973:6;15130:22736;;;;;;;22376:4;22384;;15130:22736;;;;;22343:45;;15130:22736;;;;;;;;;;;;;;;;;-1:-1:-1;22460:31:0;15130:22736;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24897:34;15130:22736;;;:::i;:::-;;;:::i;:::-;973:6;15130:22736;;;-1:-1:-1;;;;;15130:22736:0;1023:68;;15130:22736;;522:10;1031:23;1023:68;:::i;:::-;15130:22736;;;;;24843:19;15130:22736;;24843:39;15130:22736;;;;;;;;;;;;;;;;;;;24843:39;15130:22736;;;;;;24897:34;15130:22736;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;;15772:33;15130:22736;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;-1:-1:-1;;;;;15130:22736:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3761:6;15130:22736;;:::i;:::-;;;522:10;;3761:6;:::i;:::-;15130:22736;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;15586:29;15130:22736;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;522:10;;15130:22736;;;;;;;;;;;;;;;;;;;;;;;5200:35;;;;15130:22736;;;;5364:34;15130:22736;;;;522:10;5364:34;:::i;15130:22736::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;16950:27;15130:22736;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;15901:35;15130:22736;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;973:6;15130:22736;-1:-1:-1;;;;;15130:22736:0;;1023:68;;15130:22736;;522:10;1031:23;1023:68;1031:23;1023:68;:::i;:::-;;:::i;:::-;20633:42;15130:22736;;;;;;22615:31;15130:22736;;;;;;;;;20748:4;15130:22736;;;;;;;;;;;;;20763:34;15130:22736;;;20763:34;15130:22736;;;;;;20841:26;;;;;;;;;;;;;;;;;;15130:22736;20841:26;;;15130:22736;-1:-1:-1;15130:22736:0;;-1:-1:-1;;;20908:23:0;;15130:22736;;;;;20908:23;;;;;;;;;;;15130:22736;20908:23;;;15130:22736;;;;;;;;;;;;;;;;;20823:109;;20901:4;20823:109;;;15130:22736;;;;;;;20823:109;;;;;;;;;20748:4;20823:109;;;;;;15130:22736;20823:109;;;15130:22736;;;;;20807:125;15130:22736;;;20807:125;15130:22736;1023:68;522:10;15130:22736;973:6;15130:22736;;1031:23;1023:68;:::i;:::-;15130:22736;;22615:31;15130:22736;;;;;;;;;;;;;20807:125;15130:22736;;;;;;;;;;;;;;;;;25383:40;15130:22736;25383:40;;15130:22736;20823:109;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;20908:23;15130:22736;20908:23;;;;15130:22736;20908:23;;;;;;;;;;;:::i;:::-;;;;;;;15130:22736;;;;;;;;;20841:26;;;;;;;;;;;;;;;:::i;:::-;;;;;15130:22736;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;1023:68;15130:22736;973:6;15130:22736;;522:10;1031:23;1023:68;:::i;:::-;15130:22736;25085:13;15130:22736;;;;25077:21;;;15130:22736;;-1:-1:-1;15130:22736:0;;;;25328:25;15130:22736;;;;;-1:-1:-1;;15130:22736:0;;;;;;;;;;;25383:40;;15130:22736;25383:40;;15130:22736;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;15130:22736:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;-1:-1:-1;15130:22736:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;;;;;;;;1023:68;15130:22736;;;;;973:6;15130:22736;;522:10;1031:23;1023:68;:::i;:::-;15130:22736;22744:21;15130:22736;;;;;;;;;;22744:21;15130:22736;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;973:6;15130:22736;;;-1:-1:-1;;;;;15130:22736:0;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;:::i;:::-;973:6;15130:22736;-1:-1:-1;;;;;15130:22736:0;;1023:68;;15130:22736;;522:10;1031:23;1023:68;:::i;:::-;15130:22736;25590:15;15130:22736;;;;;;25547:59;;15130:22736;25547:59;;-1:-1:-1;;;;;;15130:22736:0;;25590:15;15130:22736;;;;;;;;;;;;;;;22615:46;15130:22736;;;:::i;:::-;;;;:::i;:::-;973:6;15130:22736;;;-1:-1:-1;;;;;15130:22736:0;1023:68;;15130:22736;;522:10;1031:23;1023:68;:::i;:::-;15130:22736;;;22615:31;15130:22736;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;1023:68;15130:22736;;;;;973:6;15130:22736;;522:10;1031:23;1023:68;:::i;:::-;15130:22736;;21301:22;15130:22736;;21301:22;15130:22736;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;;;;;;;;;;;;;;;1023:68;15130:22736;;;;;973:6;15130:22736;;522:10;1031:23;1023:68;:::i;:::-;35728:3;35705:26;;15130:22736;;35851:4;35839:16;;;:33;;;15130:22736;;;;;;35956:37;15130:22736;36003:27;15130:22736;;;;36040:24;15130:22736;;;;;36040:24;15130:22736;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;35839:33;;15130:22736;35839:33;;15130:22736;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;973:6;15130:22736;;;-1:-1:-1;;;;;15130:22736:0;;;1023:68;522:10;1031:23;;1023:68;:::i;:::-;-1:-1:-1;;;;;;15130:22736:0;973:6;15130:22736;1600:40;;;;15130:22736;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;-1:-1:-1;;;;;15130:22736:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;16655:20;15130:22736;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;35326:17;15130:22736;-1:-1:-1;;;;;15130:22736:0;;;522:10;35310:33;:68;;;;15130:22736;;;;;;;;;35442:15;15130:22736;;35484:21;35434:85;;;;;;:::i;35310:68::-;15130:22736;;35363:15;15130:22736;;522:10;35347:31;35310:68;;15130:22736;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;;15811:30;15130:22736;;;;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;:::i;:::-;973:6;15130:22736;-1:-1:-1;;;;;15130:22736:0;;1023:68;;15130:22736;;522:10;1031:23;1023:68;:::i;:::-;15130:22736;25791:17;15130:22736;;;;;;25755:54;;15130:22736;25755:54;;-1:-1:-1;;;;;;15130:22736:0;;25791:17;15130:22736;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;-1:-1:-1;;;;;15130:22736:0;;:::i;:::-;;;;25950:19;15130:22736;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;;15733:33;15130:22736;;;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;15256:28;15130:22736;;;-1:-1:-1;;;;;15130:22736:0;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;1023:68;15130:22736;;;;;973:6;15130:22736;;522:10;1031:23;1023:68;:::i;:::-;-1:-1:-1;;;15130:22736:0;;24214:6;15130:22736;;;;;;;;;;;;;;;24392:101;15130:22736;;;;;;;;;;;24392:61;15130:22736;;;;;;;;;;24392:61;:::i;:::-;15130:22736;;;;24392:101;;:::i;:::-;24503:65;24531:3;15130:22736;;;24511:23;;24503:65;:::i;:::-;15130:22736;;;;;;;;;;;24214:6;15130:22736;;24692:9;15130:22736;;;;24688:59;;15130:22736;24688:59;;;:::i;15130:22736::-;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;;16751:29;15130:22736;;;;;;;;;;;;;;;;;;;;;;;;;;;4886:47;15130:22736;;:::i;:::-;522:10;15130:22736;;;;;;;;;;;;;;;;;;;4886:47;15130:22736;;;;;;4886:47;:::i;:::-;522:10;;4886:47;:::i;15130:22736::-;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;16682:29;15130:22736;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;;3330:2;15130:22736;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;16829:36;15130:22736;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;;16718:27;15130:22736;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;;15496:33;15130:22736;;;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;15535:45;15130:22736;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;;15336:6;15130:22736;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;:::i;:::-;;;;:::i;:::-;;4354:6;15130:22736;;4354:6;;;;:::i;:::-;15130:22736;;;;;;;;;;;;;;;522:10;15130:22736;;;;;;;;4463:26;;;;15130:22736;;;;4620:25;15130:22736;;;522:10;15130:22736;4620:25;:::i;15130:22736::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;1023:68;15130:22736;;;;;973:6;15130:22736;;522:10;1031:23;1023:68;:::i;:::-;3432:12;15130:22736;;;;;;;;;;;;;22096:4;22104;;15130:22736;;;;;22063:45;;15130:22736;;;;;;;;;;;;;;;;;-1:-1:-1;22191:42:0;15130:22736;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;16872:33;15130:22736;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;:::i;:::-;;;:::i;:::-;;;:::i;:::-;;1023:68;15130:22736;;;;;973:6;15130:22736;;522:10;1031:23;1023:68;:::i;:::-;15130:22736;;;22925:6;15130:22736;;;;;;;;;;;;;;;23099:98;15130:22736;;;;;;;;;;;23099:59;15130:22736;;;;;;;;;;23099:59;:::i;:::-;15130:22736;;;;23099:98;;:::i;:::-;15130:22736;;;;;;;;23215:10;;15130:22736;;23274:22;;23266:64;23293:3;23274:22;;;23266:64;:::i;:::-;-1:-1:-1;;15130:22736:0;;;;;22925:6;15130:22736;23448:59;;15130:22736;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;16911:33;15130:22736;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;15455:35;15130:22736;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;15848:47;15130:22736;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;3432:12;15130:22736;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;15209:41;15130:22736;;;-1:-1:-1;;;;;15130:22736:0;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;-1:-1:-1;;;;;15130:22736:0;;:::i;:::-;;;;17042:63;15130:22736;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4132:6;15130:22736;;:::i;:::-;;;522:10;;4132:6;:::i;15130:22736::-;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;;;;3122:5;15130:22736;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15130:22736:0;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3122:5;15130:22736;;;;;;-1:-1:-1;15130:22736:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;-1:-1:-1;;15130:22736:0;;;;;;;;-1:-1:-1;15130:22736:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;;16787:36;15130:22736;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;1023:68;15130:22736;;;;;973:6;15130:22736;;522:10;1031:23;1023:68;:::i;:::-;21130:20;15130:22736;;-1:-1:-1;;15130:22736:0;;;;;21205:15;21188:32;15130:22736;;;;;;;;;;;;;;;;;;-1:-1:-1;15130:22736:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15130:22736:0;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;15130:22736:0;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15130:22736:0;;;;;:::i;:::-;;;;-1:-1:-1;15130:22736:0;;;;:::o;:::-;;;:::o;:::-;;;;;;;;;;-1:-1:-1;;;;;15130:22736:0;;;;;;;:::o;7174:370::-;-1:-1:-1;;;;;15130:22736:0;;;;7305:19;;15130:22736;;;7383:21;;;15130:22736;;;7505:32;15130:22736;;7322:1;15130:22736;7454:11;15130:22736;;;7322:1;15130:22736;;7322:1;15130:22736;;;;;7322:1;15130:22736;;;;;;;7505:32;7174:370::o;15130:22736::-;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;23519:541;23591:6;15130:22736;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23591:6;15130:22736;23519:541::o;15130:22736::-;;;;:::o;:::-;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;;;;;;:::o;26039:4850::-;26182:1;;26039:4850;;;-1:-1:-1;;;;;15130:22736:0;;;26166:18;;;;26158:68;26166:18;26158:68;:::i;:::-;15130:22736;;;26244:16;;;;26236:64;;;;:::i;:::-;26315:11;;26311:90;;15130:22736;26415:14;15130:22736;;;;;;;;26411:2426;;26039:4850;28896:4;;;;26182:1;15130:22736;;;26182:1;15130:22736;;;;;26182:1;15130:22736;;28952:18;15130:22736;-1:-1:-1;28928:42:0;28998:34;;;26039:4850;28998:59;;;26039:4850;28998:107;;;26039:4850;28998:149;;;26039:4850;28998:189;;;26039:4850;28981:313;;26039:4850;29322:8;15130:22736;;;;;;29321:9;:54;;;26039:4850;29321:83;;;26039:4850;29321:150;;;26039:4850;29321:192;;;26039:4850;29304:274;;26039:4850;15130:22736;;;29322:8;15130:22736;;;;29603:9;15130:22736;;;;29711:19;15130:22736;;;;;;;;29711:52;;;;26039:4850;29707:98;;26039:4850;29815:16;29841:19;;29943:896;;;26039:4850;30875:6;;;;;;;;;;;;:::i;:::-;26039:4850::o;29943:896::-;29975:9;15130:22736;;;;;;;;;;29974:10;29970:210;;29943:896;15130:22736;;30814:14;15130:22736;;;;;;;30875:6;15130:22736;;;;;;;;;;;;;30220:57;;;29943:896;30216:389;;;30297:13;;;;;9300:5;30372:3;30297:13;30306:4;15130:22736;30346:6;15130:22736;;;;9300:5;;:::i;:::-;15130:22736;30216:389;;30623:8;30619:181;;30216:389;30814:14;;:::i;:::-;29943:896;;;;;;;;;;;30619:181;30688:4;28896;;30688;;:::i;:::-;30711:75;;30619:181;;;;30711:75;30760:6;;;:::i;:::-;30711:75;;30216:389;15130:22736;;;;;;-1:-1:-1;15130:22736:0;;;;;30452:58;;30216:389;30431:174;;30216:389;;;;30431:174;30586:3;15130:22736;;;9300:5;15130:22736;30561:6;15130:22736;;9300:5;;:::i;:::-;15130:22736;30431:174;;;;30452:58;15130:22736;;30487:6;15130:22736;;30487:23;;30452:58;;30220:57;15130:22736;;30253:6;15130:22736;;;;30253:24;;30220:57;;29970:210;15130:22736;30017:1;15130:22736;;;;;;;;;;30875:6;15130:22736;;;;30814:14;15130:22736;;;;;;;;;;;;;;;29975:9;15130:22736;30052:14;15130:22736;;;;;;30040:26;30036:130;;29970:210;;;;;;;;;;;;;;;;30036:130;15130:22736;;;;;;;29975:9;15130:22736;30090:16;;:::i;:::-;30036:130;;;;15130:22736;-1:-1:-1;;;15130:22736:0;;26415:14;15130:22736;;;;;29707:98;29779:15;;-1:-1:-1;29707:98:0;;29711:52;15130:22736;;;;;;;;;;29711:52;;29304:274;36167:15;;;36150:32;15130:22736;;;;;;;36265:29;;;;;;15130:22736;28896:4;;15130:22736;28896:4;;36265:29;;;;;;;26182:1;36265:29;;;29304:274;15130:22736;9300:5;36424;15130:22736;36389:16;15130:22736;9300:5;;:::i;:::-;15130:22736;36541:16;36537:108;;29304:274;15130:22736;;29322:8;15130:22736;;36778:11;;;;;26182:1;15130:22736;;36265:29;15130:22736;;;;;;;;;36778:11;;;;;;;;;;29304:274;36804:12;;;;;29304:274;;;;36778:11;;;;;;:::i;:::-;26182:1;36778:11;;;;36537:108;36621:12;;;:::i;:::-;36537:108;;;;36265:29;;;;;;;;;;;;;;;;:::i;:::-;;;15130:22736;;;;;9300:5;36265:29;;;;;;;;15130:22736;;;26182:1;15130:22736;;;;;29321:192;15130:22736;;26182:1;15130:22736;29488:19;15130:22736;;;;26182:1;15130:22736;;;29487:26;29321:192;;:150;15130:22736;29439:32;:14;15130:22736;29456:15;15130:22736;29439:32;;:::i;:::-;29420:15;:51;;29321:150;;:83;15130:22736;;29391:13;15130:22736;;29321:83;;:54;15130:22736;;26182:1;15130:22736;;;;;;26182:1;15130:22736;;;29321:54;;28981:313;29212:15;15130:22736;;-1:-1:-1;;;;15130:22736:0;;;-1:-1:-1;;;15130:22736:0;;;;29212:15;;:::i;:::-;;15130:22736;;29212:15;15130:22736;28981:313;;28998:189;15130:22736;;26182:1;15130:22736;29164:19;15130:22736;;;;26182:1;15130:22736;;;29163:24;28998:189;;:149;15130:22736;;26182:1;15130:22736;29122:19;15130:22736;;;;26182:1;15130:22736;;;29121:26;28998:149;;:107;15130:22736;;26182:1;15130:22736;;;;;;26182:1;15130:22736;;;29073:32;28998:107;;:59;15130:22736;;29049:8;15130:22736;;;;29048:9;28998:59;;:34;15130:22736;;26415:14;15130:22736;;;;28998:34;;26411:2426;15130:22736;973:6;15130:22736;;26466:15;;;;;:48;;;;26411:2426;26466:84;;;26411:2426;26466:125;;;;26411:2426;26466:154;;;26411:2426;26445:2382;26411:2426;26445:2382;15130:22736;;;26657:14;26653:218;;26445:2382;15130:22736;27024:20;15130:22736;;27020:628;;26445:2382;15130:22736;;26182:1;15130:22736;27718:25;15130:22736;;;;;;;26182:1;15130:22736;;;27718:91;;;26445:2382;27693:1120;;;27893:20;15130:22736;27883:30;;15130:22736;;28038:137;15130:22736;26182:1;28071:22;15130:22736;;;;;26182:1;15130:22736;;28071:22;;:::i;:::-;28097:9;15130:22736;-1:-1:-1;28071:35:0;28038:137;:::i;:::-;26445:2382;;;26411:2426;;15130:22736;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;27693:1120;15130:22736;;26182:1;15130:22736;;;;;;26182:1;15130:22736;;;28269:91;;;27693:1120;28244:569;;;28444:20;15130:22736;28434:30;;15130:22736;;28244:569;;27693:1120;;15130:22736;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;28244:569;15130:22736;;26182:1;15130:22736;28598:31;15130:22736;;;;26182:1;15130:22736;;;28597:36;28593:220;;28244:569;;;27693:1120;;28593:220;28657:137;15130:22736;26182:1;28690:22;15130:22736;;26182:1;15130:22736;;28690:22;;:::i;28657:137::-;28593:220;;;;28269:91;15130:22736;;26182:1;15130:22736;28323:31;15130:22736;;;;26182:1;15130:22736;;;28322:38;28269:91;;27718;15130:22736;;26182:1;15130:22736;27774:31;15130:22736;;;;26182:1;15130:22736;;;27773:36;27718:91;;27020:628;27097:13;;;:71;;;27020:628;27097:127;;;27020:628;27068:562;;27020:628;;;;27068:562;27339:9;26182:1;15130:22736;27310:28;15130:22736;;;26182:1;15130:22736;;27384:12;-1:-1:-1;15130:22736:0;;;27339:9;26182:1;15130:22736;27310:28;15130:22736;;27384:12;15130:22736;26182:1;15130:22736;;27068:562;;15130:22736;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;27097:127;15130:22736;;27210:13;15130:22736;;27196:28;;;27097:127;;:71;15130:22736;;27152:15;15130:22736;;27138:30;;;27097:71;;26653:218;15130:22736;26182:1;15130:22736;26728:19;15130:22736;;;;26182:1;15130:22736;;;26728:52;;;;26653:218;;15130:22736;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;26728:52;15130:22736;;26182:1;15130:22736;;;26182:1;15130:22736;;;26728:52;;26466:154;15130:22736;;26612:8;15130:22736;;;;26611:9;26466:154;;:125;26570:21;26584:6;26570:21;;;26466:125;;:84;;;;;;:48;26501:13;;;;;-1:-1:-1;26466:48:0;;26311:90;5571:70;;;;;;;;5651:71;5571:70;;;;;;:::i;:::-;5651:71;:::i;:::-;26182:1;15130:22736;;;26182:1;15130:22736;6092:35;15130:22736;;;26182:1;15130:22736;;6092:35;26384:7::o;32185:573::-;15130:22736;;;;;;;;;;;;;;;;;;32347:1;15130:22736;;;;;;;;;;;;;;;;32377:4;15130:22736;;32402:15;15130:22736;;;-1:-1:-1;;;32402:22:0;;-1:-1:-1;;;;;15130:22736:0;;;;;;;;;32402:22;15130:22736;;32402:22;;;;;;;-1:-1:-1;32402:22:0;;;32185:573;15130:22736;;;32397:1;;15130:22736;32397:1;15130:22736;;;;32485:11;15130:22736;;;;;;;;;32377:4;32485:11;:::i;:::-;15130:22736;32402:15;15130:22736;;32533:218;;;;;;15130:22736;;;;;;;;;;;;;;32533:218;;15130:22736;;;32533:218;32402:22;32533:218;;15130:22736;-1:-1:-1;15130:22736:0;;;;;;;;;;;;;;;;;;-1:-1:-1;15130:22736:0;;;;;;;32377:4;;;;;;;;-1:-1:-1;32377:4:0;;;;15130:22736;;;;32726:15;15130:22736;;;;32533:218;;;;;;;;;;;;32185:573;:::o;32533:218::-;;;;:::i;:::-;15130:22736;;-1:-1:-1;15130:22736:0;;;;;;;;;;;;;;-1:-1:-1;15130:22736:0;;;;;;;;;;;;;;;;;;-1:-1:-1;15130:22736:0;;32402:22;15130:22736;;-1:-1:-1;15130:22736:0;32402:22;;;;;;;;;;;;;;;:::i;:::-;;;;;;15130:22736;;;-1:-1:-1;15130:22736:0;;;;;5444:747;-1:-1:-1;;;;;15130:22736:0;5571:70;5579:20;;;5571:70;:::i;:::-;15130:22736;5597:1;15130:22736;5597:1;15130:22736;;;5597:1;15130:22736;;5863:23;;;15130:22736;;;;;5597:1;15130:22736;5597:1;15130:22736;;;;5597:1;15130:22736;;6092:35;15130:22736;;;;5597:1;15130:22736;;5597:1;15130:22736;6046:30;15130:22736;;;6046:30;:::i;:::-;15130:22736;;;;;;;6092:35;5444:747::o;15130:22736::-;;;-1:-1:-1;;;15130:22736:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;15130:22736:0;;;;;;;5444:747;-1:-1:-1;;;;;15130:22736:0;;;;5571:70;5579:20;;;5571:70;:::i;:::-;15130:22736;5659:23;5651:71;5659:23;;;5651:71;:::i;:::-;15130:22736;5597:1;15130:22736;5597:1;15130:22736;;;5597:1;15130:22736;;5863:23;;;15130:22736;;;6092:35;15130:22736;;;;5597:1;15130:22736;5597:1;15130:22736;;;;5597:1;15130:22736;;;5597:1;15130:22736;;5597:1;15130:22736;6046:30;15130:22736;;;6046:30;:::i;33274:1712::-;33356:4;3571:9;15130:22736;3571:9;15130:22736;;;3571:9;15130:22736;;33400:18;15130:22736;33400:78;:51;33433:18;15130:22736;33400:51;;:::i;:::-;33466:12;15130:22736;33400:78;;:::i;:::-;33515:20;;;:46;;;;33274:1712;33511:83;;33626:18;15130:22736;33647:2;15130:22736;;;;;;33647:2;15130:22736;;;;;;;33608:41;;;33604:113;;33274:1712;33802:36;33801:70;33802:36;;9198:5;33802:36;;;:::i;:::-;33801:70;:::i;:::-;15130:22736;;9198:5;;;:::i;:::-;34379:40;9198:5;34001:21;34050:18;;;:::i;:::-;34101:21;9198:5;:::i;:::-;34379:28;9402:5;;15130:22736;9300:5;33433:18;15130:22736;9300:5;;:::i;9402:::-;15130:22736;9300:5;33466:12;15130:22736;9300:5;;:::i;9402:::-;34379:28;;;;:::i;:::-;:40;:::i;:::-;15130:22736;3571:9;33400:18;15130:22736;3571:9;33433:18;15130:22736;3571:9;33466:12;15130:22736;3571:9;15130:22736;;;;;;;;;;34543:17;15130:22736;;34535:53;;;;;:::i;:::-;;34603:19;;;:42;;;33274:1712;34599:271;;33274:1712;15130:22736;;3571:9;15130:22736;;;;;;34902:15;15130:22736;;34944:21;34894:85;;;;;;:::i;:::-;;33274:1712::o;34599:271::-;33012:249;15130:22736;32960:11;15130:22736;;;32942:15;15130:22736;;33356:4;32960:11;:::i;:::-;15130:22736;;32942:15;15130:22736;;;;;;;;;;;;;33012:249;;33356:4;33012:249;;;15130:22736;;;;;3571:9;15130:22736;;;;3571:9;15130:22736;;;;15336:6;15130:22736;;;;33236:15;15130:22736;;;;33012:249;;;;;;;;34599:271;15130:22736;3571:9;15130:22736;;;34726:133;33012:249;15130:22736;;;;;33400:18;15130:22736;;;;;;;;;;;;;;;34726:133;34599:271;;;;33012:249;;;;;;;;;;;;;;:::i;:::-;;;15130:22736;;;;33012:249;;;;;;;;;15130:22736;;;3571:9;15130:22736;;;;;34603:42;34626:19;;;;34603:42;;33604:113;33665:41;-1:-1:-1;33801:70:0;33604:113;;33511:83;33577:7;;;:::o;33515:46::-;33539:22;;;33515:46;;30895:1284;3432:12;15130:22736;;;;;;;;3432:12;15130:22736;;;;;;;30996:3;15130:22736;;31013:17;15130:22736;31034:12;31013:33;31009:1090;31034:12;;;31092:17;15130:22736;;31092:31;;;;;31143:7;;;:::o;31088:550::-;31284:30;;;;31596:27;31284:30;;:::i;:::-;31274:41;;:125;;;;;;31499:4;-1:-1:-1;15130:22736:0;-1:-1:-1;15130:22736:0;;;-1:-1:-1;15130:22736:0;;31532:45;:21;;;:45;:21;;;:45;;31523:54;31596:27;;:::i;:::-;31092:17;15130:22736;31009:1090;32112:10;32108:65;;30895:1284;:::o;32108:65::-;32155:6;;;:::i;31532:45::-;;;;;31274:125;31368:30;;;;:::i;:::-;31274:125;;31009:1090;31745:19;;;;;;:41;;31874:4;-1:-1:-1;15130:22736:0;-1:-1:-1;15130:22736:0;;;-1:-1:-1;15130:22736:0;;31903:45;:21;;;:45;:21;;;:45;;31894:54;31034:12;31013:17;15130:22736;32062:26;15130:22736;31009:1090;;31903:45;;;;;31745:41;;;;
Swarm Source
ipfs://20e6f33b6e74ccb59099106efc97be57363968d9f02b9a2dbfb2e3f93a13dbd2
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.