Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000 CALCIUM
Holders
193
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
58,902.501500757 CALCIUMValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Got_Milk
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-09-23 */ /** Gotmilk.live https://t.me/gotmilk_erc20 https://twitter.com/Gotmilk_Eth */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.19; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer( address recipient, uint256 amount ) external returns (bool); function allowance( address owner, address spender ) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } } interface IUniswapV2Factory { function createPair( address tokenA, address tokenB ) external returns (address pair); } interface IUniswapV2Router02 { function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); } interface IDividendDistributor { function setDistributionCriteria( uint256 _minPeriod, uint256 _minDistribution ) external; function setShare(address shareholder, uint256 amount) external; function deposit(uint256 amount) external; function process(uint256 gas) external; function claimDividend(address _user) external; function getPaidEarnings( address shareholder ) external view returns (uint256); function getUnpaidEarnings( address shareholder ) external view returns (uint256); function totalDistributed() external view returns (uint256); } contract DividendDistributor is IDividendDistributor { using SafeMath for uint256; address public token; IUniswapV2Router02 public router; struct Share { uint256 amount; uint256 totalExcluded; uint256 totalRealised; } address[] public shareholders; mapping(address => uint256) public shareholderIndexes; mapping(address => uint256) public shareholderClaims; mapping(address => Share) public shares; uint256 public totalShares; uint256 public totalDividends; uint256 public totalDistributed; uint256 public dividendsPerShare; uint256 public dividendsPerShareAccuracyFactor = 10**36; uint256 public minPeriod = 1 hours; uint256 public minDistribution = 1 * (10**9); uint256 currentIndex; bool initialized; modifier initializer() { require(!initialized); _; initialized = true; } modifier onlyToken() { require(msg.sender == token); _; } constructor(address router_) { token = msg.sender; router = IUniswapV2Router02(router_); } function setDistributionCriteria( uint256 _minPeriod, uint256 _minDistribution ) external override onlyToken { minPeriod = _minPeriod; minDistribution = _minDistribution; } function setShare(address shareholder, uint256 amount) external override onlyToken { if (shares[shareholder].amount > 0) { distributeDividend(shareholder); } if (amount > 0 && shares[shareholder].amount == 0) { addShareholder(shareholder); } else if (amount == 0 && shares[shareholder].amount > 0) { removeShareholder(shareholder); } totalShares = totalShares.sub(shares[shareholder].amount).add(amount); shares[shareholder].amount = amount; shares[shareholder].totalExcluded = getCumulativeDividends( shares[shareholder].amount ); } function deposit(uint256 amount) external override onlyToken { totalDividends = totalDividends.add(amount); dividendsPerShare = dividendsPerShare.add( dividendsPerShareAccuracyFactor.mul(amount).div(totalShares) ); } function process(uint256 gas) external override onlyToken { uint256 shareholderCount = shareholders.length; if (shareholderCount == 0) { return; } uint256 gasUsed = 0; uint256 gasLeft = gasleft(); uint256 iterations = 0; while (gasUsed < gas && iterations < shareholderCount) { if (currentIndex >= shareholderCount) { currentIndex = 0; } if (shouldDistribute(shareholders[currentIndex])) { distributeDividend(shareholders[currentIndex]); } gasUsed = gasUsed.add(gasLeft.sub(gasleft())); gasLeft = gasleft(); currentIndex++; iterations++; } } function shouldDistribute(address shareholder) internal view returns (bool) { return shareholderClaims[shareholder] + minPeriod < block.timestamp && getUnpaidEarnings(shareholder) > minDistribution; } function distributeDividend(address shareholder) internal { if (shares[shareholder].amount == 0) { return; } uint256 amount = getUnpaidEarnings(shareholder); if (amount > 0) { totalDistributed = totalDistributed.add(amount); IERC20(token).transfer(shareholder, amount); shareholderClaims[shareholder] = block.timestamp; shares[shareholder].totalRealised = shares[shareholder] .totalRealised .add(amount); shares[shareholder].totalExcluded = getCumulativeDividends( shares[shareholder].amount ); } } function claimDividend(address _user) external { distributeDividend(_user); } function getPaidEarnings(address shareholder) public view returns (uint256) { return shares[shareholder].totalRealised; } function getUnpaidEarnings(address shareholder) public view returns (uint256) { if (shares[shareholder].amount == 0) { return 0; } uint256 shareholderTotalDividends = getCumulativeDividends( shares[shareholder].amount ); uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded; if (shareholderTotalDividends <= shareholderTotalExcluded) { return 0; } return shareholderTotalDividends.sub(shareholderTotalExcluded); } function getCumulativeDividends(uint256 share) internal view returns (uint256) { return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor); } function addShareholder(address shareholder) internal { shareholderIndexes[shareholder] = shareholders.length; shareholders.push(shareholder); } function removeShareholder(address shareholder) internal { shareholders[shareholderIndexes[shareholder]] = shareholders[ shareholders.length - 1 ]; shareholderIndexes[ shareholders[shareholders.length - 1] ] = shareholderIndexes[shareholder]; shareholders.pop(); } } contract Got_Milk is Context, IERC20, Ownable { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; mapping(address => bool) private _isDividendExempt; mapping(address => bool) private bots; address payable private _taxWallet; uint256 firstBlock; uint256 private _initialBuyTax = 15; uint256 private _initialSellTax = 45; uint256 private _finalBuyTax = 2; uint256 private _finalSellTax = 4; uint256 private _reduceBuyTaxAt = 20; uint256 private _reduceSellTaxAt = 40; uint256 private reflectionFeeOnBuying = 1; uint256 private taxFeeOnBuying = 1; uint256 private reflectionFeeOnSelling = 3; uint256 private taxFeeOnSelling = 1; uint256 private _preventSwapBefore = 35; uint256 private _buyCount = 0; uint256 private reflectionFeeCounter = 0; uint256 private taxFeeCounter = 0; uint8 private constant _decimals = 9; uint256 private constant _tTotal = 1_000_000_000 * 10 ** _decimals; string private constant _name = unicode"got milk?"; string private constant _symbol = unicode"CALCIUM"; uint256 public _maxTxAmount = 20000000 * 10 ** _decimals; uint256 public _maxWalletSize = 20000000 * 10 ** _decimals; uint256 public _taxSwapThreshold = 10000000 * 10 ** _decimals; uint256 public _maxTaxSwap = 10000000 * 10 ** _decimals; uint256 public distributorGas = 500000; DividendDistributor public distributor; IUniswapV2Router02 private uniswapV2Router; address public uniswapV2Pair; bool public tradingOpen; bool private inSwap = false; bool private swapEnabled = false; event MaxTxAmountUpdated(uint _maxTxAmount); modifier lockTheSwap() { inSwap = true; _; inSwap = false; } constructor() { _taxWallet = payable(msg.sender); distributor = new DividendDistributor( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); _balances[_msgSender()] = _tTotal; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_taxWallet] = true; _isDividendExempt[uniswapV2Pair] = true; _isDividendExempt[address(uniswapV2Router)] = true; _isDividendExempt[address(this)] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer( address recipient, uint256 amount ) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance( address owner, address spender ) public view override returns (uint256) { return _allowances[owner][spender]; } function approve( address spender, uint256 amount ) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address from, address to, uint256 amount) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if(from == address(distributor)){ basicTransfer(from, to, amount); return; } uint256 taxAmount = 0; uint256 totalFee = 0; if (from != owner() && to != owner()) { require(!bots[from] && !bots[to]); taxAmount = amount .mul( (_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax ) .div(100); totalFee = reflectionFeeOnBuying.add(taxFeeOnBuying); reflectionFeeCounter = taxAmount.mul(reflectionFeeOnBuying).div( totalFee ); taxFeeCounter = taxAmount.mul(taxFeeOnBuying).div(totalFee); if ( from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to] ) { require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount."); require( balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize." ); if (firstBlock + 3 > block.number) { require( !isContract(to) && msg.sender == tx.origin, "No bots allowed" ); } _buyCount++; } if (to != uniswapV2Pair && !_isExcludedFromFee[to]) { require( balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize." ); } if (to == uniswapV2Pair && from != address(this)) { taxAmount = amount .mul( (_buyCount > _reduceSellTaxAt) ? _finalSellTax : _initialSellTax ) .div(100); totalFee = reflectionFeeOnSelling.add(taxFeeOnSelling); reflectionFeeCounter = taxAmount .mul(reflectionFeeOnSelling) .div(totalFee); taxFeeCounter = taxAmount.mul(taxFeeOnSelling).div(totalFee); } uint256 contractTokenBalance = balanceOf(address(this)); if ( !inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _taxSwapThreshold && _buyCount > _preventSwapBefore ) { swapTokensForEth( min(amount, min(contractTokenBalance, _maxTaxSwap)) ); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { sendETHToFee(contractETHBalance); } } } if (taxAmount > 0) { _balances[address(distributor)] = _balances[address(distributor)].add( reflectionFeeCounter ); emit Transfer(from, address(distributor), reflectionFeeCounter); _balances[address(this)] = _balances[address(this)].add( taxFeeCounter ); emit Transfer(from, address(this), taxFeeCounter); } _balances[from] = _balances[from].sub(amount); _balances[to] = _balances[to].add(amount.sub(taxAmount)); emit Transfer(from, to, amount.sub(taxAmount)); if (!_isDividendExempt[from]) { try distributor.setShare(from, _balances[from]) {} catch {} } if (!_isDividendExempt[to]) { try distributor.setShare(to, _balances[to]) {} catch {} } try distributor.deposit(reflectionFeeCounter) {} catch {} try distributor.process(distributorGas) {} catch {} } function basicTransfer(address from, address to, uint256 amount) private { _balances[from] = _balances[from].sub(amount); _balances[to] = _balances[to].add(amount); emit Transfer(from, to, amount); } function min(uint256 a, uint256 b) private pure returns (uint256) { return (a > b) ? b : a; } function isContract(address account) private view returns (bool) { bool c = account.code.length == 0 ? false : true; return c; } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function claimDividend() external { distributor.claimDividend(msg.sender); } function getPaidDividend( address shareholder ) public view returns (uint256) { return distributor.getPaidEarnings(shareholder); } function getUnpaidDividend( address shareholder ) external view returns (uint256) { return distributor.getUnpaidEarnings(shareholder); } function getTotalDistributedDividend() external view returns (uint256) { return distributor.totalDistributed(); } function setIsDividendExempt( address holder, bool exempt ) external onlyOwner { require(holder != address(this) && holder != uniswapV2Pair); _isDividendExempt[holder] = exempt; if (exempt) { distributor.setShare(holder, 0); } else { distributor.setShare(holder, _balances[holder]); } } function setDistributionCriteria( uint256 _minPeriod, uint256 _minDistribution ) external onlyOwner { distributor.setDistributionCriteria(_minPeriod, _minDistribution); } function setDistributorSettings(uint256 gas) external onlyOwner { require(gas < 750000, "Gas must be lower than 750000"); distributorGas = gas; } function forceCoolDownTax() external onlyOwner { _initialBuyTax = 20; _initialSellTax = 20; } function removeLimits() external onlyOwner { _maxTxAmount = _tTotal; _maxWalletSize = _tTotal; emit MaxTxAmountUpdated(_tTotal); } function sendETHToFee(uint256 amount) private { _taxWallet.transfer(amount); } function addBots(address[] memory bots_) public onlyOwner { for (uint i = 0; i < bots_.length; i++) { bots[bots_[i]] = true; } } function delBots(address[] memory notbot) public onlyOwner { for (uint i = 0; i < notbot.length; i++) { bots[notbot[i]] = false; } } function isBot(address a) public view returns (bool) { return bots[a]; } function openTrading() external onlyOwner { require(!tradingOpen, "trading is already open"); uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); _approve(address(this), address(uniswapV2Router), _tTotal); uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair( address(this), uniswapV2Router.WETH() ); IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max); swapEnabled = true; tradingOpen = true; firstBlock = block.number; } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"notbot","type":"address[]"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributorGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"forceCoolDownTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getPaidDividend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalDistributedDividend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getUnpaidDividend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingOpen","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":[{"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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600f600855602d6009556002600a556004600b556014600c556028600d556001600e556001600f556003601055600160115560236012556000601355600060145560006015556009600a6200005a919062000418565b6200006a906301312d0062000430565b6016556200007b6009600a62000418565b6200008b906301312d0062000430565b6017556200009c6009600a62000418565b620000ab906298968062000430565b601855620000bc6009600a62000418565b620000cb906298968062000430565b6019556207a120601a55601d805461ffff60a81b19169055348015620000f057600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600680546001600160a01b03191633179055604051737a250d5630b4cf539739df2c5dacb4c659f2488d906200016890620002f5565b6001600160a01b039091168152602001604051809103906000f08015801562000195573d6000803e3d6000fd5b50601b80546001600160a01b0319166001600160a01b0392909216919091179055620001c46009600a62000418565b620001d490633b9aca0062000430565b336000908152600160208190526040822092909255600390620001ff6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553080825260038552838220805487166001908117909155600654841683528483208054881682179055601d548416835260049095528382208054871686179055601c5490921681528281208054861685179055908152208054909216179055620002943390565b6001600160a01b031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002ce6009600a62000418565b620002de90633b9aca0062000430565b60405190815260200160405180910390a36200044a565b610ddf80620028b383390190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200035a5781600019048211156200033e576200033e62000303565b808516156200034c57918102915b93841c93908002906200031e565b509250929050565b600082620003735750600162000412565b81620003825750600062000412565b81600181146200039b5760028114620003a657620003c6565b600191505062000412565b60ff841115620003ba57620003ba62000303565b50506001821b62000412565b5060208310610133831016604e8410600b8410161715620003eb575081810a62000412565b620003f7838362000319565b80600019048211156200040e576200040e62000303565b0290505b92915050565b60006200042960ff84168362000362565b9392505050565b808202811582820484141762000412576200041262000303565b612459806200045a6000396000f3fe6080604052600436106101e75760003560e01c8063751039fc11610102578063bf474bed11610095578063dd62ed3e11610064578063dd62ed3e14610594578063f0fc6bca146105da578063f708a64f146105ef578063ffb54a991461060f57600080fd5b8063bf474bed14610529578063bfe109281461053f578063c9567bf91461055f578063d34628cc1461057457600080fd5b80638f9a55c0116100d15780638f9a55c0146104a357806395d89b41146104b95780639d1944f5146104e9578063a9059cbb1461050957600080fd5b8063751039fc1461043a5780637d1db4a51461044f57806386db0c05146104655780638da5cb5b1461048557600080fd5b8063313ce5671161017a57806349bd5a5e1161014957806349bd5a5e146103a157806360e71962146103d957806370a08231146103ef578063715018a61461042557600080fd5b8063313ce5671461030c57806331c2d847146103285780633bbac5791461034857806349bc3feb1461038157600080fd5b806318160ddd116101b657806318160ddd146102a25780631961cee2146102b757806323b872dd146102cc5780632d48e896146102ec57600080fd5b806306fdde03146101f3578063095ea7b3146102375780630faee56f1461026757806313742f201461028b57600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b50604080518082019091526009815268676f74206d696c6b3f60b81b60208201525b60405161022e9190611ec0565b60405180910390f35b34801561024357600080fd5b50610257610252366004611f36565b610630565b604051901515815260200161022e565b34801561027357600080fd5b5061027d60195481565b60405190815260200161022e565b34801561029757600080fd5b506102a0610647565b005b3480156102ae57600080fd5b5061027d610686565b3480156102c357600080fd5b5061027d6106a7565b3480156102d857600080fd5b506102576102e7366004611f62565b610715565b3480156102f857600080fd5b506102a0610307366004611fa3565b61077e565b34801561031857600080fd5b506040516009815260200161022e565b34801561033457600080fd5b506102a0610343366004611fdb565b610812565b34801561035457600080fd5b506102576103633660046120a0565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561038d57600080fd5b5061027d61039c3660046120a0565b6108a8565b3480156103ad57600080fd5b50601d546103c1906001600160a01b031681565b6040516001600160a01b03909116815260200161022e565b3480156103e557600080fd5b5061027d601a5481565b3480156103fb57600080fd5b5061027d61040a3660046120a0565b6001600160a01b031660009081526001602052604090205490565b34801561043157600080fd5b506102a0610918565b34801561044657600080fd5b506102a061098c565b34801561045b57600080fd5b5061027d60165481565b34801561047157600080fd5b5061027d6104803660046120a0565b610a3e565b34801561049157600080fd5b506000546001600160a01b03166103c1565b3480156104af57600080fd5b5061027d60175481565b3480156104c557600080fd5b5060408051808201909152600781526643414c4349554d60c81b6020820152610221565b3480156104f557600080fd5b506102a06105043660046120bd565b610a71565b34801561051557600080fd5b50610257610524366004611f36565b610af2565b34801561053557600080fd5b5061027d60185481565b34801561054b57600080fd5b50601b546103c1906001600160a01b031681565b34801561056b57600080fd5b506102a0610aff565b34801561058057600080fd5b506102a061058f366004611fdb565b610de3565b3480156105a057600080fd5b5061027d6105af3660046120d6565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156105e657600080fd5b506102a0610e75565b3480156105fb57600080fd5b506102a061060a36600461211d565b610ed4565b34801561061b57600080fd5b50601d5461025790600160a01b900460ff1681565b600061063d338484610fdd565b5060015b92915050565b6000546001600160a01b0316331461067a5760405162461bcd60e51b81526004016106719061214b565b60405180910390fd5b60146008819055600955565b60006106946009600a61227a565b6106a290633b9aca00612289565b905090565b601b546040805163efca2eed60e01b815290516000926001600160a01b03169163efca2eed9160048083019260209291908290030181865afa1580156106f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a291906122a0565b6000610722848484611102565b610774843361076f856040518060600160405280602881526020016123dc602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190611a6c565b610fdd565b5060019392505050565b6000546001600160a01b031633146107a85760405162461bcd60e51b81526004016106719061214b565b601b546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b1580156107f657600080fd5b505af115801561080a573d6000803e3d6000fd5b505050505050565b6000546001600160a01b0316331461083c5760405162461bcd60e51b81526004016106719061214b565b60005b81518110156108a457600060056000848481518110610860576108606122b9565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061089c816122cf565b91505061083f565b5050565b601b54604051630a5e902b60e31b81526001600160a01b03838116600483015260009216906352f48158906024015b602060405180830381865afa1580156108f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064191906122a0565b6000546001600160a01b031633146109425760405162461bcd60e51b81526004016106719061214b565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146109b65760405162461bcd60e51b81526004016106719061214b565b6109c26009600a61227a565b6109d090633b9aca00612289565b6016556109df6009600a61227a565b6109ed90633b9aca00612289565b6017557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf610a1d6009600a61227a565b610a2b90633b9aca00612289565b60405190815260200160405180910390a1565b601b5460405163051fa63360e31b81526001600160a01b03838116600483015260009216906328fd3198906024016108d7565b6000546001600160a01b03163314610a9b5760405162461bcd60e51b81526004016106719061214b565b620b71b08110610aed5760405162461bcd60e51b815260206004820152601d60248201527f476173206d757374206265206c6f776572207468616e203735303030300000006044820152606401610671565b601a55565b600061063d338484611102565b6000546001600160a01b03163314610b295760405162461bcd60e51b81526004016106719061214b565b601d54600160a01b900460ff1615610b835760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610671565b601c80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155610bcc903090610bbe6009600a61227a565b61076f90633b9aca00612289565b601c60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4391906122e8565b6001600160a01b031663c9c6539630601c60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ca5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc991906122e8565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610d16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3a91906122e8565b601d80546001600160a01b0319166001600160a01b03928316908117909155601c5460405163095ea7b360e01b81529216600483015260001960248301529063095ea7b3906044016020604051808303816000875af1158015610da1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc59190612305565b50601d805462ff00ff60a01b19166201000160a01b17905543600755565b6000546001600160a01b03163314610e0d5760405162461bcd60e51b81526004016106719061214b565b60005b81518110156108a457600160056000848481518110610e3157610e316122b9565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610e6d816122cf565b915050610e10565b601b54604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e90602401600060405180830381600087803b158015610eba57600080fd5b505af1158015610ece573d6000803e3d6000fd5b50505050565b6000546001600160a01b03163314610efe5760405162461bcd60e51b81526004016106719061214b565b6001600160a01b0382163014801590610f255750601d546001600160a01b03838116911614155b610f2e57600080fd5b6001600160a01b0382166000908152600460205260409020805460ff19168215801591909117909155610f9457601b54604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca96906044016107dc565b601b546001600160a01b0383811660008181526001602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca96906044016107dc565b6001600160a01b03831661103f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610671565b6001600160a01b0382166110a05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610671565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166111665760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610671565b6001600160a01b0382166111c85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610671565b6000811161122a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610671565b601b546001600160a01b03908116908416036112505761124b838383611aa6565b505050565b6000806112656000546001600160a01b031690565b6001600160a01b0316856001600160a01b03161415801561129457506000546001600160a01b03858116911614155b156116f3576001600160a01b03851660009081526005602052604090205460ff161580156112db57506001600160a01b03841660009081526005602052604090205460ff16155b6112e457600080fd5b611310606461130a600c54601354116112ff57600854611303565b600a545b8690611b3a565b90611bc3565b9150611329600f54600e54611c0590919063ffffffff16565b90506113448161130a600e5485611b3a90919063ffffffff16565b601455600f5461135b90829061130a908590611b3a565b601555601d546001600160a01b0386811691161480156113895750601c546001600160a01b03858116911614155b80156113ae57506001600160a01b03841660009081526003602052604090205460ff16155b156114ff576016548311156114055760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e000000000000006044820152606401610671565b60175483611428866001600160a01b031660009081526001602052604090205490565b6114329190612322565b11156114805760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610671565b4360075460036114909190612322565b11156114e95761149f84611c64565b1580156114ab57503332145b6114e95760405162461bcd60e51b815260206004820152600f60248201526e139bc8189bdd1cc8185b1b1bddd959608a1b6044820152606401610671565b601380549060006114f9836122cf565b91905055505b601d546001600160a01b0385811691161480159061153657506001600160a01b03841660009081526003602052604090205460ff16155b156115b6576017548361155e866001600160a01b031660009081526001602052604090205490565b6115689190612322565b11156115b65760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610671565b601d546001600160a01b0385811691161480156115dc57506001600160a01b0385163014155b1561165557611606606461130a600d54601354116115fc57600954611303565b600b548690611b3a565b915061161f601154601054611c0590919063ffffffff16565b905061163a8161130a60105485611b3a90919063ffffffff16565b60145560115461165190829061130a908590611b3a565b6015555b30600090815260016020526040902054601d54600160a81b900460ff1615801561168c5750601d546001600160a01b038681169116145b80156116a15750601d54600160b01b900460ff165b80156116ae575060185481115b80156116bd5750601254601354115b156116f1576116df6116da856116d584601954611c87565b611c87565b611c9c565b4780156116ef576116ef81611e16565b505b505b81156117d157601454601b546001600160a01b031660009081526001602052604090205461172091611c05565b601b80546001600160a01b03908116600090815260016020908152604091829020949094559154601454925192835281169290881691600080516020612404833981519152910160405180910390a36015543060009081526001602052604090205461178b91611c05565b3060008181526001602090815260409182902093909355601554905190815290916001600160a01b03881691600080516020612404833981519152910160405180910390a35b6001600160a01b0385166000908152600160205260409020546117f49084611e50565b6001600160a01b03861660009081526001602052604090205561183961181a8484611e50565b6001600160a01b03861660009081526001602052604090205490611c05565b6001600160a01b0380861660008181526001602052604090209290925586166000805160206124048339815191526118718686611e50565b60405190815260200160405180910390a36001600160a01b03851660009081526004602052604090205460ff1661191357601b546001600160a01b0386811660008181526001602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561190057600080fd5b505af1925050508015611911575060015b505b6001600160a01b03841660009081526004602052604090205460ff166119a457601b546001600160a01b0385811660008181526001602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561199157600080fd5b505af19250505080156119a2575060015b505b601b5460145460405163b6b55f2560e01b81526001600160a01b039092169163b6b55f25916119d99160040190815260200190565b600060405180830381600087803b1580156119f357600080fd5b505af1925050508015611a04575060015b50601b54601a546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c47991611a3d9160040190815260200190565b600060405180830381600087803b158015611a5757600080fd5b505af192505050801561080a57505050505050565b60008184841115611a905760405162461bcd60e51b81526004016106719190611ec0565b506000611a9d8486612335565b95945050505050565b6001600160a01b038316600090815260016020526040902054611ac99082611e50565b6001600160a01b038085166000908152600160205260408082209390935590841681522054611af89082611c05565b6001600160a01b038084166000818152600160205260409081902093909355915190851690600080516020612404833981519152906110f59085815260200190565b600082600003611b4c57506000610641565b6000611b588385612289565b905082611b658583612348565b14611bbc5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610671565b9392505050565b6000611bbc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e92565b600080611c128385612322565b905083811015611bbc5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610671565b6000806001600160a01b0383163b15611c7e576001611bbc565b60009392505050565b6000818311611c965782611bbc565b50919050565b601d805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611ce457611ce46122b9565b6001600160a01b03928316602091820292909201810191909152601c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611d3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d6191906122e8565b81600181518110611d7457611d746122b9565b6001600160a01b039283166020918202929092010152601c54611d9a9130911684610fdd565b601c5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611dd390859060009086903090429060040161236a565b600060405180830381600087803b158015611ded57600080fd5b505af1158015611e01573d6000803e3d6000fd5b5050601d805460ff60a81b1916905550505050565b6006546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156108a4573d6000803e3d6000fd5b6000611bbc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a6c565b60008183611eb35760405162461bcd60e51b81526004016106719190611ec0565b506000611a9d8486612348565b600060208083528351808285015260005b81811015611eed57858101830151858201604001528201611ed1565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611f2357600080fd5b50565b8035611f3181611f0e565b919050565b60008060408385031215611f4957600080fd5b8235611f5481611f0e565b946020939093013593505050565b600080600060608486031215611f7757600080fd5b8335611f8281611f0e565b92506020840135611f9281611f0e565b929592945050506040919091013590565b60008060408385031215611fb657600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215611fee57600080fd5b823567ffffffffffffffff8082111561200657600080fd5b818501915085601f83011261201a57600080fd5b81358181111561202c5761202c611fc5565b8060051b604051601f19603f8301168101818110858211171561205157612051611fc5565b60405291825284820192508381018501918883111561206f57600080fd5b938501935b828510156120945761208585611f26565b84529385019392850192612074565b98975050505050505050565b6000602082840312156120b257600080fd5b8135611bbc81611f0e565b6000602082840312156120cf57600080fd5b5035919050565b600080604083850312156120e957600080fd5b82356120f481611f0e565b9150602083013561210481611f0e565b809150509250929050565b8015158114611f2357600080fd5b6000806040838503121561213057600080fd5b823561213b81611f0e565b915060208301356121048161210f565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156121d15781600019048211156121b7576121b7612180565b808516156121c457918102915b93841c939080029061219b565b509250929050565b6000826121e857506001610641565b816121f557506000610641565b816001811461220b576002811461221557612231565b6001915050610641565b60ff84111561222657612226612180565b50506001821b610641565b5060208310610133831016604e8410600b8410161715612254575081810a610641565b61225e8383612196565b806000190482111561227257612272612180565b029392505050565b6000611bbc60ff8416836121d9565b808202811582820484141761064157610641612180565b6000602082840312156122b257600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b6000600182016122e1576122e1612180565b5060010190565b6000602082840312156122fa57600080fd5b8151611bbc81611f0e565b60006020828403121561231757600080fd5b8151611bbc8161210f565b8082018082111561064157610641612180565b8181038181111561064157610641612180565b60008261236557634e487b7160e01b600052601260045260246000fd5b500490565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123ba5784516001600160a01b031683529383019391830191600101612395565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122092f64e5d47ff0d8e99e101dc30d58411a86d14b1b80c3a2f3b93645e6ccf78e564736f6c6343000813003360806040526ec097ce7bc90715b34b9f1000000000600a55610e10600b55633b9aca00600c5534801561003157600080fd5b50604051610ddf380380610ddf83398101604081905261005091610083565b60008054336001600160a01b031991821617909155600180549091166001600160a01b03929092169190911790556100b3565b60006020828403121561009557600080fd5b81516001600160a01b03811681146100ac57600080fd5b9392505050565b610d1d806100c26000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063ab377daa116100ad578063efca2eed11610071578063efca2eed146102b3578063f887ea40146102bc578063fc0c546a146102cf578063ffb2c479146102e2578063ffd49c84146102f557600080fd5b8063ab377daa14610202578063b6b55f251461022d578063ce7c2ac214610240578063d4fda1f21461028a578063e2d2e219146102aa57600080fd5b80633a98ef39116100f45780633a98ef391461019b5780634fab0ae8146101a457806352f48158146101ad57806366817df5146101d9578063997664d7146101f957600080fd5b806311ce023d1461013157806314b6ca961461014d57806315f7e05e1461016257806328fd3198146101755780632d48e89614610188575b600080fd5b61013a600a5481565b6040519081526020015b60405180910390f35b61016061015b366004610b3d565b6102fe565b005b610160610170366004610b67565b610476565b61013a610183366004610b67565b610482565b610160610196366004610b82565b61050d565b61013a60065481565b61013a600c5481565b61013a6101bb366004610b67565b6001600160a01b031660009081526005602052604090206002015490565b61013a6101e7366004610b67565b60046020526000908152604090205481565b61013a60075481565b610215610210366004610ba4565b61052f565b6040516001600160a01b039091168152602001610144565b61016061023b366004610ba4565b610559565b61026f61024e366004610b67565b60056020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610144565b61013a610298366004610b67565b60036020526000908152604090205481565b61013a60095481565b61013a60085481565b600154610215906001600160a01b031681565b600054610215906001600160a01b031681565b6101606102f0366004610ba4565b6105ad565b61013a600b5481565b6000546001600160a01b0316331461031557600080fd5b6001600160a01b0382166000908152600560205260409020541561033c5761033c826106b1565b60008111801561036257506001600160a01b038216600090815260056020526040902054155b156103c857600280546001600160a01b0384166000818152600360205260408120839055600183018455929092527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b03191690911790556103fb565b801580156103ed57506001600160a01b03821660009081526005602052604090205415155b156103fb576103fb826107cf565b6001600160a01b03821660009081526005602052604090205460065461042c918391610426916108e4565b9061092f565b6006556001600160a01b038216600090815260056020526040902081905561045381610993565b6001600160a01b0390921660009081526005602052604090206001019190915550565b61047f816106b1565b50565b6001600160a01b03811660009081526005602052604081205481036104a957506000919050565b6001600160a01b0382166000908152600560205260408120546104cb90610993565b6001600160a01b0384166000908152600560205260409020600101549091508082116104fb575060009392505050565b61050582826108e4565b949350505050565b6000546001600160a01b0316331461052457600080fd5b600b91909155600c55565b6002818154811061053f57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b0316331461057057600080fd5b60075461057d908261092f565b600755600654600a546105a79161059e9161059890856109b0565b90610a32565b6009549061092f565b60095550565b6000546001600160a01b031633146105c457600080fd5b60025460008190036105d4575050565b6000805a905060005b84831080156105eb57508381105b156106aa5783600d54106105ff576000600d555b6106316002600d548154811061061757610617610bbd565b6000918252602090912001546001600160a01b0316610a74565b15610668576106686002600d548154811061064e5761064e610bbd565b6000918252602090912001546001600160a01b03166106b1565b61067d6106765a84906108e4565b849061092f565b92505a600d8054919350600061069283610be9565b919050555080806106a290610be9565b9150506105dd565b5050505050565b6001600160a01b03811660009081526005602052604081205490036106d35750565b60006106de82610482565b905080156107cb576008546106f3908261092f565b60085560005460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610749573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076d9190610c02565b506001600160a01b038216600090815260046020908152604080832042905560059091529020600201546107a1908261092f565b6001600160a01b038316600090815260056020526040902060028101919091555461045390610993565b5050565b600280546107df90600190610c24565b815481106107ef576107ef610bbd565b60009182526020808320909101546001600160a01b038481168452600390925260409092205460028054929093169291811061082d5761082d610bbd565b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905591831681526003918290526040812054600280549193929161087990600190610c24565b8154811061088957610889610bbd565b60009182526020808320909101546001600160a01b0316835282019290925260400190205560028054806108bf576108bf610c37565b600082815260209020810160001990810180546001600160a01b031916905501905550565b600061092683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610ab9565b90505b92915050565b60008061093c8385610c4d565b9050838110156109265760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b6000610929600a54610598600954856109b090919063ffffffff16565b6000826000036109c257506000610929565b60006109ce8385610c60565b9050826109db8583610c77565b146109265760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161098a565b600061092683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610af3565b600b546001600160a01b03821660009081526004602052604081205490914291610a9e9190610c4d565b1080156109295750600c54610ab283610482565b1192915050565b60008184841115610add5760405162461bcd60e51b815260040161098a9190610c99565b506000610aea8486610c24565b95945050505050565b60008183610b145760405162461bcd60e51b815260040161098a9190610c99565b506000610aea8486610c77565b80356001600160a01b0381168114610b3857600080fd5b919050565b60008060408385031215610b5057600080fd5b610b5983610b21565b946020939093013593505050565b600060208284031215610b7957600080fd5b61092682610b21565b60008060408385031215610b9557600080fd5b50508035926020909101359150565b600060208284031215610bb657600080fd5b5035919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201610bfb57610bfb610bd3565b5060010190565b600060208284031215610c1457600080fd5b8151801515811461092657600080fd5b8181038181111561092957610929610bd3565b634e487b7160e01b600052603160045260246000fd5b8082018082111561092957610929610bd3565b808202811582820484141761092957610929610bd3565b600082610c9457634e487b7160e01b600052601260045260246000fd5b500490565b600060208083528351808285015260005b81811015610cc657858101830151858201604001528201610caa565b506000604082860101526040601f19601f830116850101925050509291505056fea2646970667358221220b444fee694872edde5863d4545f337c59435469b75715772f97206a57a84224464736f6c63430008130033
Deployed Bytecode
0x6080604052600436106101e75760003560e01c8063751039fc11610102578063bf474bed11610095578063dd62ed3e11610064578063dd62ed3e14610594578063f0fc6bca146105da578063f708a64f146105ef578063ffb54a991461060f57600080fd5b8063bf474bed14610529578063bfe109281461053f578063c9567bf91461055f578063d34628cc1461057457600080fd5b80638f9a55c0116100d15780638f9a55c0146104a357806395d89b41146104b95780639d1944f5146104e9578063a9059cbb1461050957600080fd5b8063751039fc1461043a5780637d1db4a51461044f57806386db0c05146104655780638da5cb5b1461048557600080fd5b8063313ce5671161017a57806349bd5a5e1161014957806349bd5a5e146103a157806360e71962146103d957806370a08231146103ef578063715018a61461042557600080fd5b8063313ce5671461030c57806331c2d847146103285780633bbac5791461034857806349bc3feb1461038157600080fd5b806318160ddd116101b657806318160ddd146102a25780631961cee2146102b757806323b872dd146102cc5780632d48e896146102ec57600080fd5b806306fdde03146101f3578063095ea7b3146102375780630faee56f1461026757806313742f201461028b57600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b50604080518082019091526009815268676f74206d696c6b3f60b81b60208201525b60405161022e9190611ec0565b60405180910390f35b34801561024357600080fd5b50610257610252366004611f36565b610630565b604051901515815260200161022e565b34801561027357600080fd5b5061027d60195481565b60405190815260200161022e565b34801561029757600080fd5b506102a0610647565b005b3480156102ae57600080fd5b5061027d610686565b3480156102c357600080fd5b5061027d6106a7565b3480156102d857600080fd5b506102576102e7366004611f62565b610715565b3480156102f857600080fd5b506102a0610307366004611fa3565b61077e565b34801561031857600080fd5b506040516009815260200161022e565b34801561033457600080fd5b506102a0610343366004611fdb565b610812565b34801561035457600080fd5b506102576103633660046120a0565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561038d57600080fd5b5061027d61039c3660046120a0565b6108a8565b3480156103ad57600080fd5b50601d546103c1906001600160a01b031681565b6040516001600160a01b03909116815260200161022e565b3480156103e557600080fd5b5061027d601a5481565b3480156103fb57600080fd5b5061027d61040a3660046120a0565b6001600160a01b031660009081526001602052604090205490565b34801561043157600080fd5b506102a0610918565b34801561044657600080fd5b506102a061098c565b34801561045b57600080fd5b5061027d60165481565b34801561047157600080fd5b5061027d6104803660046120a0565b610a3e565b34801561049157600080fd5b506000546001600160a01b03166103c1565b3480156104af57600080fd5b5061027d60175481565b3480156104c557600080fd5b5060408051808201909152600781526643414c4349554d60c81b6020820152610221565b3480156104f557600080fd5b506102a06105043660046120bd565b610a71565b34801561051557600080fd5b50610257610524366004611f36565b610af2565b34801561053557600080fd5b5061027d60185481565b34801561054b57600080fd5b50601b546103c1906001600160a01b031681565b34801561056b57600080fd5b506102a0610aff565b34801561058057600080fd5b506102a061058f366004611fdb565b610de3565b3480156105a057600080fd5b5061027d6105af3660046120d6565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156105e657600080fd5b506102a0610e75565b3480156105fb57600080fd5b506102a061060a36600461211d565b610ed4565b34801561061b57600080fd5b50601d5461025790600160a01b900460ff1681565b600061063d338484610fdd565b5060015b92915050565b6000546001600160a01b0316331461067a5760405162461bcd60e51b81526004016106719061214b565b60405180910390fd5b60146008819055600955565b60006106946009600a61227a565b6106a290633b9aca00612289565b905090565b601b546040805163efca2eed60e01b815290516000926001600160a01b03169163efca2eed9160048083019260209291908290030181865afa1580156106f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a291906122a0565b6000610722848484611102565b610774843361076f856040518060600160405280602881526020016123dc602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190611a6c565b610fdd565b5060019392505050565b6000546001600160a01b031633146107a85760405162461bcd60e51b81526004016106719061214b565b601b546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b1580156107f657600080fd5b505af115801561080a573d6000803e3d6000fd5b505050505050565b6000546001600160a01b0316331461083c5760405162461bcd60e51b81526004016106719061214b565b60005b81518110156108a457600060056000848481518110610860576108606122b9565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061089c816122cf565b91505061083f565b5050565b601b54604051630a5e902b60e31b81526001600160a01b03838116600483015260009216906352f48158906024015b602060405180830381865afa1580156108f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064191906122a0565b6000546001600160a01b031633146109425760405162461bcd60e51b81526004016106719061214b565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146109b65760405162461bcd60e51b81526004016106719061214b565b6109c26009600a61227a565b6109d090633b9aca00612289565b6016556109df6009600a61227a565b6109ed90633b9aca00612289565b6017557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf610a1d6009600a61227a565b610a2b90633b9aca00612289565b60405190815260200160405180910390a1565b601b5460405163051fa63360e31b81526001600160a01b03838116600483015260009216906328fd3198906024016108d7565b6000546001600160a01b03163314610a9b5760405162461bcd60e51b81526004016106719061214b565b620b71b08110610aed5760405162461bcd60e51b815260206004820152601d60248201527f476173206d757374206265206c6f776572207468616e203735303030300000006044820152606401610671565b601a55565b600061063d338484611102565b6000546001600160a01b03163314610b295760405162461bcd60e51b81526004016106719061214b565b601d54600160a01b900460ff1615610b835760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610671565b601c80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155610bcc903090610bbe6009600a61227a565b61076f90633b9aca00612289565b601c60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4391906122e8565b6001600160a01b031663c9c6539630601c60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ca5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc991906122e8565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610d16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3a91906122e8565b601d80546001600160a01b0319166001600160a01b03928316908117909155601c5460405163095ea7b360e01b81529216600483015260001960248301529063095ea7b3906044016020604051808303816000875af1158015610da1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc59190612305565b50601d805462ff00ff60a01b19166201000160a01b17905543600755565b6000546001600160a01b03163314610e0d5760405162461bcd60e51b81526004016106719061214b565b60005b81518110156108a457600160056000848481518110610e3157610e316122b9565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610e6d816122cf565b915050610e10565b601b54604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e90602401600060405180830381600087803b158015610eba57600080fd5b505af1158015610ece573d6000803e3d6000fd5b50505050565b6000546001600160a01b03163314610efe5760405162461bcd60e51b81526004016106719061214b565b6001600160a01b0382163014801590610f255750601d546001600160a01b03838116911614155b610f2e57600080fd5b6001600160a01b0382166000908152600460205260409020805460ff19168215801591909117909155610f9457601b54604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca96906044016107dc565b601b546001600160a01b0383811660008181526001602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca96906044016107dc565b6001600160a01b03831661103f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610671565b6001600160a01b0382166110a05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610671565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166111665760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610671565b6001600160a01b0382166111c85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610671565b6000811161122a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610671565b601b546001600160a01b03908116908416036112505761124b838383611aa6565b505050565b6000806112656000546001600160a01b031690565b6001600160a01b0316856001600160a01b03161415801561129457506000546001600160a01b03858116911614155b156116f3576001600160a01b03851660009081526005602052604090205460ff161580156112db57506001600160a01b03841660009081526005602052604090205460ff16155b6112e457600080fd5b611310606461130a600c54601354116112ff57600854611303565b600a545b8690611b3a565b90611bc3565b9150611329600f54600e54611c0590919063ffffffff16565b90506113448161130a600e5485611b3a90919063ffffffff16565b601455600f5461135b90829061130a908590611b3a565b601555601d546001600160a01b0386811691161480156113895750601c546001600160a01b03858116911614155b80156113ae57506001600160a01b03841660009081526003602052604090205460ff16155b156114ff576016548311156114055760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865205f6d61785478416d6f756e742e000000000000006044820152606401610671565b60175483611428866001600160a01b031660009081526001602052604090205490565b6114329190612322565b11156114805760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610671565b4360075460036114909190612322565b11156114e95761149f84611c64565b1580156114ab57503332145b6114e95760405162461bcd60e51b815260206004820152600f60248201526e139bc8189bdd1cc8185b1b1bddd959608a1b6044820152606401610671565b601380549060006114f9836122cf565b91905055505b601d546001600160a01b0385811691161480159061153657506001600160a01b03841660009081526003602052604090205460ff16155b156115b6576017548361155e866001600160a01b031660009081526001602052604090205490565b6115689190612322565b11156115b65760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e0000000000006044820152606401610671565b601d546001600160a01b0385811691161480156115dc57506001600160a01b0385163014155b1561165557611606606461130a600d54601354116115fc57600954611303565b600b548690611b3a565b915061161f601154601054611c0590919063ffffffff16565b905061163a8161130a60105485611b3a90919063ffffffff16565b60145560115461165190829061130a908590611b3a565b6015555b30600090815260016020526040902054601d54600160a81b900460ff1615801561168c5750601d546001600160a01b038681169116145b80156116a15750601d54600160b01b900460ff165b80156116ae575060185481115b80156116bd5750601254601354115b156116f1576116df6116da856116d584601954611c87565b611c87565b611c9c565b4780156116ef576116ef81611e16565b505b505b81156117d157601454601b546001600160a01b031660009081526001602052604090205461172091611c05565b601b80546001600160a01b03908116600090815260016020908152604091829020949094559154601454925192835281169290881691600080516020612404833981519152910160405180910390a36015543060009081526001602052604090205461178b91611c05565b3060008181526001602090815260409182902093909355601554905190815290916001600160a01b03881691600080516020612404833981519152910160405180910390a35b6001600160a01b0385166000908152600160205260409020546117f49084611e50565b6001600160a01b03861660009081526001602052604090205561183961181a8484611e50565b6001600160a01b03861660009081526001602052604090205490611c05565b6001600160a01b0380861660008181526001602052604090209290925586166000805160206124048339815191526118718686611e50565b60405190815260200160405180910390a36001600160a01b03851660009081526004602052604090205460ff1661191357601b546001600160a01b0386811660008181526001602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561190057600080fd5b505af1925050508015611911575060015b505b6001600160a01b03841660009081526004602052604090205460ff166119a457601b546001600160a01b0385811660008181526001602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561199157600080fd5b505af19250505080156119a2575060015b505b601b5460145460405163b6b55f2560e01b81526001600160a01b039092169163b6b55f25916119d99160040190815260200190565b600060405180830381600087803b1580156119f357600080fd5b505af1925050508015611a04575060015b50601b54601a546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c47991611a3d9160040190815260200190565b600060405180830381600087803b158015611a5757600080fd5b505af192505050801561080a57505050505050565b60008184841115611a905760405162461bcd60e51b81526004016106719190611ec0565b506000611a9d8486612335565b95945050505050565b6001600160a01b038316600090815260016020526040902054611ac99082611e50565b6001600160a01b038085166000908152600160205260408082209390935590841681522054611af89082611c05565b6001600160a01b038084166000818152600160205260409081902093909355915190851690600080516020612404833981519152906110f59085815260200190565b600082600003611b4c57506000610641565b6000611b588385612289565b905082611b658583612348565b14611bbc5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610671565b9392505050565b6000611bbc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e92565b600080611c128385612322565b905083811015611bbc5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610671565b6000806001600160a01b0383163b15611c7e576001611bbc565b60009392505050565b6000818311611c965782611bbc565b50919050565b601d805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611ce457611ce46122b9565b6001600160a01b03928316602091820292909201810191909152601c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611d3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d6191906122e8565b81600181518110611d7457611d746122b9565b6001600160a01b039283166020918202929092010152601c54611d9a9130911684610fdd565b601c5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611dd390859060009086903090429060040161236a565b600060405180830381600087803b158015611ded57600080fd5b505af1158015611e01573d6000803e3d6000fd5b5050601d805460ff60a81b1916905550505050565b6006546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156108a4573d6000803e3d6000fd5b6000611bbc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a6c565b60008183611eb35760405162461bcd60e51b81526004016106719190611ec0565b506000611a9d8486612348565b600060208083528351808285015260005b81811015611eed57858101830151858201604001528201611ed1565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611f2357600080fd5b50565b8035611f3181611f0e565b919050565b60008060408385031215611f4957600080fd5b8235611f5481611f0e565b946020939093013593505050565b600080600060608486031215611f7757600080fd5b8335611f8281611f0e565b92506020840135611f9281611f0e565b929592945050506040919091013590565b60008060408385031215611fb657600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215611fee57600080fd5b823567ffffffffffffffff8082111561200657600080fd5b818501915085601f83011261201a57600080fd5b81358181111561202c5761202c611fc5565b8060051b604051601f19603f8301168101818110858211171561205157612051611fc5565b60405291825284820192508381018501918883111561206f57600080fd5b938501935b828510156120945761208585611f26565b84529385019392850192612074565b98975050505050505050565b6000602082840312156120b257600080fd5b8135611bbc81611f0e565b6000602082840312156120cf57600080fd5b5035919050565b600080604083850312156120e957600080fd5b82356120f481611f0e565b9150602083013561210481611f0e565b809150509250929050565b8015158114611f2357600080fd5b6000806040838503121561213057600080fd5b823561213b81611f0e565b915060208301356121048161210f565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156121d15781600019048211156121b7576121b7612180565b808516156121c457918102915b93841c939080029061219b565b509250929050565b6000826121e857506001610641565b816121f557506000610641565b816001811461220b576002811461221557612231565b6001915050610641565b60ff84111561222657612226612180565b50506001821b610641565b5060208310610133831016604e8410600b8410161715612254575081810a610641565b61225e8383612196565b806000190482111561227257612272612180565b029392505050565b6000611bbc60ff8416836121d9565b808202811582820484141761064157610641612180565b6000602082840312156122b257600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b6000600182016122e1576122e1612180565b5060010190565b6000602082840312156122fa57600080fd5b8151611bbc81611f0e565b60006020828403121561231757600080fd5b8151611bbc8161210f565b8082018082111561064157610641612180565b8181038181111561064157610641612180565b60008261236557634e487b7160e01b600052601260045260246000fd5b500490565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123ba5784516001600160a01b031683529383019391830191600101612395565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122092f64e5d47ff0d8e99e101dc30d58411a86d14b1b80c3a2f3b93645e6ccf78e564736f6c63430008130033
Deployed Bytecode Sourcemap
10447:12605:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12998:83;;;;;;;;;;-1:-1:-1;13068:5:0;;;;;;;;;;;;-1:-1:-1;;;13068:5:0;;;;12998:83;;;;;;;:::i;:::-;;;;;;;;13881:186;;;;;;;;;;-1:-1:-1;13881:186:0;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;13881:186:0;1162:187:1;11910:55:0;;;;;;;;;;;;;;;;;;;1500:25:1;;;1488:2;1473:18;11910:55:0;1354:177:1;21549:116:0;;;;;;;;;;;;;:::i;:::-;;13275:95;;;;;;;;;;;;;:::i;20630:127::-;;;;;;;;;;;;;:::i;14075:446::-;;;;;;;;;;-1:-1:-1;14075:446:0;;;;;:::i;:::-;;:::i;21158:207::-;;;;;;;;;;-1:-1:-1;21158:207:0;;;;;:::i;:::-;;:::i;13184:83::-;;;;;;;;;;-1:-1:-1;13184:83:0;;11519:1;2392:36:1;;2380:2;2365:18;13184:83:0;2250:184:1;22115:168:0;;;;;;;;;;-1:-1:-1;22115:168:0;;;;;:::i;:::-;;:::i;22291:86::-;;;;;;;;;;-1:-1:-1;22291:86:0;;;;;:::i;:::-;-1:-1:-1;;;;;22362:7:0;22338:4;22362:7;;;:4;:7;;;;;;;;;22291:86;20292:158;;;;;;;;;;-1:-1:-1;20292:158:0;;;;;:::i;:::-;;:::i;12111:28::-;;;;;;;;;;-1:-1:-1;12111:28:0;;;;-1:-1:-1;;;;;12111:28:0;;;;;;-1:-1:-1;;;;;4113:32:1;;;4095:51;;4083:2;4068:18;12111:28:0;3949:203:1;11972:38:0;;;;;;;;;;;;;;;;13378:119;;;;;;;;;;-1:-1:-1;13378:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;13471:18:0;13444:7;13471:18;;;:9;:18;;;;;;;13378:119;2859:148;;;;;;;;;;;;;:::i;21673:162::-;;;;;;;;;;;;;:::i;11714:56::-;;;;;;;;;;;;;;;;20458:164;;;;;;;;;;-1:-1:-1;20458:164:0;;;;;:::i;:::-;;:::i;2645:79::-;;;;;;;;;;-1:-1:-1;2683:7:0;2710:6;-1:-1:-1;;;;;2710:6:0;2645:79;;11777:58;;;;;;;;;;;;;;;;13089:87;;;;;;;;;;-1:-1:-1;13161:7:0;;;;;;;;;;;;-1:-1:-1;;;13161:7:0;;;;13089:87;;21373:168;;;;;;;;;;-1:-1:-1;21373:168:0;;;;;:::i;:::-;;:::i;13505:192::-;;;;;;;;;;-1:-1:-1;13505:192:0;;;;;:::i;:::-;;:::i;11842:61::-;;;;;;;;;;;;;;;;12017:38;;;;;;;;;;-1:-1:-1;12017:38:0;;;;-1:-1:-1;;;;;12017:38:0;;;22385:627;;;;;;;;;;;;;:::i;21943:164::-;;;;;;;;;;-1:-1:-1;21943:164:0;;;;;:::i;:::-;;:::i;13705:168::-;;;;;;;;;;-1:-1:-1;13705:168:0;;;;;:::i;:::-;-1:-1:-1;;;;;13838:18:0;;;13811:7;13838:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;13705:168;20194:90;;;;;;;;;;;;;:::i;20765:385::-;;;;;;;;;;-1:-1:-1;20765:385:0;;;;;:::i;:::-;;:::i;12146:23::-;;;;;;;;;;-1:-1:-1;12146:23:0;;;;-1:-1:-1;;;12146:23:0;;;;;;13881:186;13981:4;13998:39;260:10;14021:7;14030:6;13998:8;:39::i;:::-;-1:-1:-1;14055:4:0;13881:186;;;;;:::o;21549:116::-;2772:6;;-1:-1:-1;;;;;2772:6:0;260:10;2772:22;2764:67;;;;-1:-1:-1;;;2764:67:0;;;;;;;:::i;:::-;;;;;;;;;21624:2:::1;21607:14;:19:::0;;;21637:15:::1;:20:::0;21549:116::o;13275:95::-;13328:7;11578:15;11519:1;11578:2;:15;:::i;:::-;11562:31;;:13;:31;:::i;:::-;13348:14;;13275:95;:::o;20630:127::-;20719:11;;:30;;;-1:-1:-1;;;20719:30:0;;;;20692:7;;-1:-1:-1;;;;;20719:11:0;;:28;;:30;;;;;;;;;;;;;;:11;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14075:446::-;14207:4;14224:36;14234:6;14242:9;14253:6;14224:9;:36::i;:::-;14271:220;14294:6;260:10;14342:138;14398:6;14342:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14342:19:0;;;;;;:11;:19;;;;;;;;260:10;14342:33;;;;;;;;;;:37;:138::i;:::-;14271:8;:220::i;:::-;-1:-1:-1;14509:4:0;14075:446;;;;;:::o;21158:207::-;2772:6;;-1:-1:-1;;;;;2772:6:0;260:10;2772:22;2764:67;;;;-1:-1:-1;;;2764:67:0;;;;;;;:::i;:::-;21292:11:::1;::::0;:65:::1;::::0;-1:-1:-1;;;21292:65:0;;::::1;::::0;::::1;7892:25:1::0;;;7933:18;;;7926:34;;;-1:-1:-1;;;;;21292:11:0;;::::1;::::0;:35:::1;::::0;7865:18:1;;21292:65:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21158:207:::0;;:::o;22115:168::-;2772:6;;-1:-1:-1;;;;;2772:6:0;260:10;2772:22;2764:67;;;;-1:-1:-1;;;2764:67:0;;;;;;;:::i;:::-;22190:6:::1;22185:91;22206:6;:13;22202:1;:17;22185:91;;;22259:5;22241:4;:15;22246:6;22253:1;22246:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;22241:15:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;22241:15:0;:23;;-1:-1:-1;;22241:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22221:3;::::1;::::0;::::1;:::i;:::-;;;;22185:91;;;;22115:168:::0;:::o;20292:158::-;20402:11;;:40;;-1:-1:-1;;;20402:40:0;;-1:-1:-1;;;;;4113:32:1;;;20402:40:0;;;4095:51:1;20375:7:0;;20402:11;;:27;;4068:18:1;;20402:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2859:148::-;2772:6;;-1:-1:-1;;;;;2772:6:0;260:10;2772:22;2764:67;;;;-1:-1:-1;;;2764:67:0;;;;;;;:::i;:::-;2966:1:::1;2950:6:::0;;2929:40:::1;::::0;-1:-1:-1;;;;;2950:6:0;;::::1;::::0;2929:40:::1;::::0;2966:1;;2929:40:::1;2997:1;2980:19:::0;;-1:-1:-1;;;;;;2980:19:0::1;::::0;;2859:148::o;21673:162::-;2772:6;;-1:-1:-1;;;;;2772:6:0;260:10;2772:22;2764:67;;;;-1:-1:-1;;;2764:67:0;;;;;;;:::i;:::-;11578:15:::1;11519:1;11578:2;:15;:::i;:::-;11562:31;::::0;:13:::1;:31;:::i;:::-;21727:12;:22:::0;11578:15:::1;11519:1;11578:2;:15;:::i;:::-;11562:31;::::0;:13:::1;:31;:::i;:::-;21760:14;:24:::0;21800:27:::1;11578:15;11519:1;11578:2;:15;:::i;:::-;11562:31;::::0;:13:::1;:31;:::i;:::-;21800:27;::::0;1500:25:1;;;1488:2;1473:18;21800:27:0::1;;;;;;;21673:162::o:0;20458:164::-;20572:11;;:42;;-1:-1:-1;;;20572:42:0;;-1:-1:-1;;;;;4113:32:1;;;20572:42:0;;;4095:51:1;20545:7:0;;20572:11;;:29;;4068:18:1;;20572:42:0;3949:203:1;21373:168:0;2772:6;;-1:-1:-1;;;;;2772:6:0;260:10;2772:22;2764:67;;;;-1:-1:-1;;;2764:67:0;;;;;;;:::i;:::-;21462:6:::1;21456:3;:12;21448:54;;;::::0;-1:-1:-1;;;21448:54:0;;8445:2:1;21448:54:0::1;::::0;::::1;8427:21:1::0;8484:2;8464:18;;;8457:30;8523:31;8503:18;;;8496:59;8572:18;;21448:54:0::1;8243:353:1::0;21448:54:0::1;21513:14;:20:::0;21373:168::o;13505:192::-;13608:4;13625:42;260:10;13649:9;13660:6;13625:9;:42::i;22385:627::-;2772:6;;-1:-1:-1;;;;;2772:6:0;260:10;2772:22;2764:67;;;;-1:-1:-1;;;2764:67:0;;;;;;;:::i;:::-;22447:11:::1;::::0;-1:-1:-1;;;22447:11:0;::::1;;;22446:12;22438:48;;;::::0;-1:-1:-1;;;22438:48:0;;8803:2:1;22438:48:0::1;::::0;::::1;8785:21:1::0;8842:2;8822:18;;;8815:30;8881:25;8861:18;;;8854:53;8924:18;;22438:48:0::1;8601:347:1::0;22438:48:0::1;22497:15;:104:::0;;-1:-1:-1;;;;;;22497:104:0::1;22548:42;22497:104:::0;;::::1;::::0;;;22612:58:::1;::::0;22629:4:::1;::::0;11578:15:::1;11519:1;11578:2;:15;:::i;:::-;11562:31;::::0;:13:::1;:31;:::i;22612:58::-;22715:15;;;;;;;;;-1:-1:-1::0;;;;;22715:15:0::1;-1:-1:-1::0;;;;;22715:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22697:55:0::1;;22775:4;22795:15;;;;;;;;;-1:-1:-1::0;;;;;22795:15:0::1;-1:-1:-1::0;;;;;22795:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22697:131;::::0;-1:-1:-1;;;;;;22697:131:0::1;::::0;;;;;;-1:-1:-1;;;;;9439:15:1;;;22697:131:0::1;::::0;::::1;9421:34:1::0;9491:15;;9471:18;;;9464:43;9356:18;;22697:131:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22681:13;:147:::0;;-1:-1:-1;;;;;;22681:147:0::1;-1:-1:-1::0;;;;;22681:147:0;;::::1;::::0;;::::1;::::0;;;22877:15:::1;::::0;22839:71:::1;::::0;-1:-1:-1;;;22839:71:0;;22877:15;::::1;22839:71;::::0;::::1;9692:51:1::0;-1:-1:-1;;9759:18:1;;;9752:34;22681:147:0;22839:29:::1;::::0;9665:18:1;;22839:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;22921:11:0::1;:18:::0;;-1:-1:-1;;;;22950:18:0;-1:-1:-1;;;22950:18:0;;;22992:12:::1;22979:10;:25:::0;22385:627::o;21943:164::-;2772:6;;-1:-1:-1;;;;;2772:6:0;260:10;2772:22;2764:67;;;;-1:-1:-1;;;2764:67:0;;;;;;;:::i;:::-;22017:6:::1;22012:88;22033:5;:12;22029:1;:16;22012:88;;;22084:4;22067;:14;22072:5;22078:1;22072:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;22067:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;22067:14:0;:21;;-1:-1:-1;;22067:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22047:3;::::1;::::0;::::1;:::i;:::-;;;;22012:88;;20194:90:::0;20239:11;;:37;;-1:-1:-1;;;20239:37:0;;20265:10;20239:37;;;4095:51:1;-1:-1:-1;;;;;20239:11:0;;;;:25;;4068:18:1;;20239:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20194:90::o;20765:385::-;2772:6;;-1:-1:-1;;;;;2772:6:0;260:10;2772:22;2764:67;;;;-1:-1:-1;;;2764:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20886:23:0;::::1;20904:4;20886:23;::::0;::::1;::::0;:50:::1;;-1:-1:-1::0;20923:13:0::1;::::0;-1:-1:-1;;;;;20913:23:0;;::::1;20923:13:::0;::::1;20913:23;;20886:50;20878:59;;;::::0;::::1;;-1:-1:-1::0;;;;;20948:25:0;::::1;;::::0;;;:17:::1;:25;::::0;;;;:34;;-1:-1:-1;;20948:34:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;20993:150:::1;;21020:11;::::0;:31:::1;::::0;-1:-1:-1;;;21020:31:0;;-1:-1:-1;;;;;9710:32:1;;;21020:31:0::1;::::0;::::1;9692:51:1::0;21020:11:0::1;9759:18:1::0;;;9752:34;21020:11:0;;::::1;::::0;:20:::1;::::0;9665:18:1;;21020:31:0::1;9518:274:1::0;20993:150:0::1;21084:11;::::0;-1:-1:-1;;;;;21113:17:0;;::::1;21084:11;21113:17:::0;;;21084:11;21113:17:::1;::::0;;;;;;;21084:47;;-1:-1:-1;;;21084:47:0;;::::1;::::0;::::1;9692:51:1::0;;;;9759:18;;;9752:34;21084:11:0;::::1;::::0;:20:::1;::::0;9665:18:1;;21084:47:0::1;9518:274:1::0;14529:335:0;-1:-1:-1;;;;;14622:19:0;;14614:68;;;;-1:-1:-1;;;14614:68:0;;10536:2:1;14614:68:0;;;10518:21:1;10575:2;10555:18;;;10548:30;10614:34;10594:18;;;10587:62;-1:-1:-1;;;10665:18:1;;;10658:34;10709:19;;14614:68:0;10334:400:1;14614:68:0;-1:-1:-1;;;;;14701:21:0;;14693:68;;;;-1:-1:-1;;;14693:68:0;;10941:2:1;14693:68:0;;;10923:21:1;10980:2;10960:18;;;10953:30;11019:34;10999:18;;;10992:62;-1:-1:-1;;;11070:18:1;;;11063:32;11112:19;;14693:68:0;10739:398:1;14693:68:0;-1:-1:-1;;;;;14772:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14824:32;;1500:25:1;;;14824:32:0;;1473:18:1;14824:32:0;;;;;;;;14529:335;;;:::o;14872:4310::-;-1:-1:-1;;;;;14960:18:0;;14952:68;;;;-1:-1:-1;;;14952:68:0;;11344:2:1;14952:68:0;;;11326:21:1;11383:2;11363:18;;;11356:30;11422:34;11402:18;;;11395:62;-1:-1:-1;;;11473:18:1;;;11466:35;11518:19;;14952:68:0;11142:401:1;14952:68:0;-1:-1:-1;;;;;15039:16:0;;15031:64;;;;-1:-1:-1;;;15031:64:0;;11750:2:1;15031:64:0;;;11732:21:1;11789:2;11769:18;;;11762:30;11828:34;11808:18;;;11801:62;-1:-1:-1;;;11879:18:1;;;11872:33;11922:19;;15031:64:0;11548:399:1;15031:64:0;15123:1;15114:6;:10;15106:64;;;;-1:-1:-1;;;15106:64:0;;12154:2:1;15106:64:0;;;12136:21:1;12193:2;12173:18;;;12166:30;12232:34;12212:18;;;12205:62;-1:-1:-1;;;12283:18:1;;;12276:39;12332:19;;15106:64:0;11952:405:1;15106:64:0;15200:11;;-1:-1:-1;;;;;15200:11:0;;;15184:28;;;;15181:111;;15228:31;15242:4;15248:2;15252:6;15228:13;:31::i;:::-;14872:4310;;;:::o;15181:111::-;15302:17;15334:16;15377:7;2683;2710:6;-1:-1:-1;;;;;2710:6:0;;2645:79;15377:7;-1:-1:-1;;;;;15369:15:0;:4;-1:-1:-1;;;;;15369:15:0;;;:32;;;;-1:-1:-1;2683:7:0;2710:6;-1:-1:-1;;;;;15388:13:0;;;2710:6;;15388:13;;15369:32;15365:2818;;;-1:-1:-1;;;;;15427:10:0;;;;;;:4;:10;;;;;;;;15426:11;:24;;;;-1:-1:-1;;;;;;15442:8:0;;;;;;:4;:8;;;;;;;;15441:9;15426:24;15418:33;;;;;;15478:208;15682:3;15478:181;15542:15;;15530:9;;:27;15529:111;;15626:14;;15529:111;;;15586:12;;15529:111;15478:6;;:28;:181::i;:::-;:203;;:208::i;:::-;15466:220;;15712:41;15738:14;;15712:21;;:25;;:41;;;;:::i;:::-;15701:52;;15791:82;15850:8;15791:36;15805:21;;15791:9;:13;;:36;;;;:::i;:82::-;15768:20;:105;15918:14;;15904:43;;15938:8;;15904:29;;:9;;:13;:29::i;:43::-;15888:13;:59;15994:13;;-1:-1:-1;;;;;15986:21:0;;;15994:13;;15986:21;:72;;;;-1:-1:-1;16042:15:0;;-1:-1:-1;;;;;16028:30:0;;;16042:15;;16028:30;;15986:72;:116;;;;-1:-1:-1;;;;;;16080:22:0;;;;;;:18;:22;;;;;;;;16079:23;15986:116;15964:679;;;16155:12;;16145:6;:22;;16137:60;;;;-1:-1:-1;;;16137:60:0;;12564:2:1;16137:60:0;;;12546:21:1;12603:2;12583:18;;;12576:30;12642:27;12622:18;;;12615:55;12687:18;;16137:60:0;12362:349:1;16137:60:0;16272:14;;16262:6;16246:13;16256:2;-1:-1:-1;;;;;13471:18:0;13444:7;13471:18;;;:9;:18;;;;;;;13378:119;16246:13;:22;;;;:::i;:::-;:40;;16216:140;;;;-1:-1:-1;;;16216:140:0;;13048:2:1;16216:140:0;;;13030:21:1;13087:2;13067:18;;;13060:30;13126:28;13106:18;;;13099:56;13172:18;;16216:140:0;12846:350:1;16216:140:0;16398:12;16381:10;;16394:1;16381:14;;;;:::i;:::-;:29;16377:221;;;16470:14;16481:2;16470:10;:14::i;:::-;16469:15;:42;;;;-1:-1:-1;16488:10:0;16502:9;16488:23;16469:42;16435:143;;;;-1:-1:-1;;;16435:143:0;;13403:2:1;16435:143:0;;;13385:21:1;13442:2;13422:18;;;13415:30;-1:-1:-1;;;13461:18:1;;;13454:45;13516:18;;16435:143:0;13201:339:1;16435:143:0;16616:9;:11;;;:9;:11;;;:::i;:::-;;;;;;15964:679;16669:13;;-1:-1:-1;;;;;16663:19:0;;;16669:13;;16663:19;;;;:46;;-1:-1:-1;;;;;;16687:22:0;;;;;;:18;:22;;;;;;;;16686:23;16663:46;16659:227;;;16786:14;;16776:6;16760:13;16770:2;-1:-1:-1;;;;;13471:18:0;13444:7;13471:18;;;:9;:18;;;;;;;13378:119;16760:13;:22;;;;:::i;:::-;:40;;16730:140;;;;-1:-1:-1;;;16730:140:0;;13048:2:1;16730:140:0;;;13030:21:1;13087:2;13067:18;;;13060:30;13126:28;13106:18;;;13099:56;13172:18;;16730:140:0;12846:350:1;16730:140:0;16912:13;;-1:-1:-1;;;;;16906:19:0;;;16912:13;;16906:19;:44;;;;-1:-1:-1;;;;;;16929:21:0;;16945:4;16929:21;;16906:44;16902:621;;;16983:235;17214:3;16983:204;17055:16;;17043:9;;:28;17042:122;;17149:15;;17042:122;;;17104:13;;16983:6;;:32;:204::i;:235::-;16971:247;;17248:43;17275:15;;17248:22;;:26;;:43;;;;:::i;:::-;17237:54;;17333:95;17419:8;17333:59;17369:22;;17333:9;:35;;:59;;;;:::i;:95::-;17310:20;:118;17477:15;;17463:44;;17498:8;;17463:30;;:9;;:13;:30::i;:44::-;17447:13;:60;16902:621;17588:4;17539:28;13471:18;;;:9;:18;;;;;;17632:6;;-1:-1:-1;;;17632:6:0;;;;17631:7;:47;;;;-1:-1:-1;17665:13:0;;-1:-1:-1;;;;;17659:19:0;;;17665:13;;17659:19;17631:47;:79;;;;-1:-1:-1;17699:11:0;;-1:-1:-1;;;17699:11:0;;;;17631:79;:140;;;;;17754:17;;17731:20;:40;17631:140;:191;;;;;17804:18;;17792:9;;:30;17631:191;17609:563;;;17857:109;17896:51;17900:6;17908:38;17912:20;17934:11;;17908:3;:38::i;:::-;17896:3;:51::i;:::-;17857:16;:109::i;:::-;18014:21;18058:22;;18054:103;;18105:32;18118:18;18105:12;:32::i;:::-;17838:334;17609:563;15403:2780;15365:2818;18197:13;;18193:428;;18315:20;;18279:11;;-1:-1:-1;;;;;18279:11:0;18261:31;;;;:9;:31;;;;;;:89;;:35;:89::i;:::-;18245:11;;;-1:-1:-1;;;;;18245:11:0;;;18227:31;;;;:9;:31;;;;;;;;;:123;;;;18393:11;;18407:20;;18370:58;;1500:25:1;;;18393:11:0;;;18370:58;;;;-1:-1:-1;;;;;;;;;;;18370:58:0;1473:18:1;18370:58:0;;;;;;;18517:13;;18488:4;18470:24;;;;:9;:24;;;;;;:75;;:28;:75::i;:::-;18461:4;18443:24;;;;:9;:24;;;;;;;;;:102;;;;18595:13;;18565:44;;1500:25:1;;;18461:4:0;;-1:-1:-1;;;;;18565:44:0;;;-1:-1:-1;;;;;;;;;;;18565:44:0;1473:18:1;18565:44:0;;;;;;;18193:428;-1:-1:-1;;;;;18649:15:0;;;;;;:9;:15;;;;;;:27;;18669:6;18649:19;:27::i;:::-;-1:-1:-1;;;;;18631:15:0;;;;;;:9;:15;;;;;:45;18703:40;18721:21;:6;18732:9;18721:10;:21::i;:::-;-1:-1:-1;;;;;18703:13:0;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;-1:-1:-1;;;;;18687:13:0;;;;;;;:9;:13;;;;;:56;;;;18759:41;;-1:-1:-1;;;;;;;;;;;18778:21:0;:6;18789:9;18778:10;:21::i;:::-;18759:41;;1500:25:1;;;1488:2;1473:18;18759:41:0;;;;;;;-1:-1:-1;;;;;18818:23:0;;;;;;:17;:23;;;;;;;;18813:115;;18862:11;;-1:-1:-1;;;;;18889:15:0;;;18862:11;18889:15;;;18862:11;18889:15;;;;;;;;18862:43;;-1:-1:-1;;;18862:43:0;;;;;9692:51:1;;;;9759:18;;;9752:34;18862:11:0;;;:20;;9665:18:1;;18862:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18858:59;;-1:-1:-1;;;;;18943:21:0;;;;;;:17;:21;;;;;;;;18938:109;;18985:11;;-1:-1:-1;;;;;19010:13:0;;;18985:11;19010:13;;;18985:11;19010:13;;;;;;;;18985:39;;-1:-1:-1;;;18985:39:0;;;;;9692:51:1;;;;9759:18;;;9752:34;18985:11:0;;;:20;;9665:18:1;;18985:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18981:55;;19061:11;;19081:20;;19061:41;;-1:-1:-1;;;19061:41:0;;-1:-1:-1;;;;;19061:11:0;;;;:19;;:41;;;;1500:25:1;;;1488:2;1473:18;;1354:177;19061:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19057:57;19128:11;;19148:14;;19128:35;;-1:-1:-1;;;;;;19128:35:0;;-1:-1:-1;;;;;19128:11:0;;;;:19;;:35;;;;1500:25:1;;;1488:2;1473:18;;1354:177;19128:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14941:4241;;14872:4310;;;:::o;1447:224::-;1567:7;1603:12;1595:6;;;;1587:29;;;;-1:-1:-1;;;1587:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1627:9:0;1639:5;1643:1;1639;:5;:::i;:::-;1627:17;1447:224;-1:-1:-1;;;;;1447:224:0:o;19190:231::-;-1:-1:-1;;;;;19292:15:0;;;;;;:9;:15;;;;;;:27;;19312:6;19292:19;:27::i;:::-;-1:-1:-1;;;;;19274:15:0;;;;;;;:9;:15;;;;;;:45;;;;19346:13;;;;;;;:25;;19364:6;19346:17;:25::i;:::-;-1:-1:-1;;;;;19330:13:0;;;;;;;:9;:13;;;;;;;:41;;;;19387:26;;;;;;-1:-1:-1;;;;;;;;;;;19387:26:0;;;19406:6;1500:25:1;;1488:2;1473:18;;1354:177;1679:246:0;1737:7;1761:1;1766;1761:6;1757:47;;-1:-1:-1;1791:1:0;1784:8;;1757:47;1814:9;1826:5;1830:1;1826;:5;:::i;:::-;1814:17;-1:-1:-1;1859:1:0;1850:5;1854:1;1814:17;1850:5;:::i;:::-;:10;1842:56;;;;-1:-1:-1;;;1842:56:0;;14102:2:1;1842:56:0;;;14084:21:1;14141:2;14121:18;;;14114:30;14180:34;14160:18;;;14153:62;-1:-1:-1;;;14231:18:1;;;14224:31;14272:19;;1842:56:0;13900:397:1;1842:56:0;1916:1;1679:246;-1:-1:-1;;;1679:246:0:o;1933:132::-;1991:7;2018:39;2022:1;2025;2018:39;;;;;;;;;;;;;;;;;:3;:39::i;1116:179::-;1174:7;;1206:5;1210:1;1206;:5;:::i;:::-;1194:17;;1235:1;1230;:6;;1222:46;;;;-1:-1:-1;;;1222:46:0;;14504:2:1;1222:46:0;;;14486:21:1;14543:2;14523:18;;;14516:30;14582:29;14562:18;;;14555:57;14629:18;;1222:46:0;14302:351:1;19544:151:0;19603:4;;-1:-1:-1;;;;;19629:19:0;;;:24;:39;;19664:4;19629:39;;;19656:5;19620:48;19544:151;-1:-1:-1;;;19544:151:0:o;19429:107::-;19486:7;19518:1;19514;:5;19513:15;;19527:1;19513:15;;;-1:-1:-1;19523:1:0;19429:107;-1:-1:-1;19429:107:0:o;19703:483::-;12335:6;:13;;-1:-1:-1;;;;12335:13:0;-1:-1:-1;;;12335:13:0;;;19805:16:::1;::::0;;19819:1:::1;19805:16:::0;;;;;::::1;::::0;;-1:-1:-1;;19805:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;19805:16:0::1;19781:40;;19850:4;19832;19837:1;19832:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19832:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;19876:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;19876:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;19832:7;;19876:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19866:4;19871:1;19866:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19866:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;19941:15:::1;::::0;19909:62:::1;::::0;19926:4:::1;::::0;19941:15:::1;19959:11:::0;19909:8:::1;:62::i;:::-;19982:15;::::0;:196:::1;::::0;-1:-1:-1;;;19982:196:0;;-1:-1:-1;;;;;19982:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;20063:11;;19982:15:::1;::::0;20105:4;;20132::::1;::::0;20152:15:::1;::::0;19982:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;12371:6:0;:14;;-1:-1:-1;;;;12371:14:0;;;-1:-1:-1;;;;19703:483:0:o;21843:92::-;21900:10;;:27;;-1:-1:-1;;;;;21900:10:0;;;;:27;;;;;21920:6;;21900:10;:27;:10;:27;21920:6;21900:10;:27;;;;;;;;;;;;;;;;;;;1303:136;1361:7;1388:43;1392:1;1395;1388:43;;;;;;;;;;;;;;;;;:3;:43::i;2073:223::-;2193:7;2228:12;2221:5;2213:28;;;;-1:-1:-1;;;2213:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2252:9:0;2264:5;2268:1;2264;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:134::-;771:20;;800:31;771:20;800:31;:::i;:::-;703:134;;;:::o;842:315::-;910:6;918;971:2;959:9;950:7;946:23;942:32;939:52;;;987:1;984;977:12;939:52;1026:9;1013:23;1045:31;1070:5;1045:31;:::i;:::-;1095:5;1147:2;1132:18;;;;1119:32;;-1:-1:-1;;;842:315:1:o;1536:456::-;1613:6;1621;1629;1682:2;1670:9;1661:7;1657:23;1653:32;1650:52;;;1698:1;1695;1688:12;1650:52;1737:9;1724:23;1756:31;1781:5;1756:31;:::i;:::-;1806:5;-1:-1:-1;1863:2:1;1848:18;;1835:32;1876:33;1835:32;1876:33;:::i;:::-;1536:456;;1928:7;;-1:-1:-1;;;1982:2:1;1967:18;;;;1954:32;;1536:456::o;1997:248::-;2065:6;2073;2126:2;2114:9;2105:7;2101:23;2097:32;2094:52;;;2142:1;2139;2132:12;2094:52;-1:-1:-1;;2165:23:1;;;2235:2;2220:18;;;2207:32;;-1:-1:-1;1997:248:1:o;2439:127::-;2500:10;2495:3;2491:20;2488:1;2481:31;2531:4;2528:1;2521:15;2555:4;2552:1;2545:15;2571:1121;2655:6;2686:2;2729;2717:9;2708:7;2704:23;2700:32;2697:52;;;2745:1;2742;2735:12;2697:52;2785:9;2772:23;2814:18;2855:2;2847:6;2844:14;2841:34;;;2871:1;2868;2861:12;2841:34;2909:6;2898:9;2894:22;2884:32;;2954:7;2947:4;2943:2;2939:13;2935:27;2925:55;;2976:1;2973;2966:12;2925:55;3012:2;2999:16;3034:2;3030;3027:10;3024:36;;;3040:18;;:::i;:::-;3086:2;3083:1;3079:10;3118:2;3112:9;3181:2;3177:7;3172:2;3168;3164:11;3160:25;3152:6;3148:38;3236:6;3224:10;3221:22;3216:2;3204:10;3201:18;3198:46;3195:72;;;3247:18;;:::i;:::-;3283:2;3276:22;3333:18;;;3367:15;;;;-1:-1:-1;3409:11:1;;;3405:20;;;3437:19;;;3434:39;;;3469:1;3466;3459:12;3434:39;3493:11;;;;3513:148;3529:6;3524:3;3521:15;3513:148;;;3595:23;3614:3;3595:23;:::i;:::-;3583:36;;3546:12;;;;3639;;;;3513:148;;;3680:6;2571:1121;-1:-1:-1;;;;;;;;2571:1121:1:o;3697:247::-;3756:6;3809:2;3797:9;3788:7;3784:23;3780:32;3777:52;;;3825:1;3822;3815:12;3777:52;3864:9;3851:23;3883:31;3908:5;3883:31;:::i;4157:180::-;4216:6;4269:2;4257:9;4248:7;4244:23;4240:32;4237:52;;;4285:1;4282;4275:12;4237:52;-1:-1:-1;4308:23:1;;4157:180;-1:-1:-1;4157:180:1:o;4577:388::-;4645:6;4653;4706:2;4694:9;4685:7;4681:23;4677:32;4674:52;;;4722:1;4719;4712:12;4674:52;4761:9;4748:23;4780:31;4805:5;4780:31;:::i;:::-;4830:5;-1:-1:-1;4887:2:1;4872:18;;4859:32;4900:33;4859:32;4900:33;:::i;:::-;4952:7;4942:17;;;4577:388;;;;;:::o;4970:118::-;5056:5;5049:13;5042:21;5035:5;5032:32;5022:60;;5078:1;5075;5068:12;5093:382;5158:6;5166;5219:2;5207:9;5198:7;5194:23;5190:32;5187:52;;;5235:1;5232;5225:12;5187:52;5274:9;5261:23;5293:31;5318:5;5293:31;:::i;:::-;5343:5;-1:-1:-1;5400:2:1;5385:18;;5372:32;5413:30;5372:32;5413:30;:::i;5480:356::-;5682:2;5664:21;;;5701:18;;;5694:30;5760:34;5755:2;5740:18;;5733:62;5827:2;5812:18;;5480:356::o;5841:127::-;5902:10;5897:3;5893:20;5890:1;5883:31;5933:4;5930:1;5923:15;5957:4;5954:1;5947:15;5973:422;6062:1;6105:5;6062:1;6119:270;6140:7;6130:8;6127:21;6119:270;;;6199:4;6195:1;6191:6;6187:17;6181:4;6178:27;6175:53;;;6208:18;;:::i;:::-;6258:7;6248:8;6244:22;6241:55;;;6278:16;;;;6241:55;6357:22;;;;6317:15;;;;6119:270;;;6123:3;5973:422;;;;;:::o;6400:806::-;6449:5;6479:8;6469:80;;-1:-1:-1;6520:1:1;6534:5;;6469:80;6568:4;6558:76;;-1:-1:-1;6605:1:1;6619:5;;6558:76;6650:4;6668:1;6663:59;;;;6736:1;6731:130;;;;6643:218;;6663:59;6693:1;6684:10;;6707:5;;;6731:130;6768:3;6758:8;6755:17;6752:43;;;6775:18;;:::i;:::-;-1:-1:-1;;6831:1:1;6817:16;;6846:5;;6643:218;;6945:2;6935:8;6932:16;6926:3;6920:4;6917:13;6913:36;6907:2;6897:8;6894:16;6889:2;6883:4;6880:12;6876:35;6873:77;6870:159;;;-1:-1:-1;6982:19:1;;;7014:5;;6870:159;7061:34;7086:8;7080:4;7061:34;:::i;:::-;7131:6;7127:1;7123:6;7119:19;7110:7;7107:32;7104:58;;;7142:18;;:::i;:::-;7180:20;;6400:806;-1:-1:-1;;;6400:806:1:o;7211:140::-;7269:5;7298:47;7339:4;7329:8;7325:19;7319:4;7298:47;:::i;7356:168::-;7429:9;;;7460;;7477:15;;;7471:22;;7457:37;7447:71;;7498:18;;:::i;7529:184::-;7599:6;7652:2;7640:9;7631:7;7627:23;7623:32;7620:52;;;7668:1;7665;7658:12;7620:52;-1:-1:-1;7691:16:1;;7529:184;-1:-1:-1;7529:184:1:o;7971:127::-;8032:10;8027:3;8023:20;8020:1;8013:31;8063:4;8060:1;8053:15;8087:4;8084:1;8077:15;8103:135;8142:3;8163:17;;;8160:43;;8183:18;;:::i;:::-;-1:-1:-1;8230:1:1;8219:13;;8103:135::o;8953:251::-;9023:6;9076:2;9064:9;9055:7;9051:23;9047:32;9044:52;;;9092:1;9089;9082:12;9044:52;9124:9;9118:16;9143:31;9168:5;9143:31;:::i;9797:245::-;9864:6;9917:2;9905:9;9896:7;9892:23;9888:32;9885:52;;;9933:1;9930;9923:12;9885:52;9965:9;9959:16;9984:28;10006:5;9984:28;:::i;12716:125::-;12781:9;;;12802:10;;;12799:36;;;12815:18;;:::i;13545:128::-;13612:9;;;13633:11;;;13630:37;;;13647:18;;:::i;13678:217::-;13718:1;13744;13734:132;;13788:10;13783:3;13779:20;13776:1;13769:31;13823:4;13820:1;13813:15;13851:4;13848:1;13841:15;13734:132;-1:-1:-1;13880:9:1;;13678:217::o;14658:980::-;14920:4;14968:3;14957:9;14953:19;14999:6;14988:9;14981:25;15025:2;15063:6;15058:2;15047:9;15043:18;15036:34;15106:3;15101:2;15090:9;15086:18;15079:31;15130:6;15165;15159:13;15196:6;15188;15181:22;15234:3;15223:9;15219:19;15212:26;;15273:2;15265:6;15261:15;15247:29;;15294:1;15304:195;15318:6;15315:1;15312:13;15304:195;;;15383:13;;-1:-1:-1;;;;;15379:39:1;15367:52;;15474:15;;;;15439:12;;;;15415:1;15333:9;15304:195;;;-1:-1:-1;;;;;;;15555:32:1;;;;15550:2;15535:18;;15528:60;-1:-1:-1;;;15619:3:1;15604:19;15597:35;15516:3;14658:980;-1:-1:-1;;;14658:980:1:o
Swarm Source
ipfs://b444fee694872edde5863d4545f337c59435469b75715772f97206a57a842244
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.