ERC-20
Overview
Max Total Supply
1,000,000,000,000,000 JRSHIB
Holders
186
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
2,110,104,555,019.073292026546091435 JRSHIBValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
JRSHIB
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: Unlicensed /* MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMM: . ..~MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMM ......... . :MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMM ..888888888~... MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM. ...... .MMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMM8...88888888888O8... MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO.......888.....MMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMM$..7888O??????Z8888D....MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM... .88888888888...7MMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMM...8887+?????????88888...NMMMMMMMMMMMMMMMMMMMMMMMMMMNM ...888888888OD8888=..MMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMM.. D88D=????????????888O~.. MMMMMMMMMMMMMMMMMMMMMMMMM....D888888I???????D88.. MMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMM...8888=+?????????????+D888.. MMMMMMMMMMMMMMMMMMMMMM ...88888Z???????????=888...MMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMM..D888==???D8888D???????8888........~MMMM7. ... MN. ..888887?===?D8888???==88D..MMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMM ..888+==???8888888???????D888......... ............?8888I?====D888888O??==888 . MMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMM..8D88==+??D88888888+??????D8888D888$.....88D88D....8D888?=====8D8888888??+==88D..MMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMM ..888~==???8888888888+??????88888D8D88=O888888D88..D888+?====+8888888888???==888.. MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMM .8888===??888888888888???????888... ,8888.....,8D88888???????88888888888D??==~888..MMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMM8..888I==+??888888888888D??????I. .....88. ....:888888Z???????D88888888888D??===888 .ZMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMM...888===???8D88888888888+???????..............??????????????+8888888888888??+==888...MMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMM ..888===???8888888888888D????????............???????????????88888888888888Z??==O88...MMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMM .888D===???88888888888888?????????..........????????????????888888888888888??===88$..MMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMM..888====??88888888888888N??????????.........???????????????+888888888888888??===888..MMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMM ..888====??D8888888888??????????????,........??????????????????$D88888888888??===888 .MMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMM...888====??88888888$?????????????????........?????????????????????I888888888??===888 .MMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMM ..888===+??788888????????????????????........????????????????????????8888888??===888..MMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMM ..888===+???+7????????????????????????.......???????????????????????????DD8???===888..DMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMM .=888===+?????????????????????????????.......?????????????????????????????????===888..DMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMM .,888===+?????????????????????????????.......?????????????????????????????????===888..MMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMM ..888====?????????????????????????????.......????????????????????????????????+===888..MMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMN ..8888====?????????????????????????????.......????????????????????????????????===~888..MMMMMMMMMMMMMMM MMMMMMMMMMMMMMMM . 8888====????????????????,....+????????.......????????????????????????????????===888D.. MMMMMMMMMMMMMM MMMMMMMMMMMMMM7..~888~===????????????????~........???????.......??????,......:??????????????????===+888D...MMMMMMMMMMMMM MMMMMMMMMMMMM:..O888~===?????????????????=........???????.......?????.........??????????????????+====8888.. MMMMMMMMMMMM MMMMMMMMMMMMD .7888~===????????????????????????:.+??????=...... +????.........???????????????????=====888D..$MMMMMMMMMMM MMMMMMMMMMMM..+8D8~===??????????????????????????????????........:?????++????+?????????????????????+====888?..MMMMMMMMMMM MMMMMMMMMMM..,888====+??????????????????????????????????.........??????????????????????????????????=====88O. .MMMMMMMMMM MMMMMMMMMM .D8D+===+??????????????????????O888888??????.........??????+8O+?????????????????????????====Z888...MMMMMMMMM MMMMMMMMM ..888?===+??????????????????????8D8D...8O????,.........????D888888D???????????????????????+====8888. MMMMMMMMM MMMMMMMMM..8888====??????????????????????88888....8D???...........??88...D8888I??????????????????????=====888...MMMMMMMM MMMMMMMM...888====??????????I??II?I?????OD888D...888??,...........?888....88888????????II?????????????====8888. MMMMMMMM MMMMMMMZ..888?===??????????IIIIIIIIII???8888888O8888?~............:888. .D88888??????IIIIII???????????=====888...MMMMMMM MMMMMMM...888===??????????IIIIIIIIIII+??D88888888888..?D888888DO...888888888888????IIIIIIIIIII?????????====8888. MMMMMMM MMMMMMM D88?===??????????IIIIIIIIII?I??+8888888888................Z8888888888D????IIIIIIIIIII?????????====I888. ~MMMMMM MMMMMM...888===????????????IIIIIIII?????I788888888..................8888888888??????IIIIIIIIII?????????+====888...MMMMMM MMMMMM .Z8DD~==???????????+I??I??I?????....88888.....8888888888O.....88888888.=???????IIIII?I+??????????====D88$..MMMMMM MMMMMN .D88~==+?????????????+I??II???..............:8888888888888D.... .OI.......???I?IIIIII????????????====D888..MMMMMM MMMMM,..888===?????????????????????~...........?Z..D88888888888888................??????????????????????====788D..$MMMMM MMMMM .~888===????????????????????~...........O88...88888888888888..D8.............?????????????????????+====88D...MMMMM MMMMM .8888===????????????????????............88.....8D888888888D...D8D.............?????????????????????===~888.. MMMMM MMMMM .8888===???????????????????,............88......~88888888......88.............?????????????????????====888...MMMMM MMMMM .8888===???????????????????.............88.........,88.........88.............?????????????????????===O888...MMMMM MMMMM .888D===???????????????????.............888. ..... .88.........8O.............+???????????????????+===D888.. MMMMM MMMMM..~8888==???????????????????............ 88888D8D88D888D......888..............=???????????????????====D888..MMMMMM MMMMM ..8888==???????????????????.............8888888888888888888D8888..............+???????????????????===?D88O..MMMMMM MMMMMM .8888?=+?????????????????+.............8888 88888888888 888:..............????????????????????===8888.. MMMMMM MMMMMM ..8888==??????????????????..............888 888888888888 8888...............????????????????????==D888D..MMMMMMM MMMMMMM..88888=??????????????????..............8888$77$$$$$$$$8888888...............???????????????????==?8888...MMMMMMM MMMMMMM...8888D=??????????????????..............88$$$$$$$$$$$$$$7888...............????????????????????==8888...MMMMMMMM MMMMMMMM...D8888??????????????????..............88O$$$$$$$$$$$$$788................???????????????????+O8888Z..NMMMMMMMM MMMMMMMMM ..88888+????????????????+..............88O$$$$$$$$$$$Z88................????????????????????88888$..+MMMMMMMMM MMMMMMMMMM...888888?????????????????..............O88$$$$$$$7Z888................???????????????????788888...DMMMMMMMMMM MMMMMMMMMMM+ ..88888Z????????????????...............88888888888.................??????????????????+888888 ..MMMMMMMMMMMM MMMMMMMMMMMMN ..888888????????????????:............. ..,ZO=...................:?????????????????+888888... MMMMMMMMMMMMM MMMMMMMMMMMMMM ..,888888O???????????????.....................................?????????????????$888888O...NMMMMMMMMMMMMMM MMMMMMMMMMMMMMM ...88888888???????????????................................,????????????????Z8888888:.. OMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMM. ..D8888888D??????????????+...........................????????????????O8D888888....:MMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMM....ID888888O8+???????????????,.................=????????????????$888888888.. ..MMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMM ...:8888888888I???????????????????????????????????????????I8888888888:....:MMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMM ...$888888888888+?????????????????????????????????$88D888888888......MMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMM ....Z888888888888O8Z??????????????????????Z888888888888887. ...:MMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMM......88888888888888888D8888888D8888888888888888888O......$MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM= ......88888888888888888888888888888888888~..... $MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM: ........$88D8888888888888888D87....... .MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM ..............................MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMO: . ... . =OMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM https://juniorshiba.com https://twitter.com/jrshibatoken https://t.me/juniorshibatoken */ pragma solidity ^0.8.9; import './IERC20.sol'; import './SafeMath.sol'; import './Ownable.sol'; import './Context.sol'; import './Address.sol'; import './IUniswapV2Factory.sol'; import './IUniswapV2Pair.sol'; import './IUniswapV2Router02.sol'; contract JRSHIB is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => uint) private cooldown; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; address[] private _excluded; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 1000000000000000 * (10**18); uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private _name = 'Junior Shiba'; string private _symbol = 'JRSHIB'; uint8 private _decimals = 18; uint256 private _taxFee = 3; uint256 private _teamFee = 7; uint256 private _previousTaxFee = _taxFee; uint256 private _previousTeamFee = _teamFee; address payable public _opsTeamWalletAddress; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool inSwap = false; bool public swapEnabled = true; bool public buySellLimitEnabled = true; bool public cooldownEnabled = true; //Min buy/sell amount - > 4T and it can't be changed uint256 private constant MIN_BUY_SELL_TXN_AMOUNT = 4000000000000; // buy/sell Max transaction limit - > 4T uint256 private _maxTxAmount = 4000000000000 * (10**18); // minimum amount of tokens to be swaped => 50M uint256 private _numOfTokensToExchangeForTeam = 50000000000 * (10**18); event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapEnabledUpdated(bool enabled); modifier lockTheSwap { inSwap = true; _; inSwap = false; } constructor (address payable opsTeamWalletAddress) { _opsTeamWalletAddress = opsTeamWalletAddress; _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Create a uniswap pair for this new token uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); // set the rest of the contract variables uniswapV2Router = _uniswapV2Router; // Exclude owner and this contract from fee _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public 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) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function isExcluded(address account) public view returns (bool) { return _isExcluded[account]; } function setExcludeFromFee(address account, bool excluded) external onlyOwner() { _isExcludedFromFee[account] = excluded; } function enableDisableBuySellLimit(bool _buySellLimitEnabled) external onlyOwner() { buySellLimitEnabled = _buySellLimitEnabled; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function deliver(uint256 tAmount) public { address sender = _msgSender(); require(!_isExcluded[sender], "Excluded addresses cannot call this function"); (uint256 rAmount,,,,) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rTotal = _rTotal.sub(rAmount); _tFeeTotal = _tFeeTotal.add(tAmount); } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public 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"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function excludeAccount(address account) external onlyOwner() { require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.'); require(!_isExcluded[account], "Account is already excluded"); require(_excluded.length < 1000, "Excluded list is too long"); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeAccount(address account) external onlyOwner() { require(_isExcluded[account], "Account is already excluded"); 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 removeAllFee() private { if(_taxFee == 0 && _teamFee == 0) return; _previousTaxFee = _taxFee; _previousTeamFee = _teamFee; _taxFee = 0; _teamFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _teamFee = _previousTeamFee; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address sender, address recipient, uint256 amount) private { 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"); require(!cooldownEnabled || (cooldown[sender] < block.timestamp && cooldown[recipient] < block.timestamp), "Cooldown is enabled. Try again in a few minutes."); if(sender != owner() && recipient != owner() && buySellLimitEnabled ) require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); // is the token balance of this contract address over the min number of // tokens that we need to initiate a swap? // also, don't get caught in a circular charity event. // also, don't swap if sender is uniswap pair. uint256 contractTokenBalance = balanceOf(address(this)); if(contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } bool overMinTokenBalance = contractTokenBalance >= _numOfTokensToExchangeForTeam; if (!inSwap && swapEnabled && overMinTokenBalance && sender != uniswapV2Pair) { // swap the current tokens to ETH and send to the team swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if(contractETHBalance > 0) { sendETHToTeam(address(this).balance); } } //indicates if fee should be deducted from transfer bool takeFee = true; //if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]){ takeFee = false; } //transfer amount, it will take tax and team fee _tokenTransfer(sender,recipient,amount,takeFee); if (!_isExcludedFromFee[sender]) { cooldown[sender] = block.timestamp + (60 seconds); } if (!_isExcludedFromFee[recipient]) { cooldown[recipient] = block.timestamp + (60 seconds); } } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap{ // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function sendETHToTeam(uint256 amount) private { _opsTeamWalletAddress.transfer(amount); } // We are exposing these functions to be able to manual swap and send // in case the token is highly valued and 5M becomes too much function manualSwap() external onlyOwner() { uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualSend() external onlyOwner() { uint256 contractETHBalance = address(this).balance; sendETHToTeam(contractETHBalance); } function setSwapEnabled(bool enabled) external onlyOwner(){ swapEnabled = enabled; } function setCooldownEnabled(bool enabled) external onlyOwner() { cooldownEnabled = enabled; } function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private { if(!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _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); } uint256 tTeamFee = amount.mul(_teamFee).div(100); uint256 rTeamFee = tTeamFee.mul(_getRate()); _takeTeam(tTeamFee, rTeamFee); if(!takeFee) restoreAllFee(); } function _transferStandard(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeTeam(uint256 tTeamFee, uint256 rTeamFee) private { _rOwned[address(this)] = _rOwned[address(this)].add(rTeamFee); if(_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tTeamFee); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tTeamFee) = _getTValues(tAmount, _taxFee, _teamFee); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, currentRate, tTeamFee); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee); } function _getTValues(uint256 tAmount, uint256 taxFee, uint256 teamFee) private pure returns (uint256, uint256, uint256) { uint256 tFee = tAmount.mul(taxFee).div(100); uint256 tTeamFee = tAmount.mul(teamFee).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeamFee); return (tTransferAmount, tFee, tTeamFee); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 currentRate, uint256 tTeamFee) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTeamFee = tTeamFee.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeamFee); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(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.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _getTaxFee() private view returns(uint256) { return _taxFee; } function _getMaxTxAmount() private view returns(uint256) { return _maxTxAmount; } function getMaxTxAmount() public view returns(uint256) { return _maxTxAmount; } function getNumOfTokensToExchangeForTeam() public view returns(uint256) { return _numOfTokensToExchangeForTeam; } function _getETHBalance() public view returns(uint256 balance) { return address(this).balance; } function _setTaxFee(uint256 taxFee) external onlyOwner() { require(taxFee >= 1 && taxFee <= 3, 'taxFee should be between 1 and 3'); _taxFee = taxFee; } function _setTeamFee(uint256 teamFee) external onlyOwner() { require(teamFee >= 1 && teamFee <= 7, 'teamFee should be between 1 and 7'); _teamFee = teamFee; } function _setOpsTeamWallet(address payable opsTeamWalletAddress) external onlyOwner() { _opsTeamWalletAddress = opsTeamWalletAddress; } function _setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() { require(maxTxAmount >= MIN_BUY_SELL_TXN_AMOUNT , 'maxTxAmount should be greater than MIN_BUY_SELL_TXN_AMOUNT'); uint256 _tempMaxTxAmount = maxTxAmount * (10**18); _maxTxAmount = _tempMaxTxAmount; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) private pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT /** * @dev Interface of the ERC20 standard as defined in the EIP. */ pragma solidity ^0.8.4; 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: MIT pragma solidity >=0.5.0; 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: MIT pragma solidity >=0.5.0; 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: MIT pragma solidity >=0.6.2; 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: MIT pragma solidity >=0.6.2; 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: MIT pragma solidity ^0.8.0; import "./Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address payable","name":"opsTeamWalletAddress","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":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabledUpdated","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":"_getETHBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_opsTeamWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"_setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"opsTeamWalletAddress","type":"address"}],"name":"_setOpsTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"_setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"teamFee","type":"uint256"}],"name":"_setTeamFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buySellLimitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_buySellLimitEnabled","type":"bool"}],"name":"enableDisableBuySellLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getMaxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNumOfTokensToExchangeForTeam","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526d314dc6448d9338c15b0a0000000060088190556200002690600019620004dd565b620000349060001962000500565b60095560408051808201909152600c8082526b4a756e696f7220536869626160a01b60209092019182526200006c91600b9162000437565b5060408051808201909152600680825265252929a424a160d11b60209092019182526200009c91600c9162000437565b50600d8054601260ff1990911681179091556003600e8190556007600f819055601091909155601155805463ffffffff60a01b19166201010160a81b1790556c327cb2734119d3b7a9000000006013556ba18f07d736b90be5500000006014553480156200010957600080fd5b5060405162002df938038062002df98339810160408190526200012c916200053f565b6200013733620003e7565b601280546001600160a01b0319166001600160a01b03831617905560095460016000620001613390565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620001d857600080fd5b505afa158015620001ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021391906200053f565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200025c57600080fd5b505afa15801562000271573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029791906200053f565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620002e057600080fd5b505af1158015620002f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031b91906200053f565b6001600160a01b0390811660a0528116608052600160056000620003476000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff1995861617905530815260059092529020805490911660011790556200038f3390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600854604051620003d791815260200190565b60405180910390a35050620005a3565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054620004459062000566565b90600052602060002090601f016020900481019282620004695760008555620004b4565b82601f106200048457805160ff1916838001178555620004b4565b82800160010185558215620004b4579182015b82811115620004b457825182559160200191906001019062000497565b50620004c2929150620004c6565b5090565b5b80821115620004c25760008155600101620004c7565b600082620004fb57634e487b7160e01b600052601260045260246000fd5b500690565b6000828210156200052157634e487b7160e01b600052601160045260246000fd5b500390565b6001600160a01b03811681146200053c57600080fd5b50565b6000602082840312156200055257600080fd5b81516200055f8162000526565b9392505050565b600181811c908216806200057b57607f821691505b602082108114156200059d57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a051612814620005e56000396000818161046701526118610152600081816102e201528181611ad301528181611b9b0152611bd701526128146000f3fe60806040526004361061024a5760003560e01c80636d8b052711610139578063a985ceef116100b6578063eb9d283e1161007a578063eb9d283e14610736578063f2cc0c181461074b578063f2fde38b1461076b578063f42938901461078b578063f815a842146107a0578063f84354f1146107b357600080fd5b8063a985ceef14610656578063af9549e014610677578063cba0e99614610697578063dd62ed3e146106d0578063e01af92c1461071657600080fd5b80637ef1f70c116100fd5780637ef1f70c146105c25780638da5cb5b146105e357806395d89b4114610601578063a457c2d714610616578063a9059cbb1461063657600080fd5b80636d8b0527146105375780636ddd17131461054c57806370a082311461056d578063715018a61461058d5780637c39fcdb146105a257600080fd5b8063313ce567116101c757806351bc3c851161018b57806351bc3c85146104895780635342acb41461049e5780635880b873146104d75780635932ead1146104f75780635c9213f11461051757600080fd5b8063313ce567146103d357806339509351146103f55780633bd5d173146104155780634549b0391461043557806349bd5a5e1461045557600080fd5b80631bbae6e01161020e5780631bbae6e01461033157806323b872dd146103535780632866716214610373578063299b8887146103935780632d838119146103b357600080fd5b806306fdde0314610256578063095ea7b31461028157806313114a9d146102b15780631694505e146102d057806318160ddd1461031c57600080fd5b3661025157005b600080fd5b34801561026257600080fd5b5061026b6107d3565b60405161027891906123f8565b60405180910390f35b34801561028d57600080fd5b506102a161029c366004612462565b610865565b6040519015158152602001610278565b3480156102bd57600080fd5b50600a545b604051908152602001610278565b3480156102dc57600080fd5b506103047f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610278565b34801561032857600080fd5b506008546102c2565b34801561033d57600080fd5b5061035161034c36600461248e565b61087c565b005b34801561035f57600080fd5b506102a161036e3660046124a7565b610946565b34801561037f57600080fd5b5061035161038e36600461248e565b6109af565b34801561039f57600080fd5b506103516103ae3660046124e8565b610a46565b3480156103bf57600080fd5b506102c26103ce36600461248e565b610a92565b3480156103df57600080fd5b50600d5460405160ff9091168152602001610278565b34801561040157600080fd5b506102a1610410366004612462565b610b16565b34801561042157600080fd5b5061035161043036600461248e565b610b4c565b34801561044157600080fd5b506102c261045036600461251a565b610c34565b34801561046157600080fd5b506103047f000000000000000000000000000000000000000000000000000000000000000081565b34801561049557600080fd5b50610351610cbf565b3480156104aa57600080fd5b506102a16104b93660046124e8565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156104e357600080fd5b506103516104f236600461248e565b610d02565b34801561050357600080fd5b50610351610512366004612546565b610d8f565b34801561052357600080fd5b50610351610532366004612546565b610dd7565b34801561054357600080fd5b506013546102c2565b34801561055857600080fd5b506012546102a190600160a81b900460ff1681565b34801561057957600080fd5b506102c26105883660046124e8565b610e1f565b34801561059957600080fd5b50610351610e7e565b3480156105ae57600080fd5b50601254610304906001600160a01b031681565b3480156105ce57600080fd5b506012546102a190600160b01b900460ff1681565b3480156105ef57600080fd5b506000546001600160a01b0316610304565b34801561060d57600080fd5b5061026b610eb4565b34801561062257600080fd5b506102a1610631366004612462565b610ec3565b34801561064257600080fd5b506102a1610651366004612462565b610f12565b34801561066257600080fd5b506012546102a190600160b81b900460ff1681565b34801561068357600080fd5b50610351610692366004612561565b610f1f565b3480156106a357600080fd5b506102a16106b23660046124e8565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156106dc57600080fd5b506102c26106eb36600461258d565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561072257600080fd5b50610351610731366004612546565b610f74565b34801561074257600080fd5b506014546102c2565b34801561075757600080fd5b506103516107663660046124e8565b610fbc565b34801561077757600080fd5b506103516107863660046124e8565b6111da565b34801561079757600080fd5b50610351611272565b3480156107ac57600080fd5b50476102c2565b3480156107bf57600080fd5b506103516107ce3660046124e8565b6112a6565b6060600b80546107e2906125c6565b80601f016020809104026020016040519081016040528092919081815260200182805461080e906125c6565b801561085b5780601f106108305761010080835404028352916020019161085b565b820191906000526020600020905b81548152906001019060200180831161083e57829003601f168201915b5050505050905090565b600061087233848461145d565b5060015b92915050565b6000546001600160a01b031633146108af5760405162461bcd60e51b81526004016108a690612601565b60405180910390fd5b6503a35294400081101561092b5760405162461bcd60e51b815260206004820152603a60248201527f6d61785478416d6f756e742073686f756c64206265206772656174657220746860448201527f616e204d494e5f4255595f53454c4c5f54584e5f414d4f554e5400000000000060648201526084016108a6565b600061093f82670de0b6b3a764000061264c565b6013555050565b6000610953848484611581565b6109a584336109a085604051806060016040528060288152602001612792602891396001600160a01b038a166000908152600360209081526040808320338452909152902054919061199f565b61145d565b5060019392505050565b6000546001600160a01b031633146109d95760405162461bcd60e51b81526004016108a690612601565b600181101580156109eb575060078111155b610a415760405162461bcd60e51b815260206004820152602160248201527f7465616d4665652073686f756c64206265206265747765656e203120616e64206044820152603760f81b60648201526084016108a6565b600f55565b6000546001600160a01b03163314610a705760405162461bcd60e51b81526004016108a690612601565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b6000600954821115610af95760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016108a6565b6000610b036119cb565b9050610b0f83826119ee565b9392505050565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916108729185906109a090866119fa565b3360008181526006602052604090205460ff1615610bc15760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016108a6565b6000610bcc83611a06565b505050506001600160a01b038316600090815260016020526040902054909150610bf69082611a5d565b6001600160a01b038316600090815260016020526040902055600954610c1c9082611a5d565b600955600a54610c2c90846119fa565b600a55505050565b6000600854831115610c885760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016108a6565b81610ca6576000610c9884611a06565b509294506108769350505050565b6000610cb184611a06565b509194506108769350505050565b6000546001600160a01b03163314610ce95760405162461bcd60e51b81526004016108a690612601565b6000610cf430610e1f565b9050610cff81611a69565b50565b6000546001600160a01b03163314610d2c5760405162461bcd60e51b81526004016108a690612601565b60018110158015610d3e575060038111155b610d8a5760405162461bcd60e51b815260206004820181905260248201527f7461784665652073686f756c64206265206265747765656e203120616e64203360448201526064016108a6565b600e55565b6000546001600160a01b03163314610db95760405162461bcd60e51b81526004016108a690612601565b60128054911515600160b81b0260ff60b81b19909216919091179055565b6000546001600160a01b03163314610e015760405162461bcd60e51b81526004016108a690612601565b60128054911515600160b01b0260ff60b01b19909216919091179055565b6001600160a01b03811660009081526006602052604081205460ff1615610e5c57506001600160a01b031660009081526002602052604090205490565b6001600160a01b03821660009081526001602052604090205461087690610a92565b6000546001600160a01b03163314610ea85760405162461bcd60e51b81526004016108a690612601565b610eb26000611c58565b565b6060600c80546107e2906125c6565b600061087233846109a0856040518060600160405280602581526020016127ba602591393360009081526003602090815260408083206001600160a01b038d168452909152902054919061199f565b6000610872338484611581565b6000546001600160a01b03163314610f495760405162461bcd60e51b81526004016108a690612601565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610f9e5760405162461bcd60e51b81526004016108a690612601565b60128054911515600160a81b0260ff60a81b19909216919091179055565b6000546001600160a01b03163314610fe65760405162461bcd60e51b81526004016108a690612601565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b038216141561105e5760405162461bcd60e51b815260206004820152602260248201527f57652063616e206e6f74206578636c75646520556e697377617020726f757465604482015261391760f11b60648201526084016108a6565b6001600160a01b03811660009081526006602052604090205460ff16156110c75760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016108a6565b6007546103e81161111a5760405162461bcd60e51b815260206004820152601960248201527f4578636c75646564206c69737420697320746f6f206c6f6e670000000000000060448201526064016108a6565b6001600160a01b03811660009081526001602052604090205415611174576001600160a01b03811660009081526001602052604090205461115a90610a92565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600660205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b6000546001600160a01b031633146112045760405162461bcd60e51b81526004016108a690612601565b6001600160a01b0381166112695760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108a6565b610cff81611c58565b6000546001600160a01b0316331461129c5760405162461bcd60e51b81526004016108a690612601565b47610cff81611ca8565b6000546001600160a01b031633146112d05760405162461bcd60e51b81526004016108a690612601565b6001600160a01b03811660009081526006602052604090205460ff166113385760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016108a6565b60005b60075481101561145957816001600160a01b0316600782815481106113625761136261266b565b6000918252602090912001546001600160a01b03161415611447576007805461138d90600190612681565b8154811061139d5761139d61266b565b600091825260209091200154600780546001600160a01b0390921691839081106113c9576113c961266b565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600690925220805460ff19169055600780548061142157611421612698565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80611451816126ae565b91505061133b565b5050565b6001600160a01b0383166114bf5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108a6565b6001600160a01b0382166115205760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108a6565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166115e55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108a6565b6001600160a01b0382166116475760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108a6565b600081116116a95760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108a6565b601254600160b81b900460ff1615806116fb57506001600160a01b038316600090815260046020526040902054421180156116fb57506001600160a01b03821660009081526004602052604090205442115b6117605760405162461bcd60e51b815260206004820152603060248201527f436f6f6c646f776e20697320656e61626c65642e2054727920616761696e206960448201526f371030903332bb9036b4b73aba32b99760811b60648201526084016108a6565b6000546001600160a01b0384811691161480159061178c57506000546001600160a01b03838116911614155b80156117a15750601254600160b01b900460ff165b15611809576013548111156118095760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016108a6565b600061181430610e1f565b9050601354811061182457506013545b6014546012549082101590600160a01b900460ff1615801561184f5750601254600160a81b900460ff165b80156118585750805b801561189657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b156118b6576118a482611a69565b4780156118b4576118b447611ca8565b505b6001600160a01b03851660009081526005602052604090205460019060ff16806118f857506001600160a01b03851660009081526005602052604090205460ff165b15611901575060005b61190d86868684611ce2565b6001600160a01b03861660009081526005602052604090205460ff166119525761193842603c6126c9565b6001600160a01b0387166000908152600460205260409020555b6001600160a01b03851660009081526005602052604090205460ff166119975761197d42603c6126c9565b6001600160a01b0386166000908152600460205260409020555b505050505050565b600081848411156119c35760405162461bcd60e51b81526004016108a691906123f8565b505050900390565b60008060006119d8611e9d565b90925090506119e782826119ee565b9250505090565b6000610b0f82846126e1565b6000610b0f82846126c9565b600080600080600080600080611a2189600e54600f5461201f565b9250925092506000611a316119cb565b90506000806000611a448d87868861206e565b919f909e50909c50969a50949850949650505050505050565b6000610b0f8284612681565b6012805460ff60a01b1916600160a01b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611ab157611ab161266b565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611b2a57600080fd5b505afa158015611b3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b629190612703565b81600181518110611b7557611b7561266b565b60200260200101906001600160a01b031690816001600160a01b031681525050611bc0307f00000000000000000000000000000000000000000000000000000000000000008461145d565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611c15908590600090869030904290600401612720565b600060405180830381600087803b158015611c2f57600080fd5b505af1158015611c43573d6000803e3d6000fd5b50506012805460ff60a01b1916905550505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6012546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611459573d6000803e3d6000fd5b80611cef57611cef6120be565b6001600160a01b03841660009081526006602052604090205460ff168015611d3057506001600160a01b03831660009081526006602052604090205460ff16155b15611d4557611d408484846120ec565b611e43565b6001600160a01b03841660009081526006602052604090205460ff16158015611d8657506001600160a01b03831660009081526006602052604090205460ff165b15611d9657611d40848484612205565b6001600160a01b03841660009081526006602052604090205460ff16158015611dd857506001600160a01b03831660009081526006602052604090205460ff16155b15611de857611d408484846122ab565b6001600160a01b03841660009081526006602052604090205460ff168015611e2857506001600160a01b03831660009081526006602052604090205460ff165b15611e3857611d408484846122ec565b611e438484846122ab565b6000611e656064611e5f600f548661235c90919063ffffffff16565b906119ee565b90506000611e7b611e746119cb565b839061235c565b9050611e878282612368565b8261199757611997601054600e55601154600f55565b6009546008546000918291825b600754811015611fef57826001600060078481548110611ecc57611ecc61266b565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611f375750816002600060078481548110611f1057611f1061266b565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611f4d57600954600854945094505050509091565b611f936001600060078481548110611f6757611f6761266b565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611a5d565b9250611fdb6002600060078481548110611faf57611faf61266b565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611a5d565b915080611fe7816126ae565b915050611eaa565b50600854600954611fff916119ee565b821015612016576009546008549350935050509091565b90939092509050565b60008080806120336064611e5f898961235c565b905060006120466064611e5f8a8961235c565b9050600061205e826120588b86611a5d565b90611a5d565b9992985090965090945050505050565b600080808061207d888761235c565b9050600061208b888861235c565b90506000612099878961235c565b905060006120ab826120588686611a5d565b939b939a50919850919650505050505050565b600e541580156120ce5750600f54155b156120d557565b600e8054601055600f805460115560009182905555565b60008060008060006120fd86611a06565b6001600160a01b038d166000908152600260205260409020549499509297509095509350915061212d9087611a5d565b6001600160a01b03891660009081526002602090815260408083209390935560019052205461215c9086611a5d565b6001600160a01b03808a16600090815260016020526040808220939093559089168152205461218b90856119fa565b6001600160a01b0388166000908152600160205260409020556121ae83826123d4565b866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121f391815260200190565b60405180910390a35050505050505050565b600080600080600061221686611a06565b6001600160a01b038d16600090815260016020526040902054949950929750909550935091506122469086611a5d565b6001600160a01b03808a16600090815260016020908152604080832094909455918a1681526002909152205461227c90836119fa565b6001600160a01b03881660009081526002602090815260408083209390935560019052205461218b90856119fa565b60008060008060006122bc86611a06565b6001600160a01b038d166000908152600160205260409020549499509297509095509350915061215c9086611a5d565b60008060008060006122fd86611a06565b6001600160a01b038d166000908152600260205260409020549499509297509095509350915061232d9087611a5d565b6001600160a01b0389166000908152600260209081526040808320939093556001905220546122469086611a5d565b6000610b0f828461264c565b3060009081526001602052604090205461238290826119fa565b3060009081526001602090815260408083209390935560069052205460ff161561145957306000908152600260205260409020546123c090836119fa565b306000908152600260205260409020555050565b6009546123e19083611a5d565b600955600a546123f190826119fa565b600a555050565b600060208083528351808285015260005b8181101561242557858101830151858201604001528201612409565b81811115612437576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610cff57600080fd5b6000806040838503121561247557600080fd5b82356124808161244d565b946020939093013593505050565b6000602082840312156124a057600080fd5b5035919050565b6000806000606084860312156124bc57600080fd5b83356124c78161244d565b925060208401356124d78161244d565b929592945050506040919091013590565b6000602082840312156124fa57600080fd5b8135610b0f8161244d565b8035801515811461251557600080fd5b919050565b6000806040838503121561252d57600080fd5b8235915061253d60208401612505565b90509250929050565b60006020828403121561255857600080fd5b610b0f82612505565b6000806040838503121561257457600080fd5b823561257f8161244d565b915061253d60208401612505565b600080604083850312156125a057600080fd5b82356125ab8161244d565b915060208301356125bb8161244d565b809150509250929050565b600181811c908216806125da57607f821691505b602082108114156125fb57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561266657612666612636565b500290565b634e487b7160e01b600052603260045260246000fd5b60008282101561269357612693612636565b500390565b634e487b7160e01b600052603160045260246000fd5b60006000198214156126c2576126c2612636565b5060010190565b600082198211156126dc576126dc612636565b500190565b6000826126fe57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561271557600080fd5b8151610b0f8161244d565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127705784516001600160a01b03168352938301939183019160010161274b565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220897085d883f788277a7f5798a467a7da4d3a41855d0e47bd1f0543d7c48ea2a164736f6c6343000809003300000000000000000000000031ccac855635c16e0941843d5a24b1374ce0a4ba
Deployed Bytecode
0x60806040526004361061024a5760003560e01c80636d8b052711610139578063a985ceef116100b6578063eb9d283e1161007a578063eb9d283e14610736578063f2cc0c181461074b578063f2fde38b1461076b578063f42938901461078b578063f815a842146107a0578063f84354f1146107b357600080fd5b8063a985ceef14610656578063af9549e014610677578063cba0e99614610697578063dd62ed3e146106d0578063e01af92c1461071657600080fd5b80637ef1f70c116100fd5780637ef1f70c146105c25780638da5cb5b146105e357806395d89b4114610601578063a457c2d714610616578063a9059cbb1461063657600080fd5b80636d8b0527146105375780636ddd17131461054c57806370a082311461056d578063715018a61461058d5780637c39fcdb146105a257600080fd5b8063313ce567116101c757806351bc3c851161018b57806351bc3c85146104895780635342acb41461049e5780635880b873146104d75780635932ead1146104f75780635c9213f11461051757600080fd5b8063313ce567146103d357806339509351146103f55780633bd5d173146104155780634549b0391461043557806349bd5a5e1461045557600080fd5b80631bbae6e01161020e5780631bbae6e01461033157806323b872dd146103535780632866716214610373578063299b8887146103935780632d838119146103b357600080fd5b806306fdde0314610256578063095ea7b31461028157806313114a9d146102b15780631694505e146102d057806318160ddd1461031c57600080fd5b3661025157005b600080fd5b34801561026257600080fd5b5061026b6107d3565b60405161027891906123f8565b60405180910390f35b34801561028d57600080fd5b506102a161029c366004612462565b610865565b6040519015158152602001610278565b3480156102bd57600080fd5b50600a545b604051908152602001610278565b3480156102dc57600080fd5b506103047f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610278565b34801561032857600080fd5b506008546102c2565b34801561033d57600080fd5b5061035161034c36600461248e565b61087c565b005b34801561035f57600080fd5b506102a161036e3660046124a7565b610946565b34801561037f57600080fd5b5061035161038e36600461248e565b6109af565b34801561039f57600080fd5b506103516103ae3660046124e8565b610a46565b3480156103bf57600080fd5b506102c26103ce36600461248e565b610a92565b3480156103df57600080fd5b50600d5460405160ff9091168152602001610278565b34801561040157600080fd5b506102a1610410366004612462565b610b16565b34801561042157600080fd5b5061035161043036600461248e565b610b4c565b34801561044157600080fd5b506102c261045036600461251a565b610c34565b34801561046157600080fd5b506103047f00000000000000000000000097fed55bc2c982c611f051139c24bdb207fc6ccd81565b34801561049557600080fd5b50610351610cbf565b3480156104aa57600080fd5b506102a16104b93660046124e8565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156104e357600080fd5b506103516104f236600461248e565b610d02565b34801561050357600080fd5b50610351610512366004612546565b610d8f565b34801561052357600080fd5b50610351610532366004612546565b610dd7565b34801561054357600080fd5b506013546102c2565b34801561055857600080fd5b506012546102a190600160a81b900460ff1681565b34801561057957600080fd5b506102c26105883660046124e8565b610e1f565b34801561059957600080fd5b50610351610e7e565b3480156105ae57600080fd5b50601254610304906001600160a01b031681565b3480156105ce57600080fd5b506012546102a190600160b01b900460ff1681565b3480156105ef57600080fd5b506000546001600160a01b0316610304565b34801561060d57600080fd5b5061026b610eb4565b34801561062257600080fd5b506102a1610631366004612462565b610ec3565b34801561064257600080fd5b506102a1610651366004612462565b610f12565b34801561066257600080fd5b506012546102a190600160b81b900460ff1681565b34801561068357600080fd5b50610351610692366004612561565b610f1f565b3480156106a357600080fd5b506102a16106b23660046124e8565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156106dc57600080fd5b506102c26106eb36600461258d565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561072257600080fd5b50610351610731366004612546565b610f74565b34801561074257600080fd5b506014546102c2565b34801561075757600080fd5b506103516107663660046124e8565b610fbc565b34801561077757600080fd5b506103516107863660046124e8565b6111da565b34801561079757600080fd5b50610351611272565b3480156107ac57600080fd5b50476102c2565b3480156107bf57600080fd5b506103516107ce3660046124e8565b6112a6565b6060600b80546107e2906125c6565b80601f016020809104026020016040519081016040528092919081815260200182805461080e906125c6565b801561085b5780601f106108305761010080835404028352916020019161085b565b820191906000526020600020905b81548152906001019060200180831161083e57829003601f168201915b5050505050905090565b600061087233848461145d565b5060015b92915050565b6000546001600160a01b031633146108af5760405162461bcd60e51b81526004016108a690612601565b60405180910390fd5b6503a35294400081101561092b5760405162461bcd60e51b815260206004820152603a60248201527f6d61785478416d6f756e742073686f756c64206265206772656174657220746860448201527f616e204d494e5f4255595f53454c4c5f54584e5f414d4f554e5400000000000060648201526084016108a6565b600061093f82670de0b6b3a764000061264c565b6013555050565b6000610953848484611581565b6109a584336109a085604051806060016040528060288152602001612792602891396001600160a01b038a166000908152600360209081526040808320338452909152902054919061199f565b61145d565b5060019392505050565b6000546001600160a01b031633146109d95760405162461bcd60e51b81526004016108a690612601565b600181101580156109eb575060078111155b610a415760405162461bcd60e51b815260206004820152602160248201527f7465616d4665652073686f756c64206265206265747765656e203120616e64206044820152603760f81b60648201526084016108a6565b600f55565b6000546001600160a01b03163314610a705760405162461bcd60e51b81526004016108a690612601565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b6000600954821115610af95760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016108a6565b6000610b036119cb565b9050610b0f83826119ee565b9392505050565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916108729185906109a090866119fa565b3360008181526006602052604090205460ff1615610bc15760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016108a6565b6000610bcc83611a06565b505050506001600160a01b038316600090815260016020526040902054909150610bf69082611a5d565b6001600160a01b038316600090815260016020526040902055600954610c1c9082611a5d565b600955600a54610c2c90846119fa565b600a55505050565b6000600854831115610c885760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016108a6565b81610ca6576000610c9884611a06565b509294506108769350505050565b6000610cb184611a06565b509194506108769350505050565b6000546001600160a01b03163314610ce95760405162461bcd60e51b81526004016108a690612601565b6000610cf430610e1f565b9050610cff81611a69565b50565b6000546001600160a01b03163314610d2c5760405162461bcd60e51b81526004016108a690612601565b60018110158015610d3e575060038111155b610d8a5760405162461bcd60e51b815260206004820181905260248201527f7461784665652073686f756c64206265206265747765656e203120616e64203360448201526064016108a6565b600e55565b6000546001600160a01b03163314610db95760405162461bcd60e51b81526004016108a690612601565b60128054911515600160b81b0260ff60b81b19909216919091179055565b6000546001600160a01b03163314610e015760405162461bcd60e51b81526004016108a690612601565b60128054911515600160b01b0260ff60b01b19909216919091179055565b6001600160a01b03811660009081526006602052604081205460ff1615610e5c57506001600160a01b031660009081526002602052604090205490565b6001600160a01b03821660009081526001602052604090205461087690610a92565b6000546001600160a01b03163314610ea85760405162461bcd60e51b81526004016108a690612601565b610eb26000611c58565b565b6060600c80546107e2906125c6565b600061087233846109a0856040518060600160405280602581526020016127ba602591393360009081526003602090815260408083206001600160a01b038d168452909152902054919061199f565b6000610872338484611581565b6000546001600160a01b03163314610f495760405162461bcd60e51b81526004016108a690612601565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610f9e5760405162461bcd60e51b81526004016108a690612601565b60128054911515600160a81b0260ff60a81b19909216919091179055565b6000546001600160a01b03163314610fe65760405162461bcd60e51b81526004016108a690612601565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b038216141561105e5760405162461bcd60e51b815260206004820152602260248201527f57652063616e206e6f74206578636c75646520556e697377617020726f757465604482015261391760f11b60648201526084016108a6565b6001600160a01b03811660009081526006602052604090205460ff16156110c75760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016108a6565b6007546103e81161111a5760405162461bcd60e51b815260206004820152601960248201527f4578636c75646564206c69737420697320746f6f206c6f6e670000000000000060448201526064016108a6565b6001600160a01b03811660009081526001602052604090205415611174576001600160a01b03811660009081526001602052604090205461115a90610a92565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600660205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b6000546001600160a01b031633146112045760405162461bcd60e51b81526004016108a690612601565b6001600160a01b0381166112695760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108a6565b610cff81611c58565b6000546001600160a01b0316331461129c5760405162461bcd60e51b81526004016108a690612601565b47610cff81611ca8565b6000546001600160a01b031633146112d05760405162461bcd60e51b81526004016108a690612601565b6001600160a01b03811660009081526006602052604090205460ff166113385760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016108a6565b60005b60075481101561145957816001600160a01b0316600782815481106113625761136261266b565b6000918252602090912001546001600160a01b03161415611447576007805461138d90600190612681565b8154811061139d5761139d61266b565b600091825260209091200154600780546001600160a01b0390921691839081106113c9576113c961266b565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600690925220805460ff19169055600780548061142157611421612698565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80611451816126ae565b91505061133b565b5050565b6001600160a01b0383166114bf5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108a6565b6001600160a01b0382166115205760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108a6565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166115e55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108a6565b6001600160a01b0382166116475760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108a6565b600081116116a95760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016108a6565b601254600160b81b900460ff1615806116fb57506001600160a01b038316600090815260046020526040902054421180156116fb57506001600160a01b03821660009081526004602052604090205442115b6117605760405162461bcd60e51b815260206004820152603060248201527f436f6f6c646f776e20697320656e61626c65642e2054727920616761696e206960448201526f371030903332bb9036b4b73aba32b99760811b60648201526084016108a6565b6000546001600160a01b0384811691161480159061178c57506000546001600160a01b03838116911614155b80156117a15750601254600160b01b900460ff165b15611809576013548111156118095760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016108a6565b600061181430610e1f565b9050601354811061182457506013545b6014546012549082101590600160a01b900460ff1615801561184f5750601254600160a81b900460ff165b80156118585750805b801561189657507f00000000000000000000000097fed55bc2c982c611f051139c24bdb207fc6ccd6001600160a01b0316856001600160a01b031614155b156118b6576118a482611a69565b4780156118b4576118b447611ca8565b505b6001600160a01b03851660009081526005602052604090205460019060ff16806118f857506001600160a01b03851660009081526005602052604090205460ff165b15611901575060005b61190d86868684611ce2565b6001600160a01b03861660009081526005602052604090205460ff166119525761193842603c6126c9565b6001600160a01b0387166000908152600460205260409020555b6001600160a01b03851660009081526005602052604090205460ff166119975761197d42603c6126c9565b6001600160a01b0386166000908152600460205260409020555b505050505050565b600081848411156119c35760405162461bcd60e51b81526004016108a691906123f8565b505050900390565b60008060006119d8611e9d565b90925090506119e782826119ee565b9250505090565b6000610b0f82846126e1565b6000610b0f82846126c9565b600080600080600080600080611a2189600e54600f5461201f565b9250925092506000611a316119cb565b90506000806000611a448d87868861206e565b919f909e50909c50969a50949850949650505050505050565b6000610b0f8284612681565b6012805460ff60a01b1916600160a01b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611ab157611ab161266b565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611b2a57600080fd5b505afa158015611b3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b629190612703565b81600181518110611b7557611b7561266b565b60200260200101906001600160a01b031690816001600160a01b031681525050611bc0307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461145d565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790611c15908590600090869030904290600401612720565b600060405180830381600087803b158015611c2f57600080fd5b505af1158015611c43573d6000803e3d6000fd5b50506012805460ff60a01b1916905550505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6012546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611459573d6000803e3d6000fd5b80611cef57611cef6120be565b6001600160a01b03841660009081526006602052604090205460ff168015611d3057506001600160a01b03831660009081526006602052604090205460ff16155b15611d4557611d408484846120ec565b611e43565b6001600160a01b03841660009081526006602052604090205460ff16158015611d8657506001600160a01b03831660009081526006602052604090205460ff165b15611d9657611d40848484612205565b6001600160a01b03841660009081526006602052604090205460ff16158015611dd857506001600160a01b03831660009081526006602052604090205460ff16155b15611de857611d408484846122ab565b6001600160a01b03841660009081526006602052604090205460ff168015611e2857506001600160a01b03831660009081526006602052604090205460ff165b15611e3857611d408484846122ec565b611e438484846122ab565b6000611e656064611e5f600f548661235c90919063ffffffff16565b906119ee565b90506000611e7b611e746119cb565b839061235c565b9050611e878282612368565b8261199757611997601054600e55601154600f55565b6009546008546000918291825b600754811015611fef57826001600060078481548110611ecc57611ecc61266b565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611f375750816002600060078481548110611f1057611f1061266b565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611f4d57600954600854945094505050509091565b611f936001600060078481548110611f6757611f6761266b565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611a5d565b9250611fdb6002600060078481548110611faf57611faf61266b565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611a5d565b915080611fe7816126ae565b915050611eaa565b50600854600954611fff916119ee565b821015612016576009546008549350935050509091565b90939092509050565b60008080806120336064611e5f898961235c565b905060006120466064611e5f8a8961235c565b9050600061205e826120588b86611a5d565b90611a5d565b9992985090965090945050505050565b600080808061207d888761235c565b9050600061208b888861235c565b90506000612099878961235c565b905060006120ab826120588686611a5d565b939b939a50919850919650505050505050565b600e541580156120ce5750600f54155b156120d557565b600e8054601055600f805460115560009182905555565b60008060008060006120fd86611a06565b6001600160a01b038d166000908152600260205260409020549499509297509095509350915061212d9087611a5d565b6001600160a01b03891660009081526002602090815260408083209390935560019052205461215c9086611a5d565b6001600160a01b03808a16600090815260016020526040808220939093559089168152205461218b90856119fa565b6001600160a01b0388166000908152600160205260409020556121ae83826123d4565b866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121f391815260200190565b60405180910390a35050505050505050565b600080600080600061221686611a06565b6001600160a01b038d16600090815260016020526040902054949950929750909550935091506122469086611a5d565b6001600160a01b03808a16600090815260016020908152604080832094909455918a1681526002909152205461227c90836119fa565b6001600160a01b03881660009081526002602090815260408083209390935560019052205461218b90856119fa565b60008060008060006122bc86611a06565b6001600160a01b038d166000908152600160205260409020549499509297509095509350915061215c9086611a5d565b60008060008060006122fd86611a06565b6001600160a01b038d166000908152600260205260409020549499509297509095509350915061232d9087611a5d565b6001600160a01b0389166000908152600260209081526040808320939093556001905220546122469086611a5d565b6000610b0f828461264c565b3060009081526001602052604090205461238290826119fa565b3060009081526001602090815260408083209390935560069052205460ff161561145957306000908152600260205260409020546123c090836119fa565b306000908152600260205260409020555050565b6009546123e19083611a5d565b600955600a546123f190826119fa565b600a555050565b600060208083528351808285015260005b8181101561242557858101830151858201604001528201612409565b81811115612437576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610cff57600080fd5b6000806040838503121561247557600080fd5b82356124808161244d565b946020939093013593505050565b6000602082840312156124a057600080fd5b5035919050565b6000806000606084860312156124bc57600080fd5b83356124c78161244d565b925060208401356124d78161244d565b929592945050506040919091013590565b6000602082840312156124fa57600080fd5b8135610b0f8161244d565b8035801515811461251557600080fd5b919050565b6000806040838503121561252d57600080fd5b8235915061253d60208401612505565b90509250929050565b60006020828403121561255857600080fd5b610b0f82612505565b6000806040838503121561257457600080fd5b823561257f8161244d565b915061253d60208401612505565b600080604083850312156125a057600080fd5b82356125ab8161244d565b915060208301356125bb8161244d565b809150509250929050565b600181811c908216806125da57607f821691505b602082108114156125fb57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561266657612666612636565b500290565b634e487b7160e01b600052603260045260246000fd5b60008282101561269357612693612636565b500390565b634e487b7160e01b600052603160045260246000fd5b60006000198214156126c2576126c2612636565b5060010190565b600082198211156126dc576126dc612636565b500190565b6000826126fe57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561271557600080fd5b8151610b0f8161244d565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127705784516001600160a01b03168352938301939183019160010161274b565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220897085d883f788277a7f5798a467a7da4d3a41855d0e47bd1f0543d7c48ea2a164736f6c63430008090033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000031ccac855635c16e0941843d5a24b1374ce0a4ba
-----Decoded View---------------
Arg [0] : opsTeamWalletAddress (address): 0x31CCaC855635C16E0941843d5a24B1374ce0A4BA
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000031ccac855635c16e0941843d5a24b1374ce0a4ba
Deployed Bytecode Sourcemap
9553:18657:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12236:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13148:161;;;;;;;;;;-1:-1:-1;13148:161:7;;;;;:::i;:::-;;:::i;:::-;;;1237:14:10;;1230:22;1212:41;;1200:2;1185:18;13148:161:7;1072:187:10;14563:87:7;;;;;;;;;;-1:-1:-1;14632:10:7;;14563:87;;;1410:25:10;;;1398:2;1383:18;14563:87:7;1264:177:10;10604:51:7;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1637:32:10;;;1619:51;;1607:2;1592:18;10604:51:7;1446:230:10;12513:95:7;;;;;;;;;;-1:-1:-1;12593:7:7;;12513:95;;27902:305;;;;;;;;;;-1:-1:-1;27902:305:7;;;;;:::i;:::-;;:::i;:::-;;13317:313;;;;;;;;;;-1:-1:-1;13317:313:7;;;;;:::i;:::-;;:::i;27556:181::-;;;;;;;;;;-1:-1:-1;27556:181:7;;;;;:::i;:::-;;:::i;27745:149::-;;;;;;;;;;-1:-1:-1;27745:149:7;;;;;:::i;:::-;;:::i;15484:253::-;;;;;;;;;;-1:-1:-1;15484:253:7;;;;;:::i;:::-;;:::i;12422:83::-;;;;;;;;;;-1:-1:-1;12488:9:7;;12422:83;;12488:9;;;;2729:36:10;;2717:2;2702:18;12422:83:7;2587:184:10;13638:218:7;;;;;;;;;;-1:-1:-1;13638:218:7;;;;;:::i;:::-;;:::i;14658:376::-;;;;;;;;;;-1:-1:-1;14658:376:7;;;;;:::i;:::-;;:::i;15042:434::-;;;;;;;;;;-1:-1:-1;15042:434:7;;;;;:::i;:::-;;:::i;10662:38::-;;;;;;;;;;;;;;;20705:156;;;;;;;;;;;;;:::i;17099:123::-;;;;;;;;;;-1:-1:-1;17099:123:7;;;;;:::i;:::-;-1:-1:-1;;;;;17187:27:7;17163:4;17187:27;;;:18;:27;;;;;;;;;17099:123;27374:174;;;;;;;;;;-1:-1:-1;27374:174:7;;;;;:::i;:::-;;:::i;21139:107::-;;;;;;;;;;-1:-1:-1;21139:107:7;;;;;:::i;:::-;;:::i;14404:149::-;;;;;;;;;;-1:-1:-1;14404:149:7;;;;;:::i;:::-;;:::i;27020:93::-;;;;;;;;;;-1:-1:-1;27093:12:7;;27020:93;;10735:30;;;;;;;;;;-1:-1:-1;10735:30:7;;;;-1:-1:-1;;;10735:30:7;;;;;;12616:198;;;;;;;;;;-1:-1:-1;12616:198:7;;;;;:::i;:::-;;:::i;1650:94:8:-;;;;;;;;;;;;;:::i;10551:44:7:-;;;;;;;;;;-1:-1:-1;10551:44:7;;;;-1:-1:-1;;;;;10551:44:7;;;10774:38;;;;;;;;;;-1:-1:-1;10774:38:7;;;;-1:-1:-1;;;10774:38:7;;;;;;999:87:8;;;;;;;;;;-1:-1:-1;1045:7:8;1072:6;-1:-1:-1;;;;;1072:6:8;999:87;;12327::7;;;;;;;;;;;;;:::i;13864:269::-;;;;;;;;;;-1:-1:-1;13864:269:7;;;;;:::i;:::-;;:::i;12822:167::-;;;;;;;;;;-1:-1:-1;12822:167:7;;;;;:::i;:::-;;:::i;10819:35::-;;;;;;;;;;-1:-1:-1;10819:35:7;;;;-1:-1:-1;;;10819:35:7;;;;;;14259:137;;;;;;;;;;-1:-1:-1;14259:137:7;;;;;:::i;:::-;;:::i;14141:110::-;;;;;;;;;;-1:-1:-1;14141:110:7;;;;;:::i;:::-;-1:-1:-1;;;;;14223:20:7;14199:4;14223:20;;;:11;:20;;;;;;;;;14141:110;12997:143;;;;;;;;;;-1:-1:-1;12997:143:7;;;;;:::i;:::-;-1:-1:-1;;;;;13105:18:7;;;13078:7;13105:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;12997:143;21033:98;;;;;;;;;;-1:-1:-1;21033:98:7;;;;;:::i;:::-;;:::i;27121:127::-;;;;;;;;;;-1:-1:-1;27211:29:7;;27121:127;;15745:515;;;;;;;;;;-1:-1:-1;15745:515:7;;;;;:::i;:::-;;:::i;1899:192:8:-;;;;;;;;;;-1:-1:-1;1899:192:8;;;;;:::i;:::-;;:::i;20869:156:7:-;;;;;;;;;;;;;:::i;27256:110::-;;;;;;;;;;-1:-1:-1;27337:21:7;27256:110;;16268:478;;;;;;;;;;-1:-1:-1;16268:478:7;;;;;:::i;:::-;;:::i;12236:83::-;12273:13;12306:5;12299:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12236:83;:::o;13148:161::-;13223:4;13240:39;681:10:1;13263:7:7;13272:6;13240:8;:39::i;:::-;-1:-1:-1;13297:4:7;13148:161;;;;;:::o;27902:305::-;1045:7:8;1072:6;-1:-1:-1;;;;;1072:6:8;681:10:1;1219:23:8;1211:68;;;;-1:-1:-1;;;1211:68:8;;;;;;;:::i;:::-;;;;;;;;;10973:13:7::1;27993:11;:38;;27985:111;;;::::0;-1:-1:-1;;;27985:111:7;;5724:2:10;27985:111:7::1;::::0;::::1;5706:21:10::0;5763:2;5743:18;;;5736:30;5802:34;5782:18;;;5775:62;5873:28;5853:18;;;5846:56;5919:19;;27985:111:7::1;5522:422:10::0;27985:111:7::1;28107:24;28135:22;:11:::0;28150:6:::1;28135:22;:::i;:::-;28168:12;:31:::0;-1:-1:-1;;27902:305:7:o;13317:313::-;13415:4;13432:36;13442:6;13450:9;13461:6;13432:9;:36::i;:::-;13479:121;13488:6;681:10:1;13510:89:7;13548:6;13510:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13510:19:7;;;;;;:11;:19;;;;;;;;681:10:1;13510:33:7;;;;;;;;;;:37;:89::i;:::-;13479:8;:121::i;:::-;-1:-1:-1;13618:4:7;13317:313;;;;;:::o;27556:181::-;1045:7:8;1072:6;-1:-1:-1;;;;;1072:6:8;681:10:1;1219:23:8;1211:68;;;;-1:-1:-1;;;1211:68:8;;;;;;;:::i;:::-;27645:1:7::1;27634:7;:12;;:28;;;;;27661:1;27650:7;:12;;27634:28;27626:74;;;::::0;-1:-1:-1;;;27626:74:7;;6456:2:10;27626:74:7::1;::::0;::::1;6438:21:10::0;6495:2;6475:18;;;6468:30;6534:34;6514:18;;;6507:62;-1:-1:-1;;;6585:18:10;;;6578:31;6626:19;;27626:74:7::1;6254:397:10::0;27626:74:7::1;27711:8;:18:::0;27556:181::o;27745:149::-;1045:7:8;1072:6;-1:-1:-1;;;;;1072:6:8;681:10:1;1219:23:8;1211:68;;;;-1:-1:-1;;;1211:68:8;;;;;;;:::i;:::-;27842:21:7::1;:44:::0;;-1:-1:-1;;;;;;27842:44:7::1;-1:-1:-1::0;;;;;27842:44:7;;;::::1;::::0;;;::::1;::::0;;27745:149::o;15484:253::-;15550:7;15589;;15578;:18;;15570:73;;;;-1:-1:-1;;;15570:73:7;;6858:2:10;15570:73:7;;;6840:21:10;6897:2;6877:18;;;6870:30;6936:34;6916:18;;;6909:62;-1:-1:-1;;;6987:18:10;;;6980:40;7037:19;;15570:73:7;6656:406:10;15570:73:7;15654:19;15677:10;:8;:10::i;:::-;15654:33;-1:-1:-1;15705:24:7;:7;15654:33;15705:11;:24::i;:::-;15698:31;15484:253;-1:-1:-1;;;15484:253:7:o;13638:218::-;681:10:1;13726:4:7;13775:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13775:34:7;;;;;;;;;;13726:4;;13743:83;;13766:7;;13775:50;;13814:10;13775:38;:50::i;14658:376::-;681:10:1;14710:14:7;14759:19;;;:11;:19;;;;;;;;14758:20;14750:77;;;;-1:-1:-1;;;14750:77:7;;7269:2:10;14750:77:7;;;7251:21:10;7308:2;7288:18;;;7281:30;7347:34;7327:18;;;7320:62;-1:-1:-1;;;7398:18:10;;;7391:42;7450:19;;14750:77:7;7067:408:10;14750:77:7;14839:15;14862:19;14873:7;14862:10;:19::i;:::-;-1:-1:-1;;;;;;;;;14910:15:7;;;;;;:7;:15;;;;;;14838:43;;-1:-1:-1;14910:28:7;;14838:43;14910:19;:28::i;:::-;-1:-1:-1;;;;;14892:15:7;;;;;;:7;:15;;;;;:46;14959:7;;:20;;14971:7;14959:11;:20::i;:::-;14949:7;:30;15003:10;;:23;;15018:7;15003:14;:23::i;:::-;14990:10;:36;-1:-1:-1;;;14658:376:7:o;15042:434::-;15132:7;15171;;15160;:18;;15152:62;;;;-1:-1:-1;;;15152:62:7;;7682:2:10;15152:62:7;;;7664:21:10;7721:2;7701:18;;;7694:30;7760:33;7740:18;;;7733:61;7811:18;;15152:62:7;7480:355:10;15152:62:7;15230:17;15225:244;;15265:15;15288:19;15299:7;15288:10;:19::i;:::-;-1:-1:-1;15264:43:7;;-1:-1:-1;15322:14:7;;-1:-1:-1;;;;15322:14:7;15225:244;15371:23;15401:19;15412:7;15401:10;:19::i;:::-;-1:-1:-1;15369:51:7;;-1:-1:-1;15435:22:7;;-1:-1:-1;;;;15435:22:7;20705:156;1045:7:8;1072:6;-1:-1:-1;;;;;1072:6:8;681:10:1;1219:23:8;1211:68;;;;-1:-1:-1;;;1211:68:8;;;;;;;:::i;:::-;20759:23:7::1;20785:24;20803:4;20785:9;:24::i;:::-;20759:50;;20820:33;20837:15;20820:16;:33::i;:::-;20748:113;20705:156::o:0;27374:174::-;1045:7:8;1072:6;-1:-1:-1;;;;;1072:6:8;681:10:1;1219:23:8;1211:68;;;;-1:-1:-1;;;1211:68:8;;;;;;;:::i;:::-;27460:1:7::1;27450:6;:11;;:26;;;;;27475:1;27465:6;:11;;27450:26;27442:71;;;::::0;-1:-1:-1;;;27442:71:7;;8042:2:10;27442:71:7::1;::::0;::::1;8024:21:10::0;;;8061:18;;;8054:30;8120:34;8100:18;;;8093:62;8172:18;;27442:71:7::1;7840:356:10::0;27442:71:7::1;27524:7;:16:::0;27374:174::o;21139:107::-;1045:7:8;1072:6;-1:-1:-1;;;;;1072:6:8;681:10:1;1219:23:8;1211:68;;;;-1:-1:-1;;;1211:68:8;;;;;;;:::i;:::-;21213:15:7::1;:25:::0;;;::::1;;-1:-1:-1::0;;;21213:25:7::1;-1:-1:-1::0;;;;21213:25:7;;::::1;::::0;;;::::1;::::0;;21139:107::o;14404:149::-;1045:7:8;1072:6;-1:-1:-1;;;;;1072:6:8;681:10:1;1219:23:8;1211:68;;;;-1:-1:-1;;;1211:68:8;;;;;;;:::i;:::-;14503:19:7::1;:42:::0;;;::::1;;-1:-1:-1::0;;;14503:42:7::1;-1:-1:-1::0;;;;14503:42:7;;::::1;::::0;;;::::1;::::0;;14404:149::o;12616:198::-;-1:-1:-1;;;;;12706:20:7;;12682:7;12706:20;;;:11;:20;;;;;;;;12702:49;;;-1:-1:-1;;;;;;12735:16:7;;;;;:7;:16;;;;;;;12616:198::o;12702:49::-;-1:-1:-1;;;;;12789:16:7;;;;;;:7;:16;;;;;;12769:37;;:19;:37::i;1650:94:8:-;1045:7;1072:6;-1:-1:-1;;;;;1072:6:8;681:10:1;1219:23:8;1211:68;;;;-1:-1:-1;;;1211:68:8;;;;;;;:::i;:::-;1715:21:::1;1733:1;1715:9;:21::i;:::-;1650:94::o:0;12327:87:7:-;12366:13;12399:7;12392:14;;;;;:::i;13864:269::-;13957:4;13974:129;681:10:1;13997:7:7;14006:96;14045:15;14006:96;;;;;;;;;;;;;;;;;681:10:1;14006:25:7;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14006:34:7;;;;;;;;;;;;:38;:96::i;12822:167::-;12900:4;12917:42;681:10:1;12941:9:7;12952:6;12917:9;:42::i;14259:137::-;1045:7:8;1072:6;-1:-1:-1;;;;;1072:6:8;681:10:1;1219:23:8;1211:68;;;;-1:-1:-1;;;1211:68:8;;;;;;;:::i;:::-;-1:-1:-1;;;;;14350:27:7;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:38;;-1:-1:-1;;14350:38:7::1;::::0;::::1;;::::0;;;::::1;::::0;;14259:137::o;21033:98::-;1045:7:8;1072:6;-1:-1:-1;;;;;1072:6:8;681:10:1;1219:23:8;1211:68;;;;-1:-1:-1;;;1211:68:8;;;;;;;:::i;:::-;21102:11:7::1;:21:::0;;;::::1;;-1:-1:-1::0;;;21102:21:7::1;-1:-1:-1::0;;;;21102:21:7;;::::1;::::0;;;::::1;::::0;;21033:98::o;15745:515::-;1045:7:8;1072:6;-1:-1:-1;;;;;1072:6:8;681:10:1;1219:23:8;1211:68;;;;-1:-1:-1;;;1211:68:8;;;;;;;:::i;:::-;15837:42:7::1;-1:-1:-1::0;;;;;15826:53:7;::::1;;;15818:100;;;::::0;-1:-1:-1;;;15818:100:7;;8403:2:10;15818:100:7::1;::::0;::::1;8385:21:10::0;8442:2;8422:18;;;8415:30;8481:34;8461:18;;;8454:62;-1:-1:-1;;;8532:18:10;;;8525:32;8574:19;;15818:100:7::1;8201:398:10::0;15818:100:7::1;-1:-1:-1::0;;;;;15938:20:7;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;15937:21;15929:61;;;::::0;-1:-1:-1;;;15929:61:7;;8806:2:10;15929:61:7::1;::::0;::::1;8788:21:10::0;8845:2;8825:18;;;8818:30;8884:29;8864:18;;;8857:57;8931:18;;15929:61:7::1;8604:351:10::0;15929:61:7::1;16009:9;:16:::0;16028:4:::1;-1:-1:-1::0;16001:61:7::1;;;::::0;-1:-1:-1;;;16001:61:7;;9162:2:10;16001:61:7::1;::::0;::::1;9144:21:10::0;9201:2;9181:18;;;9174:30;9240:27;9220:18;;;9213:55;9285:18;;16001:61:7::1;8960:349:10::0;16001:61:7::1;-1:-1:-1::0;;;;;16076:16:7;::::1;16095:1;16076:16:::0;;;:7:::1;:16;::::0;;;;;:20;16073:108:::1;;-1:-1:-1::0;;;;;16152:16:7;::::1;;::::0;;;:7:::1;:16;::::0;;;;;16132:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;16113:16:7;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;16073:108:::1;-1:-1:-1::0;;;;;16191:20:7::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;16191:27:7::1;16214:4;16191:27:::0;;::::1;::::0;;;16229:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;16229:23:7::1;::::0;;::::1;::::0;;15745:515::o;1899:192:8:-;1045:7;1072:6;-1:-1:-1;;;;;1072:6:8;681:10:1;1219:23:8;1211:68;;;;-1:-1:-1;;;1211:68:8;;;;;;;:::i;:::-;-1:-1:-1;;;;;1988:22:8;::::1;1980:73;;;::::0;-1:-1:-1;;;1980:73:8;;9516:2:10;1980:73:8::1;::::0;::::1;9498:21:10::0;9555:2;9535:18;;;9528:30;9594:34;9574:18;;;9567:62;-1:-1:-1;;;9645:18:10;;;9638:36;9691:19;;1980:73:8::1;9314:402:10::0;1980:73:8::1;2064:19;2074:8;2064:9;:19::i;20869:156:7:-:0;1045:7:8;1072:6;-1:-1:-1;;;;;1072:6:8;681:10:1;1219:23:8;1211:68;;;;-1:-1:-1;;;1211:68:8;;;;;;;:::i;:::-;20952:21:7::1;20984:33;20952:21:::0;20984:13:::1;:33::i;16268:478::-:0;1045:7:8;1072:6;-1:-1:-1;;;;;1072:6:8;681:10:1;1219:23:8;1211:68;;;;-1:-1:-1;;;1211:68:8;;;;;;;:::i;:::-;-1:-1:-1;;;;;16349:20:7;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;16341:60;;;::::0;-1:-1:-1;;;16341:60:7;;8806:2:10;16341:60:7::1;::::0;::::1;8788:21:10::0;8845:2;8825:18;;;8818:30;8884:29;8864:18;;;8857:57;8931:18;;16341:60:7::1;8604:351:10::0;16341:60:7::1;16417:9;16412:327;16436:9;:16:::0;16432:20;::::1;16412:327;;;16494:7;-1:-1:-1::0;;;;;16478:23:7::1;:9;16488:1;16478:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;16478:12:7::1;:23;16474:254;;;16537:9;16547:16:::0;;:20:::1;::::0;16566:1:::1;::::0;16547:20:::1;:::i;:::-;16537:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;16522:9:::1;:12:::0;;-1:-1:-1;;;;;16537:31:7;;::::1;::::0;16532:1;;16522:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;16522:46:7::1;-1:-1:-1::0;;;;;16522:46:7;;::::1;;::::0;;16587:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;16626:11:::1;:20:::0;;;;:28;;-1:-1:-1;;16626:28:7::1;::::0;;16673:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;16673:15:7;;;;;-1:-1:-1;;;;;;16673:15:7::1;::::0;;;;;16412:327:::1;16268:478:::0;:::o;16474:254::-:1;16454:3:::0;::::1;::::0;::::1;:::i;:::-;;;;16412:327;;;;16268:478:::0;:::o;17230:337::-;-1:-1:-1;;;;;17323:19:7;;17315:68;;;;-1:-1:-1;;;17315:68:7;;10457:2:10;17315:68:7;;;10439:21:10;10496:2;10476:18;;;10469:30;10535:34;10515:18;;;10508:62;-1:-1:-1;;;10586:18:10;;;10579:34;10630:19;;17315:68:7;10255:400:10;17315:68:7;-1:-1:-1;;;;;17402:21:7;;17394:68;;;;-1:-1:-1;;;17394:68:7;;10862:2:10;17394:68:7;;;10844:21:10;10901:2;10881:18;;;10874:30;10940:34;10920:18;;;10913:62;-1:-1:-1;;;10991:18:10;;;10984:32;11033:19;;17394:68:7;10660:398:10;17394:68:7;-1:-1:-1;;;;;17475:18:7;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;17527:32;;1410:25:10;;;17527:32:7;;1383:18:10;17527:32:7;;;;;;;17230:337;;;:::o;17575:2260::-;-1:-1:-1;;;;;17672:20:7;;17664:70;;;;-1:-1:-1;;;17664:70:7;;11265:2:10;17664:70:7;;;11247:21:10;11304:2;11284:18;;;11277:30;11343:34;11323:18;;;11316:62;-1:-1:-1;;;11394:18:10;;;11387:35;11439:19;;17664:70:7;11063:401:10;17664:70:7;-1:-1:-1;;;;;17753:23:7;;17745:71;;;;-1:-1:-1;;;17745:71:7;;11671:2:10;17745:71:7;;;11653:21:10;11710:2;11690:18;;;11683:30;11749:34;11729:18;;;11722:62;-1:-1:-1;;;11800:18:10;;;11793:33;11843:19;;17745:71:7;11469:399:10;17745:71:7;17844:1;17835:6;:10;17827:64;;;;-1:-1:-1;;;17827:64:7;;12075:2:10;17827:64:7;;;12057:21:10;12114:2;12094:18;;;12087:30;12153:34;12133:18;;;12126:62;-1:-1:-1;;;12204:18:10;;;12197:39;12253:19;;17827:64:7;11873:405:10;17827:64:7;17911:15;;-1:-1:-1;;;17911:15:7;;;;17910:16;;:97;;-1:-1:-1;;;;;;17931:16:7;;;;;;:8;:16;;;;;;17950:15;-1:-1:-1;17931:75:7;;;;-1:-1:-1;;;;;;17969:19:7;;;;;;:8;:19;;;;;;17991:15;-1:-1:-1;17931:75:7;17902:158;;;;-1:-1:-1;;;17902:158:7;;12485:2:10;17902:158:7;;;12467:21:10;12524:2;12504:18;;;12497:30;12563:34;12543:18;;;12536:62;-1:-1:-1;;;12614:18:10;;;12607:46;12670:19;;17902:158:7;12283:412:10;17902:158:7;1045:7:8;1072:6;-1:-1:-1;;;;;18076:17:7;;;1072:6:8;;18076:17:7;;;;:41;;-1:-1:-1;1045:7:8;1072:6;-1:-1:-1;;;;;18097:20:7;;;1072:6:8;;18097:20:7;;18076:41;:64;;;;-1:-1:-1;18121:19:7;;-1:-1:-1;;;18121:19:7;;;;18076:64;18073:158;;;18174:12;;18164:6;:22;;18156:75;;;;-1:-1:-1;;;18156:75:7;;12902:2:10;18156:75:7;;;12884:21:10;12941:2;12921:18;;;12914:30;12980:34;12960:18;;;12953:62;-1:-1:-1;;;13031:18:10;;;13024:38;13079:19;;18156:75:7;12700:404:10;18156:75:7;18497:28;18528:24;18546:4;18528:9;:24::i;:::-;18497:55;;18592:12;;18568:20;:36;18565:112;;-1:-1:-1;18653:12:7;;18565:112;18740:29;;18785:6;;18716:53;;;;;-1:-1:-1;;;18785:6:7;;;;18784:7;:22;;;;-1:-1:-1;18795:11:7;;-1:-1:-1;;;18795:11:7;;;;18784:22;:45;;;;;18810:19;18784:45;:72;;;;;18843:13;-1:-1:-1;;;;;18833:23:7;:6;-1:-1:-1;;;;;18833:23:7;;;18784:72;18780:390;;;18941:38;18958:20;18941:16;:38::i;:::-;19025:21;19064:22;;19061:98;;19107:36;19121:21;19107:13;:36::i;:::-;18858:312;18780:390;-1:-1:-1;;;;;19362:26:7;;19243:12;19362:26;;;:18;:26;;;;;;19258:4;;19362:26;;;:59;;-1:-1:-1;;;;;;19392:29:7;;;;;;:18;:29;;;;;;;;19362:59;19359:105;;;-1:-1:-1;19447:5:7;19359:105;19534:47;19549:6;19556:9;19566:6;19573:7;19534:14;:47::i;:::-;-1:-1:-1;;;;;19599:26:7;;;;;;:18;:26;;;;;;;;19594:109;;19661:30;:15;19680:10;19661:30;:::i;:::-;-1:-1:-1;;;;;19642:16:7;;;;;;:8;:16;;;;;:49;19594:109;-1:-1:-1;;;;;19718:29:7;;;;;;:18;:29;;;;;;;;19713:115;;19786:30;:15;19805:10;19786:30;:::i;:::-;-1:-1:-1;;;;;19764:19:7;;;;;;:8;:19;;;;;:52;19713:115;17653:2182;;;17575:2260;;;:::o;5042:240:9:-;5162:7;5223:12;5215:6;;;;5207:29;;;;-1:-1:-1;;;5207:29:9;;;;;;;;:::i;:::-;-1:-1:-1;;;5258:5:9;;;5042:240::o;26090:163:7:-;26131:7;26152:15;26169;26188:19;:17;:19::i;:::-;26151:56;;-1:-1:-1;26151:56:7;-1:-1:-1;26225:20:7;26151:56;;26225:11;:20::i;:::-;26218:27;;;;26090:163;:::o;3900:98:9:-;3958:7;3985:5;3989:1;3985;:5;:::i;2763:98::-;2821:7;2848:5;2852:1;2848;:5;:::i;24827:458:7:-;24886:7;24895;24904;24913;24922;24943:23;24968:12;24982:16;25002:39;25014:7;25023;;25032:8;;25002:11;:39::i;:::-;24942:99;;;;;;25052:19;25075:10;:8;:10::i;:::-;25052:33;;25097:15;25114:23;25139:12;25155:49;25167:7;25176:4;25182:11;25195:8;25155:11;:49::i;:::-;25096:108;;;;-1:-1:-1;25096:108:7;;-1:-1:-1;25255:15:7;;-1:-1:-1;25272:4:7;;-1:-1:-1;24827:458:7;;-1:-1:-1;;;;;;;24827:458:7:o;3144:98:9:-;3202:7;3229:5;3233:1;3229;:5;:::i;19843:600:7:-;11390:6;:13;;-1:-1:-1;;;;11390:13:7;-1:-1:-1;;;11390:13:7;;;20004:16:::1;::::0;;20018:1:::1;20004:16:::0;;;;;::::1;::::0;;-1:-1:-1;;20004:16:7::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;20004:16:7::1;19980:40;;20049:4;20031;20036:1;20031:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;20031:23:7::1;;;-1:-1:-1::0;;;;;20031:23:7::1;;;::::0;::::1;20075:15;-1:-1:-1::0;;;;;20075:20:7::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20065:4;20070:1;20065:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1::0;;;;;20065:32:7::1;;;-1:-1:-1::0;;;;;20065:32:7::1;;;::::0;::::1;20110:62;20127:4;20142:15;20160:11;20110:8;:62::i;:::-;20211:224;::::0;-1:-1:-1;;;20211:224:7;;-1:-1:-1;;;;;20211:15:7::1;:66;::::0;::::1;::::0;:224:::1;::::0;20292:11;;20318:1:::1;::::0;20362:4;;20389::::1;::::0;20409:15:::1;::::0;20211:224:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;11426:6:7;:14;;-1:-1:-1;;;;11426:14:7;;;-1:-1:-1;;;;19843:600:7:o;2099:173:8:-;2155:16;2174:6;;-1:-1:-1;;;;;2191:17:8;;;-1:-1:-1;;;;;;2191:17:8;;;;;;2224:40;;2174:6;;;;;;;2224:40;;2155:16;2224:40;2144:128;2099:173;:::o;20451:104:7:-;20509:21;;:38;;-1:-1:-1;;;;;20509:21:7;;;;:38;;;;;20540:6;;20509:21;:38;:21;:38;20540:6;20509:21;:38;;;;;;;;;;;;;;;;;;;21254:972;21366:7;21362:40;;21388:14;:12;:14::i;:::-;-1:-1:-1;;;;;21419:19:7;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;21443:22:7;;;;;;:11;:22;;;;;;;;21442:23;21419:46;21415:597;;;21482:48;21504:6;21512:9;21523:6;21482:21;:48::i;:::-;21415:597;;;-1:-1:-1;;;;;21553:19:7;;;;;;:11;:19;;;;;;;;21552:20;:46;;;;-1:-1:-1;;;;;;21576:22:7;;;;;;:11;:22;;;;;;;;21552:46;21548:464;;;21615:46;21635:6;21643:9;21654:6;21615:19;:46::i;21548:464::-;-1:-1:-1;;;;;21684:19:7;;;;;;:11;:19;;;;;;;;21683:20;:47;;;;-1:-1:-1;;;;;;21708:22:7;;;;;;:11;:22;;;;;;;;21707:23;21683:47;21679:333;;;21747:44;21765:6;21773:9;21784:6;21747:17;:44::i;21679:333::-;-1:-1:-1;;;;;21813:19:7;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;21836:22:7;;;;;;:11;:22;;;;;;;;21813:45;21809:203;;;21875:48;21897:6;21905:9;21916:6;21875:21;:48::i;21809:203::-;21956:44;21974:6;21982:9;21993:6;21956:17;:44::i;:::-;22022:16;22041:29;22066:3;22041:20;22052:8;;22041:6;:10;;:20;;;;:::i;:::-;:24;;:29::i;:::-;22022:48;;22081:16;22100:24;22113:10;:8;:10::i;:::-;22100:8;;:12;:24::i;:::-;22081:43;;22135:29;22145:8;22155;22135:9;:29::i;:::-;22181:7;22177:41;;22203:15;17030;;17020:7;:25;17067:16;;17056:8;:27;16976:115;26261:555;26358:7;;26394;;26311;;;;;26412:289;26436:9;:16;26432:20;;26412:289;;;26502:7;26478;:21;26486:9;26496:1;26486:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;26486:12:7;26478:21;;;;;;;;;;;;;:31;;:66;;;26537:7;26513;:21;26521:9;26531:1;26521:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;26521:12:7;26513:21;;;;;;;;;;;;;:31;26478:66;26474:97;;;26554:7;;26563;;26546:25;;;;;;;26261:555;;:::o;26474:97::-;26596:34;26608:7;:21;26616:9;26626:1;26616:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;26616:12:7;26608:21;;;;;;;;;;;;;26596:7;;:11;:34::i;:::-;26586:44;;26655:34;26667:7;:21;26675:9;26685:1;26675:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;26675:12:7;26667:21;;;;;;;;;;;;;26655:7;;:11;:34::i;:::-;26645:44;-1:-1:-1;26454:3:7;;;;:::i;:::-;;;;26412:289;;;-1:-1:-1;26737:7:7;;26725;;:20;;:11;:20::i;:::-;26715:7;:30;26711:61;;;26755:7;;26764;;26747:25;;;;;;26261:555;;:::o;26711:61::-;26791:7;;26800;;-1:-1:-1;26261:555:7;-1:-1:-1;26261:555:7:o;25293:360::-;25386:7;;;;25439:28;25463:3;25439:19;:7;25451:6;25439:11;:19::i;:28::-;25424:43;-1:-1:-1;25478:16:7;25497:29;25522:3;25497:20;:7;25509;25497:11;:20::i;:29::-;25478:48;-1:-1:-1;25537:23:7;25563:31;25478:48;25563:17;:7;25575:4;25563:11;:17::i;:::-;:21;;:31::i;:::-;25537:57;25630:4;;-1:-1:-1;25636:8:7;;-1:-1:-1;25293:360:7;;-1:-1:-1;;;;;25293:360:7:o;25661:421::-;25774:7;;;;25830:24;:7;25842:11;25830;:24::i;:::-;25812:42;-1:-1:-1;25865:12:7;25880:21;:4;25889:11;25880:8;:21::i;:::-;25865:36;-1:-1:-1;25912:16:7;25931:25;:8;25944:11;25931:12;:25::i;:::-;25912:44;-1:-1:-1;25967:23:7;25993:31;25912:44;25993:17;:7;26005:4;25993:11;:17::i;:31::-;26043:7;;;;-1:-1:-1;26069:4:7;;-1:-1:-1;25661:421:7;;-1:-1:-1;;;;;;;25661:421:7:o;16754:214::-;16800:7;;:12;:29;;;;-1:-1:-1;16816:8:7;;:13;16800:29;16797:41;;;16754:214::o;16797:41::-;16868:7;;;16850:15;:25;16905:8;;;16886:16;:27;-1:-1:-1;16926:11:7;;;;16948:12;16754:214::o;23213:506::-;23316:15;23333:23;23358:12;23372:23;23397:12;23413:19;23424:7;23413:10;:19::i;:::-;-1:-1:-1;;;;;23461:15:7;;;;;;:7;:15;;;;;;23315:117;;-1:-1:-1;23315:117:7;;-1:-1:-1;23315:117:7;;-1:-1:-1;23315:117:7;-1:-1:-1;23315:117:7;-1:-1:-1;23461:28:7;;23481:7;23461:19;:28::i;:::-;-1:-1:-1;;;;;23443:15:7;;;;;;:7;:15;;;;;;;;:46;;;;23518:7;:15;;;;:28;;23538:7;23518:19;:28::i;:::-;-1:-1:-1;;;;;23500:15:7;;;;;;;:7;:15;;;;;;:46;;;;23578:18;;;;;;;:39;;23601:15;23578:22;:39::i;:::-;-1:-1:-1;;;;;23557:18:7;;;;;;:7;:18;;;;;:60;23628:23;23640:4;23646;23628:11;:23::i;:::-;23684:9;-1:-1:-1;;;;;23667:44:7;23676:6;-1:-1:-1;;;;;23667:44:7;;23695:15;23667:44;;;;1410:25:10;;1398:2;1383:18;;1264:177;23667:44:7;;;;;;;;23304:415;;;;;23213:506;;;:::o;22687:518::-;22788:15;22805:23;22830:12;22844:23;22869:12;22885:19;22896:7;22885:10;:19::i;:::-;-1:-1:-1;;;;;22933:15:7;;;;;;:7;:15;;;;;;22787:117;;-1:-1:-1;22787:117:7;;-1:-1:-1;22787:117:7;;-1:-1:-1;22787:117:7;-1:-1:-1;22787:117:7;-1:-1:-1;22933:28:7;;22787:117;22933:19;:28::i;:::-;-1:-1:-1;;;;;22915:15:7;;;;;;;:7;:15;;;;;;;;:46;;;;22993:18;;;;;:7;:18;;;;;:39;;23016:15;22993:22;:39::i;:::-;-1:-1:-1;;;;;22972:18:7;;;;;;:7;:18;;;;;;;;:60;;;;23064:7;:18;;;;:39;;23087:15;23064:22;:39::i;22234:445::-;22333:15;22350:23;22375:12;22389:23;22414:12;22430:19;22441:7;22430:10;:19::i;:::-;-1:-1:-1;;;;;22478:15:7;;;;;;:7;:15;;;;;;22332:117;;-1:-1:-1;22332:117:7;;-1:-1:-1;22332:117:7;;-1:-1:-1;22332:117:7;-1:-1:-1;22332:117:7;-1:-1:-1;22478:28:7;;22332:117;22478:19;:28::i;23727:577::-;23830:15;23847:23;23872:12;23886:23;23911:12;23927:19;23938:7;23927:10;:19::i;:::-;-1:-1:-1;;;;;23975:15:7;;;;;;:7;:15;;;;;;23829:117;;-1:-1:-1;23829:117:7;;-1:-1:-1;23829:117:7;;-1:-1:-1;23829:117:7;-1:-1:-1;23829:117:7;-1:-1:-1;23975:28:7;;23995:7;23975:19;:28::i;:::-;-1:-1:-1;;;;;23957:15:7;;;;;;:7;:15;;;;;;;;:46;;;;24032:7;:15;;;;:28;;24052:7;24032:19;:28::i;3501:98:9:-;3559:7;3586:5;3590:1;3586;:5;:::i;24312:259:7:-;24427:4;24411:22;;;;:7;:22;;;;;;:36;;24438:8;24411:26;:36::i;:::-;24402:4;24386:22;;;;:7;:22;;;;;;;;:61;;;;24461:11;:26;;;;;;24458:105;;;24543:4;24527:22;;;;:7;:22;;;;;;:36;;24554:8;24527:26;:36::i;:::-;24518:4;24502:22;;;;:7;:22;;;;;:61;24312:259;;:::o;24579:147::-;24657:7;;:17;;24669:4;24657:11;:17::i;:::-;24647:7;:27;24698:10;;:20;;24713:4;24698:14;:20::i;:::-;24685:10;:33;-1:-1:-1;;24579:147:7:o;14:597:10:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:10;574:15;-1:-1:-1;;570:29:10;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:10:o;616:131::-;-1:-1:-1;;;;;691:31:10;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:10:o;1681:180::-;1740:6;1793:2;1781:9;1772:7;1768:23;1764:32;1761:52;;;1809:1;1806;1799:12;1761:52;-1:-1:-1;1832:23:10;;1681:180;-1:-1:-1;1681:180:10:o;1866:456::-;1943:6;1951;1959;2012:2;2000:9;1991:7;1987:23;1983:32;1980:52;;;2028:1;2025;2018:12;1980:52;2067:9;2054:23;2086:31;2111:5;2086:31;:::i;:::-;2136:5;-1:-1:-1;2193:2:10;2178:18;;2165:32;2206:33;2165:32;2206:33;:::i;:::-;1866:456;;2258:7;;-1:-1:-1;;;2312:2:10;2297:18;;;;2284:32;;1866:456::o;2327:255::-;2394:6;2447:2;2435:9;2426:7;2422:23;2418:32;2415:52;;;2463:1;2460;2453:12;2415:52;2502:9;2489:23;2521:31;2546:5;2521:31;:::i;2776:160::-;2841:20;;2897:13;;2890:21;2880:32;;2870:60;;2926:1;2923;2916:12;2870:60;2776:160;;;:::o;2941:248::-;3006:6;3014;3067:2;3055:9;3046:7;3042:23;3038:32;3035:52;;;3083:1;3080;3073:12;3035:52;3119:9;3106:23;3096:33;;3148:35;3179:2;3168:9;3164:18;3148:35;:::i;:::-;3138:45;;2941:248;;;;;:::o;3654:180::-;3710:6;3763:2;3751:9;3742:7;3738:23;3734:32;3731:52;;;3779:1;3776;3769:12;3731:52;3802:26;3818:9;3802:26;:::i;4063:315::-;4128:6;4136;4189:2;4177:9;4168:7;4164:23;4160:32;4157:52;;;4205:1;4202;4195:12;4157:52;4244:9;4231:23;4263:31;4288:5;4263:31;:::i;:::-;4313:5;-1:-1:-1;4337:35:10;4368:2;4353:18;;4337:35;:::i;4383:388::-;4451:6;4459;4512:2;4500:9;4491:7;4487:23;4483:32;4480:52;;;4528:1;4525;4518:12;4480:52;4567:9;4554:23;4586:31;4611:5;4586:31;:::i;:::-;4636:5;-1:-1:-1;4693:2:10;4678:18;;4665:32;4706:33;4665:32;4706:33;:::i;:::-;4758:7;4748:17;;;4383:388;;;;;:::o;4776:380::-;4855:1;4851:12;;;;4898;;;4919:61;;4973:4;4965:6;4961:17;4951:27;;4919:61;5026:2;5018:6;5015:14;4995:18;4992:38;4989:161;;;5072:10;5067:3;5063:20;5060:1;5053:31;5107:4;5104:1;5097:15;5135:4;5132:1;5125:15;4989:161;;4776:380;;;:::o;5161:356::-;5363:2;5345:21;;;5382:18;;;5375:30;5441:34;5436:2;5421:18;;5414:62;5508:2;5493:18;;5161:356::o;5949:127::-;6010:10;6005:3;6001:20;5998:1;5991:31;6041:4;6038:1;6031:15;6065:4;6062:1;6055:15;6081:168;6121:7;6187:1;6183;6179:6;6175:14;6172:1;6169:21;6164:1;6157:9;6150:17;6146:45;6143:71;;;6194:18;;:::i;:::-;-1:-1:-1;6234:9:10;;6081:168::o;9721:127::-;9782:10;9777:3;9773:20;9770:1;9763:31;9813:4;9810:1;9803:15;9837:4;9834:1;9827:15;9853:125;9893:4;9921:1;9918;9915:8;9912:34;;;9926:18;;:::i;:::-;-1:-1:-1;9963:9:10;;9853:125::o;9983:127::-;10044:10;10039:3;10035:20;10032:1;10025:31;10075:4;10072:1;10065:15;10099:4;10096:1;10089:15;10115:135;10154:3;-1:-1:-1;;10175:17:10;;10172:43;;;10195:18;;:::i;:::-;-1:-1:-1;10242:1:10;10231:13;;10115:135::o;13109:128::-;13149:3;13180:1;13176:6;13173:1;13170:13;13167:39;;;13186:18;;:::i;:::-;-1:-1:-1;13222:9:10;;13109:128::o;13242:217::-;13282:1;13308;13298:132;;13352:10;13347:3;13343:20;13340:1;13333:31;13387:4;13384:1;13377:15;13415:4;13412:1;13405:15;13298:132;-1:-1:-1;13444:9:10;;13242:217::o;13596:251::-;13666:6;13719:2;13707:9;13698:7;13694:23;13690:32;13687:52;;;13735:1;13732;13725:12;13687:52;13767:9;13761:16;13786:31;13811:5;13786:31;:::i;13852:980::-;14114:4;14162:3;14151:9;14147:19;14193:6;14182:9;14175:25;14219:2;14257:6;14252:2;14241:9;14237:18;14230:34;14300:3;14295:2;14284:9;14280:18;14273:31;14324:6;14359;14353:13;14390:6;14382;14375:22;14428:3;14417:9;14413:19;14406:26;;14467:2;14459:6;14455:15;14441:29;;14488:1;14498:195;14512:6;14509:1;14506:13;14498:195;;;14577:13;;-1:-1:-1;;;;;14573:39:10;14561:52;;14668:15;;;;14633:12;;;;14609:1;14527:9;14498:195;;;-1:-1:-1;;;;;;;14749:32:10;;;;14744:2;14729:18;;14722:60;-1:-1:-1;;;14813:3:10;14798:19;14791:35;14710:3;13852:980;-1:-1:-1;;;13852:980:10:o
Swarm Source
ipfs://897085d883f788277a7f5798a467a7da4d3a41855d0e47bd1f0543d7c48ea2a1
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.