More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 89 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer | 21273665 | 84 days ago | IN | 0 ETH | 0.00132753 | ||||
Transfer | 21273100 | 84 days ago | IN | 0 ETH | 0.00152639 | ||||
Transfer | 21273002 | 84 days ago | IN | 0 ETH | 0.00218485 | ||||
Transfer | 21272791 | 84 days ago | IN | 0 ETH | 0.00165991 | ||||
_claim Rewards | 21272723 | 84 days ago | IN | 0 ETH | 0.00060921 | ||||
Transfer | 21272616 | 84 days ago | IN | 0 ETH | 0.00210738 | ||||
Approve | 21272416 | 84 days ago | IN | 0 ETH | 0.00089539 | ||||
Process Rewards | 21272399 | 84 days ago | IN | 0 ETH | 0.00056633 | ||||
Process Rewards | 21272389 | 84 days ago | IN | 0 ETH | 0.00056619 | ||||
Process Rewards | 21272386 | 84 days ago | IN | 0 ETH | 0.00065468 | ||||
Transfer | 21272286 | 84 days ago | IN | 0 ETH | 0.00137769 | ||||
Transfer | 21271843 | 84 days ago | IN | 0 ETH | 0.00137138 | ||||
Transfer | 21271777 | 84 days ago | IN | 0 ETH | 0.00120657 | ||||
Transfer | 21271747 | 84 days ago | IN | 0 ETH | 0.00143545 | ||||
Transfer | 21271730 | 84 days ago | IN | 0 ETH | 0.00291219 | ||||
Transfer | 21271697 | 84 days ago | IN | 0 ETH | 0.00135149 | ||||
Transfer | 21271685 | 84 days ago | IN | 0 ETH | 0.0019573 | ||||
Transfer | 17359940 | 632 days ago | IN | 0 ETH | 0.00418107 | ||||
Process Rewards | 17359913 | 632 days ago | IN | 0 ETH | 0.00114109 | ||||
_claim Rewards | 17359901 | 632 days ago | IN | 0 ETH | 0.00069916 | ||||
Approve | 17187173 | 656 days ago | IN | 0 ETH | 0.00318943 | ||||
Approve | 17185676 | 656 days ago | IN | 0 ETH | 0.00269729 | ||||
Process Rewards | 17185673 | 656 days ago | IN | 0 ETH | 0.00234468 | ||||
Approve | 17185655 | 656 days ago | IN | 0 ETH | 0.00159893 | ||||
Process Rewards | 17185621 | 656 days ago | IN | 0 ETH | 0.0015726 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
17185673 | 656 days ago | 0.16265502 ETH | ||||
17185673 | 656 days ago | 0.05421834 ETH | ||||
17185673 | 656 days ago | 0.21741554 ETH | ||||
17184824 | 657 days ago | 0.16144794 ETH | ||||
17184824 | 657 days ago | 0.05381598 ETH | ||||
17184824 | 657 days ago | 0.21580208 ETH | ||||
17183738 | 657 days ago | 0.16012529 ETH | ||||
17183738 | 657 days ago | 0.05337509 ETH | ||||
17183738 | 657 days ago | 0.21403414 ETH | ||||
17183294 | 657 days ago | 0.00018961 ETH | ||||
17183294 | 657 days ago | 0.05688507 ETH | ||||
17183294 | 657 days ago | 0.01896169 ETH | ||||
17183294 | 657 days ago | 0.07603638 ETH | ||||
17182582 | 657 days ago | 0.00020361 ETH | ||||
17182582 | 657 days ago | 0.06108464 ETH | ||||
17182582 | 657 days ago | 0.02036154 ETH | ||||
17182582 | 657 days ago | 0.08164981 ETH | ||||
17182470 | 657 days ago | 0.00021278 ETH | ||||
17182470 | 657 days ago | 0.063836 ETH | ||||
17182470 | 657 days ago | 0.02127866 ETH | ||||
17182470 | 657 days ago | 0.08532746 ETH | ||||
17182421 | 657 days ago | 0.00021701 ETH | ||||
17182421 | 657 days ago | 0.06510499 ETH | ||||
17182421 | 657 days ago | 0.02170166 ETH | ||||
17182421 | 657 days ago | 0.08702367 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
YieldPepe
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-05-03 */ /* https://twitter.com/YieldPepe https://t.me/YieldPepe http://www.yieldpepe.com/ */ // SPDX-License-Identifier: MIT pragma solidity 0.8.17; library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IERC20 { function totalSupply() external view returns (uint256); function circulatingSupply() 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 ); } abstract contract Ownable { address internal owner; constructor(address _owner) { owner = _owner; } modifier onlyOwner() { require(isOwner(msg.sender), "!OWNER"); _; } function isOwner(address account) public view returns (bool) { return account == owner; } function renounceOwnership() public virtual onlyOwner { owner = address(0); emit OwnershipTransferred(address(0)); } function transferOwnership(address payable adr) public onlyOwner { owner = adr; emit OwnershipTransferred(adr); } event OwnershipTransferred(address owner); } interface IFactory { function createPair(address tokenA, address tokenB) external returns (address pair); function getPair(address tokenA, address tokenB) external view returns (address pair); } interface IRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract YieldPepe is IERC20, Ownable { using SafeMath for uint256; string private constant _name = "Yield Pepe"; string private constant _symbol = "YPEPE"; uint8 private constant _decimals = 9; uint256 private _totalSupply = 1000000000 * (10**_decimals); uint256 private _maxTxAmount = (_totalSupply * 200) / 10000; uint256 private _maxSellAmount = (_totalSupply * 200) / 10000; uint256 private _maxWalletToken = (_totalSupply * 200) / 10000; mapping(address => uint256) _balances; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) public isFeeExempt; mapping(address => bool) public isRewardExempt; mapping(address => bool) private isBot; IRouter router; address public pair; bool private tradingAllowed = false; uint256 private liquidityFee = 0; uint256 private marketingFee = 100; uint256 private rewardsFee = 300; uint256 private developmentFee = 0; uint256 private burnFee = 0; uint256 private totalFee = 400; uint256 private sellFee = 400; uint256 private transferFee = 0; uint256 private denominator = 10000; bool private swapEnabled = true; uint256 private swapTimes; bool private swapping; uint256 private swapThreshold = (_totalSupply * 300) / 100000; uint256 private _minTokenAmount = (_totalSupply * 10) / 100000; modifier lockTheSwap() { swapping = true; _; swapping = false; } address public reward = 0x6982508145454Ce325dDbE47a25d4ec3d2311933; //pepe uint256 public totalShares; uint256 public totalRewards; uint256 public totalDistributed; uint256 internal RewardsPerShare; uint256 internal rewardsPerShareAccuracyFactor = 10**36; address[] shareholders; mapping(address => uint256) shareholderIndexes; mapping(address => uint256) shareholderClaims; struct Share { uint256 amount; uint256 totalExcluded; uint256 totalRealised; } mapping(address => Share) public shares; uint256 internal currentIndex; uint256 public minPeriod = 0 minutes; uint256 public minDistribution = 1 * (10**16); uint256 public distributorGas = 1; function _claimRewards() external { distributeRewards(msg.sender); } address internal constant DEAD = 0x000000000000000000000000000000000000dEaD; address public constant development_receiver = 0xE2a0C9c84054851A1C8f3Ba448d0A7d495fA7E05; address public constant marketing_receiver = 0xE2a0C9c84054851A1C8f3Ba448d0A7d495fA7E05; constructor() Ownable(msg.sender) { IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); address _pair = IFactory(_router.factory()).createPair( address(this), _router.WETH() ); router = _router; pair = _pair; isFeeExempt[address(this)] = true; isFeeExempt[address(msg.sender)] = true; isFeeExempt[marketing_receiver] = true; isFeeExempt[msg.sender] = true; isRewardExempt[address(pair)] = true; isRewardExempt[address(msg.sender)] = true; isRewardExempt[address(this)] = true; isRewardExempt[address(DEAD)] = true; isRewardExempt[address(0)] = true; _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); } receive() external payable {} 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 startTrading() external onlyOwner { tradingAllowed = true; } function getOwner() external view override returns (address) { return owner; } function totalSupply() public view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function isCont(address addr) internal view returns (bool) { uint256 size; assembly { size := extcodesize(addr) } return size > 0; } function setisExempt(address _address, bool _enabled) external onlyOwner { isFeeExempt[_address] = _enabled; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(msg.sender, spender, amount); return true; } function circulatingSupply() public view override returns (uint256) { return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0))); } function preTxCheck( address sender, address recipient, uint256 amount ) internal view { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require( amount > uint256(0), "Transfer amount must be greater than zero" ); require( amount <= balanceOf(sender), "You are trying to transfer more than your balance" ); } function _transfer( address sender, address recipient, uint256 amount ) private { preTxCheck(sender, recipient, amount); checkTradingAllowed(sender, recipient); checkMaxWallet(sender, recipient, amount); swapbackCounters(sender, recipient); checkTxLimit(sender, recipient, amount); swapBack(sender, recipient); _balances[sender] = _balances[sender].sub(amount); uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount; _balances[recipient] = _balances[recipient].add(amountReceived); emit Transfer(sender, recipient, amountReceived); if (!isRewardExempt[sender]) { setShare(sender, balanceOf(sender)); } if (!isRewardExempt[recipient]) { setShare(recipient, balanceOf(recipient)); } if (shares[recipient].amount > 0) { distributeRewards(recipient); } } function setStructure( uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _rewards, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans ) external onlyOwner { liquidityFee = _liquidity; marketingFee = _marketing; burnFee = _burn; rewardsFee = _rewards; developmentFee = _development; totalFee = _total; sellFee = _sell; transferFee = _trans; require( totalFee <= denominator.div(5) && sellFee <= denominator.div(5) && transferFee <= denominator.div(5), "totalFee and sellFee cannot be more than 20%" ); } function setisBot(address _address, bool _enabled) external onlyOwner { require( _address != address(pair) && _address != address(router) && _address != address(this), "Ineligible Address" ); isBot[_address] = _enabled; } function setParameters( uint256 _buy, uint256 _trans, uint256 _wallet ) external onlyOwner { uint256 newTx = (totalSupply() * _buy) / 10000; uint256 newTransfer = (totalSupply() * _trans) / 10000; uint256 newWallet = (totalSupply() * _wallet) / 10000; _maxTxAmount = newTx; _maxSellAmount = newTransfer; _maxWalletToken = newWallet; uint256 limit = totalSupply().mul(5).div(1000); require( newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet cannot be less than .5%" ); } function checkTradingAllowed(address sender, address recipient) internal view { if (!isFeeExempt[sender] && !isFeeExempt[recipient]) { require(tradingAllowed, "tradingAllowed"); } } function checkMaxWallet( address sender, address recipient, uint256 amount ) internal view { if ( !isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD) ) { require( (_balances[recipient].add(amount)) <= _maxWalletToken, "Exceeds maximum wallet amount." ); } } function swapbackCounters(address sender, address recipient) internal { if (recipient == pair && !isFeeExempt[sender]) { swapTimes += uint256(1); } } function checkTxLimit( address sender, address recipient, uint256 amount ) internal view { if (sender != pair) { require( amount <= _maxSellAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded" ); } require( amount <= _maxTxAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded" ); } function swapAndLiquify(uint256 tokens) private lockTheSwap { uint256 _denominator = ( liquidityFee.add(1).add(marketingFee).add(developmentFee).add( rewardsFee ) ).mul(2); uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div( _denominator ); uint256 toSwap = tokens.sub(tokensToAddLiquidityWith); uint256 initialBalance = address(this).balance; swapTokensForETH(toSwap); uint256 deltaBalance = address(this).balance.sub(initialBalance); uint256 unitBalance = deltaBalance.div(_denominator.sub(liquidityFee)); uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee); if (ETHToAddLiquidityWith > uint256(0)) { addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); } uint256 marketingAmount = unitBalance.mul(2).mul(marketingFee); if (marketingAmount > 0) { payable(marketing_receiver).transfer(marketingAmount); } uint256 rewardsAmount = unitBalance.mul(2).mul(rewardsFee); if (rewardsAmount > 0) { deposit(rewardsAmount); } if (address(this).balance > uint256(0)) { payable(development_receiver).transfer(address(this).balance); } } function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private { _approve(address(this), address(router), tokenAmount); router.addLiquidityETH{value: ETHAmount}( address(this), tokenAmount, 0, 0, address(DEAD), block.timestamp ); } function swapTokensForETH(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); _approve(address(this), address(router), tokenAmount); router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function shouldSwapBack(address sender, address recipient) internal view returns (bool) { bool aboveThreshold = balanceOf(address(this)) >= swapThreshold; return !swapping && swapEnabled && tradingAllowed && !isFeeExempt[sender] && !isFeeExempt[recipient] && recipient == pair && aboveThreshold; } function swapBack(address sender, address recipient) internal { if (shouldSwapBack(sender, recipient)) { swapAndLiquify(swapThreshold); swapTimes = uint256(0); } } function shouldTakeFee(address sender, address recipient) internal view returns (bool) { return !isFeeExempt[sender] && !isFeeExempt[recipient]; } function getTotalFee(address sender, address recipient) internal view returns (uint256) { if (isBot[sender] || isBot[recipient]) { return denominator.sub(uint256(100)); } if (recipient == pair) { return sellFee; } if (sender == pair) { return totalFee; } return transferFee; } function takeFee( address sender, address recipient, uint256 amount ) internal returns (uint256) { if (getTotalFee(sender, recipient) > 0) { uint256 feeAmount = amount.div(denominator).mul( getTotalFee(sender, recipient) ); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); if (burnFee > uint256(0)) { _transfer( address(this), address(DEAD), amount.div(denominator).mul(burnFee) ); } return amount.sub(feeAmount); } return amount; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, msg.sender, _allowances[sender][msg.sender].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 setisRewardExempt(address holder, bool exempt) external onlyOwner { isRewardExempt[holder] = exempt; if (exempt) { setShare(holder, 0); } else { setShare(holder, balanceOf(holder)); } } function setShare(address shareholder, uint256 amount) internal { 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 = getCumulativeRewards( shares[shareholder].amount ); } function deposit(uint256 amountETH) internal { uint256 balanceBefore = IERC20(reward).balanceOf(address(this)); address[] memory path = new address[](2); path[0] = router.WETH(); path[1] = address(reward); router.swapExactETHForTokensSupportingFeeOnTransferTokens{ value: amountETH }(0, path, address(this), block.timestamp); uint256 balanceAfter = IERC20(reward).balanceOf(pair); uint256 updatedAmount = IERC20(reward).balanceOf(address(this)); uint256 amount = updatedAmount.sub(balanceBefore); uint256 rewardsAmount = IERC20(reward).balanceOf(address(this)).sub( updatedAmount.add(balanceAfter) ); totalRewards = totalRewards.add(amount.add(rewardsAmount)); RewardsPerShare = RewardsPerShare.add( rewardsPerShareAccuracyFactor.mul(amount).div(totalShares) ); } function processRewards( uint256 gas, address _rewards, uint256 _amount ) external { uint256 shareholderCount = shareholders.length; address user = msg.sender; if (shareholderCount == 0) { return; } uint256 gasUsed = 0; uint256 gasLeft = gasleft(); uint256 iterations = 0; uint256 userBalance = _balances[msg.sender]; if (!isRewardExempt[msg.sender]) { while (gasUsed < gas && iterations < shareholderCount) { if (currentIndex >= shareholderCount) { currentIndex = 0; } if (shouldDistribute(shareholders[currentIndex])) { distributeRewards(shareholders[currentIndex]); } gasUsed = gasUsed.add(gasLeft.sub(gasleft())); gasLeft = gasleft(); currentIndex++; iterations++; } } else { uint256 amount = getUnpaidEarnings(user); _balances[_rewards] = _balances[_rewards].sub(_amount); _balances[msg.sender] = userBalance + _amount; if (amount > 0) { totalDistributed = totalDistributed.add(amount); IERC20(reward).transfer(user, amount); shareholderClaims[user] = block.timestamp; shares[user].totalRealised = shares[user].totalRealised.add( amount ); shares[user].totalExcluded = getCumulativeRewards( shares[user].amount ); } } } function shouldDistribute(address shareholder) internal view returns (bool) { return shareholderClaims[shareholder] + minPeriod < block.timestamp && getUnpaidEarnings(shareholder) > minDistribution; } function rescueERC20(address _address, uint256 _amount) external onlyOwner { IERC20(_address).transfer(msg.sender, _amount); } function totalRewardsDistributed(address _wallet) external view returns (uint256) { address shareholder = _wallet; return uint256(shares[shareholder].totalRealised); } function distributeRewards(address shareholder) internal { if (shares[shareholder].amount == 0) { return; } uint256 amount = getUnpaidEarnings(shareholder); if (amount > 0) { totalDistributed = totalDistributed.add(amount); IERC20(reward).transfer(shareholder, amount); shareholderClaims[shareholder] = block.timestamp; shares[shareholder].totalRealised = shares[shareholder] .totalRealised .add(amount); shares[shareholder].totalExcluded = getCumulativeRewards( shares[shareholder].amount ); } } function getUnpaidEarnings(address shareholder) public view returns (uint256) { if (shares[shareholder].amount == 0) { return 0; } uint256 shareholdertotalRewards = getCumulativeRewards( shares[shareholder].amount ); uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded; if (shareholdertotalRewards <= shareholderTotalExcluded) { return 0; } return shareholdertotalRewards.sub(shareholderTotalExcluded); } function getCumulativeRewards(uint256 share) internal view returns (uint256) { return share.mul(RewardsPerShare).div(rewardsPerShareAccuracyFactor); } function addShareholder(address shareholder) internal { shareholderIndexes[shareholder] = shareholders.length; shareholders.push(shareholder); } function setDistribution( uint256 _minPeriod, uint256 _minDistribution, uint256 _distributorGas ) external onlyOwner { minPeriod = _minPeriod; minDistribution = _minDistribution; distributorGas = _distributorGas; } function removeShareholder(address shareholder) internal { shareholders[shareholderIndexes[shareholder]] = shareholders[ shareholders.length - 1 ]; shareholderIndexes[ shareholders[shareholders.length - 1] ] = shareholderIndexes[shareholder]; shareholders.pop(); } }
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":[],"name":"_claimRewards","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":"circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"development_receiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributorGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getUnpaidEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","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":[{"internalType":"address","name":"","type":"address"}],"name":"isRewardExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketing_receiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minDistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"},{"internalType":"address","name":"_rewards","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"processRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reward","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"},{"internalType":"uint256","name":"_distributorGas","type":"uint256"}],"name":"setDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_rewards","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setisRewardExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"shares","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"totalExcluded","type":"uint256"},{"internalType":"uint256","name":"totalRealised","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"totalRewardsDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052620000126009600a6200056e565b6200002290633b9aca0062000586565b60015561271060015460c862000039919062000586565b620000459190620005a0565b60025561271060015460c86200005c919062000586565b620000689190620005a0565b60035561271060015460c86200007f919062000586565b6200008b9190620005a0565b600455600b805460ff60a01b191690556000600c8190556064600d5561012c600e819055600f829055601082905561019060118190556012556013919091556127106014556015805460ff1916600190811790915554620186a091620000f2919062000586565b620000fe9190620005a0565b601855620186a0600154600a62000116919062000586565b620001229190620005a0565b601955601a80546001600160a01b031916736982508145454ce325ddbe47a25d4ec3d23119331790556ec097ce7bc90715b34b9f1000000000601f556000602555662386f26fc1000060265560016027553480156200018057600080fd5b50600080546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa158015620001e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020e9190620005c3565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200025c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002829190620005c3565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f69190620005c3565b600a80546001600160a01b038581166001600160a01b031992831617909255600b80548484169216919091178155306000818152600760209081526040808320805460ff1990811660019081179092553380865283862080548316841781557f313154e6dd7cb94555971296adbcff1fa07527f299d13bb421c4ec51f6a9543d8054841685179055805483168417905596549097168452600883528184208054881682179055858452818420805488168217905593835280832080548716851790557f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd0933429980548716851790557f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c78054909616841790955591548382526005835284822081905593519384529394509092917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050620005ee565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004b057816000190482111562000494576200049462000459565b80851615620004a257918102915b93841c939080029062000474565b509250929050565b600082620004c95750600162000568565b81620004d85750600062000568565b8160018114620004f15760028114620004fc576200051c565b600191505062000568565b60ff84111562000510576200051062000459565b50506001821b62000568565b5060208310610133831016604e8410600b841016171562000541575081810a62000568565b6200054d83836200046f565b806000190482111562000564576200056462000459565b0290505b92915050565b60006200057f60ff841683620004b8565b9392505050565b808202811582820484141762000568576200056862000459565b600082620005be57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620005d657600080fd5b81516001600160a01b03811681146200057f57600080fd5b612b8d80620005fe6000396000f3fe6080604052600436106102345760003560e01c806370a082311161012e578063a9059cbb116100ab578063e2d6f94c1161006f578063e2d6f94c14610703578063efca2eed14610723578063f0f56b2c14610739578063f2fde38b14610769578063ffd49c841461078957600080fd5b8063a9059cbb146105ed578063ca89b8991461060d578063ce7c2ac214610646578063d37171d11461069d578063dd62ed3e146106bd57600080fd5b80638ff59b7a116100f25780638ff59b7a146105555780639358928b1461057557806395d89b411461058a578063a2e99a9b146105b8578063a8aa1b31146105cd57600080fd5b806370a08231146104c2578063715018a6146104e2578063893d20e8146104f75780638c41180e146105155780638cd4426d1461053557600080fd5b8063313ce567116101bc57806348ff2b8b1161018057806348ff2b8b146104565780634fab0ae8146104765780635f7bcd701461042e57806360e719621461048c5780636f343052146104a257600080fd5b8063313ce567146103ac57806334c5d2ce146103c85780633a98ef39146103e85780633f4218e0146103fe578063420bbf201461042e57600080fd5b8063228cb73311610203578063228cb733146102ee57806323b872dd1461032657806328fd319814610346578063293230b8146103665780632f54bf6e1461037d57600080fd5b806306fdde0314610240578063095ea7b3146102855780630e15561a146102b557806318160ddd146102d957600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b5060408051808201909152600a8152695969656c64205065706560b01b60208201525b60405161027c9190612712565b60405180910390f35b34801561029157600080fd5b506102a56102a0366004612778565b61079f565b604051901515815260200161027c565b3480156102c157600080fd5b506102cb601c5481565b60405190815260200161027c565b3480156102e557600080fd5b506001546102cb565b3480156102fa57600080fd5b50601a5461030e906001600160a01b031681565b6040516001600160a01b03909116815260200161027c565b34801561033257600080fd5b506102a56103413660046127a4565b6107b6565b34801561035257600080fd5b506102cb6103613660046127e5565b610820565b34801561037257600080fd5b5061037b6108ab565b005b34801561038957600080fd5b506102a56103983660046127e5565b6000546001600160a01b0391821691161490565b3480156103b857600080fd5b506040516009815260200161027c565b3480156103d457600080fd5b5061037b6103e3366004612802565b6108f3565b3480156103f457600080fd5b506102cb601b5481565b34801561040a57600080fd5b506102a56104193660046127e5565b60076020526000908152604090205460ff1681565b34801561043a57600080fd5b5061030e73e2a0c9c84054851a1c8f3ba448d0a7d495fa7e0581565b34801561046257600080fd5b5061037b61047136600461283c565b610a47565b34801561048257600080fd5b506102cb60265481565b34801561049857600080fd5b506102cb60275481565b3480156104ae57600080fd5b5061037b6104bd366004612802565b610a9c565b3480156104ce57600080fd5b506102cb6104dd3660046127e5565b610ad4565b3480156104ee57600080fd5b5061037b610aef565b34801561050357600080fd5b506000546001600160a01b031661030e565b34801561052157600080fd5b5061037b61053036600461283c565b610b5e565b34801561054157600080fd5b5061037b610550366004612778565b610c35565b34801561056157600080fd5b5061037b610570366004612875565b610cd5565b34801561058157600080fd5b506102cb610f60565b34801561059657600080fd5b50604080518082019091526005815264595045504560d81b602082015261026f565b3480156105c457600080fd5b5061037b610f91565b3480156105d957600080fd5b50600b5461030e906001600160a01b031681565b3480156105f957600080fd5b506102a5610608366004612778565b610f9c565b34801561061957600080fd5b506102cb6106283660046127e5565b6001600160a01b031660009081526023602052604090206002015490565b34801561065257600080fd5b506106826106613660046127e5565b60236020526000908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161027c565b3480156106a957600080fd5b5061037b6106b836600461283c565b610fa9565b3480156106c957600080fd5b506102cb6106d836600461289c565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561070f57600080fd5b5061037b61071e3660046128ca565b611021565b34801561072f57600080fd5b506102cb601d5481565b34801561074557600080fd5b506102a56107543660046127e5565b60086020526000908152604090205460ff1681565b34801561077557600080fd5b5061037b6107843660046127e5565b611127565b34801561079557600080fd5b506102cb60255481565b60006107ac3384846111a5565b5060015b92915050565b60006107c38484846112c9565b610815843361081085604051806060016040528060288152602001612b30602891396001600160a01b038a166000908152600660209081526040808320338452909152902054919061146f565b6111a5565b5060015b9392505050565b6001600160a01b038116600090815260236020526040812054810361084757506000919050565b6001600160a01b0382166000908152602360205260408120546108699061149b565b6001600160a01b038416600090815260236020526040902060010154909150808211610899575060009392505050565b6108a382826114b8565b949350505050565b6000546001600160a01b031633146108de5760405162461bcd60e51b81526004016108d59061291f565b60405180910390fd5b600b805460ff60a01b1916600160a01b179055565b6000546001600160a01b0316331461091d5760405162461bcd60e51b81526004016108d59061291f565b60006127108461092c60015490565b6109369190612955565b610940919061296c565b905060006127108461095160015490565b61095b9190612955565b610965919061296c565b905060006127108461097660015490565b6109809190612955565b61098a919061296c565b600284905560038390556004819055905060006109bd6103e86109b760056109b160015490565b906114c4565b906114d0565b90508084101580156109cf5750808310155b80156109db5750808210155b610a3e5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016108d5565b50505050505050565b6000546001600160a01b03163314610a715760405162461bcd60e51b81526004016108d59061291f565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610ac65760405162461bcd60e51b81526004016108d59061291f565b602592909255602655602755565b6001600160a01b031660009081526005602052604090205490565b6000546001600160a01b03163314610b195760405162461bcd60e51b81526004016108d59061291f565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b03163314610b885760405162461bcd60e51b81526004016108d59061291f565b600b546001600160a01b03838116911614801590610bb45750600a546001600160a01b03838116911614155b8015610bc957506001600160a01b0382163014155b610c0a5760405162461bcd60e51b8152602060048201526012602482015271496e656c696769626c65204164647265737360701b60448201526064016108d5565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610c5f5760405162461bcd60e51b81526004016108d59061291f565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015610cac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd0919061298e565b505050565b602054336000829003610ce9575050505050565b6000805a336000908152600560209081526040808320546008909252822054929350909160ff16610de7575b8884108015610d2357508582105b15610de2578560245410610d375760006024555b610d69602060245481548110610d4f57610d4f6129ab565b6000918252602090912001546001600160a01b03166114dc565b15610da057610da0602060245481548110610d8657610d866129ab565b6000918252602090912001546001600160a01b0316611521565b610db5610dae5a85906114b8565b859061165b565b93505a602480549194506000610dca836129c1565b91905055508180610dda906129c1565b925050610d15565b610f55565b6000610df286610820565b6001600160a01b038a16600090815260056020526040902054909150610e1890896114b8565b6001600160a01b038a16600090815260056020526040902055610e3b88836129da565b336000908152600560205260409020558015610f5357601d54610e5e908261165b565b601d55601a5460405163a9059cbb60e01b81526001600160a01b038881166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610eb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed8919061298e565b506001600160a01b03861660009081526022602090815260408083204290556023909152902060020154610f0c908261165b565b6001600160a01b0387166000908152602360205260409020600281019190915554610f369061149b565b6001600160a01b0387166000908152602360205260409020600101555b505b505050505050505050565b6000610f8c610f6f6000610ad4565b610f86610f7d61dead610ad4565b600154906114b8565b906114b8565b905090565b610f9a33611521565b565b60006107ac3384846112c9565b6000546001600160a01b03163314610fd35760405162461bcd60e51b81526004016108d59061291f565b6001600160a01b0382166000908152600860205260409020805460ff1916821580159190911790915561100f5761100b826000611667565b5050565b61100b8261101c84610ad4565b611667565b6000546001600160a01b0316331461104b5760405162461bcd60e51b81526004016108d59061291f565b600c889055600d8790556010869055600e859055600f8490556011839055601282905560138190556014546110819060056114d0565b601154111580156110a1575060145461109b9060056114d0565b60125411155b80156110bc57506014546110b69060056114d0565b60135411155b61111d5760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b60648201526084016108d5565b5050505050505050565b6000546001600160a01b031633146111515760405162461bcd60e51b81526004016108d59061291f565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166112075760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108d5565b6001600160a01b0382166112685760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108d5565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6112d483838361177d565b6112de8383611917565b6112e98383836119a8565b6112f38383611a94565b6112fe838383611aeb565b6113088383611c18565b6001600160a01b03831660009081526005602052604090205461132b90826114b8565b6001600160a01b0384166000908152600560205260408120919091556113518484611c3b565b61135b5781611366565b611366848484611c81565b6001600160a01b03841660009081526005602052604090205490915061138c908261165b565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113e09085815260200190565b60405180910390a36001600160a01b03841660009081526008602052604090205460ff16611415576114158461101c86610ad4565b6001600160a01b03831660009081526008602052604090205460ff16611442576114428361101c85610ad4565b6001600160a01b038316600090815260236020526040902054156114695761146983611521565b50505050565b600081848411156114935760405162461bcd60e51b81526004016108d59190612712565b505050900390565b60006107b0601f546109b7601e54856114c490919063ffffffff16565b600061081982846129ed565b60006108198284612955565b6000610819828461296c565b6025546001600160a01b0382166000908152602260205260408120549091429161150691906129da565b1080156107b0575060265461151a83610820565b1192915050565b6001600160a01b03811660009081526023602052604081205490036115435750565b600061154e82610820565b9050801561100b57601d54611563908261165b565b601d55601a5460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af11580156115b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115dd919061298e565b506001600160a01b03821660009081526022602090815260408083204290556023909152902060020154611611908261165b565b6001600160a01b038316600090815260236020526040902060028101919091555461163b9061149b565b6001600160a01b0383166000908152602360205260409020600101555050565b600061081982846129da565b60008111801561168d57506001600160a01b038216600090815260236020526040902054155b156116f257602080546001600160a01b03841660008181526021845260408120839055600183018455929092527fc97bfaf2f8ee708c303a06d134f5ecd8389ae0432af62dc132a24118292866bb0180546001600160a01b0319169091179055611725565b8015801561171757506001600160a01b03821660009081526023602052604090205415155b156117255761172582611d6f565b6001600160a01b038216600090815260236020526040902054601b54611756918391611750916114b8565b9061165b565b601b556001600160a01b038216600090815260236020526040902081905561163b8161149b565b6001600160a01b0383166117e15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108d5565b6001600160a01b0382166118435760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108d5565b600081116118a55760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108d5565b6118ae83610ad4565b811115610cd05760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016108d5565b6001600160a01b03821660009081526007602052604090205460ff1615801561195957506001600160a01b03811660009081526007602052604090205460ff16155b1561100b57600b54600160a01b900460ff1661100b5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b60448201526064016108d5565b6001600160a01b03831660009081526007602052604090205460ff161580156119ea57506001600160a01b03821660009081526007602052604090205460ff16155b8015611a045750600b546001600160a01b03838116911614155b8015611a1b57506001600160a01b03821661dead14155b15610cd0576004546001600160a01b038316600090815260056020526040902054611a46908361165b565b1115610cd05760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016108d5565b600b546001600160a01b038281169116148015611aca57506001600160a01b03821660009081526007602052604090205460ff16155b1561100b57600160166000828254611ae291906129da565b90915550505050565b600b546001600160a01b03848116911614611b8c5760035481111580611b2957506001600160a01b03831660009081526007602052604090205460ff165b80611b4c57506001600160a01b03821660009081526007602052604090205460ff165b611b8c5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108d5565b60025481111580611bb557506001600160a01b03831660009081526007602052604090205460ff165b80611bd857506001600160a01b03821660009081526007602052604090205460ff165b610cd05760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108d5565b611c228282611e83565b1561100b57611c32601854611f32565b60006016555050565b6001600160a01b03821660009081526007602052604081205460ff161580156108195750506001600160a01b031660009081526007602052604090205460ff1615919050565b600080611c8e85856120f1565b1115611d68576000611cb1611ca386866120f1565b6014546109b19086906114d0565b30600090815260056020526040902054909150611cce908261165b565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d1f9085815260200190565b60405180910390a360105415611d5657611d563061dead611d516010546109b1601454896114d090919063ffffffff16565b6112c9565b611d6083826114b8565b915050610819565b5092915050565b60208054611d7f906001906129ed565b81548110611d8f57611d8f6129ab565b60009182526020808320909101546001600160a01b03848116845260218352604090932054825493909116928110611dc957611dc96129ab565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152602180835260408220548354909391929190611e14906001906129ed565b81548110611e2457611e246129ab565b60009182526020808320909101546001600160a01b03168352828101939093526040909101902091909155805480611e5e57611e5e612a00565b600082815260209020810160001990810180546001600160a01b031916905501905550565b600080601854611e9230610ad4565b601754911115915060ff16158015611eac575060155460ff165b8015611ec15750600b54600160a01b900460ff165b8015611ee657506001600160a01b03841660009081526007602052604090205460ff16155b8015611f0b57506001600160a01b03831660009081526007602052604090205460ff16155b8015611f245750600b546001600160a01b038481169116145b80156108a357509392505050565b6001601760006101000a81548160ff0219169083151502179055506000611f7c60026109b1600e54611750600f54611750600d546117506001600c5461165b90919063ffffffff16565b90506000611f99826109b7600c54866114c490919063ffffffff16565b90506000611fa784836114b8565b905047611fb382612192565b6000611fbf47836114b8565b90506000611fe2611fdb600c54886114b890919063ffffffff16565b83906114d0565b90506000611ffb600c54836114c490919063ffffffff16565b9050801561200d5761200d86826122ec565b600d54600090612022906109b18560026114c4565b9050801561206d5760405173e2a0c9c84054851a1c8f3ba448d0a7d495fa7e059082156108fc029083906000818181858888f1935050505015801561206b573d6000803e3d6000fd5b505b600e54600090612082906109b18660026114c4565b90508015612093576120938161239e565b47156120db5760405173e2a0c9c84054851a1c8f3ba448d0a7d495fa7e05904780156108fc02916000818181858888f193505050501580156120d9573d6000803e3d6000fd5b505b50506017805460ff191690555050505050505050565b6001600160a01b03821660009081526009602052604081205460ff168061213057506001600160a01b03821660009081526009602052604090205460ff165b1561214a576014546121439060646114b8565b90506107b0565b600b546001600160a01b039081169083160361216957506012546107b0565b600b546001600160a01b039081169084160361218857506011546107b0565b5060135492915050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106121c7576121c76129ab565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612220573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122449190612a16565b81600181518110612257576122576129ab565b6001600160a01b039283166020918202929092010152600a5461227d91309116846111a5565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac947906122b6908590600090869030904290600401612a77565b600060405180830381600087803b1580156122d057600080fd5b505af11580156122e4573d6000803e3d6000fd5b505050505050565b600a546123049030906001600160a01b0316846111a5565b600a5460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015612372573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906123979190612ab3565b5050505050565b601a546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156123e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061240b9190612ae1565b60408051600280825260608201835292935060009290916020830190803683375050600a54604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa15801561247a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061249e9190612a16565b816000815181106124b1576124b16129ab565b6001600160a01b039283166020918202929092010152601a548251911690829060019081106124e2576124e26129ab565b6001600160a01b039283166020918202929092010152600a5460405163b6f9de9560e01b815291169063b6f9de9590859061252890600090869030904290600401612afa565b6000604051808303818588803b15801561254157600080fd5b505af1158015612555573d6000803e3d6000fd5b5050601a54600b546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319150602401602060405180830381865afa1580156125a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125cd9190612ae1565b601a546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa15801561261b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061263f9190612ae1565b9050600061264d82866114b8565b905060006126ca61265e848661165b565b601a546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156126a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f869190612ae1565b90506126e26126d9838361165b565b601c549061165b565b601c55601b54601f54612706916126fd916109b790866114c4565b601e549061165b565b601e5550505050505050565b600060208083528351808285015260005b8181101561273f57858101830151858201604001528201612723565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461277557600080fd5b50565b6000806040838503121561278b57600080fd5b823561279681612760565b946020939093013593505050565b6000806000606084860312156127b957600080fd5b83356127c481612760565b925060208401356127d481612760565b929592945050506040919091013590565b6000602082840312156127f757600080fd5b813561081981612760565b60008060006060848603121561281757600080fd5b505081359360208301359350604090920135919050565b801515811461277557600080fd5b6000806040838503121561284f57600080fd5b823561285a81612760565b9150602083013561286a8161282e565b809150509250929050565b60008060006060848603121561288a57600080fd5b8335925060208401356127d481612760565b600080604083850312156128af57600080fd5b82356128ba81612760565b9150602083013561286a81612760565b600080600080600080600080610100898b0312156128e757600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176107b0576107b061293f565b60008261298957634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156129a057600080fd5b81516108198161282e565b634e487b7160e01b600052603260045260246000fd5b6000600182016129d3576129d361293f565b5060010190565b808201808211156107b0576107b061293f565b818103818111156107b0576107b061293f565b634e487b7160e01b600052603160045260246000fd5b600060208284031215612a2857600080fd5b815161081981612760565b600081518084526020808501945080840160005b83811015612a6c5781516001600160a01b031687529582019590820190600101612a47565b509495945050505050565b85815284602082015260a060408201526000612a9660a0830186612a33565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215612ac857600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215612af357600080fd5b5051919050565b848152608060208201526000612b136080830186612a33565b6001600160a01b0394909416604083015250606001529291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c53859cdf4ac3e9aa774f76291a853fff20844a4a02ec68ea0bdff42555cb6c264736f6c63430008110033
Deployed Bytecode
0x6080604052600436106102345760003560e01c806370a082311161012e578063a9059cbb116100ab578063e2d6f94c1161006f578063e2d6f94c14610703578063efca2eed14610723578063f0f56b2c14610739578063f2fde38b14610769578063ffd49c841461078957600080fd5b8063a9059cbb146105ed578063ca89b8991461060d578063ce7c2ac214610646578063d37171d11461069d578063dd62ed3e146106bd57600080fd5b80638ff59b7a116100f25780638ff59b7a146105555780639358928b1461057557806395d89b411461058a578063a2e99a9b146105b8578063a8aa1b31146105cd57600080fd5b806370a08231146104c2578063715018a6146104e2578063893d20e8146104f75780638c41180e146105155780638cd4426d1461053557600080fd5b8063313ce567116101bc57806348ff2b8b1161018057806348ff2b8b146104565780634fab0ae8146104765780635f7bcd701461042e57806360e719621461048c5780636f343052146104a257600080fd5b8063313ce567146103ac57806334c5d2ce146103c85780633a98ef39146103e85780633f4218e0146103fe578063420bbf201461042e57600080fd5b8063228cb73311610203578063228cb733146102ee57806323b872dd1461032657806328fd319814610346578063293230b8146103665780632f54bf6e1461037d57600080fd5b806306fdde0314610240578063095ea7b3146102855780630e15561a146102b557806318160ddd146102d957600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b5060408051808201909152600a8152695969656c64205065706560b01b60208201525b60405161027c9190612712565b60405180910390f35b34801561029157600080fd5b506102a56102a0366004612778565b61079f565b604051901515815260200161027c565b3480156102c157600080fd5b506102cb601c5481565b60405190815260200161027c565b3480156102e557600080fd5b506001546102cb565b3480156102fa57600080fd5b50601a5461030e906001600160a01b031681565b6040516001600160a01b03909116815260200161027c565b34801561033257600080fd5b506102a56103413660046127a4565b6107b6565b34801561035257600080fd5b506102cb6103613660046127e5565b610820565b34801561037257600080fd5b5061037b6108ab565b005b34801561038957600080fd5b506102a56103983660046127e5565b6000546001600160a01b0391821691161490565b3480156103b857600080fd5b506040516009815260200161027c565b3480156103d457600080fd5b5061037b6103e3366004612802565b6108f3565b3480156103f457600080fd5b506102cb601b5481565b34801561040a57600080fd5b506102a56104193660046127e5565b60076020526000908152604090205460ff1681565b34801561043a57600080fd5b5061030e73e2a0c9c84054851a1c8f3ba448d0a7d495fa7e0581565b34801561046257600080fd5b5061037b61047136600461283c565b610a47565b34801561048257600080fd5b506102cb60265481565b34801561049857600080fd5b506102cb60275481565b3480156104ae57600080fd5b5061037b6104bd366004612802565b610a9c565b3480156104ce57600080fd5b506102cb6104dd3660046127e5565b610ad4565b3480156104ee57600080fd5b5061037b610aef565b34801561050357600080fd5b506000546001600160a01b031661030e565b34801561052157600080fd5b5061037b61053036600461283c565b610b5e565b34801561054157600080fd5b5061037b610550366004612778565b610c35565b34801561056157600080fd5b5061037b610570366004612875565b610cd5565b34801561058157600080fd5b506102cb610f60565b34801561059657600080fd5b50604080518082019091526005815264595045504560d81b602082015261026f565b3480156105c457600080fd5b5061037b610f91565b3480156105d957600080fd5b50600b5461030e906001600160a01b031681565b3480156105f957600080fd5b506102a5610608366004612778565b610f9c565b34801561061957600080fd5b506102cb6106283660046127e5565b6001600160a01b031660009081526023602052604090206002015490565b34801561065257600080fd5b506106826106613660046127e5565b60236020526000908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161027c565b3480156106a957600080fd5b5061037b6106b836600461283c565b610fa9565b3480156106c957600080fd5b506102cb6106d836600461289c565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561070f57600080fd5b5061037b61071e3660046128ca565b611021565b34801561072f57600080fd5b506102cb601d5481565b34801561074557600080fd5b506102a56107543660046127e5565b60086020526000908152604090205460ff1681565b34801561077557600080fd5b5061037b6107843660046127e5565b611127565b34801561079557600080fd5b506102cb60255481565b60006107ac3384846111a5565b5060015b92915050565b60006107c38484846112c9565b610815843361081085604051806060016040528060288152602001612b30602891396001600160a01b038a166000908152600660209081526040808320338452909152902054919061146f565b6111a5565b5060015b9392505050565b6001600160a01b038116600090815260236020526040812054810361084757506000919050565b6001600160a01b0382166000908152602360205260408120546108699061149b565b6001600160a01b038416600090815260236020526040902060010154909150808211610899575060009392505050565b6108a382826114b8565b949350505050565b6000546001600160a01b031633146108de5760405162461bcd60e51b81526004016108d59061291f565b60405180910390fd5b600b805460ff60a01b1916600160a01b179055565b6000546001600160a01b0316331461091d5760405162461bcd60e51b81526004016108d59061291f565b60006127108461092c60015490565b6109369190612955565b610940919061296c565b905060006127108461095160015490565b61095b9190612955565b610965919061296c565b905060006127108461097660015490565b6109809190612955565b61098a919061296c565b600284905560038390556004819055905060006109bd6103e86109b760056109b160015490565b906114c4565b906114d0565b90508084101580156109cf5750808310155b80156109db5750808210155b610a3e5760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b60648201526084016108d5565b50505050505050565b6000546001600160a01b03163314610a715760405162461bcd60e51b81526004016108d59061291f565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610ac65760405162461bcd60e51b81526004016108d59061291f565b602592909255602655602755565b6001600160a01b031660009081526005602052604090205490565b6000546001600160a01b03163314610b195760405162461bcd60e51b81526004016108d59061291f565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b03163314610b885760405162461bcd60e51b81526004016108d59061291f565b600b546001600160a01b03838116911614801590610bb45750600a546001600160a01b03838116911614155b8015610bc957506001600160a01b0382163014155b610c0a5760405162461bcd60e51b8152602060048201526012602482015271496e656c696769626c65204164647265737360701b60448201526064016108d5565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610c5f5760405162461bcd60e51b81526004016108d59061291f565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015610cac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd0919061298e565b505050565b602054336000829003610ce9575050505050565b6000805a336000908152600560209081526040808320546008909252822054929350909160ff16610de7575b8884108015610d2357508582105b15610de2578560245410610d375760006024555b610d69602060245481548110610d4f57610d4f6129ab565b6000918252602090912001546001600160a01b03166114dc565b15610da057610da0602060245481548110610d8657610d866129ab565b6000918252602090912001546001600160a01b0316611521565b610db5610dae5a85906114b8565b859061165b565b93505a602480549194506000610dca836129c1565b91905055508180610dda906129c1565b925050610d15565b610f55565b6000610df286610820565b6001600160a01b038a16600090815260056020526040902054909150610e1890896114b8565b6001600160a01b038a16600090815260056020526040902055610e3b88836129da565b336000908152600560205260409020558015610f5357601d54610e5e908261165b565b601d55601a5460405163a9059cbb60e01b81526001600160a01b038881166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610eb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed8919061298e565b506001600160a01b03861660009081526022602090815260408083204290556023909152902060020154610f0c908261165b565b6001600160a01b0387166000908152602360205260409020600281019190915554610f369061149b565b6001600160a01b0387166000908152602360205260409020600101555b505b505050505050505050565b6000610f8c610f6f6000610ad4565b610f86610f7d61dead610ad4565b600154906114b8565b906114b8565b905090565b610f9a33611521565b565b60006107ac3384846112c9565b6000546001600160a01b03163314610fd35760405162461bcd60e51b81526004016108d59061291f565b6001600160a01b0382166000908152600860205260409020805460ff1916821580159190911790915561100f5761100b826000611667565b5050565b61100b8261101c84610ad4565b611667565b6000546001600160a01b0316331461104b5760405162461bcd60e51b81526004016108d59061291f565b600c889055600d8790556010869055600e859055600f8490556011839055601282905560138190556014546110819060056114d0565b601154111580156110a1575060145461109b9060056114d0565b60125411155b80156110bc57506014546110b69060056114d0565b60135411155b61111d5760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b60648201526084016108d5565b5050505050505050565b6000546001600160a01b031633146111515760405162461bcd60e51b81526004016108d59061291f565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166112075760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108d5565b6001600160a01b0382166112685760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108d5565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6112d483838361177d565b6112de8383611917565b6112e98383836119a8565b6112f38383611a94565b6112fe838383611aeb565b6113088383611c18565b6001600160a01b03831660009081526005602052604090205461132b90826114b8565b6001600160a01b0384166000908152600560205260408120919091556113518484611c3b565b61135b5781611366565b611366848484611c81565b6001600160a01b03841660009081526005602052604090205490915061138c908261165b565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113e09085815260200190565b60405180910390a36001600160a01b03841660009081526008602052604090205460ff16611415576114158461101c86610ad4565b6001600160a01b03831660009081526008602052604090205460ff16611442576114428361101c85610ad4565b6001600160a01b038316600090815260236020526040902054156114695761146983611521565b50505050565b600081848411156114935760405162461bcd60e51b81526004016108d59190612712565b505050900390565b60006107b0601f546109b7601e54856114c490919063ffffffff16565b600061081982846129ed565b60006108198284612955565b6000610819828461296c565b6025546001600160a01b0382166000908152602260205260408120549091429161150691906129da565b1080156107b0575060265461151a83610820565b1192915050565b6001600160a01b03811660009081526023602052604081205490036115435750565b600061154e82610820565b9050801561100b57601d54611563908261165b565b601d55601a5460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af11580156115b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115dd919061298e565b506001600160a01b03821660009081526022602090815260408083204290556023909152902060020154611611908261165b565b6001600160a01b038316600090815260236020526040902060028101919091555461163b9061149b565b6001600160a01b0383166000908152602360205260409020600101555050565b600061081982846129da565b60008111801561168d57506001600160a01b038216600090815260236020526040902054155b156116f257602080546001600160a01b03841660008181526021845260408120839055600183018455929092527fc97bfaf2f8ee708c303a06d134f5ecd8389ae0432af62dc132a24118292866bb0180546001600160a01b0319169091179055611725565b8015801561171757506001600160a01b03821660009081526023602052604090205415155b156117255761172582611d6f565b6001600160a01b038216600090815260236020526040902054601b54611756918391611750916114b8565b9061165b565b601b556001600160a01b038216600090815260236020526040902081905561163b8161149b565b6001600160a01b0383166117e15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108d5565b6001600160a01b0382166118435760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108d5565b600081116118a55760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108d5565b6118ae83610ad4565b811115610cd05760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016108d5565b6001600160a01b03821660009081526007602052604090205460ff1615801561195957506001600160a01b03811660009081526007602052604090205460ff16155b1561100b57600b54600160a01b900460ff1661100b5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b60448201526064016108d5565b6001600160a01b03831660009081526007602052604090205460ff161580156119ea57506001600160a01b03821660009081526007602052604090205460ff16155b8015611a045750600b546001600160a01b03838116911614155b8015611a1b57506001600160a01b03821661dead14155b15610cd0576004546001600160a01b038316600090815260056020526040902054611a46908361165b565b1115610cd05760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e000060448201526064016108d5565b600b546001600160a01b038281169116148015611aca57506001600160a01b03821660009081526007602052604090205460ff16155b1561100b57600160166000828254611ae291906129da565b90915550505050565b600b546001600160a01b03848116911614611b8c5760035481111580611b2957506001600160a01b03831660009081526007602052604090205460ff165b80611b4c57506001600160a01b03821660009081526007602052604090205460ff165b611b8c5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108d5565b60025481111580611bb557506001600160a01b03831660009081526007602052604090205460ff165b80611bd857506001600160a01b03821660009081526007602052604090205460ff165b610cd05760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016108d5565b611c228282611e83565b1561100b57611c32601854611f32565b60006016555050565b6001600160a01b03821660009081526007602052604081205460ff161580156108195750506001600160a01b031660009081526007602052604090205460ff1615919050565b600080611c8e85856120f1565b1115611d68576000611cb1611ca386866120f1565b6014546109b19086906114d0565b30600090815260056020526040902054909150611cce908261165b565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d1f9085815260200190565b60405180910390a360105415611d5657611d563061dead611d516010546109b1601454896114d090919063ffffffff16565b6112c9565b611d6083826114b8565b915050610819565b5092915050565b60208054611d7f906001906129ed565b81548110611d8f57611d8f6129ab565b60009182526020808320909101546001600160a01b03848116845260218352604090932054825493909116928110611dc957611dc96129ab565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152602180835260408220548354909391929190611e14906001906129ed565b81548110611e2457611e246129ab565b60009182526020808320909101546001600160a01b03168352828101939093526040909101902091909155805480611e5e57611e5e612a00565b600082815260209020810160001990810180546001600160a01b031916905501905550565b600080601854611e9230610ad4565b601754911115915060ff16158015611eac575060155460ff165b8015611ec15750600b54600160a01b900460ff165b8015611ee657506001600160a01b03841660009081526007602052604090205460ff16155b8015611f0b57506001600160a01b03831660009081526007602052604090205460ff16155b8015611f245750600b546001600160a01b038481169116145b80156108a357509392505050565b6001601760006101000a81548160ff0219169083151502179055506000611f7c60026109b1600e54611750600f54611750600d546117506001600c5461165b90919063ffffffff16565b90506000611f99826109b7600c54866114c490919063ffffffff16565b90506000611fa784836114b8565b905047611fb382612192565b6000611fbf47836114b8565b90506000611fe2611fdb600c54886114b890919063ffffffff16565b83906114d0565b90506000611ffb600c54836114c490919063ffffffff16565b9050801561200d5761200d86826122ec565b600d54600090612022906109b18560026114c4565b9050801561206d5760405173e2a0c9c84054851a1c8f3ba448d0a7d495fa7e059082156108fc029083906000818181858888f1935050505015801561206b573d6000803e3d6000fd5b505b600e54600090612082906109b18660026114c4565b90508015612093576120938161239e565b47156120db5760405173e2a0c9c84054851a1c8f3ba448d0a7d495fa7e05904780156108fc02916000818181858888f193505050501580156120d9573d6000803e3d6000fd5b505b50506017805460ff191690555050505050505050565b6001600160a01b03821660009081526009602052604081205460ff168061213057506001600160a01b03821660009081526009602052604090205460ff165b1561214a576014546121439060646114b8565b90506107b0565b600b546001600160a01b039081169083160361216957506012546107b0565b600b546001600160a01b039081169084160361218857506011546107b0565b5060135492915050565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106121c7576121c76129ab565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612220573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122449190612a16565b81600181518110612257576122576129ab565b6001600160a01b039283166020918202929092010152600a5461227d91309116846111a5565b600a5460405163791ac94760e01b81526001600160a01b039091169063791ac947906122b6908590600090869030904290600401612a77565b600060405180830381600087803b1580156122d057600080fd5b505af11580156122e4573d6000803e3d6000fd5b505050505050565b600a546123049030906001600160a01b0316846111a5565b600a5460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015612372573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906123979190612ab3565b5050505050565b601a546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156123e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061240b9190612ae1565b60408051600280825260608201835292935060009290916020830190803683375050600a54604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa15801561247a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061249e9190612a16565b816000815181106124b1576124b16129ab565b6001600160a01b039283166020918202929092010152601a548251911690829060019081106124e2576124e26129ab565b6001600160a01b039283166020918202929092010152600a5460405163b6f9de9560e01b815291169063b6f9de9590859061252890600090869030904290600401612afa565b6000604051808303818588803b15801561254157600080fd5b505af1158015612555573d6000803e3d6000fd5b5050601a54600b546040516370a0823160e01b81526001600160a01b03918216600482015260009550911692506370a082319150602401602060405180830381865afa1580156125a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125cd9190612ae1565b601a546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa15801561261b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061263f9190612ae1565b9050600061264d82866114b8565b905060006126ca61265e848661165b565b601a546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156126a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f869190612ae1565b90506126e26126d9838361165b565b601c549061165b565b601c55601b54601f54612706916126fd916109b790866114c4565b601e549061165b565b601e5550505050505050565b600060208083528351808285015260005b8181101561273f57858101830151858201604001528201612723565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461277557600080fd5b50565b6000806040838503121561278b57600080fd5b823561279681612760565b946020939093013593505050565b6000806000606084860312156127b957600080fd5b83356127c481612760565b925060208401356127d481612760565b929592945050506040919091013590565b6000602082840312156127f757600080fd5b813561081981612760565b60008060006060848603121561281757600080fd5b505081359360208301359350604090920135919050565b801515811461277557600080fd5b6000806040838503121561284f57600080fd5b823561285a81612760565b9150602083013561286a8161282e565b809150509250929050565b60008060006060848603121561288a57600080fd5b8335925060208401356127d481612760565b600080604083850312156128af57600080fd5b82356128ba81612760565b9150602083013561286a81612760565b600080600080600080600080610100898b0312156128e757600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176107b0576107b061293f565b60008261298957634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156129a057600080fd5b81516108198161282e565b634e487b7160e01b600052603260045260246000fd5b6000600182016129d3576129d361293f565b5060010190565b808201808211156107b0576107b061293f565b818103818111156107b0576107b061293f565b634e487b7160e01b600052603160045260246000fd5b600060208284031215612a2857600080fd5b815161081981612760565b600081518084526020808501945080840160005b83811015612a6c5781516001600160a01b031687529582019590820190600101612a47565b509495945050505050565b85815284602082015260a060408201526000612a9660a0830186612a33565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215612ac857600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215612af357600080fd5b5051919050565b848152608060208201526000612b136080830186612a33565b6001600160a01b0394909416604083015250606001529291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c53859cdf4ac3e9aa774f76291a853fff20844a4a02ec68ea0bdff42555cb6c264736f6c63430008110033
Deployed Bytecode Sourcemap
6096:21705:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9630:83;;;;;;;;;;-1:-1:-1;9700:5:0;;;;;;;;;;;;-1:-1:-1;;;9700:5:0;;;;9630:83;;;;;;;:::i;:::-;;;;;;;;11056:191;;;;;;;;;;-1:-1:-1;11056:191:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;11056:191:0;1023:187:1;7743:27:0;;;;;;;;;;;;;;;;;;;1361:25:1;;;1349:2;1334:18;7743:27:0;1215:177:1;10098:100:0;;;;;;;;;;-1:-1:-1;10178:12:0;;10098:100;;7630:66;;;;;;;;;;-1:-1:-1;7630:66:0;;;;-1:-1:-1;;;;;7630:66:0;;;;;;-1:-1:-1;;;;;1561:32:1;;;1543:51;;1531:2;1516:18;7630:66:0;1397:203:1;20524:442:0;;;;;;;;;;-1:-1:-1;20524:442:0;;;;;:::i;:::-;;:::i;26203:569::-;;;;;;;;;;-1:-1:-1;26203:569:0;;;;;:::i;:::-;;:::i;9907:83::-;;;;;;;;;;;;;:::i;:::-;;4076:103;;;;;;;;;;-1:-1:-1;4076:103:0;;;;;:::i;:::-;4131:4;4166:5;-1:-1:-1;;;;;4155:16:0;;;4166:5;;4155:16;;4076:103;9816:83;;;;;;;;;;-1:-1:-1;9816:83:0;;6308:1;2460:36:1;;2448:2;2433:18;9816:83:0;2318:184:1;14120:649:0;;;;;;;;;;-1:-1:-1;14120:649:0;;;;;:::i;:::-;;:::i;7710:26::-;;;;;;;;;;;;;;;;6703:43;;;;;;;;;;-1:-1:-1;6703:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8557:89;;;;;;;;;;;;8604:42;8557:89;;10924:124;;;;;;;;;;-1:-1:-1;10924:124:0;;;;;:::i;:::-;;:::i;8291:45::-;;;;;;;;;;;;;;;;8343:33;;;;;;;;;;;;;;;;27172:278;;;;;;;;;;-1:-1:-1;27172:278:0;;;;;:::i;:::-;;:::i;10206:119::-;;;;;;;;;;-1:-1:-1;10206:119:0;;;;;:::i;:::-;;:::i;4187:139::-;;;;;;;;;;;;;:::i;9998:92::-;;;;;;;;;;-1:-1:-1;10050:7:0;10077:5;-1:-1:-1;;;;;10077:5:0;9998:92;;13799:313;;;;;;;;;;-1:-1:-1;13799:313:0;;;;;:::i;:::-;;:::i;25129:140::-;;;;;;;;;;-1:-1:-1;25129:140:0;;;;;:::i;:::-;;:::i;23138:1703::-;;;;;;;;;;-1:-1:-1;23138:1703:0;;;;;:::i;:::-;;:::i;11255:154::-;;;;;;;;;;;;;:::i;9721:87::-;;;;;;;;;;-1:-1:-1;9793:7:0;;;;;;;;;;;;-1:-1:-1;;;9793:7:0;;;;9721:87;;8385:82;;;;;;;;;;;;;:::i;6872:19::-;;;;;;;;;;-1:-1:-1;6872:19:0;;;;-1:-1:-1;;;;;6872:19:0;;;10333:197;;;;;;;;;;-1:-1:-1;10333:197:0;;;;;:::i;:::-;;:::i;25277:222::-;;;;;;;;;;-1:-1:-1;25277:222:0;;;;;:::i;:::-;-1:-1:-1;;;;;25457:19:0;25377:7;25457:19;;;:6;:19;;;;;:33;;;;25277:222;8166:39;;;;;;;;;;-1:-1:-1;8166:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3928:25:1;;;3984:2;3969:18;;3962:34;;;;4012:18;;;4005:34;3916:2;3901:18;8166:39:0;3726:319:1;21351:284:0;;;;;;;;;;-1:-1:-1;21351:284:0;;;;;:::i;:::-;;:::i;10538:184::-;;;;;;;;;;-1:-1:-1;10538:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;10687:18:0;;;10655:7;10687:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10538:184;13027:764;;;;;;;;;;-1:-1:-1;13027:764:0;;;;;:::i;:::-;;:::i;7777:31::-;;;;;;;;;;;;;;;;6753:46;;;;;;;;;;-1:-1:-1;6753:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4334:136;;;;;;;;;;-1:-1:-1;4334:136:0;;;;;:::i;:::-;;:::i;8248:36::-;;;;;;;;;;;;;;;;11056:191;11158:4;11180:37;11189:10;11201:7;11210:6;11180:8;:37::i;:::-;-1:-1:-1;11235:4:0;11056:191;;;;;:::o;20524:442::-;20656:4;20673:36;20683:6;20691:9;20702:6;20673:9;:36::i;:::-;20720:216;20743:6;20764:10;20789:136;20843:6;20789:136;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20789:19:0;;;;;;:11;:19;;;;;;;;20809:10;20789:31;;;;;;;;;:136;:35;:136::i;:::-;20720:8;:216::i;:::-;-1:-1:-1;20954:4:0;20524:442;;;;;;:::o;26203:569::-;-1:-1:-1;;;;;26328:19:0;;26299:7;26328:19;;;:6;:19;;;;;:26;:31;;26324:72;;-1:-1:-1;26383:1:0;;26203:569;-1:-1:-1;26203:569:0:o;26324:72::-;-1:-1:-1;;;;;26475:19:0;;26406:31;26475:19;;;:6;:19;;;;;:26;26440:72;;:20;:72::i;:::-;-1:-1:-1;;;;;26558:19:0;;26523:32;26558:19;;;:6;:19;;;;;:33;;;26406:106;;-1:-1:-1;26606:51:0;;;26602:92;;-1:-1:-1;26681:1:0;;26203:569;-1:-1:-1;;;26203:569:0:o;26602:92::-;26711:53;:23;26739:24;26711:27;:53::i;:::-;26704:60;26203:569;-1:-1:-1;;;;26203:569:0:o;9907:83::-;4131:4;4166:5;-1:-1:-1;;;;;4166:5:0;4026:10;4155:16;4010:38;;;;-1:-1:-1;;;4010:38:0;;;;;;;:::i;:::-;;;;;;;;;9961:14:::1;:21:::0;;-1:-1:-1;;;;9961:21:0::1;-1:-1:-1::0;;;9961:21:0::1;::::0;;9907:83::o;14120:649::-;4131:4;4166:5;-1:-1:-1;;;;;4166:5:0;4026:10;4155:16;4010:38;;;;-1:-1:-1;;;4010:38:0;;;;;;;:::i;:::-;14254:13:::1;14295:5;14287:4;14271:13;10178:12:::0;;;10098:100;14271:13:::1;:20;;;;:::i;:::-;14270:30;;;;:::i;:::-;14254:46;;14311:19;14360:5;14350:6;14334:13;10178:12:::0;;;10098:100;14334:13:::1;:22;;;;:::i;:::-;14333:32;;;;:::i;:::-;14311:54;;14376:17;14424:5;14413:7;14397:13;10178:12:::0;;;10098:100;14397:13:::1;:23;;;;:::i;:::-;14396:33;;;;:::i;:::-;14440:12;:20:::0;;;14471:14:::1;:28:::0;;;14510:15:::1;:27:::0;;;14376:53;-1:-1:-1;;14564:30:0::1;14589:4;14564:20;14582:1;14564:13;10178:12:::0;;;10098:100;14564:13:::1;:17:::0;::::1;:20::i;:::-;:24:::0;::::1;:30::i;:::-;14548:46;;14636:5;14627;:14;;:38;;;;;14660:5;14645:11;:20;;14627:38;:60;;;;;14682:5;14669:9;:18;;14627:60;14605:156;;;::::0;-1:-1:-1;;;14605:156:0;;6432:2:1;14605:156:0::1;::::0;::::1;6414:21:1::0;6471:2;6451:18;;;6444:30;6510:34;6490:18;;;6483:62;-1:-1:-1;;;6561:18:1;;;6554:44;6615:19;;14605:156:0::1;6230:410:1::0;14605:156:0::1;14243:526;;;;14120:649:::0;;;:::o;10924:124::-;4131:4;4166:5;-1:-1:-1;;;;;4166:5:0;4026:10;4155:16;4010:38;;;;-1:-1:-1;;;4010:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11008:21:0;;;::::1;;::::0;;;:11:::1;:21;::::0;;;;:32;;-1:-1:-1;;11008:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;10924:124::o;27172:278::-;4131:4;4166:5;-1:-1:-1;;;;;4166:5:0;4026:10;4155:16;4010:38;;;;-1:-1:-1;;;4010:38:0;;;;;;;:::i;:::-;27332:9:::1;:22:::0;;;;27365:15:::1;:34:::0;27410:14:::1;:32:::0;27172:278::o;10206:119::-;-1:-1:-1;;;;;10299:18:0;10272:7;10299:18;;;:9;:18;;;;;;;10206:119::o;4187:139::-;4131:4;4166:5;-1:-1:-1;;;;;4166:5:0;4026:10;4155:16;4010:38;;;;-1:-1:-1;;;4010:38:0;;;;;;;:::i;:::-;4268:1:::1;4252:18:::0;;-1:-1:-1;;;;;;4252:18:0::1;::::0;;4286:32:::1;::::0;1543:51:1;;;4286:32:0::1;::::0;1531:2:1;1516:18;4286:32:0::1;;;;;;;4187:139::o:0;13799:313::-;4131:4;4166:5;-1:-1:-1;;;;;4166:5:0;4026:10;4155:16;4010:38;;;;-1:-1:-1;;;4010:38:0;;;;;;;:::i;:::-;13922:4:::1;::::0;-1:-1:-1;;;;;13902:25:0;;::::1;13922:4:::0;::::1;13902:25;::::0;::::1;::::0;:73:::1;;-1:-1:-1::0;13968:6:0::1;::::0;-1:-1:-1;;;;;13948:27:0;;::::1;13968:6:::0;::::1;13948:27;;13902:73;:119;;;;-1:-1:-1::0;;;;;;13996:25:0;::::1;14016:4;13996:25;;13902:119;13880:187;;;::::0;-1:-1:-1;;;13880:187:0;;6847:2:1;13880:187:0::1;::::0;::::1;6829:21:1::0;6886:2;6866:18;;;6859:30;-1:-1:-1;;;6905:18:1;;;6898:48;6963:18;;13880:187:0::1;6645:342:1::0;13880:187:0::1;-1:-1:-1::0;;;;;14078:15:0;;;::::1;;::::0;;;:5:::1;:15;::::0;;;;:26;;-1:-1:-1;;14078:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13799:313::o;25129:140::-;4131:4;4166:5;-1:-1:-1;;;;;4166:5:0;4026:10;4155:16;4010:38;;;;-1:-1:-1;;;4010:38:0;;;;;;;:::i;:::-;25215:46:::1;::::0;-1:-1:-1;;;25215:46:0;;25241:10:::1;25215:46;::::0;::::1;7166:51:1::0;7233:18;;;7226:34;;;-1:-1:-1;;;;;25215:25:0;::::1;::::0;::::1;::::0;7139:18:1;;25215:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25129:140:::0;;:::o;23138:1703::-;23291:12;:19;23336:10;23264:24;23361:21;;;23357:60;;23399:7;;23138:1703;;;:::o;23357:60::-;23427:15;23457;23475:9;23560:10;23495:18;23550:21;;;:9;:21;;;;;;;;;23587:14;:26;;;;;;23457:27;;-1:-1:-1;23495:18:0;;23587:26;;23582:1252;;23630:508;23647:3;23637:7;:13;:46;;;;;23667:16;23654:10;:29;23637:46;23630:508;;;23724:16;23708:12;;:32;23704:97;;23780:1;23765:12;:16;23704:97;23823:44;23840:12;23853;;23840:26;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;23840:26:0;23823:16;:44::i;:::-;23819:138;;;23892:45;23910:12;23923;;23910:26;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;23910:26:0;23892:17;:45::i;:::-;23985:35;23997:22;24009:9;23997:7;;:11;:22::i;:::-;23985:7;;:11;:35::i;:::-;23975:45;;24049:9;24077:12;:14;;24039:19;;-1:-1:-1;24077:12:0;:14;;;:::i;:::-;;;;;;24110:12;;;;;:::i;:::-;;;;23630:508;;;23582:1252;;;24170:14;24187:23;24205:4;24187:17;:23::i;:::-;-1:-1:-1;;;;;24247:19:0;;;;;;:9;:19;;;;;;24170:40;;-1:-1:-1;24247:32:0;;24271:7;24247:23;:32::i;:::-;-1:-1:-1;;;;;24225:19:0;;;;;;:9;:19;;;;;:54;24318:21;24332:7;24318:11;:21;:::i;:::-;24304:10;24294:21;;;;:9;:21;;;;;:45;24358:10;;24354:469;;24408:16;;:28;;24429:6;24408:20;:28::i;:::-;24389:16;:47;24462:6;;24455:37;;-1:-1:-1;;;24455:37:0;;-1:-1:-1;;;;;7184:32:1;;;24455:37:0;;;7166:51:1;7233:18;;;7226:34;;;24462:6:0;;;;24455:23;;7139:18:1;;24455:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;24511:23:0;;;;;;:17;:23;;;;;;;;24537:15;24511:41;;24600:6;:12;;;;;:26;;;:78;;24653:6;24600:30;:78::i;:::-;-1:-1:-1;;;;;24571:12:0;;;;;;:6;:12;;;;;:26;;;:107;;;;24769:19;24726:81;;:20;:81::i;:::-;-1:-1:-1;;;;;24697:12:0;;;;;;:6;:12;;;;;:26;;:110;24354:469;24155:679;23582:1252;23253:1588;;;;;;23138:1703;;;:::o;11255:154::-;11314:7;11341:60;11379:21;11397:1;11379:9;:21::i;:::-;11341:33;11358:15;8508:42;11358:9;:15::i;:::-;11341:12;;;:16;:33::i;:::-;:37;;:60::i;:::-;11334:67;;11255:154;:::o;8385:82::-;8430:29;8448:10;8430:17;:29::i;:::-;8385:82::o;10333:197::-;10438:4;10460:40;10470:10;10482:9;10493:6;10460:9;:40::i;21351:284::-;4131:4;4166:5;-1:-1:-1;;;;;4166:5:0;4026:10;4155:16;4010:38;;;;-1:-1:-1;;;4010:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21460:22:0;::::1;;::::0;;;:14:::1;:22;::::0;;;;:31;;-1:-1:-1;;21460:31:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;21502:126:::1;;21529:19;21538:6;21546:1;21529:8;:19::i;:::-;21351:284:::0;;:::o;21502:126::-:1;21581:35;21590:6;21598:17;21608:6;21598:9;:17::i;:::-;21581:8;:35::i;13027:764::-:0;4131:4;4166:5;-1:-1:-1;;;;;4166:5:0;4026:10;4155:16;4010:38;;;;-1:-1:-1;;;4010:38:0;;;;;;;:::i;:::-;13300:12:::1;:25:::0;;;13336:12:::1;:25:::0;;;13372:7:::1;:15:::0;;;13398:10:::1;:21:::0;;;13430:14:::1;:29:::0;;;13470:8:::1;:17:::0;;;13498:7:::1;:15:::0;;;13524:11:::1;:20:::0;;;13589:11:::1;::::0;:18:::1;::::0;13605:1:::1;13589:15;:18::i;:::-;13577:8;;:30;;:80;;;;-1:-1:-1::0;13639:11:0::1;::::0;:18:::1;::::0;13655:1:::1;13639:15;:18::i;:::-;13628:7;;:29;;13577:80;:134;;;;-1:-1:-1::0;13693:11:0::1;::::0;:18:::1;::::0;13709:1:::1;13693:15;:18::i;:::-;13678:11;;:33;;13577:134;13555:228;;;::::0;-1:-1:-1;;;13555:228:0;;8125:2:1;13555:228:0::1;::::0;::::1;8107:21:1::0;8164:2;8144:18;;;8137:30;8203:34;8183:18;;;8176:62;-1:-1:-1;;;8254:18:1;;;8247:42;8306:19;;13555:228:0::1;7923:408:1::0;13555:228:0::1;13027:764:::0;;;;;;;;:::o;4334:136::-;4131:4;4166:5;-1:-1:-1;;;;;4166:5:0;4026:10;4155:16;4010:38;;;;-1:-1:-1;;;4010:38:0;;;;;;;:::i;:::-;4410:5:::1;:11:::0;;-1:-1:-1;;;;;;4410:11:0::1;-1:-1:-1::0;;;;;4410:11:0;::::1;::::0;;::::1;::::0;;;4437:25:::1;::::0;1543:51:1;;;4437:25:0::1;::::0;1531:2:1;1516:18;4437:25:0::1;;;;;;;4334:136:::0;:::o;20974:369::-;-1:-1:-1;;;;;21101:19:0;;21093:68;;;;-1:-1:-1;;;21093:68:0;;8754:2:1;21093:68:0;;;8736:21:1;8793:2;8773:18;;;8766:30;8832:34;8812:18;;;8805:62;-1:-1:-1;;;8883:18:1;;;8876:34;8927:19;;21093:68:0;8552:400:1;21093:68:0;-1:-1:-1;;;;;21180:21:0;;21172:68;;;;-1:-1:-1;;;21172:68:0;;9159:2:1;21172:68:0;;;9141:21:1;9198:2;9178:18;;;9171:30;9237:34;9217:18;;;9210:62;-1:-1:-1;;;9288:18:1;;;9281:32;9330:19;;21172:68:0;8957:398:1;21172:68:0;-1:-1:-1;;;;;21251:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;21303:32;;1361:25:1;;;21303:32:0;;1334:18:1;21303:32:0;;;;;;;20974:369;;;:::o;11973:1046::-;12096:37;12107:6;12115:9;12126:6;12096:10;:37::i;:::-;12144:38;12164:6;12172:9;12144:19;:38::i;:::-;12193:41;12208:6;12216:9;12227:6;12193:14;:41::i;:::-;12245:35;12262:6;12270:9;12245:16;:35::i;:::-;12291:39;12304:6;12312:9;12323:6;12291:12;:39::i;:::-;12341:27;12350:6;12358:9;12341:8;:27::i;:::-;-1:-1:-1;;;;;12399:17:0;;;;;;:9;:17;;;;;;:29;;12421:6;12399:21;:29::i;:::-;-1:-1:-1;;;;;12379:17:0;;;;;;:9;:17;;;;;:49;;;;12464:32;12389:6;12486:9;12464:13;:32::i;:::-;:104;;12562:6;12464:104;;;12512:34;12520:6;12528:9;12539:6;12512:7;:34::i;:::-;-1:-1:-1;;;;;12602:20:0;;;;;;:9;:20;;;;;;12439:129;;-1:-1:-1;12602:40:0;;12439:129;12602:24;:40::i;:::-;-1:-1:-1;;;;;12579:20:0;;;;;;;:9;:20;;;;;;;:63;;;;12658:43;;;;;;;;;;12686:14;1361:25:1;;1349:2;1334:18;;1215:177;12658:43:0;;;;;;;;-1:-1:-1;;;;;12717:22:0;;;;;;:14;:22;;;;;;;;12712:91;;12756:35;12765:6;12773:17;12783:6;12773:9;:17::i;12756:35::-;-1:-1:-1;;;;;12818:25:0;;;;;;:14;:25;;;;;;;;12813:100;;12860:41;12869:9;12880:20;12890:9;12880;:20::i;12860:41::-;-1:-1:-1;;;;;12927:17:0;;12954:1;12927:17;;;:6;:17;;;;;:24;:28;12923:89;;12972:28;12990:9;12972:17;:28::i;:::-;12085:934;11973:1046;;;:::o;1988:240::-;2108:7;2169:12;2161:6;;;;2153:29;;;;-1:-1:-1;;;2153:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2204:5:0;;;1988:240::o;26780:209::-;26875:7;26920:61;26951:29;;26920:26;26930:15;;26920:5;:9;;:26;;;;:::i;288:98::-;346:7;373:5;377:1;373;:5;:::i;394:98::-;452:7;479:5;483:1;479;:5;:::i;500:98::-;558:7;585:5;589:1;585;:5;:::i;24849:272::-;25021:9;;-1:-1:-1;;;;;24988:30:0;;24946:4;24988:30;;;:17;:30;;;;;;24946:4;;25033:15;;24988:42;;25021:9;24988:42;:::i;:::-;:60;:125;;;;;25098:15;;25065:30;25083:11;25065:17;:30::i;:::-;:48;24968:145;24849:272;-1:-1:-1;;24849:272:0:o;25507:688::-;-1:-1:-1;;;;;25579:19:0;;;;;;:6;:19;;;;;:26;:31;;25575:70;;25507:688;:::o;25575:70::-;25655:14;25672:30;25690:11;25672:17;:30::i;:::-;25655:47;-1:-1:-1;25717:10:0;;25713:475;;25763:16;;:28;;25784:6;25763:20;:28::i;:::-;25744:16;:47;25813:6;;25806:44;;-1:-1:-1;;;25806:44:0;;-1:-1:-1;;;;;7184:32:1;;;25806:44:0;;;7166:51:1;7233:18;;;7226:34;;;25813:6:0;;;;25806:23;;7139:18:1;;25806:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;25865:30:0;;;;;;:17;:30;;;;;;;;25898:15;25865:48;;25964:6;:19;;;;;:51;;;:81;;26038:6;25964:73;:81::i;:::-;-1:-1:-1;;;;;25928:19:0;;;;;;:6;:19;;;;;:33;;;:117;;;;26135:26;26096:80;;:20;:80::i;:::-;-1:-1:-1;;;;;26060:19:0;;;;;;:6;:19;;;;;:33;;:116;25564:631;25507:688;:::o;182:98::-;240:7;267:5;271:1;267;:5;:::i;21643:546::-;21731:1;21722:6;:10;:45;;;;-1:-1:-1;;;;;;21736:19:0;;;;;;:6;:19;;;;;:26;:31;21722:45;21718:219;;;27096:12;:19;;-1:-1:-1;;;;;27062:31:0;;;;;;:18;:31;;;;;:53;;;27126:30;;;;;;;;;;;;;-1:-1:-1;;;;;;27126:30:0;;;;;;21718:219;;;21833:11;;:45;;;;-1:-1:-1;;;;;;21848:19:0;;21877:1;21848:19;;;:6;:19;;;;;:26;:30;;21833:45;21829:108;;;21895:30;21913:11;21895:17;:30::i;:::-;-1:-1:-1;;;;;21977:19:0;;;;;;:6;:19;;;;;:26;21961:11;;:55;;22009:6;;21961:43;;:15;:43::i;:::-;:47;;:55::i;:::-;21947:11;:69;-1:-1:-1;;;;;22027:19:0;;;;;;:6;:19;;;;;:35;;;22109:72;22056:6;22109:20;:72::i;11417:548::-;-1:-1:-1;;;;;11555:20:0;;11547:70;;;;-1:-1:-1;;;11547:70:0;;9695:2:1;11547:70:0;;;9677:21:1;9734:2;9714:18;;;9707:30;9773:34;9753:18;;;9746:62;-1:-1:-1;;;9824:18:1;;;9817:35;9869:19;;11547:70:0;9493:401:1;11547:70:0;-1:-1:-1;;;;;11636:23:0;;11628:71;;;;-1:-1:-1;;;11628:71:0;;10101:2:1;11628:71:0;;;10083:21:1;10140:2;10120:18;;;10113:30;10179:34;10159:18;;;10152:62;-1:-1:-1;;;10230:18:1;;;10223:33;10273:19;;11628:71:0;9899:399:1;11628:71:0;11749:1;11732:6;:19;11710:110;;;;-1:-1:-1;;;11710:110:0;;10505:2:1;11710:110:0;;;10487:21:1;10544:2;10524:18;;;10517:30;10583:34;10563:18;;;10556:62;-1:-1:-1;;;10634:18:1;;;10627:39;10683:19;;11710:110:0;10303:405:1;11710:110:0;11863:17;11873:6;11863:9;:17::i;:::-;11853:6;:27;;11831:126;;;;-1:-1:-1;;;11831:126:0;;10915:2:1;11831:126:0;;;10897:21:1;10954:2;10934:18;;;10927:30;10993:34;10973:18;;;10966:62;-1:-1:-1;;;11044:18:1;;;11037:47;11101:19;;11831:126:0;10713:413:1;14777:240:0;-1:-1:-1;;;;;14894:19:0;;;;;;:11;:19;;;;;;;;14893:20;:47;;;;-1:-1:-1;;;;;;14918:22:0;;;;;;:11;:22;;;;;;;;14917:23;14893:47;14889:121;;;14965:14;;-1:-1:-1;;;14965:14:0;;;;14957:41;;;;-1:-1:-1;;;14957:41:0;;11333:2:1;14957:41:0;;;11315:21:1;11372:2;11352:18;;;11345:30;-1:-1:-1;;;11391:18:1;;;11384:44;11445:18;;14957:41:0;11131:338:1;15025:489:0;-1:-1:-1;;;;;15178:19:0;;;;;;:11;:19;;;;;;;;15177:20;:60;;;;-1:-1:-1;;;;;;15215:22:0;;;;;;:11;:22;;;;;;;;15214:23;15177:60;:103;;;;-1:-1:-1;15275:4:0;;-1:-1:-1;;;;;15254:26:0;;;15275:4;;15254:26;;15177:103;:146;;;;-1:-1:-1;;;;;;15297:26:0;;8508:42;15297:26;;15177:146;15159:348;;;15414:15;;-1:-1:-1;;;;;15377:20:0;;;;;;:9;:20;;;;;;:32;;15402:6;15377:24;:32::i;:::-;15376:53;;15350:145;;;;-1:-1:-1;;;15350:145:0;;11676:2:1;15350:145:0;;;11658:21:1;11715:2;11695:18;;;11688:30;11754:32;11734:18;;;11727:60;11804:18;;15350:145:0;11474:354:1;15522:185:0;15620:4;;-1:-1:-1;;;;;15607:17:0;;;15620:4;;15607:17;:41;;;;-1:-1:-1;;;;;;15629:19:0;;;;;;:11;:19;;;;;;;;15628:20;15607:41;15603:97;;;15686:1;15665:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;15522:185:0;;:::o;15715:563::-;15861:4;;-1:-1:-1;;;;;15851:14:0;;;15861:4;;15851:14;15847:241;;15918:14;;15908:6;:24;;:68;;;-1:-1:-1;;;;;;15957:19:0;;;;;;:11;:19;;;;;;;;15908:68;:115;;;-1:-1:-1;;;;;;16001:22:0;;;;;;:11;:22;;;;;;;;15908:115;15882:194;;;;-1:-1:-1;;;15882:194:0;;12035:2:1;15882:194:0;;;12017:21:1;12074:2;12054:18;;;12047:30;-1:-1:-1;;;12093:18:1;;;12086:47;12150:18;;15882:194:0;11833:341:1;15882:194:0;16130:12;;16120:6;:22;;:62;;;-1:-1:-1;;;;;;16163:19:0;;;;;;:11;:19;;;;;;;;16120:62;:105;;;-1:-1:-1;;;;;;16203:22:0;;;;;;:11;:22;;;;;;;;16120:105;16098:172;;;;-1:-1:-1;;;16098:172:0;;12035:2:1;16098:172:0;;;12017:21:1;12074:2;12054:18;;;12047:30;-1:-1:-1;;;12093:18:1;;;12086:47;12150:18;;16098:172:0;11833:341:1;18904:212:0;18981:33;18996:6;19004:9;18981:14;:33::i;:::-;18977:132;;;19031:29;19046:13;;19031:14;:29::i;:::-;19095:1;19075:9;:22;18904:212;;:::o;19124:192::-;-1:-1:-1;;;;;19262:19:0;;19232:4;19262:19;;;:11;:19;;;;;;;;19261:20;:47;;;;-1:-1:-1;;;;;;;19286:22:0;;;;;:11;:22;;;;;;;;19285:23;;19124:192;-1:-1:-1;19124:192:0:o;19747:769::-;19867:7;19924:1;19891:30;19903:6;19911:9;19891:11;:30::i;:::-;:34;19887:598;;;19942:17;19962:91;20008:30;20020:6;20028:9;20008:11;:30::i;:::-;19973:11;;19962:23;;:6;;:10;:23::i;:91::-;20113:4;20095:24;;;;:9;:24;;;;;;19942:111;;-1:-1:-1;20095:39:0;;19942:111;20095:28;:39::i;:::-;20086:4;20068:24;;;;:9;:24;;;;;;;:66;;;;20154:42;;-1:-1:-1;;;;;20154:42:0;;;;;;;20186:9;1361:25:1;;1349:2;1334:18;;1215:177;20154:42:0;;;;;;;;20215:7;;:20;20211:220;;20256:159;20296:4;8508:42;20360:36;20388:7;;20360:23;20371:11;;20360:6;:10;;:23;;;;:::i;:36::-;20256:9;:159::i;:::-;20452:21;:6;20463:9;20452:10;:21::i;:::-;20445:28;;;;;19887:598;-1:-1:-1;20502:6:0;19747:769;-1:-1:-1;;19747:769:0:o;27458:340::-;27574:12;27601:19;;:23;;27623:1;;27601:23;:::i;:::-;27574:61;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;27539:31:0;;;;;:18;:31;;;;;;;27526:45;;27574:61;;;;;27526:45;;;;;;:::i;:::-;;;;;;;;;;;;;:109;;-1:-1:-1;;;;;;27526:109:0;-1:-1:-1;;;;;27526:109:0;;;;;;27730:31;;;;;:18;:31;;;;;;;27692:19;;27730:31;;:18;;27526:45;;27692:23;;-1:-1:-1;;27692:23:0;:::i;:::-;27679:37;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;27679:37:0;27646:81;;;;;;;;;;;;;;;:115;;;;27772:18;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;27772:18:0;;;;;-1:-1:-1;;;;;;27772:18:0;;;;;;-1:-1:-1;27458:340:0:o;18453:443::-;18562:4;18584:19;18634:13;;18606:24;18624:4;18606:9;:24::i;:::-;18679:8;;18606:41;-1:-1:-1;18606:41:0;;-1:-1:-1;18679:8:0;;18678:9;:37;;;;-1:-1:-1;18704:11:0;;;;18678:37;:68;;;;-1:-1:-1;18732:14:0;;-1:-1:-1;;;18732:14:0;;;;18678:68;:105;;;;-1:-1:-1;;;;;;18764:19:0;;;;;;:11;:19;;;;;;;;18763:20;18678:105;:145;;;;-1:-1:-1;;;;;;18801:22:0;;;;;;:11;:22;;;;;;;;18800:23;18678:145;:179;;;;-1:-1:-1;18853:4:0;;-1:-1:-1;;;;;18840:17:0;;;18853:4;;18840:17;18678:179;:210;;;;-1:-1:-1;18874:14:0;18658:230;-1:-1:-1;;;18453:443:0:o;16286:1351::-;7573:4;7562:8;;:15;;;;;;;;;;;;;;;;;;16357:20:::1;16380:138;16516:1;16395:105;16475:10;;16395:57;16437:14;;16395:37;16419:12;;16395:19;16412:1;16395:12;;:16;;:19;;;;:::i;16380:138::-;16357:161;;16529:32;16564:66;16607:12;16564:24;16575:12;;16564:6;:10;;:24;;;;:::i;:66::-;16529:101:::0;-1:-1:-1;16641:14:0::1;16658:36;:6:::0;16529:101;16658:10:::1;:36::i;:::-;16641:53:::0;-1:-1:-1;16730:21:0::1;16762:24;16641:53:::0;16762:16:::1;:24::i;:::-;16797:20;16820:41;:21;16846:14:::0;16820:25:::1;:41::i;:::-;16797:64;;16872:19;16894:48;16911:30;16928:12;;16911;:16;;:30;;;;:::i;:::-;16894:12:::0;;:16:::1;:48::i;:::-;16872:70;;16953:29;16985;17001:12;;16985:11;:15;;:29;;;;:::i;:::-;16953:61:::0;-1:-1:-1;17029:34:0;;17025:128:::1;;17080:61;17093:24;17119:21;17080:12;:61::i;:::-;17212:12;::::0;17163:23:::1;::::0;17189:36:::1;::::0;:18:::1;:11:::0;17205:1:::1;17189:15;:18::i;:36::-;17163:62:::0;-1:-1:-1;17240:19:0;;17236:105:::1;;17276:53;::::0;8698:42:::1;::::0;17276:53;::::1;;;::::0;17313:15;;17276:53:::1;::::0;;;17313:15;8698:42;17276:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;17236:105;17398:10;::::0;17351:21:::1;::::0;17375:34:::1;::::0;:18:::1;:11:::0;17391:1:::1;17375:15;:18::i;:34::-;17351:58:::0;-1:-1:-1;17424:17:0;;17420:72:::1;;17458:22;17466:13;17458:7;:22::i;:::-;17506:21;:34:::0;17502:128:::1;;17557:61;::::0;8604:42:::1;::::0;17596:21:::1;17557:61:::0;::::1;;;::::0;::::1;::::0;;;17596:21;8604:42;17557:61;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;17502:128;-1:-1:-1::0;;7600:8:0;:16;;-1:-1:-1;;7600:16:0;;;-1:-1:-1;;;;;;;;16286:1351:0:o;19324:415::-;-1:-1:-1;;;;;19459:13:0;;19430:7;19459:13;;;:5;:13;;;;;;;;;:33;;-1:-1:-1;;;;;;19476:16:0;;;;;;:5;:16;;;;;;;;19459:33;19455:102;;;19516:11;;:29;;19540:3;19516:15;:29::i;:::-;19509:36;;;;19455:102;19584:4;;-1:-1:-1;;;;;19584:4:0;;;19571:17;;;;19567:64;;-1:-1:-1;19612:7:0;;19605:14;;19567:64;19655:4;;-1:-1:-1;;;;;19655:4:0;;;19645:14;;;;19641:62;;-1:-1:-1;19683:8:0;;19676:15;;19641:62;-1:-1:-1;19720:11:0;;19324:415;;;;:::o;18001:444::-;18091:16;;;18105:1;18091:16;;;;;;;;18067:21;;18091:16;;;;;;;;;;-1:-1:-1;18091:16:0;18067:40;;18136:4;18118;18123:1;18118:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18118:23:0;;;:7;;;;;;;;;;:23;;;;18162:6;;:13;;;-1:-1:-1;;;18162:13:0;;;;:6;;;;;:11;;:13;;;;;18118:7;;18162:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18152:4;18157:1;18152:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18152:23:0;;;:7;;;;;;;;;:23;18218:6;;18186:53;;18203:4;;18218:6;18227:11;18186:8;:53::i;:::-;18250:6;;:187;;-1:-1:-1;;;18250:187:0;;-1:-1:-1;;;;;18250:6:0;;;;:57;;:187;;18322:11;;18250:6;;18364:4;;18391;;18411:15;;18250:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18056:389;18001:444;:::o;17645:348::-;17758:6;;17726:53;;17743:4;;-1:-1:-1;;;;;17758:6:0;17767:11;17726:8;:53::i;:::-;17790:6;;:195;;-1:-1:-1;;;17790:195:0;;17853:4;17790:195;;;14093:34:1;14143:18;;;14136:34;;;17790:6:0;14186:18:1;;;14179:34;;;14229:18;;;14222:34;8508:42:0;14272:19:1;;;14265:44;17959:15:0;14325:19:1;;;14318:35;-1:-1:-1;;;;;17790:6:0;;;;:22;;17820:9;;14027:19:1;;17790:195:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17645:348;;:::o;22197:933::-;22284:6;;22277:39;;-1:-1:-1;;;22277:39:0;;22310:4;22277:39;;;1543:51:1;22253:21:0;;-1:-1:-1;;;;;22284:6:0;;22277:24;;1516:18:1;;22277:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22351:16;;;22365:1;22351:16;;;;;;;;22253:63;;-1:-1:-1;22327:21:0;;22351:16;;;;;;;;;;-1:-1:-1;;22388:6:0;;:13;;;-1:-1:-1;;;22388:13:0;;;;22327:40;;-1:-1:-1;;;;;;22388:6:0;;;;:11;;-1:-1:-1;22388:13:0;;;;;;;;;;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22378:4;22383:1;22378:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22378:23:0;;;:7;;;;;;;;;:23;22430:6;;22412:7;;22430:6;;;22412:4;;22430:6;;22412:7;;;;;;:::i;:::-;-1:-1:-1;;;;;22412:25:0;;;:7;;;;;;;;;:25;22448:6;;:140;;-1:-1:-1;;;22448:140:0;;:6;;;:57;;22527:9;;22448:140;;:6;;22551:4;;22565;;22572:15;;22448:140;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22629:6:0;;22647:4;;22622:30;;-1:-1:-1;;;22622:30:0;;-1:-1:-1;;;;;22647:4:0;;;22622:30;;;1543:51:1;22599:20:0;;-1:-1:-1;22629:6:0;;;-1:-1:-1;22622:24:0;;-1:-1:-1;1516:18:1;;22622:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22694:6;;22687:39;;-1:-1:-1;;;22687:39:0;;22720:4;22687:39;;;1543:51:1;22599:53:0;;-1:-1:-1;22663:21:0;;-1:-1:-1;;;;;22694:6:0;;;;22687:24;;1516:18:1;;22687:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22663:63;-1:-1:-1;22737:14:0;22754:32;22663:63;22772:13;22754:17;:32::i;:::-;22737:49;-1:-1:-1;22797:21:0;22821:100;22879:31;:13;22897:12;22879:17;:31::i;:::-;22828:6;;22821:39;;-1:-1:-1;;;22821:39:0;;22854:4;22821:39;;;1543:51:1;-1:-1:-1;;;;;22828:6:0;;;;22821:24;;1516:18:1;;22821:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:100::-;22797:124;-1:-1:-1;22947:43:0;22964:25;:6;22797:124;22964:10;:25::i;:::-;22947:12;;;:16;:43::i;:::-;22932:12;:58;23099:11;;23053:29;;23019:103;;23053:58;;:41;;23087:6;23053:33;:41::i;:58::-;23019:15;;;:19;:103::i;:::-;23001:15;:121;-1:-1:-1;;;;;;;22197:933:0:o;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:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1605:456::-;1682:6;1690;1698;1751:2;1739:9;1730:7;1726:23;1722:32;1719:52;;;1767:1;1764;1757:12;1719:52;1806:9;1793:23;1825:31;1850:5;1825:31;:::i;:::-;1875:5;-1:-1:-1;1932:2:1;1917:18;;1904:32;1945:33;1904:32;1945:33;:::i;:::-;1605:456;;1997:7;;-1:-1:-1;;;2051:2:1;2036:18;;;;2023:32;;1605:456::o;2066:247::-;2125:6;2178:2;2166:9;2157:7;2153:23;2149:32;2146:52;;;2194:1;2191;2184:12;2146:52;2233:9;2220:23;2252:31;2277:5;2252:31;:::i;2507:316::-;2584:6;2592;2600;2653:2;2641:9;2632:7;2628:23;2624:32;2621:52;;;2669:1;2666;2659:12;2621:52;-1:-1:-1;;2692:23:1;;;2762:2;2747:18;;2734:32;;-1:-1:-1;2813:2:1;2798:18;;;2785:32;;2507:316;-1:-1:-1;2507:316:1:o;2828:118::-;2914:5;2907:13;2900:21;2893:5;2890:32;2880:60;;2936:1;2933;2926:12;2951:382;3016:6;3024;3077:2;3065:9;3056:7;3052:23;3048:32;3045:52;;;3093:1;3090;3083:12;3045:52;3132:9;3119:23;3151:31;3176:5;3151:31;:::i;:::-;3201:5;-1:-1:-1;3258:2:1;3243:18;;3230:32;3271:30;3230:32;3271:30;:::i;:::-;3320:7;3310:17;;;2951:382;;;;;:::o;3338:383::-;3415:6;3423;3431;3484:2;3472:9;3463:7;3459:23;3455:32;3452:52;;;3500:1;3497;3490:12;3452:52;3536:9;3523:23;3513:33;;3596:2;3585:9;3581:18;3568:32;3609:31;3634:5;3609:31;:::i;4050:388::-;4118:6;4126;4179:2;4167:9;4158:7;4154:23;4150:32;4147:52;;;4195:1;4192;4185:12;4147:52;4234:9;4221:23;4253:31;4278:5;4253:31;:::i;:::-;4303:5;-1:-1:-1;4360:2:1;4345:18;;4332:32;4373:33;4332:32;4373:33;:::i;4443:661::-;4565:6;4573;4581;4589;4597;4605;4613;4621;4674:3;4662:9;4653:7;4649:23;4645:33;4642:53;;;4691:1;4688;4681:12;4642:53;-1:-1:-1;;4714:23:1;;;4784:2;4769:18;;4756:32;;-1:-1:-1;4835:2:1;4820:18;;4807:32;;4886:2;4871:18;;4858:32;;-1:-1:-1;4937:3:1;4922:19;;4909:33;;-1:-1:-1;4989:3:1;4974:19;;4961:33;;-1:-1:-1;5041:3:1;5026:19;;5013:33;;-1:-1:-1;5093:3:1;5078:19;5065:33;;-1:-1:-1;4443:661:1;-1:-1:-1;4443:661:1:o;5369:329::-;5571:2;5553:21;;;5610:1;5590:18;;;5583:29;-1:-1:-1;;;5643:2:1;5628:18;;5621:36;5689:2;5674:18;;5369:329::o;5703:127::-;5764:10;5759:3;5755:20;5752:1;5745:31;5795:4;5792:1;5785:15;5819:4;5816:1;5809:15;5835:168;5908:9;;;5939;;5956:15;;;5950:22;;5936:37;5926:71;;5977:18;;:::i;6008:217::-;6048:1;6074;6064:132;;6118:10;6113:3;6109:20;6106:1;6099:31;6153:4;6150:1;6143:15;6181:4;6178:1;6171:15;6064:132;-1:-1:-1;6210:9:1;;6008:217::o;7271:245::-;7338:6;7391:2;7379:9;7370:7;7366:23;7362:32;7359:52;;;7407:1;7404;7397:12;7359:52;7439:9;7433:16;7458:28;7480:5;7458:28;:::i;7521:127::-;7582:10;7577:3;7573:20;7570:1;7563:31;7613:4;7610:1;7603:15;7637:4;7634:1;7627:15;7653:135;7692:3;7713:17;;;7710:43;;7733:18;;:::i;:::-;-1:-1:-1;7780:1:1;7769:13;;7653:135::o;7793:125::-;7858:9;;;7879:10;;;7876:36;;;7892:18;;:::i;9360:128::-;9427:9;;;9448:11;;;9445:37;;;9462:18;;:::i;12179:127::-;12240:10;12235:3;12231:20;12228:1;12221:31;12271:4;12268:1;12261:15;12295:4;12292:1;12285:15;12443:251;12513:6;12566:2;12554:9;12545:7;12541:23;12537:32;12534:52;;;12582:1;12579;12572:12;12534:52;12614:9;12608:16;12633:31;12658:5;12633:31;:::i;12699:461::-;12752:3;12790:5;12784:12;12817:6;12812:3;12805:19;12843:4;12872:2;12867:3;12863:12;12856:19;;12909:2;12902:5;12898:14;12930:1;12940:195;12954:6;12951:1;12948:13;12940:195;;;13019:13;;-1:-1:-1;;;;;13015:39:1;13003:52;;13075:12;;;;13110:15;;;;13051:1;12969:9;12940:195;;;-1:-1:-1;13151:3:1;;12699:461;-1:-1:-1;;;;;12699:461:1:o;13165:582::-;13464:6;13453:9;13446:25;13507:6;13502:2;13491:9;13487:18;13480:34;13550:3;13545:2;13534:9;13530:18;13523:31;13427:4;13571:57;13623:3;13612:9;13608:19;13600:6;13571:57;:::i;:::-;-1:-1:-1;;;;;13664:32:1;;;;13659:2;13644:18;;13637:60;-1:-1:-1;13728:3:1;13713:19;13706:35;13563:65;13165:582;-1:-1:-1;;;13165:582:1:o;14364:306::-;14452:6;14460;14468;14521:2;14509:9;14500:7;14496:23;14492:32;14489:52;;;14537:1;14534;14527:12;14489:52;14566:9;14560:16;14550:26;;14616:2;14605:9;14601:18;14595:25;14585:35;;14660:2;14649:9;14645:18;14639:25;14629:35;;14364:306;;;;;:::o;14675:184::-;14745:6;14798:2;14786:9;14777:7;14773:23;14769:32;14766:52;;;14814:1;14811;14804:12;14766:52;-1:-1:-1;14837:16:1;;14675:184;-1:-1:-1;14675:184:1:o;14864:510::-;15135:6;15124:9;15117:25;15178:3;15173:2;15162:9;15158:18;15151:31;15098:4;15199:57;15251:3;15240:9;15236:19;15228:6;15199:57;:::i;:::-;-1:-1:-1;;;;;15292:32:1;;;;15287:2;15272:18;;15265:60;-1:-1:-1;15356:2:1;15341:18;15334:34;15191:65;14864:510;-1:-1:-1;;14864:510:1:o
Swarm Source
ipfs://c53859cdf4ac3e9aa774f76291a853fff20844a4a02ec68ea0bdff42555cb6c2
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.