Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000,000,000 Baby Mongoose
Holders
17
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
BabyMongoose
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-12-10 */ //Baby Moogoose //It's Baby Mongoose, coming it's Benefit Meeting. A baby will grow oneday. pragma solidity ^0.8.7; /** * Standard SafeMath, stripped down to just add/sub/mul/div */ 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) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } } /** * BEP20 standard interface. */ interface IBEP20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function getOwner() external view returns (address); 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); } /** * Allows for contract ownership along with multi-address authorization */ abstract contract Auth { address internal owner; constructor(address _owner) { owner = _owner; } /** * Function modifier to require caller to be contract deployer */ modifier onlyOwner() { require(isOwner(msg.sender), "!Owner"); _; } /** * Check if address is owner */ function isOwner(address account) public view returns (bool) { return account == owner; } /** * Transfer ownership to new address. Caller must be deployer. Leaves old deployer authorized */ function transferOwnership(address payable adr) public onlyOwner { owner = adr; emit OwnershipTransferred(adr); } event OwnershipTransferred(address owner); } interface IDEXFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IDEXRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } interface IDividendDistributor { function setShare(address shareholder, uint256 amount) external; function deposit() external payable; function claimDividend(address shareholder) external; function setTreasury(address treasury) external; function getDividendsClaimedOf (address shareholder) external returns (uint256); } contract DividendDistributor is IDividendDistributor { using SafeMath for uint256; address public _token; address public _owner; address public _treasury; struct Share { uint256 amount; uint256 totalExcluded; uint256 totalClaimed; } address[] private shareholders; mapping (address => uint256) private shareholderIndexes; mapping (address => Share) public shares; uint256 public totalShares; uint256 public totalDividends; uint256 public totalClaimed; uint256 public dividendsPerShare; uint256 private dividendsPerShareAccuracyFactor = 10 ** 36; modifier onlyToken() { require(msg.sender == _token); _; } modifier onlyOwner() { require(msg.sender == _owner); _; } constructor (address owner, address treasury) { _token = msg.sender; _owner = payable(owner); _treasury = payable(treasury); } // receive() external payable { } 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() external payable override { uint256 amount = msg.value; totalDividends = totalDividends.add(amount); dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares)); } function distributeDividend(address shareholder) internal { if(shares[shareholder].amount == 0){ return; } uint256 amount = getClaimableDividendOf(shareholder); if(amount > 0){ totalClaimed = totalClaimed.add(amount); shares[shareholder].totalClaimed = shares[shareholder].totalClaimed.add(amount); shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount); payable(shareholder).transfer(amount); } } function claimDividend(address shareholder) external override onlyToken { distributeDividend(shareholder); } function getClaimableDividendOf(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(); } function manualSend(uint256 amount, address holder) external onlyOwner { uint256 contractETHBalance = address(this).balance; payable(holder).transfer(amount > 0 ? amount : contractETHBalance); } function setTreasury(address treasury) external override onlyToken { _treasury = payable(treasury); } function getDividendsClaimedOf (address shareholder) external override view returns (uint256) { require (shares[shareholder].amount > 0, "You're not a BM shareholder!"); return shares[shareholder].totalClaimed; } } contract BabyMongoose is IBEP20, Auth { using SafeMath for uint256; address private WETH; address private DEAD = 0x000000000000000000000000000000000000dEaD; address private ZERO = 0x0000000000000000000000000000000000000000; string private constant _name = "Baby Mongoose"; string private constant _symbol = "Baby Mongoose"; uint8 private constant _decimals = 9; uint256 private _totalSupply = 1000000000000000 * (10 ** _decimals); uint256 private _maxTxAmountBuy = _totalSupply; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private isFeeExempt; mapping (address => bool) private isDividendExempt; mapping (address => bool) private isBot; uint256 private totalFee = 14; uint256 private feeDenominator = 100; address payable public marketingWallet = payable(0x6C67a6857af936BC6912C49EE0f01A9805Db4659); address payable public treasury = payable(0x6C67a6857af936BC6912C49EE0f01A9805Db4659); IDEXRouter public router; address public pair; uint256 public launchedAt; bool private tradingOpen; bool private buyLimit = true; uint256 private maxBuy = 1000000000000000 * (10 ** _decimals); DividendDistributor public distributor; bool private inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor ( ) Auth(0xc4951dFB4eE5eF530f26B045414F416620ee66bD) { address _owner = 0xc4951dFB4eE5eF530f26B045414F416620ee66bD; router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); WETH = router.WETH(); pair = IDEXFactory(router.factory()).createPair(WETH, address(this)); _allowances[address(this)][address(router)] = type(uint256).max; distributor = new DividendDistributor(_owner, treasury); isFeeExempt[_owner] = true; isFeeExempt[marketingWallet] = true; isFeeExempt[treasury] = true; isDividendExempt[pair] = true; isDividendExempt[address(this)] = true; isDividendExempt[DEAD] = true; _balances[_owner] = _totalSupply; emit Transfer(address(0), _owner, _totalSupply); } receive() external payable { } function totalSupply() external view override returns (uint256) { return _totalSupply; } function decimals() external pure override returns (uint8) { return _decimals; } function symbol() external pure override returns (string memory) { return _symbol; } function name() external pure override returns (string memory) { return _name; } function getOwner() external view override returns (address) { return owner; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function approveMax(address spender) external returns (bool) { return approve(spender, type(uint256).max); } function transfer(address recipient, uint256 amount) external override returns (bool) { return _transferFrom(msg.sender, recipient, amount); } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { if(_allowances[sender][msg.sender] != type(uint256).max){ _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance"); } return _transferFrom(sender, recipient, amount); } function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { if (sender!= owner && recipient!= owner) require(tradingOpen, "Trading not yet enabled."); //transfers disabled before openTrading require (!isBot[sender] && !isBot[recipient], "Nice try"); if (buyLimit) { if (sender!=owner && recipient!= owner) require (amount<=maxBuy, "Too much sir"); } if (block.number <= (launchedAt + 1)) { isBot[recipient] = true; isDividendExempt[recipient] = true; } if(inSwap){ return _basicTransfer(sender, recipient, amount); } bool shouldSwapBack = /*!inSwap &&*/ (recipient==pair && balanceOf(address(this)) > 0); if(shouldSwapBack){ swapBack(); } _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, amount) : amount; _balances[recipient] = _balances[recipient].add(amountReceived); if(sender != pair && !isDividendExempt[sender]){ try distributor.setShare(sender, _balances[sender]) {} catch {} } if(recipient != pair && !isDividendExempt[recipient]){ try distributor.setShare(recipient, _balances[recipient]) {} catch {} } emit Transfer(sender, recipient, amountReceived); return true; } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function shouldTakeFee(address sender, address recipient) internal view returns (bool) { return ( !(isFeeExempt[sender] || isFeeExempt[recipient]) && (sender == pair || recipient == pair) ); } function takeFee(address sender, uint256 amount) internal returns (uint256) { uint256 feeAmount; feeAmount = amount.mul(totalFee).div(feeDenominator); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); return amount.sub(feeAmount); } function swapBack() internal swapping { uint256 amountToSwap = balanceOf(address(this)); address[] memory path = new address[](2); path[0] = address(this); path[1] = WETH; router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountTreasury = (address(this).balance).div(2); uint256 amountMarketing = (address(this).balance).div(2); payable(marketingWallet).transfer(amountMarketing); payable(treasury).transfer(amountTreasury); } function openTrading() external onlyOwner { launchedAt = block.number; tradingOpen = true; } function setBot(address _address) external onlyOwner { isBot[_address] = true; _setIsDividendExempt(_address, true); } function setBulkBots(address[] memory bots_) external onlyOwner { for (uint i = 0; i < bots_.length; i++) { isBot[bots_[i]] = true; _setIsDividendExempt(bots_[i], true); } } function delBulkBots(address[] memory bots_) external onlyOwner { for (uint i = 0; i < bots_.length; i++) { isBot[bots_[i]] = false; _setIsDividendExempt(bots_[i], false); } } function isInBot(address _address) external view onlyOwner returns (bool) { return isBot[_address]; } function _setIsDividendExempt(address holder, bool exempt) internal { require(holder != address(this) && holder != pair); isDividendExempt[holder] = exempt; if(exempt){ distributor.setShare(holder, 0); }else{ distributor.setShare(holder, _balances[holder]); } } function setIsDividendExempt(address holder, bool exempt) external onlyOwner { _setIsDividendExempt(holder, exempt); } function setIsFeeExempt(address holder, bool exempt) external onlyOwner { isFeeExempt[holder] = exempt; } function setFee (uint256 _fee) external onlyOwner { require (_fee <= 14, "Fee can't exceed 14%"); totalFee = _fee; } function manualSend() external onlyOwner { uint256 contractETHBalance = address(this).balance; payable(marketingWallet).transfer(contractETHBalance); } function claimDividend() external { distributor.claimDividend(msg.sender); } function claimDividend(address holder) external onlyOwner { distributor.claimDividend(holder); } function getClaimableDividendOf(address shareholder) public view returns (uint256) { return distributor.getClaimableDividendOf(shareholder); } function manualBurn(uint256 amount) external onlyOwner returns (bool) { return _basicTransfer(address(this), DEAD, amount); } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO)); } function setMarketingWallet(address _marketingWallet) external onlyOwner { marketingWallet = payable(_marketingWallet); } function setTreasury(address _treasury) external onlyOwner { treasury = payable(_treasury); distributor.setTreasury(_treasury); } function getTotalDividends() external view returns (uint256) { return distributor.totalDividends(); } function getTotalClaimed() external view returns (uint256) { return distributor.totalClaimed(); } function getDividendsClaimedOf (address shareholder) external view returns (uint256) { return distributor.getDividendsClaimedOf(shareholder); } function removeBuyLimit() external onlyOwner { buyLimit = false; } }
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":"address","name":"owner","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":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","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":[{"internalType":"address","name":"holder","type":"address"}],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","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":"bots_","type":"address[]"}],"name":"delBulkBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getClaimableDividendOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getDividendsClaimedOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"isInBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualBurn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeBuyLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBulkBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"setFee","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":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasury","type":"address"}],"name":"setTreasury","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":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600280546001600160a01b031990811661dead17909155600380549091169055620000326009600a6200053a565b620000459066038d7ea4c6800062000552565b6004819055600555600e600b8190556064600c55600d80546001600160a01b0319908116736c67a6857af936bc6912c49ee0f01a9805db46599081179092558254161790556012805461ff001916610100179055620000a76009600a6200053a565b620000ba9066038d7ea4c6800062000552565b601355348015620000ca57600080fd5b506000805473c4951dfb4ee5ef530f26b045414f416620ee66bd6001600160a01b03199182168117909255600f8054737a250d5630b4cf539739df2c5dacb4c659f2488d921682179055604080516315ab88c960e31b8152905163ad5c464891600480820192602092909190829003018186803b1580156200014b57600080fd5b505afa15801562000160573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000186919062000574565b600180546001600160a01b0319166001600160a01b03928316179055600f546040805163c45a015560e01b81529051919092169163c45a0155916004808301926020929190829003018186803b158015620001e057600080fd5b505afa158015620001f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021b919062000574565b6001546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c6539690604401602060405180830381600087803b1580156200026857600080fd5b505af11580156200027d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a3919062000574565b601080546001600160a01b0319166001600160a01b03928316179055306000908152600760209081526040808320600f5485168452909152908190206000199055600e54905183929190911690620002fb9062000417565b6001600160a01b03928316815291166020820152604001604051809103906000f0801580156200032f573d6000803e3d6000fd5b50601480546001600160a01b0319166001600160a01b039283161790558181166000818152600860209081526040808320805460ff199081166001908117909255600d54871685528285208054821683179055600e548716855282852080548216831790556010548716855260098452828520805482168317905530855282852080548216831790556002549096168452818420805490961617909455600454838352600682528483208190559351938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3506200059f565b610d0480620025bb83390190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200047c57816000190482111562000460576200046062000425565b808516156200046e57918102915b93841c939080029062000440565b509250929050565b600082620004955750600162000534565b81620004a45750600062000534565b8160018114620004bd5760028114620004c857620004e8565b600191505062000534565b60ff841115620004dc57620004dc62000425565b50506001821b62000534565b5060208310610133831016604e8410600b84101617156200050d575081810a62000534565b6200051983836200043b565b806000190482111562000530576200053062000425565b0290505b92915050565b60006200054b60ff84168362000484565b9392505050565b60008160001904831182151516156200056f576200056f62000425565b500290565b6000602082840312156200058757600080fd5b81516001600160a01b03811681146200054b57600080fd5b61200c80620005af6000396000f3fe6080604052600436106102345760003560e01c80636b5caec41161012e578063bf56b371116100ab578063f0fc6bca1161006f578063f0fc6bca146106b2578063f2fde38b146106c7578063f4293890146106e7578063f708a64f146106fc578063f887ea401461071c57600080fd5b8063bf56b37114610601578063bfe1092814610617578063c9567bf914610637578063dd62ed3e1461064c578063f0f442601461069257600080fd5b80638ecc37fb116100f25780638ecc37fb1461058157806395d89b4114610240578063a8aa1b31146105a1578063a9059cbb146105c1578063b89402a0146105e157600080fd5b80636b5caec4146104d857806370a08231146104f8578063736a83a11461052e57806375f0a87414610543578063893d20e81461056357600080fd5b8063350fcdf9116101bc5780635d098b38116101805780635d098b381461042b57806361d027b31461044b578063658d4b7f1461048357806367ee5f09146104a357806369fe0e2d146104b857600080fd5b8063350fcdf9146103965780633e07ce5b146103b6578063416501c8146103cb578063571ac8b0146103eb5780635cc33f741461040b57600080fd5b806323b635851161020357806323b63585146102f657806323b872dd146103165780632b112e49146103365780632f54bf6e1461034b578063313ce5671461037a57600080fd5b806306fdde0314610240578063095ea7b31461028557806315f7e05e146102b557806318160ddd146102d757600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b50604080518082018252600d81526c42616279204d6f6e676f6f736560981b6020820152905161027c9190611c16565b60405180910390f35b34801561029157600080fd5b506102a56102a0366004611c8b565b61073c565b604051901515815260200161027c565b3480156102c157600080fd5b506102d56102d0366004611cb7565b6107a9565b005b3480156102e357600080fd5b506004545b60405190815260200161027c565b34801561030257600080fd5b506102a5610311366004611cd4565b61083f565b34801561032257600080fd5b506102a5610331366004611ced565b61088a565b34801561034257600080fd5b506102e861094c565b34801561035757600080fd5b506102a5610366366004611cb7565b6000546001600160a01b0391821691161490565b34801561038657600080fd5b506040516009815260200161027c565b3480156103a257600080fd5b506102d56103b1366004611d44565b61099e565b3480156103c257600080fd5b506102d5610a65565b3480156103d757600080fd5b506102a56103e6366004611cb7565b610a9c565b3480156103f757600080fd5b506102a5610406366004611cb7565b610ae6565b34801561041757600080fd5b506102e8610426366004611cb7565b610af4565b34801561043757600080fd5b506102d5610446366004611cb7565b610b73565b34801561045757600080fd5b50600e5461046b906001600160a01b031681565b6040516001600160a01b03909116815260200161027c565b34801561048f57600080fd5b506102d561049e366004611e09565b610bbf565b3480156104af57600080fd5b506102e8610c14565b3480156104c457600080fd5b506102d56104d3366004611cd4565b610c91565b3480156104e457600080fd5b506102d56104f3366004611cb7565b610d08565b34801561050457600080fd5b506102e8610513366004611cb7565b6001600160a01b031660009081526006602052604090205490565b34801561053a57600080fd5b506102e8610d66565b34801561054f57600080fd5b50600d5461046b906001600160a01b031681565b34801561056f57600080fd5b506000546001600160a01b031661046b565b34801561058d57600080fd5b506102e861059c366004611cb7565b610dab565b3480156105ad57600080fd5b5060105461046b906001600160a01b031681565b3480156105cd57600080fd5b506102a56105dc366004611c8b565b610dde565b3480156105ed57600080fd5b506102d56105fc366004611d44565b610deb565b34801561060d57600080fd5b506102e860115481565b34801561062357600080fd5b5060145461046b906001600160a01b031681565b34801561064357600080fd5b506102d5610eae565b34801561065857600080fd5b506102e8610667366004611e47565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b34801561069e57600080fd5b506102d56106ad366004611cb7565b610eeb565b3480156106be57600080fd5b506102d5610f5e565b3480156106d357600080fd5b506102d56106e2366004611cb7565b610fbd565b3480156106f357600080fd5b506102d561103b565b34801561070857600080fd5b506102d5610717366004611e09565b61109f565b34801561072857600080fd5b50600f5461046b906001600160a01b031681565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107979086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b031633146107dc5760405162461bcd60e51b81526004016107d390611e75565b60405180910390fd5b601454604051630afbf02f60e11b81526001600160a01b038381166004830152909116906315f7e05e906024015b600060405180830381600087803b15801561082457600080fd5b505af1158015610838573d6000803e3d6000fd5b5050505050565b600080546001600160a01b0316331461086a5760405162461bcd60e51b81526004016107d390611e75565b6002546108829030906001600160a01b0316846110d3565b90505b919050565b6001600160a01b038316600090815260076020908152604080832033845290915281205460001914610937576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526007825283812033825290915291909120546109129184906111b9565b6001600160a01b03851660009081526007602090815260408083203384529091529020555b6109428484846111f3565b90505b9392505050565b6003546001600160a01b0316600090815260066020526040812054610999906002546001600160a01b0316600090815260066020526040902054610993906004549061169d565b9061169d565b905090565b6000546001600160a01b031633146109c85760405162461bcd60e51b81526004016107d390611e75565b60005b8151811015610a61576000600a60008484815181106109ec576109ec611e95565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550610a4f828281518110610a4057610a40611e95565b602002602001015160006116df565b80610a5981611ec1565b9150506109cb565b5050565b6000546001600160a01b03163314610a8f5760405162461bcd60e51b81526004016107d390611e75565b6012805461ff0019169055565b600080546001600160a01b03163314610ac75760405162461bcd60e51b81526004016107d390611e75565b506001600160a01b03166000908152600a602052604090205460ff1690565b60006108828260001961073c565b601454604051631730cfdd60e21b81526001600160a01b0383811660048301526000921690635cc33f74906024015b60206040518083038186803b158015610b3b57600080fd5b505afa158015610b4f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108829190611edc565b6000546001600160a01b03163314610b9d5760405162461bcd60e51b81526004016107d390611e75565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610be95760405162461bcd60e51b81526004016107d390611e75565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6014546040805163997664d760e01b815290516000926001600160a01b03169163997664d7916004808301926020929190829003018186803b158015610c5957600080fd5b505afa158015610c6d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109999190611edc565b6000546001600160a01b03163314610cbb5760405162461bcd60e51b81526004016107d390611e75565b600e811115610d035760405162461bcd60e51b81526020600482015260146024820152734665652063616e2774206578636565642031342560601b60448201526064016107d3565b600b55565b6000546001600160a01b03163314610d325760405162461bcd60e51b81526004016107d390611e75565b6001600160a01b0381166000908152600a60205260409020805460ff19166001908117909155610d639082906116df565b50565b6014546040805163d54ad2a160e01b815290516000926001600160a01b03169163d54ad2a1916004808301926020929190829003018186803b158015610c5957600080fd5b601454604051638ecc37fb60e01b81526001600160a01b0383811660048301526000921690638ecc37fb90602401610b23565b60006109453384846111f3565b6000546001600160a01b03163314610e155760405162461bcd60e51b81526004016107d390611e75565b60005b8151811015610a61576001600a6000848481518110610e3957610e39611e95565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550610e9c828281518110610e8d57610e8d611e95565b602002602001015160016116df565b80610ea681611ec1565b915050610e18565b6000546001600160a01b03163314610ed85760405162461bcd60e51b81526004016107d390611e75565b436011556012805460ff19166001179055565b6000546001600160a01b03163314610f155760405162461bcd60e51b81526004016107d390611e75565b600e80546001600160a01b0319166001600160a01b03838116918217909255601454604051630787a21360e51b815260048101929092529091169063f0f442609060240161080a565b601454604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e90602401600060405180830381600087803b158015610fa357600080fd5b505af1158015610fb7573d6000803e3d6000fd5b50505050565b6000546001600160a01b03163314610fe75760405162461bcd60e51b81526004016107d390611e75565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6000546001600160a01b031633146110655760405162461bcd60e51b81526004016107d390611e75565b600d5460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015610a61573d6000803e3d6000fd5b6000546001600160a01b031633146110c95760405162461bcd60e51b81526004016107d390611e75565b610a6182826116df565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526006909152918220546111249184906111b9565b6001600160a01b03808616600090815260066020526040808220939093559085168152205461115390836117f0565b6001600160a01b0380851660008181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111a79086815260200190565b60405180910390a35060019392505050565b600081848411156111dd5760405162461bcd60e51b81526004016107d39190611c16565b5060006111ea8486611ef5565b95945050505050565b600080546001600160a01b0385811691161480159061122057506000546001600160a01b03848116911614155b156112775760125460ff166112775760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e000000000000000060448201526064016107d3565b6001600160a01b0384166000908152600a602052604090205460ff161580156112b957506001600160a01b0383166000908152600a602052604090205460ff16155b6112f05760405162461bcd60e51b81526020600482015260086024820152674e6963652074727960c01b60448201526064016107d3565b601254610100900460ff1615611372576000546001600160a01b0385811691161480159061132c57506000546001600160a01b03848116911614155b15611372576013548211156113725760405162461bcd60e51b815260206004820152600c60248201526b2a37b79036bab1b41039b4b960a11b60448201526064016107d3565b601154611380906001611f0c565b43116113c2576001600160a01b0383166000908152600a602090815260408083208054600160ff19918216811790925560099093529220805490911690911790555b601454600160a01b900460ff16156113e6576113df8484846110d3565b9050610945565b6010546000906001600160a01b038581169116148015611413575030600090815260066020526040812054115b905080156114235761142361184f565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0388166000908152600690915291909120546114759185906111b9565b6001600160a01b03861660009081526006602052604081209190915561149b8686611a06565b6114a557836114af565b6114af8685611a7b565b6001600160a01b0386166000908152600660205260409020549091506114d590826117f0565b6001600160a01b0380871660009081526006602052604090209190915560105487821691161480159061152157506001600160a01b03861660009081526009602052604090205460ff16155b15611597576014546001600160a01b0387811660008181526006602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561158457600080fd5b505af1925050508015611595575060015b505b6010546001600160a01b038681169116148015906115ce57506001600160a01b03851660009081526009602052604090205460ff16155b15611644576014546001600160a01b0386811660008181526006602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561163157600080fd5b505af1925050508015611642575060015b505b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161168991815260200190565b60405180910390a350600195945050505050565b600061094583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506111b9565b6001600160a01b038216301480159061170657506010546001600160a01b03838116911614155b61170f57600080fd5b6001600160a01b0382166000908152600960205260409020805460ff191682158015919091179091556117a757601454604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca96906044015b600060405180830381600087803b15801561178b57600080fd5b505af115801561179f573d6000803e3d6000fd5b505050505050565b6014546001600160a01b0383811660008181526006602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401611771565b6000806117fd8385611f0c565b9050838110156109455760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107d3565b6014805460ff60a01b1916600160a01b17905530600090815260066020526040812054604080516002808252606082019092529192506000919081602001602082028036833701905050905030816000815181106118af576118af611e95565b6001600160a01b03928316602091820292909201015260018054835192169183919081106118df576118df611e95565b6001600160a01b039283166020918202929092010152600f5460405163791ac94760e01b815291169063791ac94790611925908590600090869030904290600401611f24565b600060405180830381600087803b15801561193f57600080fd5b505af1158015611953573d6000803e3d6000fd5b50505050600061196d600247611b2790919063ffffffff16565b9050600061197c476002611b27565b600d546040519192506001600160a01b03169082156108fc029083906000818181858888f193505050501580156119b7573d6000803e3d6000fd5b50600e546040516001600160a01b039091169083156108fc029084906000818181858888f193505050501580156119f2573d6000803e3d6000fd5b50506014805460ff60a01b19169055505050565b6001600160a01b03821660009081526008602052604081205460ff1680611a4557506001600160a01b03821660009081526008602052604090205460ff165b15801561094557506010546001600160a01b03848116911614806109455750506010546001600160a01b03908116911614919050565b600080611a9f600c54611a99600b5486611b6990919063ffffffff16565b90611b27565b30600090815260066020526040902054909150611abc90826117f0565b30600081815260066020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b0d9085815260200190565b60405180910390a3611b1f838261169d565b949350505050565b600061094583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611be8565b600082611b78575060006107a3565b6000611b848385611f95565b905082611b918583611fb4565b146109455760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107d3565b60008183611c095760405162461bcd60e51b81526004016107d39190611c16565b5060006111ea8486611fb4565b600060208083528351808285015260005b81811015611c4357858101830151858201604001528201611c27565b81811115611c55576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610d6357600080fd5b803561088581611c6b565b60008060408385031215611c9e57600080fd5b8235611ca981611c6b565b946020939093013593505050565b600060208284031215611cc957600080fd5b813561094581611c6b565b600060208284031215611ce657600080fd5b5035919050565b600080600060608486031215611d0257600080fd5b8335611d0d81611c6b565b92506020840135611d1d81611c6b565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215611d5757600080fd5b823567ffffffffffffffff80821115611d6f57600080fd5b818501915085601f830112611d8357600080fd5b813581811115611d9557611d95611d2e565b8060051b604051601f19603f83011681018181108582111715611dba57611dba611d2e565b604052918252848201925083810185019188831115611dd857600080fd5b938501935b82851015611dfd57611dee85611c80565b84529385019392850192611ddd565b98975050505050505050565b60008060408385031215611e1c57600080fd5b8235611e2781611c6b565b915060208301358015158114611e3c57600080fd5b809150509250929050565b60008060408385031215611e5a57600080fd5b8235611e6581611c6b565b91506020830135611e3c81611c6b565b60208082526006908201526510a7bbb732b960d11b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415611ed557611ed5611eab565b5060010190565b600060208284031215611eee57600080fd5b5051919050565b600082821015611f0757611f07611eab565b500390565b60008219821115611f1f57611f1f611eab565b500190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611f745784516001600160a01b031683529383019391830191600101611f4f565b50506001600160a01b03969096166060850152505050608001529392505050565b6000816000190483118215151615611faf57611faf611eab565b500290565b600082611fd157634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220c76048a07f0b8085d5ea778968da1fa1105bfacf685decd6d33852a8b75be95264736f6c6343000809003360806040526ec097ce7bc90715b34b9f1000000000600a5534801561002357600080fd5b50604051610d04380380610d048339810160408190526100429161009a565b600080546001600160a01b03199081163317909155600180546001600160a01b03948516908316179055600280549290931691161790556100cd565b80516001600160a01b038116811461009557600080fd5b919050565b600080604083850312156100ad57600080fd5b6100b68361007e565b91506100c46020840161007e565b90509250929050565b610c28806100dc6000396000f3fe6080604052600436106100e85760003560e01c8063b2bdfa7b1161008a578063e2d2e21911610059578063e2d2e2191461027b578063e319a3d914610291578063ecd0c0c3146102b1578063f0f44260146102d157600080fd5b8063b2bdfa7b146101ce578063ce7c2ac214610206578063d0e30db01461025d578063d54ad2a11461026557600080fd5b80633a98ef39116100c65780633a98ef391461014f5780635cc33f74146101785780638ecc37fb14610198578063997664d7146101b857600080fd5b80631014edf5146100ed57806314b6ca961461010f57806315f7e05e1461012f575b600080fd5b3480156100f957600080fd5b5061010d610108366004610a7a565b6102f1565b005b34801561011b57600080fd5b5061010d61012a366004610aa6565b610351565b34801561013b57600080fd5b5061010d61014a366004610ad0565b6104c9565b34801561015b57600080fd5b5061016560065481565b6040519081526020015b60405180910390f35b34801561018457600080fd5b50610165610193366004610ad0565b6104ec565b3480156101a457600080fd5b506101656101b3366004610ad0565b610575565b3480156101c457600080fd5b5061016560075481565b3480156101da57600080fd5b506001546101ee906001600160a01b031681565b6040516001600160a01b03909116815260200161016f565b34801561021257600080fd5b50610242610221366004610ad0565b60056020526000908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161016f565b61010d6105fe565b34801561027157600080fd5b5061016560085481565b34801561028757600080fd5b5061016560095481565b34801561029d57600080fd5b506002546101ee906001600160a01b031681565b3480156102bd57600080fd5b506000546101ee906001600160a01b031681565b3480156102dd57600080fd5b5061010d6102ec366004610ad0565b61063d565b6001546001600160a01b0316331461030857600080fd5b476001600160a01b0382166108fc846103215782610323565b845b6040518115909202916000818181858888f1935050505015801561034b573d6000803e3d6000fd5b50505050565b6000546001600160a01b0316331461036857600080fd5b6001600160a01b0382166000908152600560205260409020541561038f5761038f82610676565b6000811180156103b557506001600160a01b038216600090815260056020526040902054155b1561041b57600380546001600160a01b0384166000818152600460205260408120839055600183018455929092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b031916909117905561044e565b8015801561044057506001600160a01b03821660009081526005602052604090205415155b1561044e5761044e82610759565b6001600160a01b03821660009081526005602052604090205460065461047f9183916104799161086e565b906108b9565b6006556001600160a01b03821660009081526005602052604090208190556104a681610918565b6001600160a01b0390921660009081526005602052604090206001019190915550565b6000546001600160a01b031633146104e057600080fd5b6104e981610676565b50565b6001600160a01b0381166000908152600560205260408120546105565760405162461bcd60e51b815260206004820152601c60248201527f596f75277265206e6f74206120424d207368617265686f6c646572210000000060448201526064015b60405180910390fd5b506001600160a01b031660009081526005602052604090206002015490565b6001600160a01b03811660009081526005602052604081205461059a57506000919050565b6001600160a01b0382166000908152600560205260408120546105bc90610918565b6001600160a01b0384166000908152600560205260409020600101549091508082116105ec575060009392505050565b6105f6828261086e565b949350505050565b600754349061060d90826108b9565b600755600654600a546106379161062e916106289085610935565b906109b4565b600954906108b9565b60095550565b6000546001600160a01b0316331461065457600080fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152600560205260409020546106965750565b60006106a182610575565b90508015610755576008546106b690826108b9565b6008556001600160a01b0382166000908152600560205260409020600201546106df90826108b9565b6001600160a01b038316600090815260056020526040902060028101919091555461070990610918565b6001600160a01b038316600081815260056020526040808220600101939093559151909183156108fc02918491818181858888f19350505050158015610753573d6000803e3d6000fd5b505b5050565b6003805461076990600190610b01565b8154811061077957610779610b18565b60009182526020808320909101546001600160a01b03848116845260049092526040909220546003805492909316929181106107b7576107b7610b18565b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905591831681526004918290526040812054600380549193929161080390600190610b01565b8154811061081357610813610b18565b60009182526020808320909101546001600160a01b03168352820192909252604001902055600380548061084957610849610b2e565b600082815260209020810160001990810180546001600160a01b031916905501905550565b60006108b083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506109f6565b90505b92915050565b6000806108c68385610b44565b9050838110156108b05760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161054d565b60006108b3600a546106286009548561093590919063ffffffff16565b600082610944575060006108b3565b60006109508385610b5c565b90508261095d8583610b7b565b146108b05760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161054d565b60006108b083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610a30565b60008184841115610a1a5760405162461bcd60e51b815260040161054d9190610b9d565b506000610a278486610b01565b95945050505050565b60008183610a515760405162461bcd60e51b815260040161054d9190610b9d565b506000610a278486610b7b565b80356001600160a01b0381168114610a7557600080fd5b919050565b60008060408385031215610a8d57600080fd5b82359150610a9d60208401610a5e565b90509250929050565b60008060408385031215610ab957600080fd5b610ac283610a5e565b946020939093013593505050565b600060208284031215610ae257600080fd5b6108b082610a5e565b634e487b7160e01b600052601160045260246000fd5b600082821015610b1357610b13610aeb565b500390565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60008219821115610b5757610b57610aeb565b500190565b6000816000190483118215151615610b7657610b76610aeb565b500290565b600082610b9857634e487b7160e01b600052601260045260246000fd5b500490565b600060208083528351808285015260005b81811015610bca57858101830151858201604001528201610bae565b81811115610bdc576000604083870101525b50601f01601f191692909201604001939250505056fea26469706673582212205eb9c95e153cf7255ef577782d076a05553393a975e41bb317844867a52f3c1a64736f6c63430008090033
Deployed Bytecode
0x6080604052600436106102345760003560e01c80636b5caec41161012e578063bf56b371116100ab578063f0fc6bca1161006f578063f0fc6bca146106b2578063f2fde38b146106c7578063f4293890146106e7578063f708a64f146106fc578063f887ea401461071c57600080fd5b8063bf56b37114610601578063bfe1092814610617578063c9567bf914610637578063dd62ed3e1461064c578063f0f442601461069257600080fd5b80638ecc37fb116100f25780638ecc37fb1461058157806395d89b4114610240578063a8aa1b31146105a1578063a9059cbb146105c1578063b89402a0146105e157600080fd5b80636b5caec4146104d857806370a08231146104f8578063736a83a11461052e57806375f0a87414610543578063893d20e81461056357600080fd5b8063350fcdf9116101bc5780635d098b38116101805780635d098b381461042b57806361d027b31461044b578063658d4b7f1461048357806367ee5f09146104a357806369fe0e2d146104b857600080fd5b8063350fcdf9146103965780633e07ce5b146103b6578063416501c8146103cb578063571ac8b0146103eb5780635cc33f741461040b57600080fd5b806323b635851161020357806323b63585146102f657806323b872dd146103165780632b112e49146103365780632f54bf6e1461034b578063313ce5671461037a57600080fd5b806306fdde0314610240578063095ea7b31461028557806315f7e05e146102b557806318160ddd146102d757600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b50604080518082018252600d81526c42616279204d6f6e676f6f736560981b6020820152905161027c9190611c16565b60405180910390f35b34801561029157600080fd5b506102a56102a0366004611c8b565b61073c565b604051901515815260200161027c565b3480156102c157600080fd5b506102d56102d0366004611cb7565b6107a9565b005b3480156102e357600080fd5b506004545b60405190815260200161027c565b34801561030257600080fd5b506102a5610311366004611cd4565b61083f565b34801561032257600080fd5b506102a5610331366004611ced565b61088a565b34801561034257600080fd5b506102e861094c565b34801561035757600080fd5b506102a5610366366004611cb7565b6000546001600160a01b0391821691161490565b34801561038657600080fd5b506040516009815260200161027c565b3480156103a257600080fd5b506102d56103b1366004611d44565b61099e565b3480156103c257600080fd5b506102d5610a65565b3480156103d757600080fd5b506102a56103e6366004611cb7565b610a9c565b3480156103f757600080fd5b506102a5610406366004611cb7565b610ae6565b34801561041757600080fd5b506102e8610426366004611cb7565b610af4565b34801561043757600080fd5b506102d5610446366004611cb7565b610b73565b34801561045757600080fd5b50600e5461046b906001600160a01b031681565b6040516001600160a01b03909116815260200161027c565b34801561048f57600080fd5b506102d561049e366004611e09565b610bbf565b3480156104af57600080fd5b506102e8610c14565b3480156104c457600080fd5b506102d56104d3366004611cd4565b610c91565b3480156104e457600080fd5b506102d56104f3366004611cb7565b610d08565b34801561050457600080fd5b506102e8610513366004611cb7565b6001600160a01b031660009081526006602052604090205490565b34801561053a57600080fd5b506102e8610d66565b34801561054f57600080fd5b50600d5461046b906001600160a01b031681565b34801561056f57600080fd5b506000546001600160a01b031661046b565b34801561058d57600080fd5b506102e861059c366004611cb7565b610dab565b3480156105ad57600080fd5b5060105461046b906001600160a01b031681565b3480156105cd57600080fd5b506102a56105dc366004611c8b565b610dde565b3480156105ed57600080fd5b506102d56105fc366004611d44565b610deb565b34801561060d57600080fd5b506102e860115481565b34801561062357600080fd5b5060145461046b906001600160a01b031681565b34801561064357600080fd5b506102d5610eae565b34801561065857600080fd5b506102e8610667366004611e47565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b34801561069e57600080fd5b506102d56106ad366004611cb7565b610eeb565b3480156106be57600080fd5b506102d5610f5e565b3480156106d357600080fd5b506102d56106e2366004611cb7565b610fbd565b3480156106f357600080fd5b506102d561103b565b34801561070857600080fd5b506102d5610717366004611e09565b61109f565b34801561072857600080fd5b50600f5461046b906001600160a01b031681565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107979086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b031633146107dc5760405162461bcd60e51b81526004016107d390611e75565b60405180910390fd5b601454604051630afbf02f60e11b81526001600160a01b038381166004830152909116906315f7e05e906024015b600060405180830381600087803b15801561082457600080fd5b505af1158015610838573d6000803e3d6000fd5b5050505050565b600080546001600160a01b0316331461086a5760405162461bcd60e51b81526004016107d390611e75565b6002546108829030906001600160a01b0316846110d3565b90505b919050565b6001600160a01b038316600090815260076020908152604080832033845290915281205460001914610937576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526007825283812033825290915291909120546109129184906111b9565b6001600160a01b03851660009081526007602090815260408083203384529091529020555b6109428484846111f3565b90505b9392505050565b6003546001600160a01b0316600090815260066020526040812054610999906002546001600160a01b0316600090815260066020526040902054610993906004549061169d565b9061169d565b905090565b6000546001600160a01b031633146109c85760405162461bcd60e51b81526004016107d390611e75565b60005b8151811015610a61576000600a60008484815181106109ec576109ec611e95565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550610a4f828281518110610a4057610a40611e95565b602002602001015160006116df565b80610a5981611ec1565b9150506109cb565b5050565b6000546001600160a01b03163314610a8f5760405162461bcd60e51b81526004016107d390611e75565b6012805461ff0019169055565b600080546001600160a01b03163314610ac75760405162461bcd60e51b81526004016107d390611e75565b506001600160a01b03166000908152600a602052604090205460ff1690565b60006108828260001961073c565b601454604051631730cfdd60e21b81526001600160a01b0383811660048301526000921690635cc33f74906024015b60206040518083038186803b158015610b3b57600080fd5b505afa158015610b4f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108829190611edc565b6000546001600160a01b03163314610b9d5760405162461bcd60e51b81526004016107d390611e75565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610be95760405162461bcd60e51b81526004016107d390611e75565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6014546040805163997664d760e01b815290516000926001600160a01b03169163997664d7916004808301926020929190829003018186803b158015610c5957600080fd5b505afa158015610c6d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109999190611edc565b6000546001600160a01b03163314610cbb5760405162461bcd60e51b81526004016107d390611e75565b600e811115610d035760405162461bcd60e51b81526020600482015260146024820152734665652063616e2774206578636565642031342560601b60448201526064016107d3565b600b55565b6000546001600160a01b03163314610d325760405162461bcd60e51b81526004016107d390611e75565b6001600160a01b0381166000908152600a60205260409020805460ff19166001908117909155610d639082906116df565b50565b6014546040805163d54ad2a160e01b815290516000926001600160a01b03169163d54ad2a1916004808301926020929190829003018186803b158015610c5957600080fd5b601454604051638ecc37fb60e01b81526001600160a01b0383811660048301526000921690638ecc37fb90602401610b23565b60006109453384846111f3565b6000546001600160a01b03163314610e155760405162461bcd60e51b81526004016107d390611e75565b60005b8151811015610a61576001600a6000848481518110610e3957610e39611e95565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550610e9c828281518110610e8d57610e8d611e95565b602002602001015160016116df565b80610ea681611ec1565b915050610e18565b6000546001600160a01b03163314610ed85760405162461bcd60e51b81526004016107d390611e75565b436011556012805460ff19166001179055565b6000546001600160a01b03163314610f155760405162461bcd60e51b81526004016107d390611e75565b600e80546001600160a01b0319166001600160a01b03838116918217909255601454604051630787a21360e51b815260048101929092529091169063f0f442609060240161080a565b601454604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e90602401600060405180830381600087803b158015610fa357600080fd5b505af1158015610fb7573d6000803e3d6000fd5b50505050565b6000546001600160a01b03163314610fe75760405162461bcd60e51b81526004016107d390611e75565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6000546001600160a01b031633146110655760405162461bcd60e51b81526004016107d390611e75565b600d5460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015610a61573d6000803e3d6000fd5b6000546001600160a01b031633146110c95760405162461bcd60e51b81526004016107d390611e75565b610a6182826116df565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526006909152918220546111249184906111b9565b6001600160a01b03808616600090815260066020526040808220939093559085168152205461115390836117f0565b6001600160a01b0380851660008181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111a79086815260200190565b60405180910390a35060019392505050565b600081848411156111dd5760405162461bcd60e51b81526004016107d39190611c16565b5060006111ea8486611ef5565b95945050505050565b600080546001600160a01b0385811691161480159061122057506000546001600160a01b03848116911614155b156112775760125460ff166112775760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642e000000000000000060448201526064016107d3565b6001600160a01b0384166000908152600a602052604090205460ff161580156112b957506001600160a01b0383166000908152600a602052604090205460ff16155b6112f05760405162461bcd60e51b81526020600482015260086024820152674e6963652074727960c01b60448201526064016107d3565b601254610100900460ff1615611372576000546001600160a01b0385811691161480159061132c57506000546001600160a01b03848116911614155b15611372576013548211156113725760405162461bcd60e51b815260206004820152600c60248201526b2a37b79036bab1b41039b4b960a11b60448201526064016107d3565b601154611380906001611f0c565b43116113c2576001600160a01b0383166000908152600a602090815260408083208054600160ff19918216811790925560099093529220805490911690911790555b601454600160a01b900460ff16156113e6576113df8484846110d3565b9050610945565b6010546000906001600160a01b038581169116148015611413575030600090815260066020526040812054115b905080156114235761142361184f565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0388166000908152600690915291909120546114759185906111b9565b6001600160a01b03861660009081526006602052604081209190915561149b8686611a06565b6114a557836114af565b6114af8685611a7b565b6001600160a01b0386166000908152600660205260409020549091506114d590826117f0565b6001600160a01b0380871660009081526006602052604090209190915560105487821691161480159061152157506001600160a01b03861660009081526009602052604090205460ff16155b15611597576014546001600160a01b0387811660008181526006602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561158457600080fd5b505af1925050508015611595575060015b505b6010546001600160a01b038681169116148015906115ce57506001600160a01b03851660009081526009602052604090205460ff16155b15611644576014546001600160a01b0386811660008181526006602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561163157600080fd5b505af1925050508015611642575060015b505b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161168991815260200190565b60405180910390a350600195945050505050565b600061094583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506111b9565b6001600160a01b038216301480159061170657506010546001600160a01b03838116911614155b61170f57600080fd5b6001600160a01b0382166000908152600960205260409020805460ff191682158015919091179091556117a757601454604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca96906044015b600060405180830381600087803b15801561178b57600080fd5b505af115801561179f573d6000803e3d6000fd5b505050505050565b6014546001600160a01b0383811660008181526006602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401611771565b6000806117fd8385611f0c565b9050838110156109455760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107d3565b6014805460ff60a01b1916600160a01b17905530600090815260066020526040812054604080516002808252606082019092529192506000919081602001602082028036833701905050905030816000815181106118af576118af611e95565b6001600160a01b03928316602091820292909201015260018054835192169183919081106118df576118df611e95565b6001600160a01b039283166020918202929092010152600f5460405163791ac94760e01b815291169063791ac94790611925908590600090869030904290600401611f24565b600060405180830381600087803b15801561193f57600080fd5b505af1158015611953573d6000803e3d6000fd5b50505050600061196d600247611b2790919063ffffffff16565b9050600061197c476002611b27565b600d546040519192506001600160a01b03169082156108fc029083906000818181858888f193505050501580156119b7573d6000803e3d6000fd5b50600e546040516001600160a01b039091169083156108fc029084906000818181858888f193505050501580156119f2573d6000803e3d6000fd5b50506014805460ff60a01b19169055505050565b6001600160a01b03821660009081526008602052604081205460ff1680611a4557506001600160a01b03821660009081526008602052604090205460ff165b15801561094557506010546001600160a01b03848116911614806109455750506010546001600160a01b03908116911614919050565b600080611a9f600c54611a99600b5486611b6990919063ffffffff16565b90611b27565b30600090815260066020526040902054909150611abc90826117f0565b30600081815260066020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b0d9085815260200190565b60405180910390a3611b1f838261169d565b949350505050565b600061094583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611be8565b600082611b78575060006107a3565b6000611b848385611f95565b905082611b918583611fb4565b146109455760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107d3565b60008183611c095760405162461bcd60e51b81526004016107d39190611c16565b5060006111ea8486611fb4565b600060208083528351808285015260005b81811015611c4357858101830151858201604001528201611c27565b81811115611c55576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610d6357600080fd5b803561088581611c6b565b60008060408385031215611c9e57600080fd5b8235611ca981611c6b565b946020939093013593505050565b600060208284031215611cc957600080fd5b813561094581611c6b565b600060208284031215611ce657600080fd5b5035919050565b600080600060608486031215611d0257600080fd5b8335611d0d81611c6b565b92506020840135611d1d81611c6b565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215611d5757600080fd5b823567ffffffffffffffff80821115611d6f57600080fd5b818501915085601f830112611d8357600080fd5b813581811115611d9557611d95611d2e565b8060051b604051601f19603f83011681018181108582111715611dba57611dba611d2e565b604052918252848201925083810185019188831115611dd857600080fd5b938501935b82851015611dfd57611dee85611c80565b84529385019392850192611ddd565b98975050505050505050565b60008060408385031215611e1c57600080fd5b8235611e2781611c6b565b915060208301358015158114611e3c57600080fd5b809150509250929050565b60008060408385031215611e5a57600080fd5b8235611e6581611c6b565b91506020830135611e3c81611c6b565b60208082526006908201526510a7bbb732b960d11b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415611ed557611ed5611eab565b5060010190565b600060208284031215611eee57600080fd5b5051919050565b600082821015611f0757611f07611eab565b500390565b60008219821115611f1f57611f1f611eab565b500190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611f745784516001600160a01b031683529383019391830191600101611f4f565b50506001600160a01b03969096166060850152505050608001529392505050565b6000816000190483118215151615611faf57611faf611eab565b500290565b600082611fd157634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220c76048a07f0b8085d5ea778968da1fa1105bfacf685decd6d33852a8b75be95264736f6c63430008090033
Deployed Bytecode Sourcemap
9502:10440:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12215:80;;;;;;;;;;-1:-1:-1;12287:5:0;;;;;;;;;;;-1:-1:-1;;;12287:5:0;;;;12215:80;;;;12287:5;12215:80;:::i;:::-;;;;;;;;12637:216;;;;;;;;;;-1:-1:-1;12637:216:0;;;;;:::i;:::-;;:::i;:::-;;;1376:14:1;;1369:22;1351:41;;1339:2;1324:18;12637:216:0;1211:187:1;18553:110:0;;;;;;;;;;-1:-1:-1;18553:110:0;;;;;:::i;:::-;;:::i;:::-;;11945:88;;;;;;;;;;-1:-1:-1;12018:12:0;;11945:88;;;1801:25:1;;;1789:2;1774:18;11945:88:0;1655:177:1;18843:139:0;;;;;;;;;;-1:-1:-1;18843:139:0;;;;;:::i;:::-;;:::i;13155:370::-;;;;;;;;;;-1:-1:-1;13155:370:0;;;;;:::i;:::-;;:::i;18994:142::-;;;;;;;;;;;;;:::i;2885:103::-;;;;;;;;;;-1:-1:-1;2885:103:0;;;;;:::i;:::-;2940:4;2975:5;-1:-1:-1;;;;;2964:16:0;;;2975:5;;2964:16;;2885:103;12039:80;;;;;;;;;;-1:-1:-1;12039:80:0;;9901:1;2625:36:1;;2613:2;2598:18;12039:80:0;2483:184:1;17153:218:0;;;;;;;;;;-1:-1:-1;17153:218:0;;;;;:::i;:::-;;:::i;19859:80::-;;;;;;;;;;;;;:::i;17379:115::-;;;;;;;;;;-1:-1:-1;17379:115:0;;;;;:::i;:::-;;:::i;12861:122::-;;;;;;;;;;-1:-1:-1;12861:122:0;;;;;:::i;:::-;;:::i;19694:157::-;;;;;;;;;;-1:-1:-1;19694:157:0;;;;;:::i;:::-;;:::i;19144:135::-;;;;;;;;;;-1:-1:-1;19144:135:0;;;;;:::i;:::-;;:::i;10522:85::-;;;;;;;;;;-1:-1:-1;10522:85:0;;;;-1:-1:-1;;;;;10522:85:0;;;;;;-1:-1:-1;;;;;4110:32:1;;;4092:51;;4080:2;4065:18;10522:85:0;3930:219:1;17991:119:0;;;;;;;;;;-1:-1:-1;17991:119:0;;;;;:::i;:::-;;:::i;19447:115::-;;;;;;;;;;;;;:::i;18118:139::-;;;;;;;;;;-1:-1:-1;18118:139:0;;;;;:::i;:::-;;:::i;16774:141::-;;;;;;;;;;-1:-1:-1;16774:141:0;;;;;:::i;:::-;;:::i;12385:105::-;;;;;;;;;;-1:-1:-1;12385:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;12469:18:0;12451:7;12469:18;;;:9;:18;;;;;;;12385:105;19574:111;;;;;;;;;;;;;:::i;10423:92::-;;;;;;;;;;-1:-1:-1;10423:92:0;;;;-1:-1:-1;;;;;10423:92:0;;;12301:78;;;;;;;;;;-1:-1:-1;12353:7:0;12371:5;-1:-1:-1;;;;;12371:5:0;12301:78;;18675:156;;;;;;;;;;-1:-1:-1;18675:156:0;;;;;:::i;:::-;;:::i;10647:19::-;;;;;;;;;;-1:-1:-1;10647:19:0;;;;-1:-1:-1;;;;;10647:19:0;;;12991:156;;;;;;;;;;-1:-1:-1;12991:156:0;;;;;:::i;:::-;;:::i;16927:216::-;;;;;;;;;;-1:-1:-1;16927:216:0;;;;;:::i;:::-;;:::i;10675:25::-;;;;;;;;;;;;;;;;10843:38;;;;;;;;;;-1:-1:-1;10843:38:0;;;;-1:-1:-1;;;;;10843:38:0;;;16639:115;;;;;;;;;;;;;:::i;12496:133::-;;;;;;;;;;-1:-1:-1;12496:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;12598:19:0;;;12580:7;12598:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;12496:133;19287:152;;;;;;;;;;-1:-1:-1;19287:152:0;;;;;:::i;:::-;;:::i;18451:90::-;;;;;;;;;;;;;:::i;3113:136::-;;;;;;;;;;-1:-1:-1;3113:136:0;;;;;:::i;:::-;;:::i;18269:174::-;;;;;;;;;;;;;:::i;17851:132::-;;;;;;;;;;-1:-1:-1;17851:132:0;;;;;:::i;:::-;;:::i;10616:24::-;;;;;;;;;;-1:-1:-1;10616:24:0;;;;-1:-1:-1;;;;;10616:24:0;;;12637:216;12741:10;12712:4;12729:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;12729:32:0;;;;;;;;;;:41;;;12786:37;12712:4;;12729:32;;12786:37;;;;12764:6;1801:25:1;;1789:2;1774:18;;1655:177;12786:37:0;;;;;;;;-1:-1:-1;12841:4:0;12637:216;;;;;:::o;18553:110::-;2940:4;2975:5;-1:-1:-1;;;;;2975:5:0;2792:10;2964:16;2776:38;;;;-1:-1:-1;;;2776:38:0;;;;;;;:::i;:::-;;;;;;;;;18622:11:::1;::::0;:33:::1;::::0;-1:-1:-1;;;18622:33:0;;-1:-1:-1;;;;;4110:32:1;;;18622:33:0::1;::::0;::::1;4092:51:1::0;18622:11:0;;::::1;::::0;:25:::1;::::0;4065:18:1;;18622:33:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18553:110:::0;:::o;18843:139::-;18907:4;2975:5;;-1:-1:-1;;;;;2975:5:0;2792:10;2964:16;2776:38;;;;-1:-1:-1;;;2776:38:0;;;;;;;:::i;:::-;18961:4:::1;::::0;18931:43:::1;::::0;18954:4:::1;::::0;-1:-1:-1;;;;;18961:4:0::1;18967:6:::0;18931:14:::1;:43::i;:::-;18924:50;;2816:1;18843:139:::0;;;:::o;13155:370::-;-1:-1:-1;;;;;13275:19:0;;13255:4;13275:19;;;:11;:19;;;;;;;;13295:10;13275:31;;;;;;;;-1:-1:-1;;13275:52:0;13272:186;;13377:69;;;;;;;;;;;-1:-1:-1;;;13377:69:0;;;;;;;;-1:-1:-1;;;;;13377:19:0;;-1:-1:-1;13377:19:0;;;:11;:19;;;;;13397:10;13377:31;;;;;;;;;;:69;;13413:6;;13377:35;:69::i;:::-;-1:-1:-1;;;;;13343:19:0;;;;;;:11;:19;;;;;;;;13363:10;13343:31;;;;;;;:103;13272:186;13477:40;13491:6;13499:9;13510:6;13477:13;:40::i;:::-;13470:47;;13155:370;;;;;;:::o;18994:142::-;19122:4;;-1:-1:-1;;;;;19122:4:0;19047:7;12469:18;;;:9;:18;;;;;;19074:54;;19101:4;;-1:-1:-1;;;;;19101:4:0;12451:7;12469:18;;;:9;:18;;;;;;19074:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;19067:61;;18994:142;:::o;17153:218::-;2940:4;2975:5;-1:-1:-1;;;;;2975:5:0;2792:10;2964:16;2776:38;;;;-1:-1:-1;;;2776:38:0;;;;;;;:::i;:::-;17233:6:::1;17228:136;17249:5;:12;17245:1;:16;17228:136;;;17297:5;17279;:15;17285:5;17291:1;17285:8;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;17279:15:0::1;-1:-1:-1::0;;;;;17279:15:0::1;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;17313:37;17334:5;17340:1;17334:8;;;;;;;;:::i;:::-;;;;;;;17344:5;17313:20;:37::i;:::-;17263:3:::0;::::1;::::0;::::1;:::i;:::-;;;;17228:136;;;;17153:218:::0;:::o;19859:80::-;2940:4;2975:5;-1:-1:-1;;;;;2975:5:0;2792:10;2964:16;2776:38;;;;-1:-1:-1;;;2776:38:0;;;;;;;:::i;:::-;19915:8:::1;:16:::0;;-1:-1:-1;;19915:16:0::1;::::0;;19859:80::o;17379:115::-;17447:4;2975:5;;-1:-1:-1;;;;;2975:5:0;2792:10;2964:16;2776:38;;;;-1:-1:-1;;;2776:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;17471:15:0::1;;::::0;;;:5:::1;:15;::::0;;;;;::::1;;::::0;17379:115::o;12861:122::-;12916:4;12940:35;12948:7;-1:-1:-1;;12940:7:0;:35::i;19694:157::-;19797:11;;:46;;-1:-1:-1;;;19797:46:0;;-1:-1:-1;;;;;4110:32:1;;;19797:46:0;;;4092:51:1;19770:7:0;;19797:11;;:33;;4065:18:1;;19797:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;19144:135::-;2940:4;2975:5;-1:-1:-1;;;;;2975:5:0;2792:10;2964:16;2776:38;;;;-1:-1:-1;;;2776:38:0;;;;;;;:::i;:::-;19228:15:::1;:43:::0;;-1:-1:-1;;;;;;19228:43:0::1;-1:-1:-1::0;;;;;19228:43:0;;;::::1;::::0;;;::::1;::::0;;19144:135::o;17991:119::-;2940:4;2975:5;-1:-1:-1;;;;;2975:5:0;2792:10;2964:16;2776:38;;;;-1:-1:-1;;;2776:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18074:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;18074:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17991:119::o;19447:115::-;19526:11;;:28;;;-1:-1:-1;;;19526:28:0;;;;19499:7;;-1:-1:-1;;;;;19526:11:0;;:26;;:28;;;;;;;;;;;;;;:11;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;18118:139::-;2940:4;2975:5;-1:-1:-1;;;;;2975:5:0;2792:10;2964:16;2776:38;;;;-1:-1:-1;;;2776:38:0;;;;;;;:::i;:::-;18196:2:::1;18188:4;:10;;18179:44;;;::::0;-1:-1:-1;;;18179:44:0;;7026:2:1;18179:44:0::1;::::0;::::1;7008:21:1::0;7065:2;7045:18;;;7038:30;-1:-1:-1;;;7084:18:1;;;7077:50;7144:18;;18179:44:0::1;6824:344:1::0;18179:44:0::1;18234:8;:15:::0;18118:139::o;16774:141::-;2940:4;2975:5;-1:-1:-1;;;;;2975:5:0;2792:10;2964:16;2776:38;;;;-1:-1:-1;;;2776:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16838:15:0;::::1;;::::0;;;:5:::1;:15;::::0;;;;:22;;-1:-1:-1;;16838:22:0::1;16856:4;16838:22:::0;;::::1;::::0;;;16871:36:::1;::::0;16844:8;;16871:20:::1;:36::i;:::-;16774:141:::0;:::o;19574:111::-;19651:11;;:26;;;-1:-1:-1;;;19651:26:0;;;;19624:7;;-1:-1:-1;;;;;19651:11:0;;:24;;:26;;;;;;;;;;;;;;:11;:26;;;;;;;;;;18675:156;18776:11;;:47;;-1:-1:-1;;;18776:47:0;;-1:-1:-1;;;;;4110:32:1;;;18776:47:0;;;4092:51:1;18749:7:0;;18776:11;;:34;;4065:18:1;;18776:47:0;3930:219:1;12991:156:0;13071:4;13095:44;13109:10;13121:9;13132:6;13095:13;:44::i;16927:216::-;2940:4;2975:5;-1:-1:-1;;;;;2975:5:0;2792:10;2964:16;2776:38;;;;-1:-1:-1;;;2776:38:0;;;;;;;:::i;:::-;17007:6:::1;17002:134;17023:5;:12;17019:1;:16;17002:134;;;17071:4;17053:5;:15;17059:5;17065:1;17059:8;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;17053:15:0::1;-1:-1:-1::0;;;;;17053:15:0::1;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;17086:36;17107:5;17113:1;17107:8;;;;;;;;:::i;:::-;;;;;;;17117:4;17086:20;:36::i;:::-;17037:3:::0;::::1;::::0;::::1;:::i;:::-;;;;17002:134;;16639:115:::0;2940:4;2975:5;-1:-1:-1;;;;;2975:5:0;2792:10;2964:16;2776:38;;;;-1:-1:-1;;;2776:38:0;;;;;;;:::i;:::-;16705:12:::1;16692:10;:25:::0;16728:11:::1;:18:::0;;-1:-1:-1;;16728:18:0::1;16742:4;16728:18;::::0;;16639:115::o;19287:152::-;2940:4;2975:5;-1:-1:-1;;;;;2975:5:0;2792:10;2964:16;2776:38;;;;-1:-1:-1;;;2776:38:0;;;;;;;:::i;:::-;19357:8:::1;:29:::0;;-1:-1:-1;;;;;;19357:29:0::1;-1:-1:-1::0;;;;;19357:29:0;;::::1;::::0;;::::1;::::0;;;19397:11:::1;::::0;:34:::1;::::0;-1:-1:-1;;;19397:34:0;;::::1;::::0;::::1;4092:51:1::0;;;;19397:11:0;;::::1;::::0;:23:::1;::::0;4065:18:1;;19397:34:0::1;3930:219:1::0;18451:90:0;18496:11;;:37;;-1:-1:-1;;;18496:37:0;;18522:10;18496:37;;;4092:51:1;-1:-1:-1;;;;;18496:11:0;;;;:25;;4065:18:1;;18496:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18451:90::o;3113:136::-;2940:4;2975:5;-1:-1:-1;;;;;2975:5:0;2792:10;2964:16;2776:38;;;;-1:-1:-1;;;2776:38:0;;;;;;;:::i;:::-;3189:5:::1;:11:::0;;-1:-1:-1;;;;;;3189:11:0::1;-1:-1:-1::0;;;;;3189:11:0;::::1;::::0;;::::1;::::0;;;3216:25:::1;::::0;4092:51:1;;;3216:25:0::1;::::0;4080:2:1;4065:18;3216:25:0::1;;;;;;;3113:136:::0;:::o;18269:174::-;2940:4;2975:5;-1:-1:-1;;;;;2975:5:0;2792:10;2964:16;2776:38;;;;-1:-1:-1;;;2776:38:0;;;;;;;:::i;:::-;18390:15:::1;::::0;18382:53:::1;::::0;18350:21:::1;::::0;-1:-1:-1;;;;;18390:15:0::1;::::0;18382:53;::::1;;;::::0;18350:21;;18321:26:::1;18382:53:::0;18321:26;18382:53;18350:21;18390:15;18382:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;17851:132:::0;2940:4;2975:5;-1:-1:-1;;;;;2975:5:0;2792:10;2964:16;2776:38;;;;-1:-1:-1;;;2776:38:0;;;;;;;:::i;:::-;17939:36:::1;17960:6;17968;17939:20;:36::i;15002:330::-:0;15132:53;;;;;;;;;;;-1:-1:-1;;;15132:53:0;;;;;;;;-1:-1:-1;;;;;15132:17:0;;15095:4;15132:17;;;:9;:17;;;;;;;:53;;15154:6;;15132:21;:53::i;:::-;-1:-1:-1;;;;;15112:17:0;;;;;;;:9;:17;;;;;;:73;;;;15219:20;;;;;;;:32;;15244:6;15219:24;:32::i;:::-;-1:-1:-1;;;;;15196:20:0;;;;;;;:9;:20;;;;;;;:55;;;;15267:35;;;;;;;;;;15295:6;1801:25:1;;1789:2;1774:18;;1655:177;15267:35:0;;;;;;;;-1:-1:-1;15320:4:0;15002:330;;;;;:::o;547:192::-;633:7;669:12;661:6;;;;653:29;;;;-1:-1:-1;;;653:29:0;;;;;;;;:::i;:::-;-1:-1:-1;693:9:0;705:5;709:1;705;:5;:::i;:::-;693:17;547:192;-1:-1:-1;;;;;547:192:0:o;13533:1457::-;13625:4;13655:5;;-1:-1:-1;;;;;13646:14:0;;;13655:5;;13646:14;;;;:35;;-1:-1:-1;13676:5:0;;-1:-1:-1;;;;;13664:17:0;;;13676:5;;13664:17;;13646:35;13642:89;;;13691:11;;;;13683:48;;;;-1:-1:-1;;;13683:48:0;;7721:2:1;13683:48:0;;;7703:21:1;7760:2;7740:18;;;7733:30;7799:26;7779:18;;;7772:54;7843:18;;13683:48:0;7519:348:1;13683:48:0;-1:-1:-1;;;;;13792:13:0;;;;;;:5;:13;;;;;;;;13791:14;:35;;;;-1:-1:-1;;;;;;13810:16:0;;;;;;:5;:16;;;;;;;;13809:17;13791:35;13782:57;;;;-1:-1:-1;;;13782:57:0;;8074:2:1;13782:57:0;;;8056:21:1;8113:1;8093:18;;;8086:29;-1:-1:-1;;;8131:18:1;;;8124:38;8179:18;;13782:57:0;7872:331:1;13782:57:0;13854:8;;;;;;;13850:130;;;13892:5;;-1:-1:-1;;;;;13884:13:0;;;13892:5;;13884:13;;;;:34;;-1:-1:-1;13913:5:0;;-1:-1:-1;;;;;13901:17:0;;;13913:5;;13901:17;;13884:34;13880:80;;;13937:6;;13929;:14;;13920:40;;;;-1:-1:-1;;;13920:40:0;;8410:2:1;13920:40:0;;;8392:21:1;8449:2;8429:18;;;8422:30;-1:-1:-1;;;8468:18:1;;;8461:42;8520:18;;13920:40:0;8208:336:1;13920:40:0;14011:10;;:14;;14024:1;14011:14;:::i;:::-;13994:12;:32;13990:139;;-1:-1:-1;;;;;14044:16:0;;;;;;:5;:16;;;;;;;;:23;;14063:4;-1:-1:-1;;14044:23:0;;;;;;;;14082:16;:27;;;;;:34;;;;;;;;;;13990:139;14151:6;;-1:-1:-1;;;14151:6:0;;;;14148:63;;;14167:41;14182:6;14190:9;14201:6;14167:14;:41::i;:::-;14160:48;;;;14148:63;14282:4;;14233:19;;-1:-1:-1;;;;;14271:15:0;;;14282:4;;14271:15;:47;;;;-1:-1:-1;14308:4:0;14317:1;12469:18;;;:9;:18;;;;;;14290:28;14271:47;14233:86;;14333:14;14330:33;;;14350:10;:8;:10::i;:::-;14395:53;;;;;;;;;;;-1:-1:-1;;;14395:53:0;;;;;;;;-1:-1:-1;;;;;14395:17:0;;-1:-1:-1;14395:17:0;;;:9;:17;;;;;;;;:53;;14417:6;;14395:21;:53::i;:::-;-1:-1:-1;;;;;14375:17:0;;;;;;:9;:17;;;;;:73;;;;14486:32;14385:6;14508:9;14486:13;:32::i;:::-;:67;;14547:6;14486:67;;;14521:23;14529:6;14537;14521:7;:23::i;:::-;-1:-1:-1;;;;;14597:20:0;;;;;;:9;:20;;;;;;14461:92;;-1:-1:-1;14597:40:0;;14461:92;14597:24;:40::i;:::-;-1:-1:-1;;;;;14574:20:0;;;;;;;:9;:20;;;;;:63;;;;14663:4;;14653:14;;;14663:4;;14653:14;;;;:43;;-1:-1:-1;;;;;;14672:24:0;;;;;;:16;:24;;;;;;;;14671:25;14653:43;14650:114;;;14703:11;;-1:-1:-1;;;;;14732:17:0;;;14703:11;14732:17;;;:9;:17;;;;;;;;14703:47;;-1:-1:-1;;;14703:47:0;;;;;8856:51:1;;;;8923:18;;;8916:34;14703:11:0;;;:20;;8829:18:1;;14703:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14699:63;;14790:4;;-1:-1:-1;;;;;14777:17:0;;;14790:4;;14777:17;;;;:49;;-1:-1:-1;;;;;;14799:27:0;;;;;;:16;:27;;;;;;;;14798:28;14777:49;14774:126;;;14833:11;;-1:-1:-1;;;;;14865:20:0;;;14833:11;14865:20;;;:9;:20;;;;;;;;14833:53;;-1:-1:-1;;;14833:53:0;;;;;8856:51:1;;;;8923:18;;;8916:34;14833:11:0;;;:20;;8829:18:1;;14833:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14829:69;;14934:9;-1:-1:-1;;;;;14917:43:0;14926:6;-1:-1:-1;;;;;14917:43:0;;14945:14;14917:43;;;;1801:25:1;;1789:2;1774:18;;1655:177;14917:43:0;;;;;;;;-1:-1:-1;14978:4:0;;13533:1457;-1:-1:-1;;;;;13533:1457:0:o;405:136::-;463:7;490:43;494:1;497;490:43;;;;;;;;;;;;;;;;;:3;:43::i;17506:337::-;-1:-1:-1;;;;;17593:23:0;;17611:4;17593:23;;;;:41;;-1:-1:-1;17630:4:0;;-1:-1:-1;;;;;17620:14:0;;;17630:4;;17620:14;;17593:41;17585:50;;;;;;-1:-1:-1;;;;;17646:24:0;;;;;;:16;:24;;;;;:33;;-1:-1:-1;;17646:33:0;;;;;;;;;;;;17690:146;;17715:11;;:31;;-1:-1:-1;;;17715:31:0;;-1:-1:-1;;;;;8874:32:1;;;17715:31:0;;;8856:51:1;17715:11:0;8923:18:1;;;8916:34;17715:11:0;;;;:20;;8829:18:1;;17715:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17228:136:::1;17153:218:::0;:::o;17690:146::-;17777:11;;-1:-1:-1;;;;;17806:17:0;;;17777:11;17806:17;;;:9;:17;;;;;;;;17777:47;;-1:-1:-1;;;17777:47:0;;;;;8856:51:1;;;;8923:18;;;8916:34;17777:11:0;;;:20;;8829:18:1;;17777:47:0;8682:274:1;218:181:0;276:7;;308:5;312:1;308;:5;:::i;:::-;296:17;;337:1;332;:6;;324:46;;;;-1:-1:-1;;;324:46:0;;9450:2:1;324:46:0;;;9432:21:1;9489:2;9469:18;;;9462:30;9528:29;9508:18;;;9501:57;9575:18;;324:46:0;9248:351:1;15924:701:0;10956:6;:13;;-1:-1:-1;;;;10956:13:0;-1:-1:-1;;;10956:13:0;;;16014:4:::1;-1:-1:-1::0;12469:18:0;;;:9;:18;;;;;;16057:16:::1;::::0;;16071:1:::1;16057:16:::0;;;;;::::1;::::0;;;15973:47;;-1:-1:-1;16033:21:0::1;::::0;16057:16;::::1;;;;;;;;;;;::::0;-1:-1:-1;16057:16:0::1;16033:40;;16102:4;16084;16089:1;16084:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16084:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;16128:4:::1;::::0;;16118:7;;16128:4;::::1;::::0;16118;;16128;16118:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;16118:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;16155:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;16155:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;16227:12;;16155:6:::1;::::0;16270:4;;16297::::1;::::0;16317:15:::1;::::0;16155:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16364:22;16389:30;16417:1;16390:21;16389:27;;:30;;;;:::i;:::-;16364:55:::0;-1:-1:-1;16430:23:0::1;16456:30;16457:21;16484:1;16456:27;:30::i;:::-;16522:15;::::0;16514:50:::1;::::0;16430:56;;-1:-1:-1;;;;;;16522:15:0::1;::::0;16514:50;::::1;;;::::0;16430:56;;16522:15:::1;16514:50:::0;16522:15;16514:50;16430:56;16522:15;16514:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;16583:8:0::1;::::0;16575:42:::1;::::0;-1:-1:-1;;;;;16583:8:0;;::::1;::::0;16575:42;::::1;;;::::0;16602:14;;16583:8:::1;16575:42:::0;16583:8;16575:42;16602:14;16583:8;16575:42;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;10974:6:0;:14;;-1:-1:-1;;;;10974:14:0;;;-1:-1:-1;;;15924:701:0:o;15343:206::-;-1:-1:-1;;;;;15452:19:0;;15424:4;15452:19;;;:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;15475:22:0;;;;;;:11;:22;;;;;;;;15452:45;15450:48;:90;;;;-1:-1:-1;15514:4:0;;-1:-1:-1;;;;;15504:14:0;;;15514:4;;15504:14;;:35;;-1:-1:-1;;15535:4:0;;-1:-1:-1;;;;;15535:4:0;;;15522:17;;;;15343:206;-1:-1:-1;15343:206:0:o;15557:354::-;15624:7;15644:17;15684:40;15709:14;;15684:20;15695:8;;15684:6;:10;;:20;;;;:::i;:::-;:24;;:40::i;:::-;15780:4;15762:24;;;;:9;:24;;;;;;15672:52;;-1:-1:-1;15762:39:0;;15672:52;15762:28;:39::i;:::-;15753:4;15735:24;;;;:9;:24;;;;;;;:66;;;;15817:42;;-1:-1:-1;;;;;15817:42:0;;;;;;;15849:9;1801:25:1;;1789:2;1774:18;;1655:177;15817:42:0;;;;;;;;15882:21;:6;15893:9;15882:10;:21::i;:::-;15875:28;15557:354;-1:-1:-1;;;;15557:354:0:o;1001:132::-;1059:7;1086:39;1090:1;1093;1086:39;;;;;;;;;;;;;;;;;:3;:39::i;745:250::-;803:7;827:6;823:47;;-1:-1:-1;857:1:0;850:8;;823:47;882:9;894:5;898:1;894;:5;:::i;:::-;882:17;-1:-1:-1;927:1:0;918:5;922:1;882:17;918:5;:::i;:::-;:10;910:56;;;;-1:-1:-1;;;910:56:0;;11186:2:1;910:56:0;;;11168:21:1;11225:2;11205:18;;;11198:30;11264:34;11244:18;;;11237:62;-1:-1:-1;;;11315:18:1;;;11308:31;11356:19;;910:56:0;10984:397:1;1139:345:0;1225:7;1327:12;1320:5;1312:28;;;;-1:-1:-1;;;1312:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1351:9:0;1363:5;1367:1;1363;:5;:::i;14:597: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;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:134;820:20;;849:31;820:20;849:31;:::i;891:315::-;959:6;967;1020:2;1008:9;999:7;995:23;991:32;988:52;;;1036:1;1033;1026:12;988:52;1075:9;1062:23;1094:31;1119:5;1094:31;:::i;:::-;1144:5;1196:2;1181:18;;;;1168:32;;-1:-1:-1;;;891:315:1:o;1403:247::-;1462:6;1515:2;1503:9;1494:7;1490:23;1486:32;1483:52;;;1531:1;1528;1521:12;1483:52;1570:9;1557:23;1589:31;1614:5;1589:31;:::i;1837:180::-;1896:6;1949:2;1937:9;1928:7;1924:23;1920:32;1917:52;;;1965:1;1962;1955:12;1917:52;-1:-1:-1;1988:23:1;;1837:180;-1:-1:-1;1837:180:1:o;2022:456::-;2099:6;2107;2115;2168:2;2156:9;2147:7;2143:23;2139:32;2136:52;;;2184:1;2181;2174:12;2136:52;2223:9;2210:23;2242:31;2267:5;2242:31;:::i;:::-;2292:5;-1:-1:-1;2349:2:1;2334:18;;2321:32;2362:33;2321:32;2362:33;:::i;:::-;2022:456;;2414:7;;-1:-1:-1;;;2468:2:1;2453:18;;;;2440:32;;2022:456::o;2672:127::-;2733:10;2728:3;2724:20;2721:1;2714:31;2764:4;2761:1;2754:15;2788:4;2785:1;2778:15;2804:1121;2888:6;2919:2;2962;2950:9;2941:7;2937:23;2933:32;2930:52;;;2978:1;2975;2968:12;2930:52;3018:9;3005:23;3047:18;3088:2;3080:6;3077:14;3074:34;;;3104:1;3101;3094:12;3074:34;3142:6;3131:9;3127:22;3117:32;;3187:7;3180:4;3176:2;3172:13;3168:27;3158:55;;3209:1;3206;3199:12;3158:55;3245:2;3232:16;3267:2;3263;3260:10;3257:36;;;3273:18;;:::i;:::-;3319:2;3316:1;3312:10;3351:2;3345:9;3414:2;3410:7;3405:2;3401;3397:11;3393:25;3385:6;3381:38;3469:6;3457:10;3454:22;3449:2;3437:10;3434:18;3431:46;3428:72;;;3480:18;;:::i;:::-;3516:2;3509:22;3566:18;;;3600:15;;;;-1:-1:-1;3642:11:1;;;3638:20;;;3670:19;;;3667:39;;;3702:1;3699;3692:12;3667:39;3726:11;;;;3746:148;3762:6;3757:3;3754:15;3746:148;;;3828:23;3847:3;3828:23;:::i;:::-;3816:36;;3779:12;;;;3872;;;;3746:148;;;3913:6;2804:1121;-1:-1:-1;;;;;;;;2804:1121:1:o;4154:416::-;4219:6;4227;4280:2;4268:9;4259:7;4255:23;4251:32;4248:52;;;4296:1;4293;4286:12;4248:52;4335:9;4322:23;4354:31;4379:5;4354:31;:::i;:::-;4404:5;-1:-1:-1;4461:2:1;4446:18;;4433:32;4503:15;;4496:23;4484:36;;4474:64;;4534:1;4531;4524:12;4474:64;4557:7;4547:17;;;4154:416;;;;;:::o;5018:388::-;5086:6;5094;5147:2;5135:9;5126:7;5122:23;5118:32;5115:52;;;5163:1;5160;5153:12;5115:52;5202:9;5189:23;5221:31;5246:5;5221:31;:::i;:::-;5271:5;-1:-1:-1;5328:2:1;5313:18;;5300:32;5341:33;5300:32;5341:33;:::i;5897:329::-;6099:2;6081:21;;;6138:1;6118:18;;;6111:29;-1:-1:-1;;;6171:2:1;6156:18;;6149:36;6217:2;6202:18;;5897:329::o;6231:127::-;6292:10;6287:3;6283:20;6280:1;6273:31;6323:4;6320:1;6313:15;6347:4;6344:1;6337:15;6363:127;6424:10;6419:3;6415:20;6412:1;6405:31;6455:4;6452:1;6445:15;6479:4;6476:1;6469:15;6495:135;6534:3;-1:-1:-1;;6555:17:1;;6552:43;;;6575:18;;:::i;:::-;-1:-1:-1;6622:1:1;6611:13;;6495:135::o;6635:184::-;6705:6;6758:2;6746:9;6737:7;6733:23;6729:32;6726:52;;;6774:1;6771;6764:12;6726:52;-1:-1:-1;6797:16:1;;6635:184;-1:-1:-1;6635:184:1:o;7389:125::-;7429:4;7457:1;7454;7451:8;7448:34;;;7462:18;;:::i;:::-;-1:-1:-1;7499:9:1;;7389:125::o;8549:128::-;8589:3;8620:1;8616:6;8613:1;8610:13;8607:39;;;8626:18;;:::i;:::-;-1:-1:-1;8662:9:1;;8549:128::o;9604:980::-;9866:4;9914:3;9903:9;9899:19;9945:6;9934:9;9927:25;9971:2;10009:6;10004:2;9993:9;9989:18;9982:34;10052:3;10047:2;10036:9;10032:18;10025:31;10076:6;10111;10105:13;10142:6;10134;10127:22;10180:3;10169:9;10165:19;10158:26;;10219:2;10211:6;10207:15;10193:29;;10240:1;10250:195;10264:6;10261:1;10258:13;10250:195;;;10329:13;;-1:-1:-1;;;;;10325:39:1;10313:52;;10420:15;;;;10385:12;;;;10361:1;10279:9;10250:195;;;-1:-1:-1;;;;;;;10501:32:1;;;;10496:2;10481:18;;10474:60;-1:-1:-1;;;10565:3:1;10550:19;10543:35;10462:3;9604:980;-1:-1:-1;;;9604:980:1:o;10589:168::-;10629:7;10695:1;10691;10687:6;10683:14;10680:1;10677:21;10672:1;10665:9;10658:17;10654:45;10651:71;;;10702:18;;:::i;:::-;-1:-1:-1;10742:9:1;;10589:168::o;10762:217::-;10802:1;10828;10818:132;;10872:10;10867:3;10863:20;10860:1;10853:31;10907:4;10904:1;10897:15;10935:4;10932:1;10925:15;10818:132;-1:-1:-1;10964:9:1;;10762:217::o
Swarm Source
ipfs://5eb9c95e153cf7255ef577782d076a05553393a975e41bb317844867a52f3c1a
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.