Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000 $Buff
Holders
27
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
3,800,715.36942241210464554 $BuffValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
OfficialBuffDoge
Compiler Version
v0.8.4+commit.c7e474f2
Optimization Enabled:
Yes with 200 runs
Other Settings:
byzantium EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity ^0.8.4; pragma experimental ABIEncoderV2; import "./utils/IUniswapV2Factory.sol"; import "./utils/IUniswapV2Pair.sol"; import "./utils/IUniswapV2Router02.sol"; import "./utils/IERC20.sol"; import "./utils/TimeLock.sol"; /** * @notice ERC20 token with cost basis tracking and restricted loss-taking */ contract OfficialBuffDoge is IERC20, TimeLock { address private constant UNISWAP_ROUTER = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping(address => uint256) private _basisOf; mapping(address => uint256) public cooldownOf; mapping (address => bool) private _isAllowedTransfer; mapping (address => bool) private _isExcluded; mapping (address => bool) private _blackList; address[] private _excluded; string private _NAME; string private _SYMBOL; uint256 private _DECIMALS; uint256 private constant _MAX = ~uint256(0); uint256 private constant _GRANULARITY = 100; uint256 private constant _maxTeamMintAmount = 1e8 ether; uint256 private _tTotal; uint256 private _rTotal; uint256 private _tFeeTotal; uint256 private _tBurnTotal; uint256 private _tMarketingFeeTotal; uint256 public _TAX_FEE; // 3% uint256 public _BURN_FEE; // 3% uint256 public _MARKET_FEE; // 3% // Track original fees to bypass fees for charity account uint256 private mintedSupply; address private _shoppingCart; address private _rewardWallet; address private _pair; address private _owner; bool private _paused; bool private _isEnableSwapTokenforEth; struct Minting { address recipient; uint amount; } struct StandardFees { uint taxFee; uint rewardFee; uint marketFee; uint taxPenaltyFee; uint rewardPenaltyFee; uint marketPenaltyFee; } StandardFees private _standardFees; mapping(address => address) private _referralOwner; mapping(address => uint256) private _referralOwnerTotalFee; constructor (string memory _name, string memory _symbol, uint256 _decimals, uint256 _supply, address _oldBuff, address[] memory blackList, address[] memory exchangeList) { _owner = msg.sender; _NAME = _name; _SYMBOL = _symbol; _DECIMALS = _decimals; _tTotal =_supply * (10 ** uint256(_DECIMALS)); _rTotal = (_MAX - (_MAX % _tTotal)); // setup uniswap pair and store address _pair = IUniswapV2Factory(IUniswapV2Router02(UNISWAP_ROUTER).factory()) .createPair(IUniswapV2Router02(UNISWAP_ROUTER).WETH(), address(this)); _rOwned[address(this)] = _rTotal; _excludeAccount(msg.sender); _excludeAccount(address(this)); _excludeAccount(_pair); _excludeAccount(UNISWAP_ROUTER); // prepare to add liquidity _approve(address(this), _owner, _rTotal); _paused = true; _isEnableSwapTokenforEth = false; if (blackList.length > 0) { for(uint k = 0; k < blackList.length; k++) { _blackList[blackList[k]] = true; } } for(uint k = 0; k < exchangeList.length; k++) { uint balances = IERC20(_oldBuff).balanceOf(exchangeList[k]); if(balances > 0) { _transfer(address(this), exchangeList[k], balances); } } _transfer(address(this), msg.sender, 40 * 1e7 ether); } modifier isNotPaused() { require(_paused == false, "ERR: paused already"); _; } modifier onlyOwner() { require(_owner == msg.sender, "Ownable: caller is not the owner"); _; } function name() external view returns (string memory) { return _NAME; } function symbol() external view returns (string memory) { return _SYMBOL; } function decimals() external view returns (uint256) { return _DECIMALS; } function totalSupply() external view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) external override returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function allowance(address owner, address spender) external view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) external override returns (bool) { _approve(msg.sender, spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, msg.sender, _allowances[sender][msg.sender] - amount); return true; } function increaseAllowance(address spender, uint256 addedValue) external virtual returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) external virtual returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender] - subtractedValue); return true; } function isExcluded(address account) external view returns (bool) { return _isExcluded[account]; } function totalFees() external view returns (uint256) { return _tFeeTotal; } function totalBurn() external view returns (uint256) { return _tBurnTotal; } function totalMarketingFees() external view returns (uint256) { return _tMarketingFeeTotal; } function checkReferralReward(address referralOwner) external view returns (uint256) { return _referralOwnerTotalFee[referralOwner]; } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) external view returns(uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferFee) { (uint256 rAmount,,,,,,) = _getValues(tAmount); return rAmount; } else { (,uint256 rTransferAmount,,,,,) = _getValues(tAmount); return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); return rAmount / _getRate(); } function excludeAccount(address account) external onlyOwner { _excludeAccount(account); } function _excludeAccount(address account) private { require(!_isExcluded[account], "Account is already excluded"); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); _isAllowedTransfer[account] = true; excludeFromLock(account); } function includeAccount(address account) external onlyOwner { require(_isExcluded[account], "Account is already included"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "TOKEN20: approve from the zero address"); require(spender != address(0), "TOKEN20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function basisOf(address account) public view returns (uint256) { uint256 basis = _basisOf[account]; if (basis == 0 && balanceOf(account) > 0) { basis = 0; } return basis; } function setBusinessWallet(address businessAddress) external onlyOwner isNotPaused returns (bool) { require(businessAddress != address(0), "ERR: zero address"); _shoppingCart = businessAddress; uint256 cartAmount = 5e7 ether; _removeFee(); _transferFromExcluded(address(this), businessAddress, cartAmount); _restoreAllFee(); _excludeAccount(businessAddress); return true; } function setRewardAddress(address rewardAddress) external onlyOwner isNotPaused returns (bool) { require(rewardAddress != address(0), "ERR: zero address"); _rewardWallet = rewardAddress; uint256 burnAmount = 35 * 1e7 ether; _removeFee(); _transferFromExcluded(address(this), rewardAddress, burnAmount); _restoreAllFee(); _excludeAccount(rewardAddress); return true; } function setReferralOwner(address referralUser, address referralOwner) external returns (bool) { require(_referralOwner[referralUser] == address(0), "ERR: address registered already"); require(referralUser != address(0), "ERR: zero address"); require(referralOwner != address(0), "ERR: zero address"); _referralOwner[referralUser] = referralOwner; return true; } function setStandardFee(StandardFees memory _standardFee) external onlyOwner isNotPaused returns (bool) { require (_standardFee.taxFee < 100 && _standardFee.rewardFee < 100 && _standardFee.marketFee < 100, "ERR: Fee is so high"); require ( _standardFee.taxPenaltyFee < 100 && _standardFee.rewardPenaltyFee < 100 && _standardFee.marketPenaltyFee < 100, "ERR: Fee is so high"); _standardFees = _standardFee; return true; } function addBlackList(address blackAddress) external onlyOwner returns (bool) { require(blackAddress != _owner); require(!_blackList[blackAddress]); _blackList[blackAddress] = true; return true; } function removeBlackList(address removeAddress) external onlyOwner returns (bool) { require(_blackList[removeAddress]); require(removeAddress != _owner); _blackList[removeAddress] = false; return true; } function mintDev(Minting[] calldata mintings) external onlyOwner returns (bool) { require(mintings.length > 0, "ERR: zero address array"); _removeFee(); for(uint i = 0; i < mintings.length; i++) { Minting memory m = mintings[i]; require(mintedSupply + m.amount <= _maxTeamMintAmount, "ERR: exceed max team mint amount"); _transferFromExcluded(address(this), m.recipient, m.amount); mintedSupply += m.amount; lockAddress(m.recipient, uint64(180 days)); } _restoreAllFee(); return true; } function pausedEnable() external onlyOwner returns (bool) { require(!_paused, "ERR: already pause enabled"); _paused = true; return true; } function pausedNotEnable() external onlyOwner returns (bool) { require(_paused, "ERR: already pause disabled"); _paused = false; return true; } function swapTokenForEthEnable() external onlyOwner isNotPaused returns (bool) { require(!_isEnableSwapTokenforEth, "ERR: already enabled"); _isEnableSwapTokenforEth = true; return true; } function swapTokenForEthDisable() external onlyOwner isNotPaused returns (bool) { require(_isEnableSwapTokenforEth, "ERR: already disabled"); _isEnableSwapTokenforEth = false; return true; } function checkReferralOwner(address referralUser) external view returns (address) { require(referralUser != address(0), "ERR: zero address"); return _referralOwner[referralUser]; } function checkedTimeLock(address user) external view returns (bool) { return !isUnLocked(user); } function checkAllowedTransfer(address user) external view returns (bool) { return _isAllowedTransfer[user]; } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal { require(!_blackList[from] && !_blackList[to]); // ignore minting and burning if (from == address(0) || to == address(0)) return; // ignore add/remove liquidity if (from == address(this) || to == address(this)) return; if (from == _owner || to == _owner) return; if (from == UNISWAP_ROUTER || to == UNISWAP_ROUTER) return; require( msg.sender == UNISWAP_ROUTER || msg.sender == _pair || msg.sender == _owner || _isAllowedTransfer[from] || _isAllowedTransfer[to], "ERR: sender must be uniswap or shoppingCart" ); address[] memory path = new address[](2); if (from == _pair && !_isExcluded[to]) { require(isUnLocked(to), "ERR: address is locked(buy)"); require( cooldownOf[to] < block.timestamp /* revert message not returned by Uniswap */ ); cooldownOf[to] = block.timestamp + (30 minutes); path[0] = IUniswapV2Router02(UNISWAP_ROUTER).WETH(); path[1] = address(this); uint256[] memory amounts = IUniswapV2Router02(UNISWAP_ROUTER).getAmountsIn(amount, path); uint256 balance = balanceOf(to); uint256 fromBasis = (1 ether) * amounts[0] / amount; _basisOf[to] = (fromBasis * amount + basisOf(to) * balance) / (amount + balance); } else if (to == _pair && !_isExcluded[from]) { require(isUnLocked(from), "ERR: address is locked(sales)"); require( cooldownOf[from] < block.timestamp /* revert message not returned by Uniswap */ ); cooldownOf[from] = block.timestamp + (30 minutes); } } function _transfer(address sender, address recipient, uint256 amount) internal { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); _beforeTokenTransfer(sender, recipient, amount); _transferWithFee(sender, recipient, amount); emit Transfer(sender, recipient, amount); } function _transferWithFee( address sender, address recipient, uint256 amount ) private returns (bool) { uint liquidityBalance = balanceOf(_pair); if(sender == _pair && !_isAllowedTransfer[recipient]) { require(amount <= liquidityBalance / 100, "ERR: Exceed the 1% of current liquidity balance"); _restoreAllFee(); } else if(recipient == _pair && !_isAllowedTransfer[sender]) { require(_isEnableSwapTokenforEth, "ERR: disabled swap"); require(amount <= liquidityBalance / 100, "ERR: Exceed the 1% of current liquidity balance"); address[] memory path = new address[](2); path[0] = address(this); path[1] = IUniswapV2Router02(UNISWAP_ROUTER).WETH(); uint[] memory amounts = IUniswapV2Router02(UNISWAP_ROUTER).getAmountsOut( amount, path ); if (basisOf(sender) <= (1 ether) * amounts[1] / amount) { _restoreAllFee(); } else { _setPenaltyFee(); } } else { _removeFee(); } if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { if(recipient == _pair) { _transferToExcludedForSale(sender, recipient, amount); } else { _transferToExcluded(sender, recipient, amount); } } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } _restoreAllFee(); return true; } function _transferStandard(address sender, address recipient, uint256 tAmount) private { uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tMarket) = _getValues(tAmount); uint256 rBurn = tBurn * currentRate; uint256 rMarket = tMarket * currentRate; _standardTransferContent(sender, recipient, rAmount, rTransferAmount); if (tMarket > 0) { _sendToBusinees(tMarket, sender, recipient); } if (tBurn > 0) { _sendToBurn(tBurn, sender); } _reflectFee(rFee, rBurn, rMarket, tFee, tBurn, tMarket); emit Transfer(sender, recipient, tTransferAmount); } function _standardTransferContent(address sender, address recipient, uint256 rAmount, uint256 rTransferAmount) private { _rOwned[sender] = _rOwned[sender] - rAmount; _rOwned[recipient] = _rOwned[recipient] + rTransferAmount; } function _transferToExcluded(address sender, address recipient, uint256 tAmount) private { uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tMarket) = _getValues(tAmount); uint256 rBurn = tBurn * currentRate; uint256 rMarket = tMarket * currentRate; _excludedFromTransferContent(sender, recipient, tTransferAmount, rAmount, rTransferAmount); if (tMarket > 0) { _sendToBusinees(tMarket, sender, recipient); } if (tBurn > 0) { _sendToBurn(tBurn, sender); } _reflectFee(rFee, rBurn, rMarket, tFee, tBurn, tMarket); emit Transfer(sender, recipient, tTransferAmount); } function _excludedFromTransferContent(address sender, address recipient, uint256 tTransferAmount, uint256 rAmount, uint256 rTransferAmount) private { _rOwned[sender] = _rOwned[sender] - rAmount; _tOwned[recipient] = _tOwned[recipient] + tTransferAmount; _rOwned[recipient] = _rOwned[recipient] + rTransferAmount; } function _transferToExcludedForSale(address sender, address recipient, uint256 tAmount) private { uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tMarket) = _getValuesForSale(tAmount); uint256 rBurn = tBurn * currentRate; uint256 rMarket = tMarket * currentRate; _excludedFromTransferContentForSale(sender, recipient, tAmount, rAmount, rTransferAmount); if (tMarket > 0) { _sendToBusinees(tMarket, sender, recipient); } if (tBurn > 0) { _sendToBurn(tBurn, sender); } _reflectFee(rFee, rBurn, rMarket, tFee, tBurn, tMarket); emit Transfer(sender, recipient, tTransferAmount); } function _excludedFromTransferContentForSale(address sender, address recipient, uint256 tAmount, uint256 rAmount, uint256 rTransferAmount) private { _rOwned[sender] = _rOwned[sender] - rTransferAmount; _tOwned[recipient] = _tOwned[recipient] + tAmount; _rOwned[recipient] = _rOwned[recipient] + rAmount; } function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private { uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tMarket) = _getValues(tAmount); uint256 rBurn = tBurn * currentRate; uint256 rMarket = tMarket * currentRate; _excludedToTransferContent(sender, recipient, tAmount, rAmount, rTransferAmount); if (tMarket > 0) { _sendToBusinees(tMarket, sender, recipient); } if (tBurn > 0) { _sendToBurn(tBurn, sender); } _reflectFee(rFee, rBurn, rMarket, tFee, tBurn, tMarket); emit Transfer(sender, recipient, tTransferAmount); } function _excludedToTransferContent(address sender, address recipient, uint256 tAmount, uint256 rAmount, uint256 rTransferAmount) private { _tOwned[sender] = _tOwned[sender] - tAmount; _rOwned[sender] = _rOwned[sender] - rAmount; _rOwned[recipient] = _rOwned[recipient] + rTransferAmount; } function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private { uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tMarket) = _getValues(tAmount); uint256 rBurn = tBurn * currentRate; uint256 rMarket = tMarket * currentRate; _bothTransferContent(sender, recipient, tAmount, rAmount, tTransferAmount, rTransferAmount); if (tMarket > 0) { _sendToBusinees(tMarket, sender, recipient); } if (tBurn > 0) { _sendToBurn(tBurn, sender); } _reflectFee(rFee, rBurn, rMarket, tFee, tBurn, tMarket); emit Transfer(sender, recipient, tTransferAmount); } function _bothTransferContent(address sender, address recipient, uint256 tAmount, uint256 rAmount, uint256 tTransferAmount, uint256 rTransferAmount) private { _tOwned[sender] = _tOwned[sender] - tAmount; _rOwned[sender] = _rOwned[sender] - rAmount; _tOwned[recipient] = _tOwned[recipient] + tTransferAmount; _rOwned[recipient] = _rOwned[recipient] + rTransferAmount; } function _reflectFee(uint256 rFee, uint256 rBurn, uint256 rMarket, uint256 tFee, uint256 tBurn, uint256 tMarket) private { _rTotal = _rTotal - rFee - rBurn - rMarket; _tFeeTotal = _tFeeTotal + tFee; _tBurnTotal = _tBurnTotal + tBurn; _tMarketingFeeTotal = _tMarketingFeeTotal + tMarket; } function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tFee, uint256 tBurn, uint256 tMarket) = _getTBasics(tAmount, _TAX_FEE, _BURN_FEE, _MARKET_FEE); uint256 tTransferAmount = getTTransferAmount(tAmount, tFee, tBurn, tMarket); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rFee) = _getRBasics(tAmount, tFee, currentRate); uint256 rTransferAmount = _getRTransferAmount(rAmount, rFee, tBurn, tMarket, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tBurn, tMarket); } function _getValuesForSale(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tFee, uint256 tBurn, uint256 tMarket) = _getTBasics(tAmount, _TAX_FEE, _BURN_FEE, _MARKET_FEE); uint256 tTransferAmountForSale = getTTransferAmountForSale(tAmount, tFee, tBurn, tMarket); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rFee) = _getRBasics(tAmount, tFee, currentRate); uint256 rTransferAmountForSale = _getRTransferAmountForSale(rAmount, rFee, tBurn, tMarket, currentRate); return (rAmount, rTransferAmountForSale, rFee, tTransferAmountForSale, tFee, tBurn, tMarket); } function _getTBasics(uint256 tAmount, uint256 taxFee, uint256 burnFee, uint256 marketFee) private pure returns (uint256, uint256, uint256) { uint256 tFee = (tAmount * taxFee) / _GRANULARITY / 100; uint256 tBurn = (tAmount * burnFee) / _GRANULARITY / 100; uint256 tMarket = (tAmount * marketFee) / _GRANULARITY / 100; return (tFee, tBurn, tMarket); } function getTTransferAmount(uint256 tAmount, uint256 tFee, uint256 tBurn, uint256 tMarket) private pure returns (uint256) { return tAmount - tFee - tBurn - tMarket; } function getTTransferAmountForSale(uint256 tAmount, uint256 tFee, uint256 tBurn, uint256 tMarket) private pure returns (uint256) { return tAmount + tFee + tBurn + tMarket; } function _getRBasics(uint256 tAmount, uint256 tFee, uint256 currentRate) private pure returns (uint256, uint256) { uint256 rAmount = tAmount * currentRate; uint256 rFee = tFee * currentRate; return (rAmount, rFee); } function _getRTransferAmount(uint256 rAmount, uint256 rFee, uint256 tBurn, uint256 tMarket, uint256 currentRate) private pure returns (uint256) { uint256 rBurn = tBurn * currentRate; uint256 rMarket = tMarket * currentRate; uint256 rTransferAmount = rAmount - rFee - rBurn - rMarket; return rTransferAmount; } function _getRTransferAmountForSale(uint256 rAmount, uint256 rFee, uint256 tBurn, uint256 tMarket, uint256 currentRate) private pure returns (uint256) { uint256 rBurn = tBurn * currentRate; uint256 rMarket = tMarket * currentRate; uint256 rTransferAmountForSale = rAmount + rFee + rBurn + rMarket; return rTransferAmountForSale; } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply / tSupply; } function _getCurrentSupply() private view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply - _rOwned[_excluded[i]]; tSupply = tSupply - _tOwned[_excluded[i]]; } if (rSupply < _rTotal / _tTotal) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _sendToBusinees(uint256 tMarket, address sender, address recipient) private { uint256 currentRate = _getRate(); uint256 rMarket = tMarket * currentRate; if(sender == _pair && _referralOwner[recipient] != address(0)) { _sendToReferralOwner(tMarket, rMarket, _referralOwner[recipient]); emit Transfer(sender, _referralOwner[recipient], tMarket); } else { _rOwned[_shoppingCart] = _rOwned[_shoppingCart] + rMarket; _tOwned[_shoppingCart] = _tOwned[_shoppingCart] + tMarket; emit Transfer(sender, _shoppingCart, tMarket); } } function _sendToBurn(uint256 tBurn, address sender) private { uint256 currentRate = _getRate(); uint256 rBurn = tBurn * currentRate; _rOwned[_rewardWallet] = _rOwned[_rewardWallet] + rBurn; _tOwned[_rewardWallet] = _tOwned[_rewardWallet] + rBurn; emit Transfer(sender, _rewardWallet, tBurn); } function _sendToReferralOwner(uint256 tMarket, uint256 rMarket, address owner) private { if(_isExcluded[owner]) { _rOwned[owner] = _rOwned[owner] + rMarket; _tOwned[owner] = _tOwned[owner] + tMarket; } else { _rOwned[owner] = _rOwned[owner] + rMarket; } _referralOwnerTotalFee[owner] += tMarket; } function _removeFee() private { if(_TAX_FEE == 0 && _BURN_FEE == 0 && _MARKET_FEE == 0) return; _TAX_FEE = 0; _BURN_FEE = 0; _MARKET_FEE = 0; } function _restoreAllFee() private { _TAX_FEE = _standardFees.taxFee * 100; _BURN_FEE = _standardFees.rewardFee * 100; _MARKET_FEE = _standardFees.marketFee * 100; } function _setPenaltyFee() private { _TAX_FEE = _standardFees.taxPenaltyFee * 100; _BURN_FEE = _standardFees.rewardPenaltyFee * 100; _MARKET_FEE = _standardFees.marketPenaltyFee * 100; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity ^0.8.4; interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity ^0.8.4; interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity ^0.8.4; interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity ^0.8.4; import './IUniswapV2Router01.sol'; interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity ^0.8.4; abstract contract TimeLock { struct LockedAddress { uint64 lockedPeriod; uint64 endTime; } mapping(address => LockedAddress) private _lockedList; mapping (address => bool) private _isExlcludeFromLock; constructor () { } function lockAddress(address _lockAddress, uint64 lockTime) internal virtual { require(_lockAddress != address(0), "ERR: zero lock address"); require(lockTime > 0, "ERR: zero lock period"); if (!_isExlcludeFromLock[_lockAddress]) { _lockedList[_lockAddress].lockedPeriod = lockTime; _lockedList[_lockAddress].endTime = uint64(block.timestamp) + lockTime; } } function isUnLocked(address _lockAddress) internal view virtual returns (bool) { require(_lockAddress != address(0), "ERR: zero lock address"); if (_isExlcludeFromLock[_lockAddress]) return true; return _lockedList[_lockAddress].endTime < uint64(block.timestamp); } function excludeFromLock(address _lockAddress) internal virtual { require(_lockAddress != address(0), "ERR: zero lock address"); if (_isExlcludeFromLock[_lockAddress]) return; _isExlcludeFromLock[_lockAddress] = true; } }
{ "remappings": [], "optimizer": { "enabled": true, "runs": 200 }, "evmVersion": "byzantium", "libraries": {}, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint256","name":"_decimals","type":"uint256"},{"internalType":"uint256","name":"_supply","type":"uint256"},{"internalType":"address","name":"_oldBuff","type":"address"},{"internalType":"address[]","name":"blackList","type":"address[]"},{"internalType":"address[]","name":"exchangeList","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"_BURN_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_MARKET_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_TAX_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"blackAddress","type":"address"}],"name":"addBlackList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"address","name":"account","type":"address"}],"name":"basisOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"checkAllowedTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"referralUser","type":"address"}],"name":"checkReferralOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"referralOwner","type":"address"}],"name":"checkReferralReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"checkedTimeLock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"cooldownOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct OfficialBuffDoge.Minting[]","name":"mintings","type":"tuple[]"}],"name":"mintDev","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pausedEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pausedNotEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"removeAddress","type":"address"}],"name":"removeBlackList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"businessAddress","type":"address"}],"name":"setBusinessWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"referralUser","type":"address"},{"internalType":"address","name":"referralOwner","type":"address"}],"name":"setReferralOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"rewardAddress","type":"address"}],"name":"setRewardAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"taxFee","type":"uint256"},{"internalType":"uint256","name":"rewardFee","type":"uint256"},{"internalType":"uint256","name":"marketFee","type":"uint256"},{"internalType":"uint256","name":"taxPenaltyFee","type":"uint256"},{"internalType":"uint256","name":"rewardPenaltyFee","type":"uint256"},{"internalType":"uint256","name":"marketPenaltyFee","type":"uint256"}],"internalType":"struct OfficialBuffDoge.StandardFees","name":"_standardFee","type":"tuple"}],"name":"setStandardFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokenForEthDisable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokenForEthEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalMarketingFees","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"}]
Contract Creation Code
60806040523480156200001157600080fd5b50604051620070ca380380620070ca833981016040819052620000349162002f70565b601a8054600160a060020a0319163317905586516200005b90600b9060208a019062002ce3565b5085516200007190600c90602089019062002ce3565b50600d8590556200008485600a62003184565b62000090908562003241565b600e819055620000a390600019620032f1565b620000b19060001962003263565b600f819055506000805160206200708a833981519152600160a060020a031663c45a01556040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156200011c57600080fd5b505afa15801562000131573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000157919062002eb4565b600160a060020a031663c9c653966000805160206200708a833981519152600160a060020a031663ad5c46486040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b158015620001ca57600080fd5b505afa158015620001df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000205919062002eb4565b6040517c010000000000000000000000000000000000000000000000000000000063ffffffff8416028152600160a060020a039091166004820152306024820152604401602060405180830381600087803b1580156200026457600080fd5b505af115801562000279573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029f919062002eb4565b60198054600160a060020a031916600160a060020a0392909216919091179055600f5430600090815260026020526040902055620002e633640100000000620005d3810204565b620002fa30640100000000620005d3810204565b6019546200031a90600160a060020a0316640100000000620005d3810204565b6200033d6000805160206200708a833981519152640100000000620005d3810204565b601a54600f5462000365913091600160a060020a039091169064010000000062000751810204565b601a805460a060020a61ffff021916740100000000000000000000000000000000000000001790558151156200042b5760005b82518110156200042957600160096000858481518110620003e2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff1916911515919091179055806200042081620032d3565b91505062000398565b505b60005b8151811015620005a357600084600160a060020a03166370a0823184848151811062000483577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401620004d39190600160a060020a0391909116815260200190565b60206040518083038186803b158015620004ec57600080fd5b505afa15801562000501573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200052791906200304a565b905080156200058d576200058d308484815181106200056f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015183620008e2640100000000026401000000009004565b50806200059a81620032d3565b9150506200042e565b50620005c630336b014adf4b7320334b90000000640100000000620008e2810204565b5050505050505062003395565b600160a060020a03811660009081526008602052604090205460ff16156200065c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064015b60405180910390fd5b600160a060020a03811660009081526002602052604090205415620006c257600160a060020a038116600090815260026020526040902054620006a89064010000000062000b06810204565b600160a060020a0382166000908152600360205260409020555b600160a060020a03811660008181526008602090815260408083208054600160ff199182168117909255600a80548084019091557fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8018054600160a060020a031916909617909555600790925290912080549092161790556200074e8164010000000062000bc1810204565b50565b600160a060020a038316620007e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f544f4b454e32303a20617070726f76652066726f6d20746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840162000653565b600160a060020a03821662000880576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f544f4b454e32303a20617070726f766520746f20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840162000653565b600160a060020a0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600160a060020a0383166200097a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840162000653565b600160a060020a03821662000a12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840162000653565b6000811162000aa4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f0000000000000000000000000000000000000000000000606482015260840162000653565b62000aba83838364010000000062000c7f810204565b62000ad0838383640100000000620013d1810204565b5081600160a060020a031683600160a060020a0316600080516020620070aa83398151915283604051620008d591815260200190565b6000600f5482111562000b9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201527f65666c656374696f6e7300000000000000000000000000000000000000000000606482015260840162000653565b62000baf64010000000062001aee810204565b62000bbb908362003122565b92915050565b600160a060020a03811662000c33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4552523a207a65726f206c6f636b206164647265737300000000000000000000604482015260640162000653565b600160a060020a03811660009081526001602052604090205460ff161562000c585750565b600160a060020a03166000908152600160208190526040909120805460ff19169091179055565b600160a060020a03831660009081526009602052604090205460ff1615801562000cc25750600160a060020a03821660009081526009602052604090205460ff16155b62000ccc57600080fd5b600160a060020a038316158062000cea5750600160a060020a038216155b1562000cf557505050565b600160a060020a03831630148062000d155750600160a060020a03821630145b1562000d2057505050565b601a54600160a060020a038481169116148062000d4a5750601a54600160a060020a038381169116145b1562000d5557505050565b600160a060020a0383166000805160206200708a833981519152148062000d935750600160a060020a0382166000805160206200708a833981519152145b1562000d9e57505050565b336000805160206200708a833981519152148062000dc65750601954600160a060020a031633145b8062000ddc5750601a54600160a060020a031633145b8062000e005750600160a060020a03831660009081526007602052604090205460ff165b8062000e245750600160a060020a03821660009081526007602052604090205460ff165b62000eb2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4552523a2073656e646572206d75737420626520756e6973776170206f72207360448201527f686f7070696e6743617274000000000000000000000000000000000000000000606482015260840162000653565b60408051600280825260608201835260009260208301908036833701905050601954909150600160a060020a03858116911614801562000f0b5750600160a060020a03831660009081526008602052604090205460ff16155b15620012c55762000f258364010000000062001b1d810204565b62000f8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4552523a2061646472657373206973206c6f636b656428627579290000000000604482015260640162000653565b600160a060020a038316600090815260066020526040902054421162000fb257600080fd5b62000fc04261070862003107565b600160a060020a0384166000908152600660209081526040918290209290925580517fad5c464800000000000000000000000000000000000000000000000000000000815290516000805160206200708a8339815191529263ad5c46489260048082019391829003018186803b1580156200103a57600080fd5b505afa1580156200104f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001075919062002eb4565b81600081518110620010b0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010190600160a060020a03169081600160a060020a03168152505030816001815181106200110c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600160a060020a03909216602092830291909101909101526040517f1f00ca740000000000000000000000000000000000000000000000000000000081526000906000805160206200708a83398151915290631f00ca749062001176908690869060040162003063565b60006040518083038186803b1580156200118f57600080fd5b505afa158015620011a4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620011ce919081019062002ed8565b90506000620011e68564010000000062001bf1810204565b90506000848360008151811062001226577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151670de0b6b3a764000062001243919062003241565b6200124f919062003122565b90506200125d828662003107565b82620012728864010000000062001c5c810204565b6200127e919062003241565b6200128a878462003241565b62001296919062003107565b620012a2919062003122565b600160a060020a03871660009081526005602052604090205550620013cb915050565b601954600160a060020a038481169116148015620012fc5750600160a060020a03841660009081526008602052604090205460ff16155b15620013cb57620013168464010000000062001b1d810204565b6200137e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4552523a2061646472657373206973206c6f636b65642873616c657329000000604482015260640162000653565b600160a060020a0384166000908152600660205260409020544211620013a357600080fd5b620013b14261070862003107565b600160a060020a0385166000908152600660205260409020555b50505050565b6019546000908190620013f690600160a060020a031664010000000062001bf1810204565b601954909150600160a060020a038681169116148015620014305750600160a060020a03841660009081526007602052604090205460ff16155b15620014dc576200144360648262003122565b831115620014c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201526000805160206200706a83398151915260448201527f717569646974792062616c616e63650000000000000000000000000000000000606482015260840162000653565b620014d664010000000062001ca6810204565b6200190f565b601954600160a060020a038581169116148015620015135750600160a060020a03851660009081526007602052604090205460ff16155b15620018fc57601a547501000000000000000000000000000000000000000000900460ff16620015a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4552523a2064697361626c656420737761700000000000000000000000000000604482015260640162000653565b620015ad60648262003122565b8311156200162d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201526000805160206200706a83398151915260448201527f717569646974792062616c616e63650000000000000000000000000000000000606482015260840162000653565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106200168a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010190600160a060020a03169081600160a060020a0316815250506000805160206200708a833981519152600160a060020a031663ad5c46486040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156200170f57600080fd5b505afa15801562001724573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200174a919062002eb4565b8160018151811062001785577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600160a060020a03909216602092830291909101909101526040517fd06ca61f0000000000000000000000000000000000000000000000000000000081526000906000805160206200708a8339815191529063d06ca61f90620017ef908890869060040162003063565b60006040518083038186803b1580156200180857600080fd5b505afa1580156200181d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001847919081019062002ed8565b9050848160018151811062001885577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151670de0b6b3a7640000620018a2919062003241565b620018ae919062003122565b620018c28864010000000062001c5c810204565b11620018e157620018db64010000000062001ca6810204565b620018f4565b620018f464010000000062001ce1810204565b50506200190f565b6200190f64010000000062001d17810204565b600160a060020a03851660009081526008602052604090205460ff168015620019515750600160a060020a03841660009081526008602052604090205460ff16155b1562001973576200196d85858564010000000062001d4e810204565b62001ad0565b600160a060020a03851660009081526008602052604090205460ff16158015620019b55750600160a060020a03841660009081526008602052604090205460ff165b15620019fe57601954600160a060020a0385811691161415620019e8576200196d85858564010000000062001e67810204565b6200196d85858564010000000062001ee2810204565b600160a060020a03851660009081526008602052604090205460ff1615801562001a415750600160a060020a03841660009081526008602052604090205460ff16155b1562001a5d576200196d85858564010000000062001f5d810204565b600160a060020a03851660009081526008602052604090205460ff16801562001a9e5750600160a060020a03841660009081526008602052604090205460ff165b1562001aba576200196d85858564010000000062001fd7810204565b62001ad085858564010000000062001f5d810204565b62001ae364010000000062001ca6810204565b506001949350505050565b6000808062001b0564010000000062002053810204565b909250905062001b16818362003122565b9250505090565b6000600160a060020a03821662001b91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4552523a207a65726f206c6f636b206164647265737300000000000000000000604482015260640162000653565b600160a060020a03821660009081526001602052604090205460ff161562001bbb57506001919050565b50600160a060020a03166000908152602081905260409020546001604060020a0342811668010000000000000000909204161090565b600160a060020a03811660009081526008602052604081205460ff161562001c2f5750600160a060020a031660009081526003602052604090205490565b600160a060020a03821660009081526002602052604090205462000bbb9064010000000062000b06810204565b600160a060020a0381166000908152600560205260408120548015801562001c975750600062001c958464010000000062001bf1810204565b115b1562000bbb5750600092915050565b601b5462001cb690606462003241565b601355601c5462001cc990606462003241565b601455601d5462001cdc90606462003241565b601555565b601e5462001cf190606462003241565b601355601f5462001d0490606462003241565b60145560205462001cdc90606462003241565b60135415801562001d285750601454155b801562001d355750601554155b1562001d3d57565b600060138190556014819055601555565b600062001d6364010000000062001aee810204565b9050600080808080808062001d818964010000000062002283810204565b96509650965096509650965096506000888362001d9f919062003241565b9050600062001daf8a8462003241565b905062001dc98d8d8d8c8c64010000000062002350810204565b821562001de65762001de6838e8e640100000000620023fd810204565b831562001e025762001e02848e6401000000006200259c810204565b62001e1b8783838888886401000000006200267f810204565b8b600160a060020a03168d600160a060020a0316600080516020620070aa8339815191528860405162001e5091815260200190565b60405180910390a350505050505050505050505050565b600062001e7c64010000000062001aee810204565b9050600080808080808062001e9a89640100000000620026ed810204565b96509650965096509650965096506000888362001eb8919062003241565b9050600062001ec88a8462003241565b905062001dc98d8d8d8c8c6401000000006200279a810204565b600062001ef764010000000062001aee810204565b9050600080808080808062001f158964010000000062002283810204565b96509650965096509650965096506000888362001f33919062003241565b9050600062001f438a8462003241565b905062001dc98d8d888c8c6401000000006200282b810204565b600062001f7264010000000062001aee810204565b9050600080808080808062001f908964010000000062002283810204565b96509650965096509650965096506000888362001fae919062003241565b9050600062001fbe8a8462003241565b905062001dc98d8d8b8b640100000000620028bc810204565b600062001fec64010000000062001aee810204565b905060008080808080806200200a8964010000000062002283810204565b96509650965096509650965096506000888362002028919062003241565b90506000620020388a8462003241565b905062001dc98d8d8d8c8a8d64010000000062002936810204565b600f54600e546000918291825b600a548110156200224f578260026000600a8481548110620020ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000918252602080832090910154600160a060020a0316835282019290925260400190205411806200213f57508160036000600a848154811062002118577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000918252602080832090910154600160a060020a03168352820192909252604001902054115b156200215657600f54600e54945094505050509091565b60026000600a838154811062002195577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000918252602080832090910154600160a060020a03168352820192909252604001902054620021c6908462003263565b925060036000600a838154811062002207577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000918252602080832090910154600160a060020a0316835282019290925260400190205462002238908362003263565b9150806200224681620032d3565b91505062002060565b50600e54600f5462002262919062003122565b8210156200227a57600f54600e549350935050509091565b90939092509050565b600080600080600080600080600080620022b58b60135460145460155462002a1d640100000000026401000000009004565b9250925092506000620022da8c85858562002ab0640100000000026401000000009004565b90506000620022f164010000000062001aee810204565b90506000806200230c8f888564010000000062002ae1810204565b91509150600062002330838389898862002b0f640100000000026401000000009004565b929e50919c509a5091985093965091945092505050919395979092949650565b600160a060020a0385166000908152600360205260409020546200237690849062003263565b600160a060020a038616600090815260036020908152604080832093909355600290522054620023a890839062003263565b600160a060020a038087166000908152600260205260408082209390935590861681522054620023da90829062003107565b600160a060020a0390941660009081526002602052604090209390935550505050565b60006200241264010000000062001aee810204565b9050600062002422828662003241565b601954909150600160a060020a0385811691161480156200245c5750600160a060020a038381166000908152602160205260409020541615155b15620024df57600160a060020a038084166000908152602160205260409020546200249591879184911664010000000062002b65810204565b600160a060020a0383811660009081526021602090815260409182902054915188815291831692871691600080516020620070aa833981519152910160405180910390a362002595565b601754600160a060020a03166000908152600260205260409020546200250790829062003107565b60178054600160a060020a0390811660009081526002602090815260408083209590955592549091168152600390915220546200254690869062003107565b60178054600160a060020a0390811660009081526003602090815260409182902094909455915491518881529181169290871691600080516020620070aa833981519152910160405180910390a35b5050505050565b6000620025b164010000000062001aee810204565b90506000620025c1828562003241565b601854600160a060020a0316600090815260026020526040902054909150620025ec90829062003107565b60188054600160a060020a0390811660009081526002602090815260408083209590955592549091168152600390915220546200262b90829062003107565b60188054600160a060020a0390811660009081526003602090815260409182902094909455915491518781529181169290861691600080516020620070aa833981519152910160405180910390a350505050565b838587600f5462002691919062003263565b6200269d919062003263565b620026a9919062003263565b600f55601054620026bc90849062003107565b601055601154620026cf90839062003107565b601155601254620026e290829062003107565b601255505050505050565b6000806000806000806000806000806200271f8b60135460145460155462002a1d640100000000026401000000009004565b9250925092506000620027448c85858562002c72640100000000026401000000009004565b905060006200275b64010000000062001aee810204565b9050600080620027768f888564010000000062002ae1810204565b91509150600062002330838389898862002c9a640100000000026401000000009004565b600160a060020a038516600090815260026020526040902054620027c090829062003263565b600160a060020a03808716600090815260026020908152604080832094909455918716815260039091522054620027f990849062003107565b600160a060020a038516600090815260036020908152604080832093909355600290522054620023da90839062003107565b600160a060020a0385166000908152600260205260409020546200285190839062003263565b600160a060020a038087166000908152600260209081526040808320949094559187168152600390915220546200288a90849062003107565b600160a060020a038516600090815260036020908152604080832093909355600290522054620023da90829062003107565b600160a060020a038416600090815260026020526040902054620028e290839062003263565b600160a060020a0380861660009081526002602052604080822093909355908516815220546200291490829062003107565b600160a060020a03909316600090815260026020526040902092909255505050565b600160a060020a0386166000908152600360205260409020546200295c90859062003263565b600160a060020a0387166000908152600360209081526040808320939093556002905220546200298e90849062003263565b600160a060020a03808816600090815260026020908152604080832094909455918816815260039091522054620029c790839062003107565b600160a060020a038616600090815260036020908152604080832093909355600290522054620029f990829062003107565b600160a060020a039095166000908152600260205260409020949094555050505050565b600080808060648062002a31898b62003241565b62002a3d919062003122565b62002a49919062003122565b9050600060648062002a5c898c62003241565b62002a68919062003122565b62002a74919062003122565b9050600060648062002a87898d62003241565b62002a93919062003122565b62002a9f919062003122565b929a91995091975095505050505050565b6000818362002ac0868862003263565b62002acc919062003263565b62002ad8919062003263565b95945050505050565b6000808062002af1848762003241565b9050600062002b01858762003241565b919791965090945050505050565b60008062002b1e838662003241565b9050600062002b2e848662003241565b90506000818362002b408a8c62003263565b62002b4c919062003263565b62002b58919062003263565b9998505050505050505050565b600160a060020a03811660009081526008602052604090205460ff161562002bfe57600160a060020a03811660009081526002602052604090205462002bad90839062003107565b600160a060020a03821660009081526002602090815260408083209390935560039052205462002bdf90849062003107565b600160a060020a03821660009081526003602052604090205562002c3e565b600160a060020a03811660009081526002602052604090205462002c2490839062003107565b600160a060020a0382166000908152600260205260409020555b600160a060020a0381166000908152602260205260408120805485929062002c6890849062003107565b9091555050505050565b6000818362002c82868862003107565b62002c8e919062003107565b62002ad8919062003107565b60008062002ca9838662003241565b9050600062002cb9848662003241565b90506000818362002ccb8a8c62003107565b62002cd7919062003107565b62002b58919062003107565b82805462002cf1906200327d565b90600052602060002090601f01602090048101928262002d15576000855562002d60565b82601f1062002d3057805160ff191683800117855562002d60565b8280016001018555821562002d60579182015b8281111562002d6057825182559160200191906001019062002d43565b5062002d6e92915062002d72565b5090565b5b8082111562002d6e576000815560010162002d73565b8051600160a060020a038116811462002da157600080fd5b919050565b600082601f83011262002db7578081fd5b8151602062002dd062002dca83620030e1565b620030ae565b828152818101908583018385028701840188101562002ded578586fd5b855b8581101562002e165762002e038262002d89565b8452928401929084019060010162002def565b5090979650505050505050565b600082601f83011262002e34578081fd5b81516001604060020a0381111562002e505762002e5062003366565b602062002e66601f8301601f19168201620030ae565b828152858284870101111562002e7a578384fd5b835b8381101562002e9957858101830151828201840152820162002e7c565b8381111562002eaa57848385840101525b5095945050505050565b60006020828403121562002ec6578081fd5b62002ed18262002d89565b9392505050565b6000602080838503121562002eeb578182fd5b82516001604060020a0381111562002f01578283fd5b8301601f8101851362002f12578283fd5b805162002f2362002dca82620030e1565b818152838101908385018584028501860189101562002f40578687fd5b8694505b8385101562002f6457805183526001949094019391850191850162002f44565b50979650505050505050565b600080600080600080600060e0888a03121562002f8b578283fd5b87516001604060020a038082111562002fa2578485fd5b62002fb08b838c0162002e23565b985060208a015191508082111562002fc6578485fd5b62002fd48b838c0162002e23565b975060408a0151965060608a0151955062002ff260808b0162002d89565b945060a08a015191508082111562003008578384fd5b620030168b838c0162002da6565b935060c08a01519150808211156200302c578283fd5b506200303b8a828b0162002da6565b91505092959891949750929550565b6000602082840312156200305c578081fd5b5051919050565b60006040820184835260206040818501528185518084526060860191508287019350845b8181101562002e16578451600160a060020a03168352938301939183019160010162003087565b604051601f8201601f191681016001604060020a0381118282101715620030d957620030d962003366565b604052919050565b60006001604060020a03821115620030fd57620030fd62003366565b5060209081020190565b600082198211156200311d576200311d62003308565b500190565b60008262003134576200313462003337565b500490565b600181815b808511156200317c5781600019048211156200315e576200315e62003308565b808516156200316c57918102915b600290940493908002906200313e565b509250929050565b600062002ed183836000826200319d5750600162000bbb565b81620031ac5750600062000bbb565b8160018114620031c55760028114620031d057620031f1565b600191505062000bbb565b60ff841115620031e457620031e462003308565b8360020a91505062000bbb565b5060208310610133831016604e8410600b841016171562003216575081810a62000bbb565b62003222838362003139565b806000190482111562003239576200323962003308565b029392505050565b60008160001904831182151516156200325e576200325e62003308565b500290565b60008282101562003278576200327862003308565b500390565b6002810460018216806200329257607f821691505b60208210811415620032cd577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000600019821415620032ea57620032ea62003308565b5060010190565b60008262003303576200330362003337565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613cc580620033a56000396000f3fe608060405234801561001057600080fd5b506004361061025a576000357c01000000000000000000000000000000000000000000000000000000009004806390cda41511610158578063d6f84b45116100d5578063e862035811610099578063e8620358146104fb578063f2cc0c181461050e578063f357038814610523578063f84354f11461054c578063fb3a236f1461055f57600080fd5b8063d6f84b4514610468578063d84bf7a81461047b578063dd62ed3e14610483578063e26af579146104bc578063e4997dc5146104e857600080fd5b8063b33a7a171161011c578063b33a7a17146103e0578063b586242814610400578063c9d390d314610409578063cba0e99614610434578063d44ad87b1461046057600080fd5b806390cda415146103a157806395d89b41146103aa578063a457c2d7146103b2578063a9059cbb146103c5578063a9789268146103d857600080fd5b806339509351116101e65780634e7a6a02116101aa5780634e7a6a021461034c5780635afe70d71461035f5780635e00e6791461037257806370a082311461038557806377ef79931461039857600080fd5b8063395093511461030e5780633c9f861d146103215780633f5987a9146103295780634549b039146103315780634851f2b51461034457600080fd5b806318160ddd1161022d57806318160ddd146102c557806323b872dd146102cd5780632d838119146102e0578063313ce567146102f35780633280aba6146102fb57600080fd5b806306fdde031461025f578063095ea7b31461027d5780630ecb93c0146102a057806313114a9d146102b3575b600080fd5b610267610572565b6040516102749190613921565b60405180910390f35b61029061028b3660046136cf565b610604565b6040519015158152602001610274565b6102906102ae366004613618565b61061b565b6010545b604051908152602001610274565b600e546102b7565b6102906102db36600461368f565b6106be565b6102b76102ee3660046138e1565b610710565b600d546102b7565b6102906103093660046136fa565b61079f565b61029061031c3660046136cf565b610937565b6011546102b7565b61029061096e565b6102b761033f3660046138f9565b610a5e565b610290610af0565b6102b761035a366004613618565b610ba0565b61029061036d366004613618565b610bdd565b610290610380366004613618565b610cbb565b6102b7610393366004613618565b610d7e565b6102b760145481565b6102b760155481565b610267610ddd565b6102906103c03660046136cf565b610dec565b6102906103d33660046136cf565b610e23565b610290610e30565b6102b76103ee366004613618565b60066020526000908152604090205481565b6102b760135481565b61041c610417366004613618565b610f39565b604051600160a060020a039091168152602001610274565b610290610442366004613618565b600160a060020a031660009081526008602052604090205460ff1690565b610290610f83565b610290610476366004613657565b61103a565b6012546102b7565b6102b7610491366004613657565b600160a060020a03918216600090815260046020908152604080832093909416825291909152205490565b6102906104ca366004613618565b600160a060020a031660009081526007602052604090205460ff1690565b6102906104f6366004613618565b611138565b610290610509366004613868565b6111cd565b61052161051c366004613618565b611349565b005b6102b7610531366004613618565b600160a060020a031660009081526022602052604090205490565b61052161055a366004613618565b611382565b61029061056d366004613618565b61159d565b6060600b805461058190613bcf565b80601f01602080910402602001604051908101604052809291908181526020018280546105ad90613bcf565b80156105fa5780601f106105cf576101008083540402835291602001916105fa565b820191906000526020600020905b8154815290600101906020018083116105dd57829003601f168201915b5050505050905090565b60006106113384846115af565b5060015b92915050565b601a54600090600160a060020a031633146106545760405160e560020a62461bcd02815260040161064b90613a08565b60405180910390fd5b601a54600160a060020a038381169116141561066f57600080fd5b600160a060020a03821660009081526009602052604090205460ff161561069557600080fd5b50600160a060020a03166000908152600960205260409020805460ff1916600190811790915590565b60006106cb84848461170e565b600160a060020a038416600090815260046020908152604080832033808552925290912054610706918691610701908690613bb8565b6115af565b5060019392505050565b6000600f5482111561078d5760405160e560020a62461bcd02815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201527f65666c656374696f6e7300000000000000000000000000000000000000000000606482015260840161064b565b6107956118cf565b6106159083613b76565b601a54600090600160a060020a031633146107cf5760405160e560020a62461bcd02815260040161064b90613a08565b8161081f5760405160e560020a62461bcd02815260206004820152601760248201527f4552523a207a65726f2061646472657373206172726179000000000000000000604482015260640161064b565b6108276118f2565b60005b8281101561092e5760008484838181106108575760e060020a634e487b7102600052603260045260246000fd5b90506040020180360381019061086d9190613811565b90506a52b7d2dcc80cd2e4000000816020015160165461088d9190613b32565b11156108de5760405160e560020a62461bcd02815260206004820181905260248201527f4552523a20657863656564206d6178207465616d206d696e7420616d6f756e74604482015260640161064b565b6108f13082600001518360200151611926565b8060200151601660008282546109079190613b32565b9091555050805161091b9062ed4e006119f8565b508061092681613c0d565b91505061082a565b50610611611b2c565b336000818152600460209081526040808320600160a060020a03871684529091528120549091610611918590610701908690613b32565b601a54600090600160a060020a0316331461099e5760405160e560020a62461bcd02815260040161064b90613a08565b601a5460a060020a900460ff16156109cb5760405160e560020a62461bcd02815260040161064b90613a3d565b601a547501000000000000000000000000000000000000000000900460ff16610a395760405160e560020a62461bcd02815260206004820152601560248201527f4552523a20616c72656164792064697361626c65640000000000000000000000604482015260640161064b565b50601a805475ff00000000000000000000000000000000000000000019169055600190565b6000600e54831115610ab55760405160e560020a62461bcd02815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015260640161064b565b81610ad5576000610ac584611b61565b5094965061061595505050505050565b6000610ae084611b61565b5093965061061595505050505050565b601a54600090600160a060020a03163314610b205760405160e560020a62461bcd02815260040161064b90613a08565b601a5460a060020a900460ff16610b7c5760405160e560020a62461bcd02815260206004820152601b60248201527f4552523a20616c72656164792070617573652064697361626c65640000000000604482015260640161064b565b50601a805474ff000000000000000000000000000000000000000019169055600190565b600160a060020a03811660009081526005602052604081205480158015610bcf57506000610bcd84610d7e565b115b156106155750600092915050565b601a54600090600160a060020a03163314610c0d5760405160e560020a62461bcd02815260040161064b90613a08565b601a5460a060020a900460ff1615610c3a5760405160e560020a62461bcd02815260040161064b90613a3d565b600160a060020a038216610c635760405160e560020a62461bcd02815260040161064b90613a74565b6017805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0384161790556a295be96e64066972000000610c9f6118f2565b610caa308483611926565b610cb2611b2c565b61061183611be5565b601a54600090600160a060020a03163314610ceb5760405160e560020a62461bcd02815260040161064b90613a08565b601a5460a060020a900460ff1615610d185760405160e560020a62461bcd02815260040161064b90613a3d565b600160a060020a038216610d415760405160e560020a62461bcd02815260040161064b90613a74565b6018805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0384161790556b0121836204bc2ce21e000000610c9f6118f2565b600160a060020a03811660009081526008602052604081205460ff1615610dbb5750600160a060020a031660009081526003602052604090205490565b600160a060020a03821660009081526002602052604090205461061590610710565b6060600c805461058190613bcf565b336000818152600460209081526040808320600160a060020a03871684529091528120549091610611918590610701908690613bb8565b600061061133848461170e565b601a54600090600160a060020a03163314610e605760405160e560020a62461bcd02815260040161064b90613a08565b601a5460a060020a900460ff1615610e8d5760405160e560020a62461bcd02815260040161064b90613a3d565b601a547501000000000000000000000000000000000000000000900460ff1615610efc5760405160e560020a62461bcd02815260206004820152601460248201527f4552523a20616c726561647920656e61626c6564000000000000000000000000604482015260640161064b565b50601a805475ff00000000000000000000000000000000000000000019167501000000000000000000000000000000000000000000179055600190565b6000600160a060020a038216610f645760405160e560020a62461bcd02815260040161064b90613a74565b50600160a060020a039081166000908152602160205260409020541690565b601a54600090600160a060020a03163314610fb35760405160e560020a62461bcd02815260040161064b90613a08565b601a5460a060020a900460ff16156110105760405160e560020a62461bcd02815260206004820152601a60248201527f4552523a20616c726561647920706175736520656e61626c6564000000000000604482015260640161064b565b50601a805474ff0000000000000000000000000000000000000000191660a060020a179055600190565b600160a060020a03828116600090815260216020526040812054909116156110a75760405160e560020a62461bcd02815260206004820152601f60248201527f4552523a2061646472657373207265676973746572656420616c726561647900604482015260640161064b565b600160a060020a0383166110d05760405160e560020a62461bcd02815260040161064b90613a74565b600160a060020a0382166110f95760405160e560020a62461bcd02815260040161064b90613a74565b50600160a060020a039182166000908152602160205260409020805473ffffffffffffffffffffffffffffffffffffffff191691909216179055600190565b601a54600090600160a060020a031633146111685760405160e560020a62461bcd02815260040161064b90613a08565b600160a060020a03821660009081526009602052604090205460ff1661118d57600080fd5b601a54600160a060020a03838116911614156111a857600080fd5b50600160a060020a03166000908152600960205260409020805460ff19169055600190565b601a54600090600160a060020a031633146111fd5760405160e560020a62461bcd02815260040161064b90613a08565b601a5460a060020a900460ff161561122a5760405160e560020a62461bcd02815260040161064b90613a3d565b8151606411801561123f575060648260200151105b801561124f575060648260400151105b61129e5760405160e560020a62461bcd02815260206004820152601360248201527f4552523a2046656520697320736f206869676800000000000000000000000000604482015260640161064b565b606482606001511080156112b6575060648260800151105b80156112c6575060648260a00151105b6113155760405160e560020a62461bcd02815260206004820152601360248201527f4552523a2046656520697320736f206869676800000000000000000000000000604482015260640161064b565b508051601b55602080820151601c556040820151601d556060820151601e556080820151601f5560a0909101519055600190565b601a54600160a060020a031633146113765760405160e560020a62461bcd02815260040161064b90613a08565b61137f81611be5565b50565b601a54600160a060020a031633146113af5760405160e560020a62461bcd02815260040161064b90613a08565b600160a060020a03811660009081526008602052604090205460ff1661141a5760405160e560020a62461bcd02815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c756465640000000000604482015260640161064b565b60005b600a548110156115995781600160a060020a0316600a82815481106114555760e060020a634e487b7102600052603260045260246000fd5b600091825260209091200154600160a060020a0316141561158757600a805461148090600190613bb8565b815481106114a15760e060020a634e487b7102600052603260045260246000fd5b600091825260209091200154600a8054600160a060020a0390921691839081106114de5760e060020a634e487b7102600052603260045260246000fd5b6000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039485161790559184168152600382526040808220829055600890925220805460ff19169055600a8054806115545760e060020a634e487b7102600052603160045260246000fd5b6000828152602090208101600019908101805473ffffffffffffffffffffffffffffffffffffffff191690550190555050565b8061159181613c0d565b91505061141d565b5050565b60006115a882611d39565b1592915050565b600160a060020a03831661162e5760405160e560020a62461bcd02815260206004820152602660248201527f544f4b454e32303a20617070726f76652066726f6d20746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161064b565b600160a060020a0382166116ac5760405160e560020a62461bcd028152602060048201526024808201527f544f4b454e32303a20617070726f766520746f20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161064b565b600160a060020a0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600160a060020a03831661178d5760405160e560020a62461bcd02815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161064b565b600160a060020a03821661180c5760405160e560020a62461bcd02815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161064b565b600081116118855760405160e560020a62461bcd02815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f0000000000000000000000000000000000000000000000606482015260840161064b565b611890838383611dc4565b61189b838383612442565b5081600160a060020a031683600160a060020a0316600080516020613c708339815191528360405161170191815260200190565b60008060006118dc61299c565b90925090506118eb8183613b76565b9250505090565b6013541580156119025750601454155b801561190e5750601554155b1561191557565b600060138190556014819055601555565b60006119306118cf565b9050600080600080600080600061194689611b61565b9650965096509650965096509650600088836119629190613b99565b905060006119708a84613b99565b905061197f8d8d8d8c8c612b63565b821561199057611990838e8e612c0a565b83156119a0576119a0848e612d88565b6119ae878383888888612e59565b8b600160a060020a03168d600160a060020a0316600080516020613c70833981519152886040516119e191815260200190565b60405180910390a350505050505050505050505050565b600160a060020a038216611a215760405160e560020a62461bcd02815260040161064b906139d1565b60008167ffffffffffffffff1611611a7e5760405160e560020a62461bcd02815260206004820152601560248201527f4552523a207a65726f206c6f636b20706572696f640000000000000000000000604482015260640161064b565b600160a060020a03821660009081526001602052604090205460ff1661159957600160a060020a0382166000908152602081905260409020805467ffffffffffffffff191667ffffffffffffffff8316179055611adb8142613b4a565b600160a060020a0383166000908152602081905260409020805467ffffffffffffffff9290921668010000000000000000026fffffffffffffffff0000000000000000199092169190911790555050565b601b54611b3a906064613b99565b601355601c54611b4b906064613b99565b601455601d54611b5c906064613b99565b601555565b600080600080600080600080600080611b828b601354601454601554612ebb565b9250925092506000611b968c858585612f3c565b90506000611ba26118cf565b9050600080611bb28f8885612f67565b915091506000611bc58383898988612f91565b929e50919c509a5091985093965091945092505050919395979092949650565b600160a060020a03811660009081526008602052604090205460ff1615611c515760405160e560020a62461bcd02815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015260640161064b565b600160a060020a03811660009081526002602052604090205415611cab57600160a060020a038116600090815260026020526040902054611c9190610710565b600160a060020a0382166000908152600360205260409020555b600160a060020a03811660008181526008602090815260408083208054600160ff199182168117909255600a80548084019091557fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a801805473ffffffffffffffffffffffffffffffffffffffff19169096179095556007909252909120805490921617905561137f81612fdd565b6000600160a060020a038216611d645760405160e560020a62461bcd02815260040161064b906139d1565b600160a060020a03821660009081526001602052604090205460ff1615611d8d57506001919050565b50600160a060020a031660009081526020819052604090205467ffffffffffffffff42811668010000000000000000909204161090565b600160a060020a03831660009081526009602052604090205460ff16158015611e065750600160a060020a03821660009081526009602052604090205460ff16155b611e0f57600080fd5b600160a060020a0383161580611e2c5750600160a060020a038216155b15611e3657505050565b600160a060020a038316301480611e555750600160a060020a03821630145b15611e5f57505050565b601a54600160a060020a0384811691161480611e885750601a54600160a060020a038381169116145b15611e9257505050565b600160a060020a038316737a250d5630b4cf539739df2c5dacb4c659f2488d1480611ed95750600160a060020a038216737a250d5630b4cf539739df2c5dacb4c659f2488d145b15611ee357505050565b33737a250d5630b4cf539739df2c5dacb4c659f2488d1480611f0f5750601954600160a060020a031633145b80611f245750601a54600160a060020a031633145b80611f475750600160a060020a03831660009081526007602052604090205460ff165b80611f6a5750600160a060020a03821660009081526007602052604090205460ff165b611fdf5760405160e560020a62461bcd02815260206004820152602b60248201527f4552523a2073656e646572206d75737420626520756e6973776170206f72207360448201527f686f7070696e6743617274000000000000000000000000000000000000000000606482015260840161064b565b60408051600280825260608201835260009260208301908036833701905050601954909150600160a060020a0385811691161480156120375750600160a060020a03831660009081526008602052604090205460ff16155b1561235f5761204583611d39565b6120945760405160e560020a62461bcd02815260206004820152601b60248201527f4552523a2061646472657373206973206c6f636b656428627579290000000000604482015260640161064b565b600160a060020a03831660009081526006602052604090205442116120b857600080fd5b6120c442610708613b32565b600160a060020a0384166000908152600660209081526040918290209290925580517fad5c46480000000000000000000000000000000000000000000000000000000081529051737a250d5630b4cf539739df2c5dacb4c659f2488d9263ad5c46489260048082019391829003018186803b15801561214257600080fd5b505afa158015612156573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217a919061363b565b8160008151811061219e5760e060020a634e487b7102600052603260045260246000fd5b6020026020010190600160a060020a03169081600160a060020a03168152505030816001815181106121e35760e060020a634e487b7102600052603260045260246000fd5b600160a060020a03909216602092830291909101909101526040517f1f00ca74000000000000000000000000000000000000000000000000000000008152600090737a250d5630b4cf539739df2c5dacb4c659f2488d90631f00ca74906122509086908690600401613aab565b60006040518083038186803b15801561226857600080fd5b505afa15801561227c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526122a4919081019061376a565b905060006122b185610d7e565b9050600084836000815181106122da5760e060020a634e487b7102600052603260045260246000fd5b6020026020010151670de0b6b3a76400006122f59190613b99565b6122ff9190613b76565b905061230b8286613b32565b8261231588610ba0565b61231f9190613b99565b6123298784613b99565b6123339190613b32565b61233d9190613b76565b600160a060020a0387166000908152600560205260409020555061243c915050565b601954600160a060020a0384811691161480156123955750600160a060020a03841660009081526008602052604090205460ff16155b1561243c576123a384611d39565b6123f25760405160e560020a62461bcd02815260206004820152601d60248201527f4552523a2061646472657373206973206c6f636b65642873616c657329000000604482015260640161064b565b600160a060020a038416600090815260066020526040902054421161241657600080fd5b61242242610708613b32565b600160a060020a0385166000908152600660205260409020555b50505050565b601954600090819061245c90600160a060020a0316610d7e565b601954909150600160a060020a0386811691161480156124955750600160a060020a03841660009081526007602052604090205460ff16155b156124d4576124a5606482613b76565b8311156124c75760405160e560020a62461bcd02815260040161064b90613974565b6124cf611b2c565b612814565b601954600160a060020a03858116911614801561250a5750600160a060020a03851660009081526007602052604090205460ff16155b1561280c57601a547501000000000000000000000000000000000000000000900460ff1661257d5760405160e560020a62461bcd02815260206004820152601260248201527f4552523a2064697361626c656420737761700000000000000000000000000000604482015260640161064b565b612588606482613b76565b8311156125aa5760405160e560020a62461bcd02815260040161064b90613974565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106125f05760e060020a634e487b7102600052603260045260246000fd5b6020026020010190600160a060020a03169081600160a060020a031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d600160a060020a031663ad5c46486040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b15801561267957600080fd5b505afa15801561268d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126b1919061363b565b816001815181106126d55760e060020a634e487b7102600052603260045260246000fd5b600160a060020a03909216602092830291909101909101526040517fd06ca61f000000000000000000000000000000000000000000000000000000008152600090737a250d5630b4cf539739df2c5dacb4c659f2488d9063d06ca61f906127429088908690600401613aab565b60006040518083038186803b15801561275a57600080fd5b505afa15801561276e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612796919081019061376a565b905084816001815181106127bd5760e060020a634e487b7102600052603260045260246000fd5b6020026020010151670de0b6b3a76400006127d89190613b99565b6127e29190613b76565b6127eb88610ba0565b116127fd576127f8611b2c565b612805565b612805613051565b5050612814565b6128146118f2565b600160a060020a03851660009081526008602052604090205460ff1680156128555750600160a060020a03841660009081526008602052604090205460ff16155b1561286a57612865858585611926565b612989565b600160a060020a03851660009081526008602052604090205460ff161580156128ab5750600160a060020a03841660009081526008602052604090205460ff165b156128dc57601954600160a060020a03858116911614156128d157612865858585613081565b6128658585856130da565b600160a060020a03851660009081526008602052604090205460ff1615801561291e5750600160a060020a03841660009081526008602052604090205460ff16155b1561292e57612865858585613133565b600160a060020a03851660009081526008602052604090205460ff16801561296e5750600160a060020a03841660009081526008602052604090205460ff165b1561297e5761286585858561318b565b612989858585613133565b612991611b2c565b506001949350505050565b600f54600e546000918291825b600a54811015612b32578260026000600a84815481106129dc5760e060020a634e487b7102600052603260045260246000fd5b6000918252602080832090910154600160a060020a031683528201929092526040019020541180612a5857508160036000600a8481548110612a315760e060020a634e487b7102600052603260045260246000fd5b6000918252602080832090910154600160a060020a03168352820192909252604001902054115b15612a6e57600f54600e54945094505050509091565b60026000600a8381548110612a965760e060020a634e487b7102600052603260045260246000fd5b6000918252602080832090910154600160a060020a03168352820192909252604001902054612ac59084613bb8565b925060036000600a8381548110612aef5760e060020a634e487b7102600052603260045260246000fd5b6000918252602080832090910154600160a060020a03168352820192909252604001902054612b1e9083613bb8565b915080612b2a81613c0d565b9150506129a9565b50600e54600f54612b439190613b76565b821015612b5a57600f54600e549350935050509091565b90939092509050565b600160a060020a038516600090815260036020526040902054612b87908490613bb8565b600160a060020a038616600090815260036020908152604080832093909355600290522054612bb7908390613bb8565b600160a060020a038087166000908152600260205260408082209390935590861681522054612be7908290613b32565b600160a060020a0390941660009081526002602052604090209390935550505050565b6000612c146118cf565b90506000612c228286613b99565b601954909150600160a060020a038581169116148015612c5b5750600160a060020a038381166000908152602160205260409020541615155b15612cd057600160a060020a03808416600090815260216020526040902054612c889187918491166131e5565b600160a060020a0383811660009081526021602090815260409182902054915188815291831692871691600080516020613c70833981519152910160405180910390a3612d81565b601754600160a060020a0316600090815260026020526040902054612cf6908290613b32565b60178054600160a060020a039081166000908152600260209081526040808320959095559254909116815260039091522054612d33908690613b32565b60178054600160a060020a0390811660009081526003602090815260409182902094909455915491518881529181169290871691600080516020613c70833981519152910160405180910390a35b5050505050565b6000612d926118cf565b90506000612da08285613b99565b601854600160a060020a0316600090815260026020526040902054909150612dc9908290613b32565b60188054600160a060020a039081166000908152600260209081526040808320959095559254909116815260039091522054612e06908290613b32565b60188054600160a060020a0390811660009081526003602090815260409182902094909455915491518781529181169290861691600080516020613c70833981519152910160405180910390a350505050565b838587600f54612e699190613bb8565b612e739190613bb8565b612e7d9190613bb8565b600f55601054612e8e908490613b32565b601055601154612e9f908390613b32565b601155601254612eb0908290613b32565b601255505050505050565b6000808080606480612ecd898b613b99565b612ed79190613b76565b612ee19190613b76565b90506000606480612ef2898c613b99565b612efc9190613b76565b612f069190613b76565b90506000606480612f17898d613b99565b612f219190613b76565b612f2b9190613b76565b929a91995091975095505050505050565b60008183612f4a8688613bb8565b612f549190613bb8565b612f5e9190613bb8565b95945050505050565b60008080612f758487613b99565b90506000612f838587613b99565b919791965090945050505050565b600080612f9e8386613b99565b90506000612fac8486613b99565b905060008183612fbc8a8c613bb8565b612fc69190613bb8565b612fd09190613bb8565b9998505050505050505050565b600160a060020a0381166130065760405160e560020a62461bcd02815260040161064b906139d1565b600160a060020a03811660009081526001602052604090205460ff161561302a5750565b600160a060020a03166000908152600160208190526040909120805460ff19169091179055565b601e5461305f906064613b99565b601355601f54613070906064613b99565b601455602054611b5c906064613b99565b600061308b6118cf565b905060008060008060008060006130a1896132e8565b9650965096509650965096509650600088836130bd9190613b99565b905060006130cb8a84613b99565b905061197f8d8d8d8c8c61334c565b60006130e46118cf565b905060008060008060008060006130fa89611b61565b9650965096509650965096509650600088836131169190613b99565b905060006131248a84613b99565b905061197f8d8d888c8c6133d7565b600061313d6118cf565b9050600080600080600080600061315389611b61565b96509650965096509650965096506000888361316f9190613b99565b9050600061317d8a84613b99565b905061197f8d8d8b8b613462565b60006131956118cf565b905060008060008060008060006131ab89611b61565b9650965096509650965096509650600088836131c79190613b99565b905060006131d58a84613b99565b905061197f8d8d8d8c8a8d6134d8565b600160a060020a03811660009081526008602052604090205460ff161561327857600160a060020a03811660009081526002602052604090205461322a908390613b32565b600160a060020a03821660009081526002602090815260408083209390935560039052205461325a908490613b32565b600160a060020a0382166000908152600360205260409020556132b6565b600160a060020a03811660009081526002602052604090205461329c908390613b32565b600160a060020a0382166000908152600260205260409020555b600160a060020a038116600090815260226020526040812080548592906132de908490613b32565b9091555050505050565b6000806000806000806000806000806133098b601354601454601554612ebb565b925092509250600061331d8c8585856135b7565b905060006133296118cf565b90506000806133398f8885612f67565b915091506000611bc583838989886135d9565b600160a060020a038516600090815260026020526040902054613370908290613bb8565b600160a060020a038087166000908152600260209081526040808320949094559187168152600390915220546133a7908490613b32565b600160a060020a038516600090815260036020908152604080832093909355600290522054612be7908390613b32565b600160a060020a0385166000908152600260205260409020546133fb908390613bb8565b600160a060020a03808716600090815260026020908152604080832094909455918716815260039091522054613432908490613b32565b600160a060020a038516600090815260036020908152604080832093909355600290522054612be7908290613b32565b600160a060020a038416600090815260026020526040902054613486908390613bb8565b600160a060020a0380861660009081526002602052604080822093909355908516815220546134b6908290613b32565b600160a060020a03909316600090815260026020526040902092909255505050565b600160a060020a0386166000908152600360205260409020546134fc908590613bb8565b600160a060020a03871660009081526003602090815260408083209390935560029052205461352c908490613bb8565b600160a060020a03808816600090815260026020908152604080832094909455918816815260039091522054613563908390613b32565b600160a060020a038616600090815260036020908152604080832093909355600290522054613593908290613b32565b600160a060020a039095166000908152600260205260409020949094555050505050565b600081836135c58688613b32565b6135cf9190613b32565b612f5e9190613b32565b6000806135e68386613b99565b905060006135f48486613b99565b9050600081836136048a8c613b32565b61360e9190613b32565b612fd09190613b32565b600060208284031215613629578081fd5b813561363481613c5a565b9392505050565b60006020828403121561364c578081fd5b815161363481613c5a565b60008060408385031215613669578081fd5b823561367481613c5a565b9150602083013561368481613c5a565b809150509250929050565b6000806000606084860312156136a3578081fd5b83356136ae81613c5a565b925060208401356136be81613c5a565b929592945050506040919091013590565b600080604083850312156136e1578182fd5b82356136ec81613c5a565b946020939093013593505050565b6000806020838503121561370c578182fd5b823567ffffffffffffffff80821115613723578384fd5b818501915085601f830112613736578384fd5b813581811115613744578485fd5b866020604083028501011115613758578485fd5b60209290920196919550909350505050565b6000602080838503121561377c578182fd5b825167ffffffffffffffff80821115613793578384fd5b818501915085601f8301126137a6578384fd5b8151818111156137b8576137b8613c41565b83810291506137c8848301613b01565b8181528481019084860184860187018a10156137e2578788fd5b8795505b838610156138045780518352600195909501949186019186016137e6565b5098975050505050505050565b600060408284031215613822578081fd5b6040516040810181811067ffffffffffffffff8211171561384557613845613c41565b604052823561385381613c5a565b81526020928301359281019290925250919050565b600060c08284031215613879578081fd5b60405160c0810181811067ffffffffffffffff8211171561389c5761389c613c41565b8060405250823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a08201528091505092915050565b6000602082840312156138f2578081fd5b5035919050565b6000806040838503121561390b578182fd5b8235915060208301358015158114613684578182fd5b6000602080835283518082850152825b8181101561394d57858101830151858201604001528201613931565b8181111561395e5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252602f908201527f4552523a2045786365656420746865203125206f662063757272656e74206c6960408201527f717569646974792062616c616e63650000000000000000000000000000000000606082015260800190565b60208082526016908201527f4552523a207a65726f206c6f636b206164647265737300000000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526013908201527f4552523a2070617573656420616c726561647900000000000000000000000000604082015260600190565b60208082526011908201527f4552523a207a65726f2061646472657373000000000000000000000000000000604082015260600190565b60006040820184835260206040818501528185518084526060860191508287019350845b81811015613af4578451600160a060020a031683529383019391830191600101613acf565b5090979650505050505050565b604051601f8201601f1916810167ffffffffffffffff81118282101715613b2a57613b2a613c41565b604052919050565b60008219821115613b4557613b45613c28565b500190565b600067ffffffffffffffff808316818516808303821115613b6d57613b6d613c28565b01949350505050565b600082613b945760e060020a634e487b710281526012600452602481fd5b500490565b6000816000190483118215151615613bb357613bb3613c28565b500290565b600082821015613bca57613bca613c28565b500390565b600281046001821680613be357607f821691505b60208210811415613c075760e060020a634e487b7102600052602260045260246000fd5b50919050565b6000600019821415613c2157613c21613c28565b5060010190565b60e060020a634e487b7102600052601160045260246000fd5b60e060020a634e487b7102600052604160045260246000fd5b600160a060020a038116811461137f57600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212209ccec4df349283db2e4d921d220584371e2d22c4fa7b9a21e3789d67acb8323064736f6c634300080400334552523a2045786365656420746865203125206f662063757272656e74206c690000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488dddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef00000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000003b9aca00000000000000000000000000e610185758b5863e79dd9023ac28a31fb02f12e90000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000114f6666696369616c2042756666446f6765000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000524427566660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000f3207c360a7cbeb6e359e79c3f690f1730897a19000000000000000000000000aae55e8342ecbbecf836483ad54b90a32475065d0000000000000000000000008a8eff48fbd6886ff67170bd893264f338c2c5dd000000000000000000000000c505f97fea928d0820cee103eb4f9ed6e617f7a7000000000000000000000000000000000000000000000000000000000000000d000000000000000000000000f492da4b415cc760cf72a06e3c5fc0a2d038c1ba000000000000000000000000c187d3ff10c4a6b5e4a70be2201527eaf6dcee7a000000000000000000000000788744c2293930bb69415d9027071f868922e152000000000000000000000000d2828245b23a22e156f159721a8c53404eb7d870000000000000000000000000413b32bd3b9ae57e75b18c010f6f30f524a642f0000000000000000000000000ba355abbd461b1ae1c0aad8d9bc00481d3403dad0000000000000000000000004d1adf22e6862b48a0bd18a943fda3c121d6866e0000000000000000000000002272e0ac624bd42f66450f5ac5017901a4c02f9c0000000000000000000000004dad7d926dd541ed8abcd6e9f3e17fe7510e5c9400000000000000000000000065b59c63f996ac360daaf356ec4e05b348a1f5e6000000000000000000000000c3f8e951dcb4c0499b459fd23b123bc00ab8142700000000000000000000000008874f2b779da0221eea7a6579f3a872bf42a2890000000000000000000000006b935de9605eba047d1895c26df1ef008649a05f
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061025a576000357c01000000000000000000000000000000000000000000000000000000009004806390cda41511610158578063d6f84b45116100d5578063e862035811610099578063e8620358146104fb578063f2cc0c181461050e578063f357038814610523578063f84354f11461054c578063fb3a236f1461055f57600080fd5b8063d6f84b4514610468578063d84bf7a81461047b578063dd62ed3e14610483578063e26af579146104bc578063e4997dc5146104e857600080fd5b8063b33a7a171161011c578063b33a7a17146103e0578063b586242814610400578063c9d390d314610409578063cba0e99614610434578063d44ad87b1461046057600080fd5b806390cda415146103a157806395d89b41146103aa578063a457c2d7146103b2578063a9059cbb146103c5578063a9789268146103d857600080fd5b806339509351116101e65780634e7a6a02116101aa5780634e7a6a021461034c5780635afe70d71461035f5780635e00e6791461037257806370a082311461038557806377ef79931461039857600080fd5b8063395093511461030e5780633c9f861d146103215780633f5987a9146103295780634549b039146103315780634851f2b51461034457600080fd5b806318160ddd1161022d57806318160ddd146102c557806323b872dd146102cd5780632d838119146102e0578063313ce567146102f35780633280aba6146102fb57600080fd5b806306fdde031461025f578063095ea7b31461027d5780630ecb93c0146102a057806313114a9d146102b3575b600080fd5b610267610572565b6040516102749190613921565b60405180910390f35b61029061028b3660046136cf565b610604565b6040519015158152602001610274565b6102906102ae366004613618565b61061b565b6010545b604051908152602001610274565b600e546102b7565b6102906102db36600461368f565b6106be565b6102b76102ee3660046138e1565b610710565b600d546102b7565b6102906103093660046136fa565b61079f565b61029061031c3660046136cf565b610937565b6011546102b7565b61029061096e565b6102b761033f3660046138f9565b610a5e565b610290610af0565b6102b761035a366004613618565b610ba0565b61029061036d366004613618565b610bdd565b610290610380366004613618565b610cbb565b6102b7610393366004613618565b610d7e565b6102b760145481565b6102b760155481565b610267610ddd565b6102906103c03660046136cf565b610dec565b6102906103d33660046136cf565b610e23565b610290610e30565b6102b76103ee366004613618565b60066020526000908152604090205481565b6102b760135481565b61041c610417366004613618565b610f39565b604051600160a060020a039091168152602001610274565b610290610442366004613618565b600160a060020a031660009081526008602052604090205460ff1690565b610290610f83565b610290610476366004613657565b61103a565b6012546102b7565b6102b7610491366004613657565b600160a060020a03918216600090815260046020908152604080832093909416825291909152205490565b6102906104ca366004613618565b600160a060020a031660009081526007602052604090205460ff1690565b6102906104f6366004613618565b611138565b610290610509366004613868565b6111cd565b61052161051c366004613618565b611349565b005b6102b7610531366004613618565b600160a060020a031660009081526022602052604090205490565b61052161055a366004613618565b611382565b61029061056d366004613618565b61159d565b6060600b805461058190613bcf565b80601f01602080910402602001604051908101604052809291908181526020018280546105ad90613bcf565b80156105fa5780601f106105cf576101008083540402835291602001916105fa565b820191906000526020600020905b8154815290600101906020018083116105dd57829003601f168201915b5050505050905090565b60006106113384846115af565b5060015b92915050565b601a54600090600160a060020a031633146106545760405160e560020a62461bcd02815260040161064b90613a08565b60405180910390fd5b601a54600160a060020a038381169116141561066f57600080fd5b600160a060020a03821660009081526009602052604090205460ff161561069557600080fd5b50600160a060020a03166000908152600960205260409020805460ff1916600190811790915590565b60006106cb84848461170e565b600160a060020a038416600090815260046020908152604080832033808552925290912054610706918691610701908690613bb8565b6115af565b5060019392505050565b6000600f5482111561078d5760405160e560020a62461bcd02815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201527f65666c656374696f6e7300000000000000000000000000000000000000000000606482015260840161064b565b6107956118cf565b6106159083613b76565b601a54600090600160a060020a031633146107cf5760405160e560020a62461bcd02815260040161064b90613a08565b8161081f5760405160e560020a62461bcd02815260206004820152601760248201527f4552523a207a65726f2061646472657373206172726179000000000000000000604482015260640161064b565b6108276118f2565b60005b8281101561092e5760008484838181106108575760e060020a634e487b7102600052603260045260246000fd5b90506040020180360381019061086d9190613811565b90506a52b7d2dcc80cd2e4000000816020015160165461088d9190613b32565b11156108de5760405160e560020a62461bcd02815260206004820181905260248201527f4552523a20657863656564206d6178207465616d206d696e7420616d6f756e74604482015260640161064b565b6108f13082600001518360200151611926565b8060200151601660008282546109079190613b32565b9091555050805161091b9062ed4e006119f8565b508061092681613c0d565b91505061082a565b50610611611b2c565b336000818152600460209081526040808320600160a060020a03871684529091528120549091610611918590610701908690613b32565b601a54600090600160a060020a0316331461099e5760405160e560020a62461bcd02815260040161064b90613a08565b601a5460a060020a900460ff16156109cb5760405160e560020a62461bcd02815260040161064b90613a3d565b601a547501000000000000000000000000000000000000000000900460ff16610a395760405160e560020a62461bcd02815260206004820152601560248201527f4552523a20616c72656164792064697361626c65640000000000000000000000604482015260640161064b565b50601a805475ff00000000000000000000000000000000000000000019169055600190565b6000600e54831115610ab55760405160e560020a62461bcd02815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015260640161064b565b81610ad5576000610ac584611b61565b5094965061061595505050505050565b6000610ae084611b61565b5093965061061595505050505050565b601a54600090600160a060020a03163314610b205760405160e560020a62461bcd02815260040161064b90613a08565b601a5460a060020a900460ff16610b7c5760405160e560020a62461bcd02815260206004820152601b60248201527f4552523a20616c72656164792070617573652064697361626c65640000000000604482015260640161064b565b50601a805474ff000000000000000000000000000000000000000019169055600190565b600160a060020a03811660009081526005602052604081205480158015610bcf57506000610bcd84610d7e565b115b156106155750600092915050565b601a54600090600160a060020a03163314610c0d5760405160e560020a62461bcd02815260040161064b90613a08565b601a5460a060020a900460ff1615610c3a5760405160e560020a62461bcd02815260040161064b90613a3d565b600160a060020a038216610c635760405160e560020a62461bcd02815260040161064b90613a74565b6017805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0384161790556a295be96e64066972000000610c9f6118f2565b610caa308483611926565b610cb2611b2c565b61061183611be5565b601a54600090600160a060020a03163314610ceb5760405160e560020a62461bcd02815260040161064b90613a08565b601a5460a060020a900460ff1615610d185760405160e560020a62461bcd02815260040161064b90613a3d565b600160a060020a038216610d415760405160e560020a62461bcd02815260040161064b90613a74565b6018805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0384161790556b0121836204bc2ce21e000000610c9f6118f2565b600160a060020a03811660009081526008602052604081205460ff1615610dbb5750600160a060020a031660009081526003602052604090205490565b600160a060020a03821660009081526002602052604090205461061590610710565b6060600c805461058190613bcf565b336000818152600460209081526040808320600160a060020a03871684529091528120549091610611918590610701908690613bb8565b600061061133848461170e565b601a54600090600160a060020a03163314610e605760405160e560020a62461bcd02815260040161064b90613a08565b601a5460a060020a900460ff1615610e8d5760405160e560020a62461bcd02815260040161064b90613a3d565b601a547501000000000000000000000000000000000000000000900460ff1615610efc5760405160e560020a62461bcd02815260206004820152601460248201527f4552523a20616c726561647920656e61626c6564000000000000000000000000604482015260640161064b565b50601a805475ff00000000000000000000000000000000000000000019167501000000000000000000000000000000000000000000179055600190565b6000600160a060020a038216610f645760405160e560020a62461bcd02815260040161064b90613a74565b50600160a060020a039081166000908152602160205260409020541690565b601a54600090600160a060020a03163314610fb35760405160e560020a62461bcd02815260040161064b90613a08565b601a5460a060020a900460ff16156110105760405160e560020a62461bcd02815260206004820152601a60248201527f4552523a20616c726561647920706175736520656e61626c6564000000000000604482015260640161064b565b50601a805474ff0000000000000000000000000000000000000000191660a060020a179055600190565b600160a060020a03828116600090815260216020526040812054909116156110a75760405160e560020a62461bcd02815260206004820152601f60248201527f4552523a2061646472657373207265676973746572656420616c726561647900604482015260640161064b565b600160a060020a0383166110d05760405160e560020a62461bcd02815260040161064b90613a74565b600160a060020a0382166110f95760405160e560020a62461bcd02815260040161064b90613a74565b50600160a060020a039182166000908152602160205260409020805473ffffffffffffffffffffffffffffffffffffffff191691909216179055600190565b601a54600090600160a060020a031633146111685760405160e560020a62461bcd02815260040161064b90613a08565b600160a060020a03821660009081526009602052604090205460ff1661118d57600080fd5b601a54600160a060020a03838116911614156111a857600080fd5b50600160a060020a03166000908152600960205260409020805460ff19169055600190565b601a54600090600160a060020a031633146111fd5760405160e560020a62461bcd02815260040161064b90613a08565b601a5460a060020a900460ff161561122a5760405160e560020a62461bcd02815260040161064b90613a3d565b8151606411801561123f575060648260200151105b801561124f575060648260400151105b61129e5760405160e560020a62461bcd02815260206004820152601360248201527f4552523a2046656520697320736f206869676800000000000000000000000000604482015260640161064b565b606482606001511080156112b6575060648260800151105b80156112c6575060648260a00151105b6113155760405160e560020a62461bcd02815260206004820152601360248201527f4552523a2046656520697320736f206869676800000000000000000000000000604482015260640161064b565b508051601b55602080820151601c556040820151601d556060820151601e556080820151601f5560a0909101519055600190565b601a54600160a060020a031633146113765760405160e560020a62461bcd02815260040161064b90613a08565b61137f81611be5565b50565b601a54600160a060020a031633146113af5760405160e560020a62461bcd02815260040161064b90613a08565b600160a060020a03811660009081526008602052604090205460ff1661141a5760405160e560020a62461bcd02815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c756465640000000000604482015260640161064b565b60005b600a548110156115995781600160a060020a0316600a82815481106114555760e060020a634e487b7102600052603260045260246000fd5b600091825260209091200154600160a060020a0316141561158757600a805461148090600190613bb8565b815481106114a15760e060020a634e487b7102600052603260045260246000fd5b600091825260209091200154600a8054600160a060020a0390921691839081106114de5760e060020a634e487b7102600052603260045260246000fd5b6000918252602080832091909101805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039485161790559184168152600382526040808220829055600890925220805460ff19169055600a8054806115545760e060020a634e487b7102600052603160045260246000fd5b6000828152602090208101600019908101805473ffffffffffffffffffffffffffffffffffffffff191690550190555050565b8061159181613c0d565b91505061141d565b5050565b60006115a882611d39565b1592915050565b600160a060020a03831661162e5760405160e560020a62461bcd02815260206004820152602660248201527f544f4b454e32303a20617070726f76652066726f6d20746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161064b565b600160a060020a0382166116ac5760405160e560020a62461bcd028152602060048201526024808201527f544f4b454e32303a20617070726f766520746f20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161064b565b600160a060020a0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600160a060020a03831661178d5760405160e560020a62461bcd02815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161064b565b600160a060020a03821661180c5760405160e560020a62461bcd02815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161064b565b600081116118855760405160e560020a62461bcd02815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f0000000000000000000000000000000000000000000000606482015260840161064b565b611890838383611dc4565b61189b838383612442565b5081600160a060020a031683600160a060020a0316600080516020613c708339815191528360405161170191815260200190565b60008060006118dc61299c565b90925090506118eb8183613b76565b9250505090565b6013541580156119025750601454155b801561190e5750601554155b1561191557565b600060138190556014819055601555565b60006119306118cf565b9050600080600080600080600061194689611b61565b9650965096509650965096509650600088836119629190613b99565b905060006119708a84613b99565b905061197f8d8d8d8c8c612b63565b821561199057611990838e8e612c0a565b83156119a0576119a0848e612d88565b6119ae878383888888612e59565b8b600160a060020a03168d600160a060020a0316600080516020613c70833981519152886040516119e191815260200190565b60405180910390a350505050505050505050505050565b600160a060020a038216611a215760405160e560020a62461bcd02815260040161064b906139d1565b60008167ffffffffffffffff1611611a7e5760405160e560020a62461bcd02815260206004820152601560248201527f4552523a207a65726f206c6f636b20706572696f640000000000000000000000604482015260640161064b565b600160a060020a03821660009081526001602052604090205460ff1661159957600160a060020a0382166000908152602081905260409020805467ffffffffffffffff191667ffffffffffffffff8316179055611adb8142613b4a565b600160a060020a0383166000908152602081905260409020805467ffffffffffffffff9290921668010000000000000000026fffffffffffffffff0000000000000000199092169190911790555050565b601b54611b3a906064613b99565b601355601c54611b4b906064613b99565b601455601d54611b5c906064613b99565b601555565b600080600080600080600080600080611b828b601354601454601554612ebb565b9250925092506000611b968c858585612f3c565b90506000611ba26118cf565b9050600080611bb28f8885612f67565b915091506000611bc58383898988612f91565b929e50919c509a5091985093965091945092505050919395979092949650565b600160a060020a03811660009081526008602052604090205460ff1615611c515760405160e560020a62461bcd02815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015260640161064b565b600160a060020a03811660009081526002602052604090205415611cab57600160a060020a038116600090815260026020526040902054611c9190610710565b600160a060020a0382166000908152600360205260409020555b600160a060020a03811660008181526008602090815260408083208054600160ff199182168117909255600a80548084019091557fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a801805473ffffffffffffffffffffffffffffffffffffffff19169096179095556007909252909120805490921617905561137f81612fdd565b6000600160a060020a038216611d645760405160e560020a62461bcd02815260040161064b906139d1565b600160a060020a03821660009081526001602052604090205460ff1615611d8d57506001919050565b50600160a060020a031660009081526020819052604090205467ffffffffffffffff42811668010000000000000000909204161090565b600160a060020a03831660009081526009602052604090205460ff16158015611e065750600160a060020a03821660009081526009602052604090205460ff16155b611e0f57600080fd5b600160a060020a0383161580611e2c5750600160a060020a038216155b15611e3657505050565b600160a060020a038316301480611e555750600160a060020a03821630145b15611e5f57505050565b601a54600160a060020a0384811691161480611e885750601a54600160a060020a038381169116145b15611e9257505050565b600160a060020a038316737a250d5630b4cf539739df2c5dacb4c659f2488d1480611ed95750600160a060020a038216737a250d5630b4cf539739df2c5dacb4c659f2488d145b15611ee357505050565b33737a250d5630b4cf539739df2c5dacb4c659f2488d1480611f0f5750601954600160a060020a031633145b80611f245750601a54600160a060020a031633145b80611f475750600160a060020a03831660009081526007602052604090205460ff165b80611f6a5750600160a060020a03821660009081526007602052604090205460ff165b611fdf5760405160e560020a62461bcd02815260206004820152602b60248201527f4552523a2073656e646572206d75737420626520756e6973776170206f72207360448201527f686f7070696e6743617274000000000000000000000000000000000000000000606482015260840161064b565b60408051600280825260608201835260009260208301908036833701905050601954909150600160a060020a0385811691161480156120375750600160a060020a03831660009081526008602052604090205460ff16155b1561235f5761204583611d39565b6120945760405160e560020a62461bcd02815260206004820152601b60248201527f4552523a2061646472657373206973206c6f636b656428627579290000000000604482015260640161064b565b600160a060020a03831660009081526006602052604090205442116120b857600080fd5b6120c442610708613b32565b600160a060020a0384166000908152600660209081526040918290209290925580517fad5c46480000000000000000000000000000000000000000000000000000000081529051737a250d5630b4cf539739df2c5dacb4c659f2488d9263ad5c46489260048082019391829003018186803b15801561214257600080fd5b505afa158015612156573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217a919061363b565b8160008151811061219e5760e060020a634e487b7102600052603260045260246000fd5b6020026020010190600160a060020a03169081600160a060020a03168152505030816001815181106121e35760e060020a634e487b7102600052603260045260246000fd5b600160a060020a03909216602092830291909101909101526040517f1f00ca74000000000000000000000000000000000000000000000000000000008152600090737a250d5630b4cf539739df2c5dacb4c659f2488d90631f00ca74906122509086908690600401613aab565b60006040518083038186803b15801561226857600080fd5b505afa15801561227c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526122a4919081019061376a565b905060006122b185610d7e565b9050600084836000815181106122da5760e060020a634e487b7102600052603260045260246000fd5b6020026020010151670de0b6b3a76400006122f59190613b99565b6122ff9190613b76565b905061230b8286613b32565b8261231588610ba0565b61231f9190613b99565b6123298784613b99565b6123339190613b32565b61233d9190613b76565b600160a060020a0387166000908152600560205260409020555061243c915050565b601954600160a060020a0384811691161480156123955750600160a060020a03841660009081526008602052604090205460ff16155b1561243c576123a384611d39565b6123f25760405160e560020a62461bcd02815260206004820152601d60248201527f4552523a2061646472657373206973206c6f636b65642873616c657329000000604482015260640161064b565b600160a060020a038416600090815260066020526040902054421161241657600080fd5b61242242610708613b32565b600160a060020a0385166000908152600660205260409020555b50505050565b601954600090819061245c90600160a060020a0316610d7e565b601954909150600160a060020a0386811691161480156124955750600160a060020a03841660009081526007602052604090205460ff16155b156124d4576124a5606482613b76565b8311156124c75760405160e560020a62461bcd02815260040161064b90613974565b6124cf611b2c565b612814565b601954600160a060020a03858116911614801561250a5750600160a060020a03851660009081526007602052604090205460ff16155b1561280c57601a547501000000000000000000000000000000000000000000900460ff1661257d5760405160e560020a62461bcd02815260206004820152601260248201527f4552523a2064697361626c656420737761700000000000000000000000000000604482015260640161064b565b612588606482613b76565b8311156125aa5760405160e560020a62461bcd02815260040161064b90613974565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106125f05760e060020a634e487b7102600052603260045260246000fd5b6020026020010190600160a060020a03169081600160a060020a031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d600160a060020a031663ad5c46486040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b15801561267957600080fd5b505afa15801561268d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126b1919061363b565b816001815181106126d55760e060020a634e487b7102600052603260045260246000fd5b600160a060020a03909216602092830291909101909101526040517fd06ca61f000000000000000000000000000000000000000000000000000000008152600090737a250d5630b4cf539739df2c5dacb4c659f2488d9063d06ca61f906127429088908690600401613aab565b60006040518083038186803b15801561275a57600080fd5b505afa15801561276e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612796919081019061376a565b905084816001815181106127bd5760e060020a634e487b7102600052603260045260246000fd5b6020026020010151670de0b6b3a76400006127d89190613b99565b6127e29190613b76565b6127eb88610ba0565b116127fd576127f8611b2c565b612805565b612805613051565b5050612814565b6128146118f2565b600160a060020a03851660009081526008602052604090205460ff1680156128555750600160a060020a03841660009081526008602052604090205460ff16155b1561286a57612865858585611926565b612989565b600160a060020a03851660009081526008602052604090205460ff161580156128ab5750600160a060020a03841660009081526008602052604090205460ff165b156128dc57601954600160a060020a03858116911614156128d157612865858585613081565b6128658585856130da565b600160a060020a03851660009081526008602052604090205460ff1615801561291e5750600160a060020a03841660009081526008602052604090205460ff16155b1561292e57612865858585613133565b600160a060020a03851660009081526008602052604090205460ff16801561296e5750600160a060020a03841660009081526008602052604090205460ff165b1561297e5761286585858561318b565b612989858585613133565b612991611b2c565b506001949350505050565b600f54600e546000918291825b600a54811015612b32578260026000600a84815481106129dc5760e060020a634e487b7102600052603260045260246000fd5b6000918252602080832090910154600160a060020a031683528201929092526040019020541180612a5857508160036000600a8481548110612a315760e060020a634e487b7102600052603260045260246000fd5b6000918252602080832090910154600160a060020a03168352820192909252604001902054115b15612a6e57600f54600e54945094505050509091565b60026000600a8381548110612a965760e060020a634e487b7102600052603260045260246000fd5b6000918252602080832090910154600160a060020a03168352820192909252604001902054612ac59084613bb8565b925060036000600a8381548110612aef5760e060020a634e487b7102600052603260045260246000fd5b6000918252602080832090910154600160a060020a03168352820192909252604001902054612b1e9083613bb8565b915080612b2a81613c0d565b9150506129a9565b50600e54600f54612b439190613b76565b821015612b5a57600f54600e549350935050509091565b90939092509050565b600160a060020a038516600090815260036020526040902054612b87908490613bb8565b600160a060020a038616600090815260036020908152604080832093909355600290522054612bb7908390613bb8565b600160a060020a038087166000908152600260205260408082209390935590861681522054612be7908290613b32565b600160a060020a0390941660009081526002602052604090209390935550505050565b6000612c146118cf565b90506000612c228286613b99565b601954909150600160a060020a038581169116148015612c5b5750600160a060020a038381166000908152602160205260409020541615155b15612cd057600160a060020a03808416600090815260216020526040902054612c889187918491166131e5565b600160a060020a0383811660009081526021602090815260409182902054915188815291831692871691600080516020613c70833981519152910160405180910390a3612d81565b601754600160a060020a0316600090815260026020526040902054612cf6908290613b32565b60178054600160a060020a039081166000908152600260209081526040808320959095559254909116815260039091522054612d33908690613b32565b60178054600160a060020a0390811660009081526003602090815260409182902094909455915491518881529181169290871691600080516020613c70833981519152910160405180910390a35b5050505050565b6000612d926118cf565b90506000612da08285613b99565b601854600160a060020a0316600090815260026020526040902054909150612dc9908290613b32565b60188054600160a060020a039081166000908152600260209081526040808320959095559254909116815260039091522054612e06908290613b32565b60188054600160a060020a0390811660009081526003602090815260409182902094909455915491518781529181169290861691600080516020613c70833981519152910160405180910390a350505050565b838587600f54612e699190613bb8565b612e739190613bb8565b612e7d9190613bb8565b600f55601054612e8e908490613b32565b601055601154612e9f908390613b32565b601155601254612eb0908290613b32565b601255505050505050565b6000808080606480612ecd898b613b99565b612ed79190613b76565b612ee19190613b76565b90506000606480612ef2898c613b99565b612efc9190613b76565b612f069190613b76565b90506000606480612f17898d613b99565b612f219190613b76565b612f2b9190613b76565b929a91995091975095505050505050565b60008183612f4a8688613bb8565b612f549190613bb8565b612f5e9190613bb8565b95945050505050565b60008080612f758487613b99565b90506000612f838587613b99565b919791965090945050505050565b600080612f9e8386613b99565b90506000612fac8486613b99565b905060008183612fbc8a8c613bb8565b612fc69190613bb8565b612fd09190613bb8565b9998505050505050505050565b600160a060020a0381166130065760405160e560020a62461bcd02815260040161064b906139d1565b600160a060020a03811660009081526001602052604090205460ff161561302a5750565b600160a060020a03166000908152600160208190526040909120805460ff19169091179055565b601e5461305f906064613b99565b601355601f54613070906064613b99565b601455602054611b5c906064613b99565b600061308b6118cf565b905060008060008060008060006130a1896132e8565b9650965096509650965096509650600088836130bd9190613b99565b905060006130cb8a84613b99565b905061197f8d8d8d8c8c61334c565b60006130e46118cf565b905060008060008060008060006130fa89611b61565b9650965096509650965096509650600088836131169190613b99565b905060006131248a84613b99565b905061197f8d8d888c8c6133d7565b600061313d6118cf565b9050600080600080600080600061315389611b61565b96509650965096509650965096506000888361316f9190613b99565b9050600061317d8a84613b99565b905061197f8d8d8b8b613462565b60006131956118cf565b905060008060008060008060006131ab89611b61565b9650965096509650965096509650600088836131c79190613b99565b905060006131d58a84613b99565b905061197f8d8d8d8c8a8d6134d8565b600160a060020a03811660009081526008602052604090205460ff161561327857600160a060020a03811660009081526002602052604090205461322a908390613b32565b600160a060020a03821660009081526002602090815260408083209390935560039052205461325a908490613b32565b600160a060020a0382166000908152600360205260409020556132b6565b600160a060020a03811660009081526002602052604090205461329c908390613b32565b600160a060020a0382166000908152600260205260409020555b600160a060020a038116600090815260226020526040812080548592906132de908490613b32565b9091555050505050565b6000806000806000806000806000806133098b601354601454601554612ebb565b925092509250600061331d8c8585856135b7565b905060006133296118cf565b90506000806133398f8885612f67565b915091506000611bc583838989886135d9565b600160a060020a038516600090815260026020526040902054613370908290613bb8565b600160a060020a038087166000908152600260209081526040808320949094559187168152600390915220546133a7908490613b32565b600160a060020a038516600090815260036020908152604080832093909355600290522054612be7908390613b32565b600160a060020a0385166000908152600260205260409020546133fb908390613bb8565b600160a060020a03808716600090815260026020908152604080832094909455918716815260039091522054613432908490613b32565b600160a060020a038516600090815260036020908152604080832093909355600290522054612be7908290613b32565b600160a060020a038416600090815260026020526040902054613486908390613bb8565b600160a060020a0380861660009081526002602052604080822093909355908516815220546134b6908290613b32565b600160a060020a03909316600090815260026020526040902092909255505050565b600160a060020a0386166000908152600360205260409020546134fc908590613bb8565b600160a060020a03871660009081526003602090815260408083209390935560029052205461352c908490613bb8565b600160a060020a03808816600090815260026020908152604080832094909455918816815260039091522054613563908390613b32565b600160a060020a038616600090815260036020908152604080832093909355600290522054613593908290613b32565b600160a060020a039095166000908152600260205260409020949094555050505050565b600081836135c58688613b32565b6135cf9190613b32565b612f5e9190613b32565b6000806135e68386613b99565b905060006135f48486613b99565b9050600081836136048a8c613b32565b61360e9190613b32565b612fd09190613b32565b600060208284031215613629578081fd5b813561363481613c5a565b9392505050565b60006020828403121561364c578081fd5b815161363481613c5a565b60008060408385031215613669578081fd5b823561367481613c5a565b9150602083013561368481613c5a565b809150509250929050565b6000806000606084860312156136a3578081fd5b83356136ae81613c5a565b925060208401356136be81613c5a565b929592945050506040919091013590565b600080604083850312156136e1578182fd5b82356136ec81613c5a565b946020939093013593505050565b6000806020838503121561370c578182fd5b823567ffffffffffffffff80821115613723578384fd5b818501915085601f830112613736578384fd5b813581811115613744578485fd5b866020604083028501011115613758578485fd5b60209290920196919550909350505050565b6000602080838503121561377c578182fd5b825167ffffffffffffffff80821115613793578384fd5b818501915085601f8301126137a6578384fd5b8151818111156137b8576137b8613c41565b83810291506137c8848301613b01565b8181528481019084860184860187018a10156137e2578788fd5b8795505b838610156138045780518352600195909501949186019186016137e6565b5098975050505050505050565b600060408284031215613822578081fd5b6040516040810181811067ffffffffffffffff8211171561384557613845613c41565b604052823561385381613c5a565b81526020928301359281019290925250919050565b600060c08284031215613879578081fd5b60405160c0810181811067ffffffffffffffff8211171561389c5761389c613c41565b8060405250823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a08201528091505092915050565b6000602082840312156138f2578081fd5b5035919050565b6000806040838503121561390b578182fd5b8235915060208301358015158114613684578182fd5b6000602080835283518082850152825b8181101561394d57858101830151858201604001528201613931565b8181111561395e5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252602f908201527f4552523a2045786365656420746865203125206f662063757272656e74206c6960408201527f717569646974792062616c616e63650000000000000000000000000000000000606082015260800190565b60208082526016908201527f4552523a207a65726f206c6f636b206164647265737300000000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526013908201527f4552523a2070617573656420616c726561647900000000000000000000000000604082015260600190565b60208082526011908201527f4552523a207a65726f2061646472657373000000000000000000000000000000604082015260600190565b60006040820184835260206040818501528185518084526060860191508287019350845b81811015613af4578451600160a060020a031683529383019391830191600101613acf565b5090979650505050505050565b604051601f8201601f1916810167ffffffffffffffff81118282101715613b2a57613b2a613c41565b604052919050565b60008219821115613b4557613b45613c28565b500190565b600067ffffffffffffffff808316818516808303821115613b6d57613b6d613c28565b01949350505050565b600082613b945760e060020a634e487b710281526012600452602481fd5b500490565b6000816000190483118215151615613bb357613bb3613c28565b500290565b600082821015613bca57613bca613c28565b500390565b600281046001821680613be357607f821691505b60208210811415613c075760e060020a634e487b7102600052602260045260246000fd5b50919050565b6000600019821415613c2157613c21613c28565b5060010190565b60e060020a634e487b7102600052601160045260246000fd5b60e060020a634e487b7102600052604160045260246000fd5b600160a060020a038116811461137f57600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212209ccec4df349283db2e4d921d220584371e2d22c4fa7b9a21e3789d67acb8323064736f6c63430008040033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000003b9aca00000000000000000000000000e610185758b5863e79dd9023ac28a31fb02f12e90000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000114f6666696369616c2042756666446f6765000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000524427566660000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000f3207c360a7cbeb6e359e79c3f690f1730897a19000000000000000000000000aae55e8342ecbbecf836483ad54b90a32475065d0000000000000000000000008a8eff48fbd6886ff67170bd893264f338c2c5dd000000000000000000000000c505f97fea928d0820cee103eb4f9ed6e617f7a7000000000000000000000000000000000000000000000000000000000000000d000000000000000000000000f492da4b415cc760cf72a06e3c5fc0a2d038c1ba000000000000000000000000c187d3ff10c4a6b5e4a70be2201527eaf6dcee7a000000000000000000000000788744c2293930bb69415d9027071f868922e152000000000000000000000000d2828245b23a22e156f159721a8c53404eb7d870000000000000000000000000413b32bd3b9ae57e75b18c010f6f30f524a642f0000000000000000000000000ba355abbd461b1ae1c0aad8d9bc00481d3403dad0000000000000000000000004d1adf22e6862b48a0bd18a943fda3c121d6866e0000000000000000000000002272e0ac624bd42f66450f5ac5017901a4c02f9c0000000000000000000000004dad7d926dd541ed8abcd6e9f3e17fe7510e5c9400000000000000000000000065b59c63f996ac360daaf356ec4e05b348a1f5e6000000000000000000000000c3f8e951dcb4c0499b459fd23b123bc00ab8142700000000000000000000000008874f2b779da0221eea7a6579f3a872bf42a2890000000000000000000000006b935de9605eba047d1895c26df1ef008649a05f
-----Decoded View---------------
Arg [0] : _name (string): Official BuffDoge
Arg [1] : _symbol (string): $Buff
Arg [2] : _decimals (uint256): 18
Arg [3] : _supply (uint256): 1000000000
Arg [4] : _oldBuff (address): 0xE610185758B5863E79dd9023ac28a31FB02F12E9
Arg [5] : blackList (address[]): 0xf3207c360a7cBeB6e359E79c3f690f1730897a19,0xAAE55e8342ecbBEcF836483aD54B90a32475065D,0x8A8eFf48fBD6886FF67170BD893264f338c2c5DD,0xC505F97fEA928d0820cee103EB4F9eD6e617f7a7
Arg [6] : exchangeList (address[]): 0xf492da4b415cC760cf72A06E3c5Fc0A2d038c1BA,0xc187D3FF10c4a6b5E4A70bE2201527EAf6dceE7a,0x788744c2293930bb69415D9027071f868922e152,0xd2828245b23A22E156f159721A8C53404EB7D870,0x413b32bd3b9ae57e75B18c010F6F30f524a642f0,0xBa355ABbD461B1aE1C0aad8d9BC00481D3403DAd,0x4D1aDF22E6862B48a0BD18a943fda3C121d6866e,0x2272E0AC624bd42F66450f5Ac5017901A4C02F9c,0x4DAd7D926dd541eD8AbCd6E9F3E17fE7510E5C94,0x65B59C63f996AC360DAaF356Ec4e05b348a1f5E6,0xc3f8e951dCb4C0499B459Fd23b123bc00ab81427,0x08874f2B779DA0221eEA7A6579f3a872bf42a289,0x6B935DE9605eBa047d1895c26Df1ef008649a05f
-----Encoded View---------------
30 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [3] : 000000000000000000000000000000000000000000000000000000003b9aca00
Arg [4] : 000000000000000000000000e610185758b5863e79dd9023ac28a31fb02f12e9
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000160
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000200
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000011
Arg [8] : 4f6666696369616c2042756666446f6765000000000000000000000000000000
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [10] : 2442756666000000000000000000000000000000000000000000000000000000
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [12] : 000000000000000000000000f3207c360a7cbeb6e359e79c3f690f1730897a19
Arg [13] : 000000000000000000000000aae55e8342ecbbecf836483ad54b90a32475065d
Arg [14] : 0000000000000000000000008a8eff48fbd6886ff67170bd893264f338c2c5dd
Arg [15] : 000000000000000000000000c505f97fea928d0820cee103eb4f9ed6e617f7a7
Arg [16] : 000000000000000000000000000000000000000000000000000000000000000d
Arg [17] : 000000000000000000000000f492da4b415cc760cf72a06e3c5fc0a2d038c1ba
Arg [18] : 000000000000000000000000c187d3ff10c4a6b5e4a70be2201527eaf6dcee7a
Arg [19] : 000000000000000000000000788744c2293930bb69415d9027071f868922e152
Arg [20] : 000000000000000000000000d2828245b23a22e156f159721a8c53404eb7d870
Arg [21] : 000000000000000000000000413b32bd3b9ae57e75b18c010f6f30f524a642f0
Arg [22] : 000000000000000000000000ba355abbd461b1ae1c0aad8d9bc00481d3403dad
Arg [23] : 0000000000000000000000004d1adf22e6862b48a0bd18a943fda3c121d6866e
Arg [24] : 0000000000000000000000002272e0ac624bd42f66450f5ac5017901a4c02f9c
Arg [25] : 0000000000000000000000004dad7d926dd541ed8abcd6e9f3e17fe7510e5c94
Arg [26] : 00000000000000000000000065b59c63f996ac360daaf356ec4e05b348a1f5e6
Arg [27] : 000000000000000000000000c3f8e951dcb4c0499b459fd23b123bc00ab81427
Arg [28] : 00000000000000000000000008874f2b779da0221eea7a6579f3a872bf42a289
Arg [29] : 0000000000000000000000006b935de9605eba047d1895c26df1ef008649a05f
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.