More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 81 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 20022927 | 50 days ago | IN | 0 ETH | 0.00026122 | ||||
Approve | 17908239 | 346 days ago | IN | 0 ETH | 0.00039627 | ||||
Approve | 17907040 | 346 days ago | IN | 0 ETH | 0.00062425 | ||||
Approve | 17791368 | 362 days ago | IN | 0 ETH | 0.0010522 | ||||
Approve | 17563643 | 394 days ago | IN | 0 ETH | 0.00059695 | ||||
Approve | 17352452 | 424 days ago | IN | 0 ETH | 0.00124568 | ||||
Approve | 17332970 | 427 days ago | IN | 0 ETH | 0.00123755 | ||||
Transfer | 17332622 | 427 days ago | IN | 0 ETH | 0.00447662 | ||||
Approve | 17296676 | 432 days ago | IN | 0 ETH | 0.00158908 | ||||
Transfer | 17295140 | 432 days ago | IN | 0 ETH | 0.00754416 | ||||
Transfer | 17291183 | 433 days ago | IN | 0 ETH | 0.00879185 | ||||
Transfer | 17291049 | 433 days ago | IN | 0 ETH | 0.00710112 | ||||
Transfer | 17290997 | 433 days ago | IN | 0 ETH | 0.00670078 | ||||
Approve | 16703701 | 516 days ago | IN | 0 ETH | 0.00098877 | ||||
Transfer | 16703628 | 516 days ago | IN | 0 ETH | 0.0034303 | ||||
Approve | 16624129 | 527 days ago | IN | 0 ETH | 0.00068536 | ||||
Approve | 16614399 | 528 days ago | IN | 0 ETH | 0.00100899 | ||||
Approve | 16606956 | 529 days ago | IN | 0 ETH | 0.00101548 | ||||
Transfer | 16509590 | 543 days ago | IN | 0 ETH | 0.00270257 | ||||
Approve | 16480890 | 547 days ago | IN | 0 ETH | 0.00079818 | ||||
Transfer | 16471470 | 548 days ago | IN | 0 ETH | 0.00733872 | ||||
Approve | 16464500 | 549 days ago | IN | 0 ETH | 0.0008105 | ||||
Approve | 16446901 | 552 days ago | IN | 0 ETH | 0.00077678 | ||||
Approve | 16367687 | 563 days ago | IN | 0 ETH | 0.00072239 | ||||
Transfer | 16244277 | 580 days ago | IN | 0 ETH | 0.00238793 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
ChadCoin
Compiler Version
v0.8.11+commit.d7f03943
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-04-14 */ // RASt@ SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.11; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } library Address { function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } 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"); } 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"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } contract Ownable is Context { address private _owner; address private _previousOwner; uint256 private _lockTime; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function getUnlockTime() public view returns (uint256) { return _lockTime; } function getTime() public view returns (uint256) { return block.timestamp; } function lock(uint256 time) public virtual onlyOwner { _previousOwner = _owner; _owner = address(0); _lockTime = block.timestamp + time; emit OwnershipTransferred(_owner, address(0)); } function unlock() public virtual { require(_previousOwner == msg.sender, "You don't have permission to unlock"); require(block.timestamp > _lockTime , "Contract lock duration is not over"); emit OwnershipTransferred(_owner, _previousOwner); _owner = _previousOwner; } } // 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; } // 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 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 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; } // 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); } // pragma solidity >=0.6.2; 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; } contract LockToken is Ownable { bool public isOpen = false; mapping(address => bool) private _whiteList; modifier open(address from, address to) { require(isOpen || _whiteList[from] || _whiteList[to], "Not Open"); _; } constructor() { _whiteList[msg.sender] = true; _whiteList[address(this)] = true; } function openTrade() external onlyOwner { isOpen = true; } function stopTrade() external onlyOwner { isOpen = false; } function includeToWhiteList(address[] memory _users) external onlyOwner { for(uint8 i = 0; i < _users.length; i++) { _whiteList[_users[i]] = true; } } } contract ChadCoin is Context, IERC20, LockToken { using SafeMath for uint256; using Address for address; address payable public marketingAddress = payable(0x4b7df437Fda9efd886047b6c5aD5848731b0a52b); // Marketing wallet address. address payable public developerAddress = payable(0x39a54E279c69758b507A8640822DA8604fD1D320); // Developer wallet address. address public stakingAddress = address(0xBB3b3aF87c395a676c5834d20fd6b894aE495092); // Staking wallet will be replaced by staking contract address address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD; //burn wallet address. mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; address[] private _excluded; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 1_000_000_000 * 10**18; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private _name = "CHADCOIN"; string private _symbol = "CHADX"; uint8 private _decimals = 18; uint256 public _taxFee = 3; uint256 private _previousTaxFee = _taxFee; uint256 public _liquidityFee = 2; uint256 private _previousLiquidityFee = _liquidityFee; uint256 public _marketingFee = 5; uint256 private _previousMarketingFee = _marketingFee; uint256 public _developerFee = 5; uint256 private _previousDeveloperFee = _developerFee; uint256 public _stakingFee = 20; uint256 private _previousStakingFee = _stakingFee; uint256 public _burnFee = 1; uint256 private _previousBurnFee = _burnFee; uint256 private _saleTaxFee = 3; uint256 private _saleLiquidityFee = 2; uint256 private _saleMarketingFee = 5; uint256 private _saleDeveloperFee = 5; uint256 private _saleStakingFee = 20; uint256 private _saleBurnFee = 1; uint256 public _maxTxAmount = _tTotal.div(100); //1% uint256 private swapThresholdAmount = 1_00_000 * 10**18; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = false; event RewardLiquidityProviders(uint256 tokenAmount); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); event SwapETHForTokens( uint256 amountIn, address[] path ); event SwapTokensForETH( uint256 amountIn, address[] path ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor () { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; emit Transfer(address(0), _msgSender(), _tTotal); excludeWalletsFromWhales(); } 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 isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function swapThresholdAmountAmount() public view returns (uint256) { return swapThresholdAmount; } 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 excludeFromReward(address account) public onlyOwner() { require(!_isExcluded[account], "Account is already excluded"); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReward(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 _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address from, address to, uint256 amount) private open(from, to) { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); checkForBlackList(from, to); checkForWhale(from, to, amount); if(from != owner() && to != owner()) { require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); } uint256 contractTokenBalance = balanceOf(address(this)); bool overMinimumTokenBalance = contractTokenBalance >= swapThresholdAmount; if (!inSwapAndLiquify && swapAndLiquifyEnabled && from != uniswapV2Pair) { if (overMinimumTokenBalance) { contractTokenBalance = swapThresholdAmount; swapAndLiquify(contractTokenBalance); } } bool takeFee = true; if(to==uniswapV2Pair) { setSaleFee(); } //if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){ takeFee = false; } _tokenTransfer(from,to,amount,takeFee); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { uint256 swapableFee = _liquidityFee.add(_marketingFee).add(_developerFee); uint256 halfLiquidityTokens = contractTokenBalance.mul(_liquidityFee).div(swapableFee).div(2); uint256 swapableTokens = contractTokenBalance.sub(halfLiquidityTokens); uint256 initialBalance = address(this).balance; swapTokensForEth(swapableTokens); uint256 newBalance = address(this).balance.sub(initialBalance); uint256 ethForLiquidity = newBalance.mul(_liquidityFee).div(swapableFee).div(2); addLiquidity(halfLiquidityTokens, ethForLiquidity); emit SwapAndLiquify(halfLiquidityTokens, ethForLiquidity, halfLiquidityTokens); uint256 ethforMarketing = newBalance.mul(_marketingFee).div(swapableFee); uint256 ethForDeveloper = newBalance.sub(ethforMarketing).sub(ethForLiquidity); marketingAddress.transfer(ethforMarketing); developerAddress.transfer(ethForDeveloper); } function swapTokensForEth(uint256 tokenAmount) private { // 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), // The contract block.timestamp ); emit SwapTokensForETH(tokenAmount, path); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private { if(!takeFee) { removeAllFee(); } uint256 burnTokens = amount.mul(_burnFee).div(100); uint256 stakingTokens = amount.mul(_stakingFee).div(100); amount = amount.sub(burnTokens).sub(stakingTokens); 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]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } removeAllFee(); if(burnTokens > 0) { _transferStandard(sender, deadAddress, burnTokens); } if(stakingTokens > 0) { _transferStandard(sender, stakingAddress, stakingTokens); } restoreAllFee(); } function _transferStandard(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); if(tLiquidity>0) { emit Transfer(sender, address(this), tLiquidity); } } function _transferToExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); if(tLiquidity>0) { emit Transfer(sender, address(this), tLiquidity); } } function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); if(tLiquidity>0) { emit Transfer(sender, address(this), tLiquidity); } } function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _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); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); if(tLiquidity>0) { emit Transfer(sender, address(this), tLiquidity); } } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, _getRate()); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity); } function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256) { uint256 tFee = calculateTaxFee(tAmount); uint256 tLiquidity = calculateLiquidityFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity); return (tTransferAmount, tFee, tLiquidity); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity); 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 _takeLiquidity(uint256 tLiquidity) private { uint256 currentRate = _getRate(); uint256 rLiquidity = tLiquidity.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity); if(_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity); } function calculateTaxFee(uint256 _amount) private view returns (uint256) { _amount = _amount.mul(100).div(100-_burnFee-_stakingFee); return _amount.mul(_taxFee).div(100); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { _amount = _amount.mul(100).div(100-_burnFee-_stakingFee); return _amount.mul(_liquidityFee+_marketingFee+_developerFee).div(100); } function removeAllFee() private { _taxFee = 0; _liquidityFee = 0; _marketingFee = 0; _developerFee = 0; _stakingFee = 0; _burnFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _liquidityFee = _previousLiquidityFee; _marketingFee = _previousMarketingFee; _developerFee = _previousDeveloperFee; _stakingFee = _previousStakingFee; _burnFee = _previousBurnFee; } function setSaleFee() private { _taxFee = _saleTaxFee; _liquidityFee = _saleLiquidityFee; _marketingFee = _saleMarketingFee; _developerFee = _saleDeveloperFee; _stakingFee = _saleStakingFee; _burnFee = _saleBurnFee; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function setAllBuyFeePercents(uint256 taxFee, uint256 liquidityFee, uint256 marketingFee, uint256 developerFee, uint256 stakingFee, uint256 burnFee) external onlyOwner() { _taxFee = taxFee; _previousTaxFee = taxFee; _liquidityFee = liquidityFee; _previousLiquidityFee = liquidityFee; _marketingFee = marketingFee; _previousMarketingFee = marketingFee; _developerFee = developerFee; _previousDeveloperFee = developerFee; _stakingFee = stakingFee; _previousStakingFee = stakingFee; _burnFee = burnFee; _previousBurnFee = burnFee; uint256 totalFee = taxFee.add(liquidityFee).add(marketingFee).add(developerFee); totalFee = totalFee.add(stakingFee).add(burnFee); require(totalFee<=20, "Too High Fee"); } function setAllSaleFeesPercents(uint256 taxFee, uint256 liquidityFee, uint256 marketingFee, uint256 developerFee, uint256 stackingFee, uint256 burnFee) external onlyOwner { _saleTaxFee = taxFee; _saleLiquidityFee = liquidityFee; _saleMarketingFee = marketingFee; _saleDeveloperFee = developerFee; _saleBurnFee = burnFee; uint256 totalFee = taxFee.add(liquidityFee).add(marketingFee).add(developerFee); totalFee = totalFee.add(stackingFee).add(burnFee); require(totalFee<=20, "Too High Fee"); } function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() { _maxTxAmount = maxTxAmount; require(maxTxAmount>_tTotal.div(10000), "Too low tx limit"); } function updateSwapThresholdAmount(uint256 _swapThresholdAmount) external onlyOwner() { swapThresholdAmount = _swapThresholdAmount; } function setMarketingAddress(address _marketingAddress) external onlyOwner() { marketingAddress = payable(_marketingAddress); } function setDeveloperAddress(address _developerAddress) external onlyOwner() { developerAddress = payable(_developerAddress); } function setStakingAddress(address _address) external onlyOwner() { stakingAddress = _address; } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function prepareForLaunch() external onlyOwner { _taxFee = 0; _previousTaxFee = 0; _liquidityFee = 0; _previousLiquidityFee = 0; _marketingFee = 0; _previousMarketingFee = 0; _developerFee = 0; _previousDeveloperFee = 0; _stakingFee = 0; _previousStakingFee = 0; _burnFee = 0; _previousBurnFee = 0; setSwapAndLiquifyEnabled(false); _maxTxAmount = 1_000_000_000 * 10**18; } function afterLaunch() external onlyOwner { _taxFee = 3; _previousTaxFee = _taxFee; _liquidityFee = 2; _previousLiquidityFee = _liquidityFee; _marketingFee = 5; _previousMarketingFee = _marketingFee; _developerFee = 5; _previousDeveloperFee = _developerFee; _stakingFee = 20; _previousStakingFee = _stakingFee; _burnFee = 1; _previousBurnFee = _burnFee; setSwapAndLiquifyEnabled(true); _maxTxAmount = 1_000_000_00 * 10**18; } function transferToAddressETH(address payable recipient, uint256 amount) private { recipient.transfer(amount); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} //////-------- ANTI WHALE RASTARYK-------/////-------- mapping (address => bool) private _isExcludedFromWhale; uint256 public _walletHoldingMaxLimit = _tTotal.div(100).mul(2); //2% function excludeWalletsFromWhales() private { _isExcludedFromWhale[owner()]=true; _isExcludedFromWhale[address(this)]=true; _isExcludedFromWhale[address(0)]=true; _isExcludedFromWhale[uniswapV2Pair]=true; } function checkForWhale(address from, address to, uint256 amount) private view { uint256 newBalance = balanceOf(to).add(amount); if(!_isExcludedFromWhale[from] && !_isExcludedFromWhale[to]) { require(newBalance <= _walletHoldingMaxLimit, "Exceeding max tokens limit in the wallet"); } if(from==uniswapV2Pair && !_isExcludedFromWhale[to]) { require(newBalance <= _walletHoldingMaxLimit, "Exceeding max tokens limit in the wallet"); } } function setExcludedFromWhale(address account, bool _enabled) public onlyOwner { _isExcludedFromWhale[account] = _enabled; } function setWalletMaxHoldingLimit(uint256 _amount) public onlyOwner { _walletHoldingMaxLimit = _amount; } /// black list mapping(address => bool) public _isBlacklisted; event AccountBlacklisted(address _account, bool _value, uint256 timestamp); function blacklistAddress(address account, bool value) external onlyOwner { _isBlacklisted[account] = value; emit AccountBlacklisted(account, value, block.timestamp); } function checkForBlackList(address from, address to) private view { require(!_isBlacklisted[from] && !_isBlacklisted[to], 'Blacklisted address'); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_account","type":"address"},{"indexed":false,"internalType":"bool","name":"_value","type":"bool"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"AccountBlacklisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"RewardLiquidityProviders","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":"_burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_developerFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_stakingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletHoldingMaxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"afterLaunch","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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"blacklistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"developerAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_users","type":"address[]"}],"name":"includeToWhiteList","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":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"prepareForLaunch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"developerFee","type":"uint256"},{"internalType":"uint256","name":"stakingFee","type":"uint256"},{"internalType":"uint256","name":"burnFee","type":"uint256"}],"name":"setAllBuyFeePercents","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"},{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"developerFee","type":"uint256"},{"internalType":"uint256","name":"stackingFee","type":"uint256"},{"internalType":"uint256","name":"burnFee","type":"uint256"}],"name":"setAllSaleFeesPercents","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_developerAddress","type":"address"}],"name":"setDeveloperAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setExcludedFromWhale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingAddress","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setStakingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setWalletMaxHoldingLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stopTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThresholdAmountAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapThresholdAmount","type":"uint256"}],"name":"updateSwapThresholdAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60e06040526003805460ff19169055600580546001600160a01b0319908116734b7df437fda9efd886047b6c5ad5848731b0a52b179091556006805482167339a54e279c69758b507a8640822da8604fd1d3201790556007805490911673bb3b3af87c395a676c5834d20fd6b894ae49509217905561dead6080526b033b2e3c9fd0803ce8000000600e8190556200009a9060001962000757565b620000a89060001962000784565b600f556040805180820190915260088082526721a420a221a7a4a760c11b6020909201918252620000dc916011916200069b565b5060408051808201909152600580825264086908288b60db1b60209092019182526200010b916012916200069b565b506012601360006101000a81548160ff021916908360ff1602179055506003601455601454601555600260165560165460175560056018556018546019556005601a55601a54601b556014601c55601c54601d556001601e55601e54601f55600360205560026021556005602255600560235560146024556001602555620001a56064600e54620004e660201b62001b5e1790919060201c565b60265569152d02c7e14af68000006027556028805461ff0019169055600e54620001f990600290620001e5906064620004e6602090811b62001b5e17901c565b6200053960201b62001ba01790919060201c565b602a553480156200020957600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350336000908152600460205260408082208054600160ff1991821681179092553084529183208054909216179055600f5490600890620002873390565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000303573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032991906200079e565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000377573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200039d91906200079e565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620003eb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200041191906200079e565b6001600160a01b0390811660c052811660a0526001600b60006200043d6000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152600b909252902080549091166001179055620004853390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600e54604051620004cd91815260200190565b60405180910390a3620004df620005c4565b5062000897565b60006200053083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200065f60201b60201c565b90505b92915050565b6000826200054a5750600062000533565b6000620005588385620007c9565b905082620005678583620007eb565b14620005305760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b600160296000620005dd6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530815260299093528183208054851660019081179091557fbc72c27881d499e9ea29f42d0975d4e269d866b929e1b555435cbfe829a9d200805486168217905560c051909116835291208054909216179055565b60008183620006835760405162461bcd60e51b8152600401620005bb919062000802565b506000620006928486620007eb565b95945050505050565b828054620006a9906200085a565b90600052602060002090601f016020900481019282620006cd576000855562000718565b82601f10620006e857805160ff191683800117855562000718565b8280016001018555821562000718579182015b8281111562000718578251825591602001919060010190620006fb565b50620007269291506200072a565b5090565b5b808211156200072657600081556001016200072b565b634e487b7160e01b600052601260045260246000fd5b60008262000769576200076962000741565b500690565b634e487b7160e01b600052601160045260246000fd5b6000828210156200079957620007996200076e565b500390565b600060208284031215620007b157600080fd5b81516001600160a01b03811681146200053057600080fd5b6000816000190483118215151615620007e657620007e66200076e565b500290565b600082620007fd57620007fd62000741565b500490565b600060208083528351808285015260005b81811015620008315785810183015185820160400152820162000813565b8181111562000844576000604083870101525b50601f01601f1916929092016040019392505050565b600181811c908216806200086f57607f821691505b602082108114156200089157634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c0516136da62000906600039600081816106e301528181611fd301528181612029015261232201526000818161046001528181612a0c01528181612ac501528181612b0101528181612ba80152612bcf01526000818161054701526126f101526136da6000f3fe6080604052600436106103a65760003560e01c80636bc87c3a116101e7578063a878b3011161010d578063dcc345f2116100a0578063ec28438a1161006f578063ec28438a14610ae3578063f2fde38b14610b03578063f4e0d9ac14610b23578063fb201b1d14610b4357600080fd5b8063dcc345f214610a3d578063dd46706414610a5d578063dd62ed3e14610a7d578063ea2f0b3714610ac357600080fd5b8063c0b0fda2116100dc578063c0b0fda2146109c7578063c49b9a80146109dd578063caccd7f7146109fd578063d7b4be2414610a1d57600080fd5b8063a878b3011461095c578063a9059cbb1461097c578063ae8502811461099c578063be1614f9146109b257600080fd5b80638baeefce11610185578063a1ab19a311610154578063a1ab19a3146108f2578063a457c2d714610907578063a5ece94114610927578063a69df4b51461094757600080fd5b80638baeefce1461088a5780638da5cb5b1461089f578063906e9dd0146108bd57806395d89b41146108dd57600080fd5b806372b28e45116101c157806372b28e45146108105780637d1db4a51461082657806388f820201461083c578063896f9b9a1461087557600080fd5b80636bc87c3a146107c557806370a08231146107db578063715018a6146107fb57600080fd5b806339509351116102cc57806348de478e1161026a57806352390c021161023957806352390c02146107445780635342acb414610764578063557ed1ba1461079d578063602bc62b146107b057600080fd5b806348de478e146106bb57806349bd5a5e146106d15780634a74bb02146107055780634e3c06b11461072457600080fd5b806344d4225f116102a657806344d4225f146106415780634549b03914610661578063455a43961461068157806347535d7b146106a157600080fd5b806339509351146105eb5780633b124fe71461060b578063437823ec1461062157600080fd5b80631fc6a2dd116103445780632d838119116103135780632d83811914610569578063313ce567146105895780633685d419146105ab5780633742c24c146105cb57600080fd5b80631fc6a2dd146104df57806322976e0d146104ff57806323b872dd1461051557806327c8f8351461053557600080fd5b806313114a9d1161038057806313114a9d1461042f5780631694505e1461044e57806318160ddd1461049a5780631cdd3be3146104af57600080fd5b806306fdde03146103b2578063095ea7b3146103dd5780630b6bb6f51461040d57600080fd5b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610b58565b6040516103d491906130af565b60405180910390f35b3480156103e957600080fd5b506103fd6103f8366004613129565b610bea565b60405190151581526020016103d4565b34801561041957600080fd5b5061042d61042836600461316b565b610c01565b005b34801561043b57600080fd5b506010545b6040519081526020016103d4565b34801561045a57600080fd5b506104827f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016103d4565b3480156104a657600080fd5b50600e54610440565b3480156104bb57600080fd5b506103fd6104ca366004613230565b602b6020526000908152604090205460ff1681565b3480156104eb57600080fd5b5061042d6104fa36600461324d565b610ca6565b34801561050b57600080fd5b5061044060185481565b34801561052157600080fd5b506103fd610530366004613266565b610cd5565b34801561054157600080fd5b506104827f000000000000000000000000000000000000000000000000000000000000000081565b34801561057557600080fd5b5061044061058436600461324d565b610d3e565b34801561059557600080fd5b5060135460405160ff90911681526020016103d4565b3480156105b757600080fd5b5061042d6105c6366004613230565b610dc2565b3480156105d757600080fd5b5061042d6105e63660046132a7565b610f75565b3480156105f757600080fd5b506103fd610606366004613129565b61102b565b34801561061757600080fd5b5061044060145481565b34801561062d57600080fd5b5061042d61063c366004613230565b611061565b34801561064d57600080fd5b5061042d61065c36600461324d565b6110af565b34801561066d57600080fd5b5061044061067c3660046132fa565b6110de565b34801561068d57600080fd5b5061042d61069c366004613326565b61116b565b3480156106ad57600080fd5b506003546103fd9060ff1681565b3480156106c757600080fd5b50610440601a5481565b3480156106dd57600080fd5b506104827f000000000000000000000000000000000000000000000000000000000000000081565b34801561071157600080fd5b506028546103fd90610100900460ff1681565b34801561073057600080fd5b5061042d61073f366004613326565b611200565b34801561075057600080fd5b5061042d61075f366004613230565b611255565b34801561077057600080fd5b506103fd61077f366004613230565b6001600160a01b03166000908152600b602052604090205460ff1690565b3480156107a957600080fd5b5042610440565b3480156107bc57600080fd5b50600254610440565b3480156107d157600080fd5b5061044060165481565b3480156107e757600080fd5b506104406107f6366004613230565b6113a8565b34801561080757600080fd5b5061042d611407565b34801561081c57600080fd5b50610440602a5481565b34801561083257600080fd5b5061044060265481565b34801561084857600080fd5b506103fd610857366004613230565b6001600160a01b03166000908152600c602052604090205460ff1690565b34801561088157600080fd5b5061042d611469565b34801561089657600080fd5b5061042d6114ec565b3480156108ab57600080fd5b506000546001600160a01b0316610482565b3480156108c957600080fd5b5061042d6108d8366004613230565b611522565b3480156108e957600080fd5b506103c761156e565b3480156108fe57600080fd5b5061042d61157d565b34801561091357600080fd5b506103fd610922366004613129565b611600565b34801561093357600080fd5b50600554610482906001600160a01b031681565b34801561095357600080fd5b5061042d61164f565b34801561096857600080fd5b5061042d6109773660046132a7565b611760565b34801561098857600080fd5b506103fd610997366004613129565b6117d8565b3480156109a857600080fd5b50610440601c5481565b3480156109be57600080fd5b50602754610440565b3480156109d357600080fd5b50610440601e5481565b3480156109e957600080fd5b5061042d6109f8366004613352565b6117e5565b348015610a0957600080fd5b50600654610482906001600160a01b031681565b348015610a2957600080fd5b50600754610482906001600160a01b031681565b348015610a4957600080fd5b5061042d610a58366004613230565b611863565b348015610a6957600080fd5b5061042d610a7836600461324d565b6118af565b348015610a8957600080fd5b50610440610a9836600461336d565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b348015610acf57600080fd5b5061042d610ade366004613230565b611934565b348015610aef57600080fd5b5061042d610afe36600461324d565b61197f565b348015610b0f57600080fd5b5061042d610b1e366004613230565b611a01565b348015610b2f57600080fd5b5061042d610b3e366004613230565b611ad9565b348015610b4f57600080fd5b5061042d611b25565b606060118054610b67906133a6565b80601f0160208091040260200160405190810160405280929190818152602001828054610b93906133a6565b8015610be05780601f10610bb557610100808354040283529160200191610be0565b820191906000526020600020905b815481529060010190602001808311610bc357829003601f168201915b5050505050905090565b6000610bf7338484611c1f565b5060015b92915050565b6000546001600160a01b03163314610c345760405162461bcd60e51b8152600401610c2b906133e1565b60405180910390fd5b60005b81518160ff161015610ca257600160046000848460ff1681518110610c5e57610c5e613416565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610c9a81613442565b915050610c37565b5050565b6000546001600160a01b03163314610cd05760405162461bcd60e51b8152600401610c2b906133e1565b602755565b6000610ce2848484611d43565b610d348433610d2f85604051806060016040528060288152602001613638602891396001600160a01b038a166000908152600a6020908152604080832033845290915290205491906120e8565b611c1f565b5060019392505050565b6000600f54821115610da55760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610c2b565b6000610daf612122565b9050610dbb8382611b5e565b9392505050565b6000546001600160a01b03163314610dec5760405162461bcd60e51b8152600401610c2b906133e1565b6001600160a01b0381166000908152600c602052604090205460ff16610e545760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610c2b565b60005b600d54811015610ca257816001600160a01b0316600d8281548110610e7e57610e7e613416565b6000918252602090912001546001600160a01b03161415610f6357600d8054610ea990600190613462565b81548110610eb957610eb9613416565b600091825260209091200154600d80546001600160a01b039092169183908110610ee557610ee5613416565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600982526040808220829055600c90925220805460ff19169055600d805480610f3d57610f3d613479565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610f6d8161348f565b915050610e57565b6000546001600160a01b03163314610f9f5760405162461bcd60e51b8152600401610c2b906133e1565b602086905560218590556022849055602383905560258190556000610fd084610fca87818b8b612145565b90612145565b9050610fe082610fca8386612145565b905060148111156110225760405162461bcd60e51b815260206004820152600c60248201526b546f6f20486967682046656560a01b6044820152606401610c2b565b50505050505050565b336000818152600a602090815260408083206001600160a01b03871684529091528120549091610bf7918590610d2f9086612145565b6000546001600160a01b0316331461108b5760405162461bcd60e51b8152600401610c2b906133e1565b6001600160a01b03166000908152600b60205260409020805460ff19166001179055565b6000546001600160a01b031633146110d95760405162461bcd60e51b8152600401610c2b906133e1565b602a55565b6000600e548311156111325760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610c2b565b81611151576000611142846121a4565b50939550610bfb945050505050565b600061115c846121a4565b50929550610bfb945050505050565b6000546001600160a01b031633146111955760405162461bcd60e51b8152600401610c2b906133e1565b6001600160a01b0382166000818152602b6020908152604091829020805460ff191685151590811790915582519384529083015242908201527f6939dfd500375b74c4a98d82db6e7fa9fa1facbdeb93453f963f7e2a3bca737b906060015b60405180910390a15050565b6000546001600160a01b0316331461122a5760405162461bcd60e51b8152600401610c2b906133e1565b6001600160a01b03919091166000908152602960205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461127f5760405162461bcd60e51b8152600401610c2b906133e1565b6001600160a01b0381166000908152600c602052604090205460ff16156112e85760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610c2b565b6001600160a01b03811660009081526008602052604090205415611342576001600160a01b03811660009081526008602052604090205461132890610d3e565b6001600160a01b0382166000908152600960205260409020555b6001600160a01b03166000818152600c60205260408120805460ff19166001908117909155600d805491820181559091527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b0319169091179055565b6001600160a01b0381166000908152600c602052604081205460ff16156113e557506001600160a01b031660009081526009602052604090205490565b6001600160a01b038216600090815260086020526040902054610bfb90610d3e565b6000546001600160a01b031633146114315760405162461bcd60e51b8152600401610c2b906133e1565b600080546040516001600160a01b0390911690600080516020613660833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146114935760405162461bcd60e51b8152600401610c2b906133e1565b6003601481815560159190915560026016819055601755600560188190556019819055601a819055601b55601c819055601d556001601e819055601f8190556114db906117e5565b6a52b7d2dcc80cd2e4000000602655565b6000546001600160a01b031633146115165760405162461bcd60e51b8152600401610c2b906133e1565b6003805460ff19169055565b6000546001600160a01b0316331461154c5760405162461bcd60e51b8152600401610c2b906133e1565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b606060128054610b67906133a6565b6000546001600160a01b031633146115a75760405162461bcd60e51b8152600401610c2b906133e1565b6000601481905560158190556016819055601781905560188190556019819055601a819055601b819055601c819055601d819055601e819055601f8190556115ee906117e5565b6b033b2e3c9fd0803ce8000000602655565b6000610bf73384610d2f8560405180606001604052806025815260200161368060259139336000908152600a602090815260408083206001600160a01b038d16845290915290205491906120e8565b6001546001600160a01b031633146116b55760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610c2b565b60025442116117115760405162461bcd60e51b815260206004820152602260248201527f436f6e7472616374206c6f636b206475726174696f6e206973206e6f74206f7660448201526132b960f11b6064820152608401610c2b565b600154600080546040516001600160a01b03938416939091169160008051602061366083398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000546001600160a01b0316331461178a5760405162461bcd60e51b8152600401610c2b906133e1565b601486905560158690556016859055601785905560188490556019849055601a839055601b839055601c829055601d829055601e819055601f8190556000610fd084610fca87818b8b612145565b6000610bf7338484611d43565b6000546001600160a01b0316331461180f5760405162461bcd60e51b8152600401610c2b906133e1565b602880548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061185890831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461188d5760405162461bcd60e51b8152600401610c2b906133e1565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146118d95760405162461bcd60e51b8152600401610c2b906133e1565b60008054600180546001600160a01b03199081166001600160a01b0384161790915516905561190881426134aa565b600255600080546040516001600160a01b0390911690600080516020613660833981519152908390a350565b6000546001600160a01b0316331461195e5760405162461bcd60e51b8152600401610c2b906133e1565b6001600160a01b03166000908152600b60205260409020805460ff19169055565b6000546001600160a01b031633146119a95760405162461bcd60e51b8152600401610c2b906133e1565b6026819055600e546119bd90612710611b5e565b81116119fe5760405162461bcd60e51b815260206004820152601060248201526f151bdbc81b1bddc81d1e081b1a5b5a5d60821b6044820152606401610c2b565b50565b6000546001600160a01b03163314611a2b5760405162461bcd60e51b8152600401610c2b906133e1565b6001600160a01b038116611a905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c2b565b600080546040516001600160a01b038085169392169160008051602061366083398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611b035760405162461bcd60e51b8152600401610c2b906133e1565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611b4f5760405162461bcd60e51b8152600401610c2b906133e1565b6003805460ff19166001179055565b6000610dbb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506121f3565b600082611baf57506000610bfb565b6000611bbb83856134c2565b905082611bc885836134e1565b14610dbb5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610c2b565b6001600160a01b038316611c815760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c2b565b6001600160a01b038216611ce25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c2b565b6001600160a01b038381166000818152600a602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6003548390839060ff1680611d7057506001600160a01b03821660009081526004602052604090205460ff165b80611d9357506001600160a01b03811660009081526004602052604090205460ff165b611dca5760405162461bcd60e51b81526020600482015260086024820152672737ba1027b832b760c11b6044820152606401610c2b565b6001600160a01b038516611e2e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c2b565b6001600160a01b038416611e905760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c2b565b60008311611ef25760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610c2b565b611efc8585612221565b611f078585856122a5565b6000546001600160a01b03868116911614801590611f3357506000546001600160a01b03858116911614155b15611f9b57602654831115611f9b5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610c2b565b6000611fa6306113a8565b6027546028549192508210159060ff16158015611fca5750602854610100900460ff165b801561200857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316876001600160a01b031614155b15612021578015612021576027549150612021826123a7565b6000600190507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316876001600160a01b0316141561208a5761208a602054601455602154601655602254601855602354601a55602454601c55602554601e55565b6001600160a01b0388166000908152600b602052604090205460ff16806120c957506001600160a01b0387166000908152600b602052604090205460ff165b156120d2575060005b6120de8888888461254b565b5050505050505050565b6000818484111561210c5760405162461bcd60e51b8152600401610c2b91906130af565b5060006121198486613462565b95945050505050565b600080600061212f612765565b909250905061213e8282611b5e565b9250505090565b60008061215283856134aa565b905083811015610dbb5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610c2b565b60008060008060008060008060006121bb8a6128e7565b92509250925060008060006121d98d86866121d4612122565b612923565b919f909e50909c50959a5093985091965092945050505050565b600081836122145760405162461bcd60e51b8152600401610c2b91906130af565b50600061211984866134e1565b6001600160a01b0382166000908152602b602052604090205460ff1615801561226357506001600160a01b0381166000908152602b602052604090205460ff16155b610ca25760405162461bcd60e51b8152602060048201526013602482015272426c61636b6c6973746564206164647265737360681b6044820152606401610c2b565b60006122b482610fca856113a8565b6001600160a01b03851660009081526029602052604090205490915060ff161580156122f957506001600160a01b03831660009081526029602052604090205460ff16155b1561232057602a548111156123205760405162461bcd60e51b8152600401610c2b90613503565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614801561237a57506001600160a01b03831660009081526029602052604090205460ff16155b156123a157602a548111156123a15760405162461bcd60e51b8152600401610c2b90613503565b50505050565b6028805460ff19166001179055601a546018546016546000926123cf929091610fca91612145565b905060006123f760026123f1846123f160165488611ba090919063ffffffff16565b90611b5e565b905060006124058483612973565b905047612411826129b5565b600061241d4783612973565b9050600061243f60026123f1886123f160165487611ba090919063ffffffff16565b905061244b8582612ba2565b60408051868152602081018390529081018690527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a160006124a7876123f160185486611ba090919063ffffffff16565b905060006124bf836124b98685612973565b90612973565b6005546040519192506001600160a01b03169083156108fc029084906000818181858888f193505050501580156124fa573d6000803e3d6000fd5b506006546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612535573d6000803e3d6000fd5b50506028805460ff191690555050505050505050565b80612573576125736000601481905560168190556018819055601a819055601c819055601e55565b600061258f60646123f1601e5486611ba090919063ffffffff16565b905060006125ad60646123f1601c5487611ba090919063ffffffff16565b90506125bd816124b98685612973565b6001600160a01b0387166000908152600c602052604090205490945060ff16801561260157506001600160a01b0385166000908152600c602052604090205460ff16155b1561261657612611868686612ca8565b6126c2565b6001600160a01b0386166000908152600c602052604090205460ff1615801561265757506001600160a01b0385166000908152600c602052604090205460ff165b1561266757612611868686612e15565b6001600160a01b0386166000908152600c602052604090205460ff1680156126a757506001600160a01b0385166000908152600c602052604090205460ff165b156126b757612611868686612ebe565b6126c2868686612f31565b6126e56000601481905560168190556018819055601a819055601c819055601e55565b811561271657612716867f000000000000000000000000000000000000000000000000000000000000000084612f31565b8015612734576007546127349087906001600160a01b031683612f31565b61275d601554601455601754601655601954601855601b54601a55601d54601c55601f54601e55565b505050505050565b600f54600e546000918291825b600d548110156128b7578260086000600d848154811061279457612794613416565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806127ff57508160096000600d84815481106127d8576127d8613416565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561281557600f54600e54945094505050509091565b61285b60086000600d848154811061282f5761282f613416565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612973565b92506128a360096000600d848154811061287757612877613416565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612973565b9150806128af8161348f565b915050612772565b50600e54600f546128c791611b5e565b8210156128de57600f54600e549350935050509091565b90939092509050565b6000806000806128f685612f75565b9050600061290386612fbd565b90506000612915826124b98986612973565b979296509094509092505050565b60008080806129328886611ba0565b905060006129408887611ba0565b9050600061294e8888611ba0565b90506000612960826124b98686612973565b939b939a50919850919650505050505050565b6000610dbb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120e8565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106129ea576129ea613416565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a8c919061354b565b81600181518110612a9f57612a9f613416565b60200260200101906001600160a01b031690816001600160a01b031681525050612aea307f000000000000000000000000000000000000000000000000000000000000000084611c1f565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790612b3f9085906000908690309042906004016135ac565b600060405180830381600087803b158015612b5957600080fd5b505af1158015612b6d573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516111f49291906135e8565b612bcd307f000000000000000000000000000000000000000000000000000000000000000084611c1f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d719823085600080612c146000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612c7c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612ca19190613609565b5050505050565b600080600080600080612cba876121a4565b6001600160a01b038f16600090815260096020526040902054959b50939950919750955093509150612cec9088612973565b6001600160a01b038a16600090815260096020908152604080832093909355600890522054612d1b9087612973565b6001600160a01b03808b1660009081526008602052604080822093909355908a1681522054612d4a9086612145565b6001600160a01b038916600090815260086020526040902055612d6c81613002565b612d76848361308b565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612dbb91815260200190565b60405180910390a38015612e0a5760405181815230906001600160a01b038b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b505050505050505050565b600080600080600080612e27876121a4565b6001600160a01b038f16600090815260086020526040902054959b50939950919750955093509150612e599087612973565b6001600160a01b03808b16600090815260086020908152604080832094909455918b16815260099091522054612e8f9084612145565b6001600160a01b038916600090815260096020908152604080832093909355600890522054612d4a9086612145565b600080600080600080612ed0876121a4565b6001600160a01b038f16600090815260096020526040902054959b50939950919750955093509150612f029088612973565b6001600160a01b038a16600090815260096020908152604080832093909355600890522054612e599087612973565b600080600080600080612f43876121a4565b6001600160a01b038f16600090815260086020526040902054959b50939950919750955093509150612d1b9087612973565b6000612fa1601c54601e546064612f8c9190613462565b612f969190613462565b6123f1846064611ba0565b9150610bfb60646123f160145485611ba090919063ffffffff16565b6000612fd4601c54601e546064612f8c9190613462565b9150610bfb60646123f1601a54601854601654612ff191906134aa565b612ffb91906134aa565b8590611ba0565b600061300c612122565b9050600061301a8383611ba0565b306000908152600860205260409020549091506130379082612145565b30600090815260086020908152604080832093909355600c9052205460ff161561308657306000908152600960205260409020546130759084612145565b306000908152600960205260409020555b505050565b600f546130989083612973565b600f556010546130a89082612145565b6010555050565b600060208083528351808285015260005b818110156130dc578581018301518582016040015282016130c0565b818111156130ee576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146119fe57600080fd5b803561312481613104565b919050565b6000806040838503121561313c57600080fd5b823561314781613104565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b6000602080838503121561317e57600080fd5b823567ffffffffffffffff8082111561319657600080fd5b818501915085601f8301126131aa57600080fd5b8135818111156131bc576131bc613155565b8060051b604051601f19603f830116810181811085821117156131e1576131e1613155565b6040529182528482019250838101850191888311156131ff57600080fd5b938501935b828510156132245761321585613119565b84529385019392850192613204565b98975050505050505050565b60006020828403121561324257600080fd5b8135610dbb81613104565b60006020828403121561325f57600080fd5b5035919050565b60008060006060848603121561327b57600080fd5b833561328681613104565b9250602084013561329681613104565b929592945050506040919091013590565b60008060008060008060c087890312156132c057600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b8035801515811461312457600080fd5b6000806040838503121561330d57600080fd5b8235915061331d602084016132ea565b90509250929050565b6000806040838503121561333957600080fd5b823561334481613104565b915061331d602084016132ea565b60006020828403121561336457600080fd5b610dbb826132ea565b6000806040838503121561338057600080fd5b823561338b81613104565b9150602083013561339b81613104565b809150509250929050565b600181811c908216806133ba57607f821691505b602082108114156133db57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff8114156134595761345961342c565b60010192915050565b6000828210156134745761347461342c565b500390565b634e487b7160e01b600052603160045260246000fd5b60006000198214156134a3576134a361342c565b5060010190565b600082198211156134bd576134bd61342c565b500190565b60008160001904831182151516156134dc576134dc61342c565b500290565b6000826134fe57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526028908201527f457863656564696e67206d617820746f6b656e73206c696d697420696e20746860408201526719481dd85b1b195d60c21b606082015260800190565b60006020828403121561355d57600080fd5b8151610dbb81613104565b600081518084526020808501945080840160005b838110156135a15781516001600160a01b03168752958201959082019060010161357c565b509495945050505050565b85815284602082015260a0604082015260006135cb60a0830186613568565b6001600160a01b0394909416606083015250608001529392505050565b8281526040602082015260006136016040830184613568565b949350505050565b60008060006060848603121561361e57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206cbd8c53ecff2751b8799cdad84690c360bf8daa14644f0c45aa0bf04716f7a564736f6c634300080b0033
Deployed Bytecode
0x6080604052600436106103a65760003560e01c80636bc87c3a116101e7578063a878b3011161010d578063dcc345f2116100a0578063ec28438a1161006f578063ec28438a14610ae3578063f2fde38b14610b03578063f4e0d9ac14610b23578063fb201b1d14610b4357600080fd5b8063dcc345f214610a3d578063dd46706414610a5d578063dd62ed3e14610a7d578063ea2f0b3714610ac357600080fd5b8063c0b0fda2116100dc578063c0b0fda2146109c7578063c49b9a80146109dd578063caccd7f7146109fd578063d7b4be2414610a1d57600080fd5b8063a878b3011461095c578063a9059cbb1461097c578063ae8502811461099c578063be1614f9146109b257600080fd5b80638baeefce11610185578063a1ab19a311610154578063a1ab19a3146108f2578063a457c2d714610907578063a5ece94114610927578063a69df4b51461094757600080fd5b80638baeefce1461088a5780638da5cb5b1461089f578063906e9dd0146108bd57806395d89b41146108dd57600080fd5b806372b28e45116101c157806372b28e45146108105780637d1db4a51461082657806388f820201461083c578063896f9b9a1461087557600080fd5b80636bc87c3a146107c557806370a08231146107db578063715018a6146107fb57600080fd5b806339509351116102cc57806348de478e1161026a57806352390c021161023957806352390c02146107445780635342acb414610764578063557ed1ba1461079d578063602bc62b146107b057600080fd5b806348de478e146106bb57806349bd5a5e146106d15780634a74bb02146107055780634e3c06b11461072457600080fd5b806344d4225f116102a657806344d4225f146106415780634549b03914610661578063455a43961461068157806347535d7b146106a157600080fd5b806339509351146105eb5780633b124fe71461060b578063437823ec1461062157600080fd5b80631fc6a2dd116103445780632d838119116103135780632d83811914610569578063313ce567146105895780633685d419146105ab5780633742c24c146105cb57600080fd5b80631fc6a2dd146104df57806322976e0d146104ff57806323b872dd1461051557806327c8f8351461053557600080fd5b806313114a9d1161038057806313114a9d1461042f5780631694505e1461044e57806318160ddd1461049a5780631cdd3be3146104af57600080fd5b806306fdde03146103b2578063095ea7b3146103dd5780630b6bb6f51461040d57600080fd5b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610b58565b6040516103d491906130af565b60405180910390f35b3480156103e957600080fd5b506103fd6103f8366004613129565b610bea565b60405190151581526020016103d4565b34801561041957600080fd5b5061042d61042836600461316b565b610c01565b005b34801561043b57600080fd5b506010545b6040519081526020016103d4565b34801561045a57600080fd5b506104827f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016103d4565b3480156104a657600080fd5b50600e54610440565b3480156104bb57600080fd5b506103fd6104ca366004613230565b602b6020526000908152604090205460ff1681565b3480156104eb57600080fd5b5061042d6104fa36600461324d565b610ca6565b34801561050b57600080fd5b5061044060185481565b34801561052157600080fd5b506103fd610530366004613266565b610cd5565b34801561054157600080fd5b506104827f000000000000000000000000000000000000000000000000000000000000dead81565b34801561057557600080fd5b5061044061058436600461324d565b610d3e565b34801561059557600080fd5b5060135460405160ff90911681526020016103d4565b3480156105b757600080fd5b5061042d6105c6366004613230565b610dc2565b3480156105d757600080fd5b5061042d6105e63660046132a7565b610f75565b3480156105f757600080fd5b506103fd610606366004613129565b61102b565b34801561061757600080fd5b5061044060145481565b34801561062d57600080fd5b5061042d61063c366004613230565b611061565b34801561064d57600080fd5b5061042d61065c36600461324d565b6110af565b34801561066d57600080fd5b5061044061067c3660046132fa565b6110de565b34801561068d57600080fd5b5061042d61069c366004613326565b61116b565b3480156106ad57600080fd5b506003546103fd9060ff1681565b3480156106c757600080fd5b50610440601a5481565b3480156106dd57600080fd5b506104827f0000000000000000000000007f15880910a91a44e254cce87f6e4601c1a3738281565b34801561071157600080fd5b506028546103fd90610100900460ff1681565b34801561073057600080fd5b5061042d61073f366004613326565b611200565b34801561075057600080fd5b5061042d61075f366004613230565b611255565b34801561077057600080fd5b506103fd61077f366004613230565b6001600160a01b03166000908152600b602052604090205460ff1690565b3480156107a957600080fd5b5042610440565b3480156107bc57600080fd5b50600254610440565b3480156107d157600080fd5b5061044060165481565b3480156107e757600080fd5b506104406107f6366004613230565b6113a8565b34801561080757600080fd5b5061042d611407565b34801561081c57600080fd5b50610440602a5481565b34801561083257600080fd5b5061044060265481565b34801561084857600080fd5b506103fd610857366004613230565b6001600160a01b03166000908152600c602052604090205460ff1690565b34801561088157600080fd5b5061042d611469565b34801561089657600080fd5b5061042d6114ec565b3480156108ab57600080fd5b506000546001600160a01b0316610482565b3480156108c957600080fd5b5061042d6108d8366004613230565b611522565b3480156108e957600080fd5b506103c761156e565b3480156108fe57600080fd5b5061042d61157d565b34801561091357600080fd5b506103fd610922366004613129565b611600565b34801561093357600080fd5b50600554610482906001600160a01b031681565b34801561095357600080fd5b5061042d61164f565b34801561096857600080fd5b5061042d6109773660046132a7565b611760565b34801561098857600080fd5b506103fd610997366004613129565b6117d8565b3480156109a857600080fd5b50610440601c5481565b3480156109be57600080fd5b50602754610440565b3480156109d357600080fd5b50610440601e5481565b3480156109e957600080fd5b5061042d6109f8366004613352565b6117e5565b348015610a0957600080fd5b50600654610482906001600160a01b031681565b348015610a2957600080fd5b50600754610482906001600160a01b031681565b348015610a4957600080fd5b5061042d610a58366004613230565b611863565b348015610a6957600080fd5b5061042d610a7836600461324d565b6118af565b348015610a8957600080fd5b50610440610a9836600461336d565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b348015610acf57600080fd5b5061042d610ade366004613230565b611934565b348015610aef57600080fd5b5061042d610afe36600461324d565b61197f565b348015610b0f57600080fd5b5061042d610b1e366004613230565b611a01565b348015610b2f57600080fd5b5061042d610b3e366004613230565b611ad9565b348015610b4f57600080fd5b5061042d611b25565b606060118054610b67906133a6565b80601f0160208091040260200160405190810160405280929190818152602001828054610b93906133a6565b8015610be05780601f10610bb557610100808354040283529160200191610be0565b820191906000526020600020905b815481529060010190602001808311610bc357829003601f168201915b5050505050905090565b6000610bf7338484611c1f565b5060015b92915050565b6000546001600160a01b03163314610c345760405162461bcd60e51b8152600401610c2b906133e1565b60405180910390fd5b60005b81518160ff161015610ca257600160046000848460ff1681518110610c5e57610c5e613416565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610c9a81613442565b915050610c37565b5050565b6000546001600160a01b03163314610cd05760405162461bcd60e51b8152600401610c2b906133e1565b602755565b6000610ce2848484611d43565b610d348433610d2f85604051806060016040528060288152602001613638602891396001600160a01b038a166000908152600a6020908152604080832033845290915290205491906120e8565b611c1f565b5060019392505050565b6000600f54821115610da55760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610c2b565b6000610daf612122565b9050610dbb8382611b5e565b9392505050565b6000546001600160a01b03163314610dec5760405162461bcd60e51b8152600401610c2b906133e1565b6001600160a01b0381166000908152600c602052604090205460ff16610e545760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610c2b565b60005b600d54811015610ca257816001600160a01b0316600d8281548110610e7e57610e7e613416565b6000918252602090912001546001600160a01b03161415610f6357600d8054610ea990600190613462565b81548110610eb957610eb9613416565b600091825260209091200154600d80546001600160a01b039092169183908110610ee557610ee5613416565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600982526040808220829055600c90925220805460ff19169055600d805480610f3d57610f3d613479565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610f6d8161348f565b915050610e57565b6000546001600160a01b03163314610f9f5760405162461bcd60e51b8152600401610c2b906133e1565b602086905560218590556022849055602383905560258190556000610fd084610fca87818b8b612145565b90612145565b9050610fe082610fca8386612145565b905060148111156110225760405162461bcd60e51b815260206004820152600c60248201526b546f6f20486967682046656560a01b6044820152606401610c2b565b50505050505050565b336000818152600a602090815260408083206001600160a01b03871684529091528120549091610bf7918590610d2f9086612145565b6000546001600160a01b0316331461108b5760405162461bcd60e51b8152600401610c2b906133e1565b6001600160a01b03166000908152600b60205260409020805460ff19166001179055565b6000546001600160a01b031633146110d95760405162461bcd60e51b8152600401610c2b906133e1565b602a55565b6000600e548311156111325760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610c2b565b81611151576000611142846121a4565b50939550610bfb945050505050565b600061115c846121a4565b50929550610bfb945050505050565b6000546001600160a01b031633146111955760405162461bcd60e51b8152600401610c2b906133e1565b6001600160a01b0382166000818152602b6020908152604091829020805460ff191685151590811790915582519384529083015242908201527f6939dfd500375b74c4a98d82db6e7fa9fa1facbdeb93453f963f7e2a3bca737b906060015b60405180910390a15050565b6000546001600160a01b0316331461122a5760405162461bcd60e51b8152600401610c2b906133e1565b6001600160a01b03919091166000908152602960205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461127f5760405162461bcd60e51b8152600401610c2b906133e1565b6001600160a01b0381166000908152600c602052604090205460ff16156112e85760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610c2b565b6001600160a01b03811660009081526008602052604090205415611342576001600160a01b03811660009081526008602052604090205461132890610d3e565b6001600160a01b0382166000908152600960205260409020555b6001600160a01b03166000818152600c60205260408120805460ff19166001908117909155600d805491820181559091527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b0319169091179055565b6001600160a01b0381166000908152600c602052604081205460ff16156113e557506001600160a01b031660009081526009602052604090205490565b6001600160a01b038216600090815260086020526040902054610bfb90610d3e565b6000546001600160a01b031633146114315760405162461bcd60e51b8152600401610c2b906133e1565b600080546040516001600160a01b0390911690600080516020613660833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146114935760405162461bcd60e51b8152600401610c2b906133e1565b6003601481815560159190915560026016819055601755600560188190556019819055601a819055601b55601c819055601d556001601e819055601f8190556114db906117e5565b6a52b7d2dcc80cd2e4000000602655565b6000546001600160a01b031633146115165760405162461bcd60e51b8152600401610c2b906133e1565b6003805460ff19169055565b6000546001600160a01b0316331461154c5760405162461bcd60e51b8152600401610c2b906133e1565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b606060128054610b67906133a6565b6000546001600160a01b031633146115a75760405162461bcd60e51b8152600401610c2b906133e1565b6000601481905560158190556016819055601781905560188190556019819055601a819055601b819055601c819055601d819055601e819055601f8190556115ee906117e5565b6b033b2e3c9fd0803ce8000000602655565b6000610bf73384610d2f8560405180606001604052806025815260200161368060259139336000908152600a602090815260408083206001600160a01b038d16845290915290205491906120e8565b6001546001600160a01b031633146116b55760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610c2b565b60025442116117115760405162461bcd60e51b815260206004820152602260248201527f436f6e7472616374206c6f636b206475726174696f6e206973206e6f74206f7660448201526132b960f11b6064820152608401610c2b565b600154600080546040516001600160a01b03938416939091169160008051602061366083398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000546001600160a01b0316331461178a5760405162461bcd60e51b8152600401610c2b906133e1565b601486905560158690556016859055601785905560188490556019849055601a839055601b839055601c829055601d829055601e819055601f8190556000610fd084610fca87818b8b612145565b6000610bf7338484611d43565b6000546001600160a01b0316331461180f5760405162461bcd60e51b8152600401610c2b906133e1565b602880548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061185890831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461188d5760405162461bcd60e51b8152600401610c2b906133e1565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146118d95760405162461bcd60e51b8152600401610c2b906133e1565b60008054600180546001600160a01b03199081166001600160a01b0384161790915516905561190881426134aa565b600255600080546040516001600160a01b0390911690600080516020613660833981519152908390a350565b6000546001600160a01b0316331461195e5760405162461bcd60e51b8152600401610c2b906133e1565b6001600160a01b03166000908152600b60205260409020805460ff19169055565b6000546001600160a01b031633146119a95760405162461bcd60e51b8152600401610c2b906133e1565b6026819055600e546119bd90612710611b5e565b81116119fe5760405162461bcd60e51b815260206004820152601060248201526f151bdbc81b1bddc81d1e081b1a5b5a5d60821b6044820152606401610c2b565b50565b6000546001600160a01b03163314611a2b5760405162461bcd60e51b8152600401610c2b906133e1565b6001600160a01b038116611a905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c2b565b600080546040516001600160a01b038085169392169160008051602061366083398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611b035760405162461bcd60e51b8152600401610c2b906133e1565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611b4f5760405162461bcd60e51b8152600401610c2b906133e1565b6003805460ff19166001179055565b6000610dbb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506121f3565b600082611baf57506000610bfb565b6000611bbb83856134c2565b905082611bc885836134e1565b14610dbb5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610c2b565b6001600160a01b038316611c815760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c2b565b6001600160a01b038216611ce25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c2b565b6001600160a01b038381166000818152600a602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6003548390839060ff1680611d7057506001600160a01b03821660009081526004602052604090205460ff165b80611d9357506001600160a01b03811660009081526004602052604090205460ff165b611dca5760405162461bcd60e51b81526020600482015260086024820152672737ba1027b832b760c11b6044820152606401610c2b565b6001600160a01b038516611e2e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c2b565b6001600160a01b038416611e905760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c2b565b60008311611ef25760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610c2b565b611efc8585612221565b611f078585856122a5565b6000546001600160a01b03868116911614801590611f3357506000546001600160a01b03858116911614155b15611f9b57602654831115611f9b5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610c2b565b6000611fa6306113a8565b6027546028549192508210159060ff16158015611fca5750602854610100900460ff165b801561200857507f0000000000000000000000007f15880910a91a44e254cce87f6e4601c1a373826001600160a01b0316876001600160a01b031614155b15612021578015612021576027549150612021826123a7565b6000600190507f0000000000000000000000007f15880910a91a44e254cce87f6e4601c1a373826001600160a01b0316876001600160a01b0316141561208a5761208a602054601455602154601655602254601855602354601a55602454601c55602554601e55565b6001600160a01b0388166000908152600b602052604090205460ff16806120c957506001600160a01b0387166000908152600b602052604090205460ff165b156120d2575060005b6120de8888888461254b565b5050505050505050565b6000818484111561210c5760405162461bcd60e51b8152600401610c2b91906130af565b5060006121198486613462565b95945050505050565b600080600061212f612765565b909250905061213e8282611b5e565b9250505090565b60008061215283856134aa565b905083811015610dbb5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610c2b565b60008060008060008060008060006121bb8a6128e7565b92509250925060008060006121d98d86866121d4612122565b612923565b919f909e50909c50959a5093985091965092945050505050565b600081836122145760405162461bcd60e51b8152600401610c2b91906130af565b50600061211984866134e1565b6001600160a01b0382166000908152602b602052604090205460ff1615801561226357506001600160a01b0381166000908152602b602052604090205460ff16155b610ca25760405162461bcd60e51b8152602060048201526013602482015272426c61636b6c6973746564206164647265737360681b6044820152606401610c2b565b60006122b482610fca856113a8565b6001600160a01b03851660009081526029602052604090205490915060ff161580156122f957506001600160a01b03831660009081526029602052604090205460ff16155b1561232057602a548111156123205760405162461bcd60e51b8152600401610c2b90613503565b7f0000000000000000000000007f15880910a91a44e254cce87f6e4601c1a373826001600160a01b0316846001600160a01b031614801561237a57506001600160a01b03831660009081526029602052604090205460ff16155b156123a157602a548111156123a15760405162461bcd60e51b8152600401610c2b90613503565b50505050565b6028805460ff19166001179055601a546018546016546000926123cf929091610fca91612145565b905060006123f760026123f1846123f160165488611ba090919063ffffffff16565b90611b5e565b905060006124058483612973565b905047612411826129b5565b600061241d4783612973565b9050600061243f60026123f1886123f160165487611ba090919063ffffffff16565b905061244b8582612ba2565b60408051868152602081018390529081018690527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a160006124a7876123f160185486611ba090919063ffffffff16565b905060006124bf836124b98685612973565b90612973565b6005546040519192506001600160a01b03169083156108fc029084906000818181858888f193505050501580156124fa573d6000803e3d6000fd5b506006546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612535573d6000803e3d6000fd5b50506028805460ff191690555050505050505050565b80612573576125736000601481905560168190556018819055601a819055601c819055601e55565b600061258f60646123f1601e5486611ba090919063ffffffff16565b905060006125ad60646123f1601c5487611ba090919063ffffffff16565b90506125bd816124b98685612973565b6001600160a01b0387166000908152600c602052604090205490945060ff16801561260157506001600160a01b0385166000908152600c602052604090205460ff16155b1561261657612611868686612ca8565b6126c2565b6001600160a01b0386166000908152600c602052604090205460ff1615801561265757506001600160a01b0385166000908152600c602052604090205460ff165b1561266757612611868686612e15565b6001600160a01b0386166000908152600c602052604090205460ff1680156126a757506001600160a01b0385166000908152600c602052604090205460ff165b156126b757612611868686612ebe565b6126c2868686612f31565b6126e56000601481905560168190556018819055601a819055601c819055601e55565b811561271657612716867f000000000000000000000000000000000000000000000000000000000000dead84612f31565b8015612734576007546127349087906001600160a01b031683612f31565b61275d601554601455601754601655601954601855601b54601a55601d54601c55601f54601e55565b505050505050565b600f54600e546000918291825b600d548110156128b7578260086000600d848154811061279457612794613416565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806127ff57508160096000600d84815481106127d8576127d8613416565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561281557600f54600e54945094505050509091565b61285b60086000600d848154811061282f5761282f613416565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612973565b92506128a360096000600d848154811061287757612877613416565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612973565b9150806128af8161348f565b915050612772565b50600e54600f546128c791611b5e565b8210156128de57600f54600e549350935050509091565b90939092509050565b6000806000806128f685612f75565b9050600061290386612fbd565b90506000612915826124b98986612973565b979296509094509092505050565b60008080806129328886611ba0565b905060006129408887611ba0565b9050600061294e8888611ba0565b90506000612960826124b98686612973565b939b939a50919850919650505050505050565b6000610dbb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120e8565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106129ea576129ea613416565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a8c919061354b565b81600181518110612a9f57612a9f613416565b60200260200101906001600160a01b031690816001600160a01b031681525050612aea307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611c1f565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790612b3f9085906000908690309042906004016135ac565b600060405180830381600087803b158015612b5957600080fd5b505af1158015612b6d573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516111f49291906135e8565b612bcd307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611c1f565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d719823085600080612c146000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015612c7c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612ca19190613609565b5050505050565b600080600080600080612cba876121a4565b6001600160a01b038f16600090815260096020526040902054959b50939950919750955093509150612cec9088612973565b6001600160a01b038a16600090815260096020908152604080832093909355600890522054612d1b9087612973565b6001600160a01b03808b1660009081526008602052604080822093909355908a1681522054612d4a9086612145565b6001600160a01b038916600090815260086020526040902055612d6c81613002565b612d76848361308b565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612dbb91815260200190565b60405180910390a38015612e0a5760405181815230906001600160a01b038b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b505050505050505050565b600080600080600080612e27876121a4565b6001600160a01b038f16600090815260086020526040902054959b50939950919750955093509150612e599087612973565b6001600160a01b03808b16600090815260086020908152604080832094909455918b16815260099091522054612e8f9084612145565b6001600160a01b038916600090815260096020908152604080832093909355600890522054612d4a9086612145565b600080600080600080612ed0876121a4565b6001600160a01b038f16600090815260096020526040902054959b50939950919750955093509150612f029088612973565b6001600160a01b038a16600090815260096020908152604080832093909355600890522054612e599087612973565b600080600080600080612f43876121a4565b6001600160a01b038f16600090815260086020526040902054959b50939950919750955093509150612d1b9087612973565b6000612fa1601c54601e546064612f8c9190613462565b612f969190613462565b6123f1846064611ba0565b9150610bfb60646123f160145485611ba090919063ffffffff16565b6000612fd4601c54601e546064612f8c9190613462565b9150610bfb60646123f1601a54601854601654612ff191906134aa565b612ffb91906134aa565b8590611ba0565b600061300c612122565b9050600061301a8383611ba0565b306000908152600860205260409020549091506130379082612145565b30600090815260086020908152604080832093909355600c9052205460ff161561308657306000908152600960205260409020546130759084612145565b306000908152600960205260409020555b505050565b600f546130989083612973565b600f556010546130a89082612145565b6010555050565b600060208083528351808285015260005b818110156130dc578581018301518582016040015282016130c0565b818111156130ee576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146119fe57600080fd5b803561312481613104565b919050565b6000806040838503121561313c57600080fd5b823561314781613104565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b6000602080838503121561317e57600080fd5b823567ffffffffffffffff8082111561319657600080fd5b818501915085601f8301126131aa57600080fd5b8135818111156131bc576131bc613155565b8060051b604051601f19603f830116810181811085821117156131e1576131e1613155565b6040529182528482019250838101850191888311156131ff57600080fd5b938501935b828510156132245761321585613119565b84529385019392850192613204565b98975050505050505050565b60006020828403121561324257600080fd5b8135610dbb81613104565b60006020828403121561325f57600080fd5b5035919050565b60008060006060848603121561327b57600080fd5b833561328681613104565b9250602084013561329681613104565b929592945050506040919091013590565b60008060008060008060c087890312156132c057600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b8035801515811461312457600080fd5b6000806040838503121561330d57600080fd5b8235915061331d602084016132ea565b90509250929050565b6000806040838503121561333957600080fd5b823561334481613104565b915061331d602084016132ea565b60006020828403121561336457600080fd5b610dbb826132ea565b6000806040838503121561338057600080fd5b823561338b81613104565b9150602083013561339b81613104565b809150509250929050565b600181811c908216806133ba57607f821691505b602082108114156133db57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff8114156134595761345961342c565b60010192915050565b6000828210156134745761347461342c565b500390565b634e487b7160e01b600052603160045260246000fd5b60006000198214156134a3576134a361342c565b5060010190565b600082198211156134bd576134bd61342c565b500190565b60008160001904831182151516156134dc576134dc61342c565b500290565b6000826134fe57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526028908201527f457863656564696e67206d617820746f6b656e73206c696d697420696e20746860408201526719481dd85b1b195d60c21b606082015260800190565b60006020828403121561355d57600080fd5b8151610dbb81613104565b600081518084526020808501945080840160005b838110156135a15781516001600160a01b03168752958201959082019060010161357c565b509495945050505050565b85815284602082015260a0604082015260006135cb60a0830186613568565b6001600160a01b0394909416606083015250608001529392505050565b8281526040602082015260006136016040830184613568565b949350505050565b60008060006060848603121561361e57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206cbd8c53ecff2751b8799cdad84690c360bf8daa14644f0c45aa0bf04716f7a564736f6c634300080b0033
Deployed Bytecode Sourcemap
15924:25023:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19492:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20411:161;;;;;;;;;;-1:-1:-1;20411:161:0;;;;;:::i;:::-;;:::i;:::-;;;1376:14:1;;1369:22;1351:41;;1339:2;1324:18;20411:161:0;1211:187:1;15727:186:0;;;;;;;;;;-1:-1:-1;15727:186:0;;;;;:::i;:::-;;:::i;:::-;;21537:87;;;;;;;;;;-1:-1:-1;21606:10:0;;21537:87;;;2807:25:1;;;2795:2;2780:18;21537:87:0;2661:177:1;18186:51:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3034:32:1;;;3016:51;;3004:2;2989:18;18186:51:0;2843:230:1;19772:95:0;;;;;;;;;;-1:-1:-1;19852:7:0;;19772:95;;40428:46;;;;;;;;;;-1:-1:-1;40428:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;36928:153;;;;;;;;;;-1:-1:-1;36928:153:0;;;;;:::i;:::-;;:::i;17410:32::-;;;;;;;;;;;;;;;;20581:313;;;;;;;;;;-1:-1:-1;20581:313:0;;;;;:::i;:::-;;:::i;16462:81::-;;;;;;;;;;;;;;;22205:253;;;;;;;;;;-1:-1:-1;22205:253:0;;;;;:::i;:::-;;:::i;19680:83::-;;;;;;;;;;-1:-1:-1;19746:9:0;;19680:83;;19746:9;;;;4326:36:1;;4314:2;4299:18;19680:83:0;4184:184:1;22812:479:0;;;;;;;;;;-1:-1:-1;22812:479:0;;;;;:::i;:::-;;:::i;36130:587::-;;;;;;;;;;-1:-1:-1;36130:587:0;;;;;:::i;:::-;;:::i;20903:218::-;;;;;;;;;;-1:-1:-1;20903:218:0;;;;;:::i;:::-;;:::i;17224:26::-;;;;;;;;;;;;;;;;34989:117;;;;;;;;;;-1:-1:-1;34989:117:0;;;;;:::i;:::-;;:::i;40263:130::-;;;;;;;;;;-1:-1:-1;40263:130:0;;;;;:::i;:::-;;:::i;21760:436::-;;;;;;;;;;-1:-1:-1;21760:436:0;;;;;:::i;:::-;;:::i;40566:197::-;;;;;;;;;;-1:-1:-1;40566:197:0;;;;;:::i;:::-;;:::i;15222:26::-;;;;;;;;;;-1:-1:-1;15222:26:0;;;;;;;;17512:32;;;;;;;;;;;;;;;;18244:38;;;;;;;;;;;;;;;18320:41;;;;;;;;;;-1:-1:-1;18320:41:0;;;;;;;;;;;40109:144;;;;;;;;;;-1:-1:-1;40109:144:0;;;;;:::i;:::-;;:::i;22467:336::-;;;;;;;;;;-1:-1:-1;22467:336:0;;;;;:::i;:::-;;:::i;34851:129::-;;;;;;;;;;-1:-1:-1;34851:129:0;;;;;:::i;:::-;-1:-1:-1;;;;;34945:27:0;34915:4;34945:27;;;:18;:27;;;;;;;;;34851:129;6548:90;;;;;;;;;;-1:-1:-1;6615:15:0;6548:90;;6449;;;;;;;;;;-1:-1:-1;6522:9:0;;6449:90;;17308:32;;;;;;;;;;;;;;;;19876:198;;;;;;;;;;-1:-1:-1;19876:198:0;;;;;:::i;:::-;;:::i;6039:148::-;;;;;;;;;;;;;:::i;39210:64::-;;;;;;;;;;;;;;;;18062:46;;;;;;;;;;;;;;;;21408:120;;;;;;;;;;-1:-1:-1;21408:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;21500:20:0;21476:4;21500:20;;;:11;:20;;;;;;;;;21408:120;38252:592;;;;;;;;;;;;;:::i;15645:73::-;;;;;;;;;;;;;:::i;5820:79::-;;;;;;;;;;-1:-1:-1;5858:7:0;5885:6;-1:-1:-1;;;;;5885:6:0;5820:79;;37093:147;;;;;;;;;;-1:-1:-1;37093:147:0;;;;;:::i;:::-;;:::i;19584:87::-;;;;;;;;;;;;;:::i;37716:527::-;;;;;;;;;;;;;:::i;21130:269::-;;;;;;;;;;-1:-1:-1;21130:269:0;;;;;:::i;:::-;;:::i;16047:93::-;;;;;;;;;;-1:-1:-1;16047:93:0;;;;-1:-1:-1;;;;;16047:93:0;;;6882:308;;;;;;;;;;;;;:::i;35240:881::-;;;;;;;;;;-1:-1:-1;35240:881:0;;;;;:::i;:::-;;:::i;20083:167::-;;;;;;;;;;-1:-1:-1;20083:167:0;;;;;:::i;:::-;;:::i;17616:31::-;;;;;;;;;;;;;;;;21633:112;;;;;;;;;;-1:-1:-1;21718:19:0;;21633:112;;17715:27;;;;;;;;;;;;;;;;37533:171;;;;;;;;;;-1:-1:-1;37533:171:0;;;;;:::i;:::-;;:::i;16176:93::-;;;;;;;;;;-1:-1:-1;16176:93:0;;;;-1:-1:-1;;;;;16176:93:0;;;16306:83;;;;;;;;;;-1:-1:-1;16306:83:0;;;;-1:-1:-1;;;;;16306:83:0;;;37249:147;;;;;;;;;;-1:-1:-1;37249:147:0;;;;;:::i;:::-;;:::i;6647:226::-;;;;;;;;;;-1:-1:-1;6647:226:0;;;;;:::i;:::-;;:::i;20259:143::-;;;;;;;;;;-1:-1:-1;20259:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;20367:18:0;;;20340:7;20367:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;20259:143;35115:116;;;;;;;;;;-1:-1:-1;35115:116:0;;;;;:::i;:::-;;:::i;36729:187::-;;;;;;;;;;-1:-1:-1;36729:187:0;;;;;:::i;:::-;;:::i;6196:244::-;;;;;;;;;;-1:-1:-1;6196:244:0;;;;;:::i;:::-;;:::i;37405:116::-;;;;;;;;;;-1:-1:-1;37405:116:0;;;;;:::i;:::-;;:::i;15564:72::-;;;;;;;;;;;;;:::i;19492:83::-;19529:13;19562:5;19555:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19492:83;:::o;20411:161::-;20486:4;20503:39;204:10;20526:7;20535:6;20503:8;:39::i;:::-;-1:-1:-1;20560:4:0;20411:161;;;;;:::o;15727:186::-;5951:6;;-1:-1:-1;;;;;5951:6:0;204:10;5951:22;5943:67;;;;-1:-1:-1;;;5943:67:0;;;;;;;:::i;:::-;;;;;;;;;15814:7:::1;15810:96;15831:6;:13;15827:1;:17;;;15810:96;;;15890:4;15866:10;:21;15877:6;15884:1;15877:9;;;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;15866:21:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;15866:21:0;:28;;-1:-1:-1;;15866:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15846:3;::::1;::::0;::::1;:::i;:::-;;;;15810:96;;;;15727:186:::0;:::o;36928:153::-;5951:6;;-1:-1:-1;;;;;5951:6:0;204:10;5951:22;5943:67;;;;-1:-1:-1;;;5943:67:0;;;;;;;:::i;:::-;37031:19:::1;:42:::0;36928:153::o;20581:313::-;20679:4;20696:36;20706:6;20714:9;20725:6;20696:9;:36::i;:::-;20743:121;20752:6;204:10;20774:89;20812:6;20774:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20774:19:0;;;;;;:11;:19;;;;;;;;204:10;20774:33;;;;;;;;;;:37;:89::i;:::-;20743:8;:121::i;:::-;-1:-1:-1;20882:4:0;20581:313;;;;;:::o;22205:253::-;22271:7;22310;;22299;:18;;22291:73;;;;-1:-1:-1;;;22291:73:0;;7833:2:1;22291:73:0;;;7815:21:1;7872:2;7852:18;;;7845:30;7911:34;7891:18;;;7884:62;-1:-1:-1;;;7962:18:1;;;7955:40;8012:19;;22291:73:0;7631:406:1;22291:73:0;22375:19;22398:10;:8;:10::i;:::-;22375:33;-1:-1:-1;22426:24:0;:7;22375:33;22426:11;:24::i;:::-;22419:31;22205:253;-1:-1:-1;;;22205:253:0:o;22812:479::-;5951:6;;-1:-1:-1;;;;;5951:6:0;204:10;5951:22;5943:67;;;;-1:-1:-1;;;5943:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22894:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;22886:60;;;::::0;-1:-1:-1;;;22886:60:0;;8244:2:1;22886:60:0::1;::::0;::::1;8226:21:1::0;8283:2;8263:18;;;8256:30;8322:29;8302:18;;;8295:57;8369:18;;22886:60:0::1;8042:351:1::0;22886:60:0::1;22962:9;22957:327;22981:9;:16:::0;22977:20;::::1;22957:327;;;23039:7;-1:-1:-1::0;;;;;23023:23:0::1;:9;23033:1;23023:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;23023:12:0::1;:23;23019:254;;;23082:9;23092:16:::0;;:20:::1;::::0;23111:1:::1;::::0;23092:20:::1;:::i;:::-;23082:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;23067:9:::1;:12:::0;;-1:-1:-1;;;;;23082:31:0;;::::1;::::0;23077:1;;23067:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;23067:46:0::1;-1:-1:-1::0;;;;;23067:46:0;;::::1;;::::0;;23132:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;23171:11:::1;:20:::0;;;;:28;;-1:-1:-1;;23171:28:0::1;::::0;;23218:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;23218:15:0;;;;;-1:-1:-1;;;;;;23218:15:0::1;::::0;;;;;15810:96:::1;15727:186:::0;:::o;23019:254::-:1;22999:3:::0;::::1;::::0;::::1;:::i;:::-;;;;22957:327;;36130:587:::0;5951:6;;-1:-1:-1;;;;;5951:6:0;204:10;5951:22;5943:67;;;;-1:-1:-1;;;5943:67:0;;;;;;;:::i;:::-;36329:11:::1;:20:::0;;;36360:17:::1;:32:::0;;;36403:17:::1;:32:::0;;;36446:17:::1;:32:::0;;;36489:12:::1;:22:::0;;;-1:-1:-1;36541:60:0::1;36466:12:::0;36541:42:::1;36423:12:::0;36541:42;36343:6;36380:12;36541:10:::1;:24::i;:::-;:28:::0;::::1;:42::i;:60::-;36522:79:::0;-1:-1:-1;36623:38:0::1;36653:7:::0;36623:25:::1;36522:79:::0;36636:11;36623:12:::1;:25::i;:38::-;36612:49;;36690:2;36680:8;:12;;36672:37;;;::::0;-1:-1:-1;;;36672:37:0;;9002:2:1;36672:37:0::1;::::0;::::1;8984:21:1::0;9041:2;9021:18;;;9014:30;-1:-1:-1;;;9060:18:1;;;9053:42;9112:18;;36672:37:0::1;8800:336:1::0;36672:37:0::1;36318:399;36130:587:::0;;;;;;:::o;20903:218::-;204:10;20991:4;21040:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;21040:34:0;;;;;;;;;;20991:4;;21008:83;;21031:7;;21040:50;;21079:10;21040:38;:50::i;34989:117::-;5951:6;;-1:-1:-1;;;;;5951:6:0;204:10;5951:22;5943:67;;;;-1:-1:-1;;;5943:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35064:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;35064:34:0::1;35094:4;35064:34;::::0;;34989:117::o;40263:130::-;5951:6;;-1:-1:-1;;;;;5951:6:0;204:10;5951:22;5943:67;;;;-1:-1:-1;;;5943:67:0;;;;;;;:::i;:::-;40353:22:::1;:32:::0;40263:130::o;21760:436::-;21850:7;21889;;21878;:18;;21870:62;;;;-1:-1:-1;;;21870:62:0;;9343:2:1;21870:62:0;;;9325:21:1;9382:2;9362:18;;;9355:30;9421:33;9401:18;;;9394:61;9472:18;;21870:62:0;9141:355:1;21870:62:0;21948:17;21943:246;;21983:15;22007:19;22018:7;22007:10;:19::i;:::-;-1:-1:-1;21982:44:0;;-1:-1:-1;22041:14:0;;-1:-1:-1;;;;;22041:14:0;21943:246;22090:23;22121:19;22132:7;22121:10;:19::i;:::-;-1:-1:-1;22088:52:0;;-1:-1:-1;22155:22:0;;-1:-1:-1;;;;;22155:22:0;40566:197;5951:6;;-1:-1:-1;;;;;5951:6:0;204:10;5951:22;5943:67;;;;-1:-1:-1;;;5943:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;40656:23:0;::::1;;::::0;;;:14:::1;:23;::::0;;;;;;;;:31;;-1:-1:-1;;40656:31:0::1;::::0;::::1;;::::0;;::::1;::::0;;;40703:52;;9697:51:1;;;9764:18;;;9757:50;40739:15:0::1;9823:18:1::0;;;9816:34;40703:52:0::1;::::0;9685:2:1;9670:18;40703:52:0::1;;;;;;;;40566:197:::0;;:::o;40109:144::-;5951:6;;-1:-1:-1;;;;;5951:6:0;204:10;5951:22;5943:67;;;;-1:-1:-1;;;5943:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;40205:29:0;;;::::1;;::::0;;;:20:::1;:29;::::0;;;;:40;;-1:-1:-1;;40205:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;40109:144::o;22467:336::-;5951:6;;-1:-1:-1;;;;;5951:6:0;204:10;5951:22;5943:67;;;;-1:-1:-1;;;5943:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22553:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;22552:21;22544:61;;;::::0;-1:-1:-1;;;22544:61:0;;8244:2:1;22544:61:0::1;::::0;::::1;8226:21:1::0;8283:2;8263:18;;;8256:30;8322:29;8302:18;;;8295:57;8369:18;;22544:61:0::1;8042:351:1::0;22544:61:0::1;-1:-1:-1::0;;;;;22619:16:0;::::1;22638:1;22619:16:::0;;;:7:::1;:16;::::0;;;;;:20;22616:108:::1;;-1:-1:-1::0;;;;;22695:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;22675:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;22656:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;22616:108:::1;-1:-1:-1::0;;;;;22734:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;22734:27:0::1;22757:4;22734:27:::0;;::::1;::::0;;;22772:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;22772:23:0::1;::::0;;::::1;::::0;;22467:336::o;19876:198::-;-1:-1:-1;;;;;19966:20:0;;19942:7;19966:20;;;:11;:20;;;;;;;;19962:49;;;-1:-1:-1;;;;;;19995:16:0;;;;;:7;:16;;;;;;;19876:198::o;19962:49::-;-1:-1:-1;;;;;20049:16:0;;;;;;:7;:16;;;;;;20029:37;;:19;:37::i;6039:148::-;5951:6;;-1:-1:-1;;;;;5951:6:0;204:10;5951:22;5943:67;;;;-1:-1:-1;;;5943:67:0;;;;;;;:::i;:::-;6146:1:::1;6130:6:::0;;6109:40:::1;::::0;-1:-1:-1;;;;;6130:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;6109:40:0;6146:1;;6109:40:::1;6177:1;6160:19:::0;;-1:-1:-1;;;;;;6160:19:0::1;::::0;;6039:148::o;38252:592::-;5951:6;;-1:-1:-1;;;;;5951:6:0;204:10;5951:22;5943:67;;;;-1:-1:-1;;;5943:67:0;;;;;;;:::i;:::-;38325:1:::1;38315:7;:11:::0;;;38337:15:::1;:25:::0;;;;38392:1:::1;38376:13;:17:::0;;;38404:21:::1;:37:::0;38471:1:::1;38455:13;:17:::0;;;38483:21:::1;:37:::0;;;38534:13:::1;:17:::0;;;38562:21:::1;:37:::0;38613:11:::1;:16:::0;;;38640:19:::1;:33:::0;38706:1:::1;38695:8;:12:::0;;;38718:16:::1;:27:::0;;;38759:30:::1;::::0;:24:::1;:30::i;:::-;38815:21;38800:12;:36:::0;38252:592::o;15645:73::-;5951:6;;-1:-1:-1;;;;;5951:6:0;204:10;5951:22;5943:67;;;;-1:-1:-1;;;5943:67:0;;;;;;;:::i;:::-;15696:6:::1;:14:::0;;-1:-1:-1;;15696:14:0::1;::::0;;15645:73::o;37093:147::-;5951:6;;-1:-1:-1;;;;;5951:6:0;204:10;5951:22;5943:67;;;;-1:-1:-1;;;5943:67:0;;;;;;;:::i;:::-;37187:16:::1;:45:::0;;-1:-1:-1;;;;;;37187:45:0::1;-1:-1:-1::0;;;;;37187:45:0;;;::::1;::::0;;;::::1;::::0;;37093:147::o;19584:87::-;19623:13;19656:7;19649:14;;;;;:::i;37716:527::-;5951:6;;-1:-1:-1;;;;;5951:6:0;204:10;5951:22;5943:67;;;;-1:-1:-1;;;5943:67:0;;;;;;;:::i;:::-;37790:1:::1;37780:7;:11:::0;;;37802:15:::1;:19:::0;;;37835:13:::1;:17:::0;;;37863:21:::1;:25:::0;;;37902:13:::1;:17:::0;;;37930:21:::1;:25:::0;;;37969:13:::1;:17:::0;;;37997:21:::1;:25:::0;;;38036:11:::1;:15:::0;;;38062:19:::1;:23:::0;;;38099:8:::1;:12:::0;;;38122:16:::1;:20:::0;;;38156:31:::1;::::0;:24:::1;:31::i;:::-;38213:22;38198:12;:37:::0;37716:527::o;21130:269::-;21223:4;21240:129;204:10;21263:7;21272:96;21311:15;21272:96;;;;;;;;;;;;;;;;;204:10;21272:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;21272:34:0;;;;;;;;;;;;:38;:96::i;6882:308::-;6934:14;;-1:-1:-1;;;;;6934:14:0;6952:10;6934:28;6926:76;;;;-1:-1:-1;;;6926:76:0;;10063:2:1;6926:76:0;;;10045:21:1;10102:2;10082:18;;;10075:30;10141:34;10121:18;;;10114:62;-1:-1:-1;;;10192:18:1;;;10185:33;10235:19;;6926:76:0;9861:399:1;6926:76:0;7039:9;;7021:15;:27;7013:75;;;;-1:-1:-1;;;7013:75:0;;10467:2:1;7013:75:0;;;10449:21:1;10506:2;10486:18;;;10479:30;10545:34;10525:18;;;10518:62;-1:-1:-1;;;10596:18:1;;;10589:32;10638:19;;7013:75:0;10265:398:1;7013:75:0;7133:14;;;7125:6;;7104:44;;-1:-1:-1;;;;;7133:14:0;;;;7125:6;;;;-1:-1:-1;;;;;;;;;;;7104:44:0;;7168:14;;;7159:23;;-1:-1:-1;;;;;;7159:23:0;-1:-1:-1;;;;;7168:14:0;;;7159:23;;;;;;6882:308::o;35240:881::-;5951:6;;-1:-1:-1;;;;;5951:6:0;204:10;5951:22;5943:67;;;;-1:-1:-1;;;5943:67:0;;;;;;;:::i;:::-;35439:7:::1;:16:::0;;;35466:15:::1;:24:::0;;;35504:13:::1;:28:::0;;;35543:21:::1;:36:::0;;;35593:13:::1;:28:::0;;;35632:21:::1;:36:::0;;;35682:13:::1;:28:::0;;;35721:21:::1;:36:::0;;;35771:11:::1;:24:::0;;;35806:19:::1;:32:::0;;;35852:8:::1;:18:::0;;;35881:16:::1;:26:::0;;;-1:-1:-1;35940:60:0::1;35698:12:::0;35940:42:::1;35609:12:::0;35940:42;35449:6;35520:12;35940:10:::1;:24::i;20083:167::-:0;20161:4;20178:42;204:10;20202:9;20213:6;20178:9;:42::i;37533:171::-;5951:6;;-1:-1:-1;;;;;5951:6:0;204:10;5951:22;5943:67;;;;-1:-1:-1;;;5943:67:0;;;;;;;:::i;:::-;37610:21:::1;:32:::0;;;::::1;;;;-1:-1:-1::0;;37610:32:0;;::::1;;::::0;;37658:38:::1;::::0;::::1;::::0;::::1;::::0;37634:8;1376:14:1;1369:22;1351:41;;1339:2;1324:18;;1211:187;37658:38:0::1;;;;;;;;37533:171:::0;:::o;37249:147::-;5951:6;;-1:-1:-1;;;;;5951:6:0;204:10;5951:22;5943:67;;;;-1:-1:-1;;;5943:67:0;;;;;;;:::i;:::-;37343:16:::1;:45:::0;;-1:-1:-1;;;;;;37343:45:0::1;-1:-1:-1::0;;;;;37343:45:0;;;::::1;::::0;;;::::1;::::0;;37249:147::o;6647:226::-;5951:6;;-1:-1:-1;;;;;5951:6:0;204:10;5951:22;5943:67;;;;-1:-1:-1;;;5943:67:0;;;;;;;:::i;:::-;6728:6:::1;::::0;;;6711:23;;-1:-1:-1;;;;;;6711:23:0;;::::1;-1:-1:-1::0;;;;;6728:6:0;::::1;6711:23;::::0;;;6745:19:::1;::::0;;6787:22:::1;6805:4:::0;6787:15:::1;:22;:::i;:::-;6775:9;:34:::0;6862:1:::1;6846:6:::0;;6825:40:::1;::::0;-1:-1:-1;;;;;6846:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;6825:40:0;6862:1;;6825:40:::1;6647:226:::0;:::o;35115:116::-;5951:6;;-1:-1:-1;;;;;5951:6:0;204:10;5951:22;5943:67;;;;-1:-1:-1;;;5943:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35188:27:0::1;35218:5;35188:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;35188:35:0::1;::::0;;35115:116::o;36729:187::-;5951:6;;-1:-1:-1;;;;;5951:6:0;204:10;5951:22;5943:67;;;;-1:-1:-1;;;5943:67:0;;;;;;;:::i;:::-;36812:12:::1;:26:::0;;;36869:7:::1;::::0;:18:::1;::::0;36881:5:::1;36869:11;:18::i;:::-;36857:11;:30;36849:59;;;::::0;-1:-1:-1;;;36849:59:0;;11003:2:1;36849:59:0::1;::::0;::::1;10985:21:1::0;11042:2;11022:18;;;11015:30;-1:-1:-1;;;11061:18:1;;;11054:46;11117:18;;36849:59:0::1;10801:340:1::0;36849:59:0::1;36729:187:::0;:::o;6196:244::-;5951:6;;-1:-1:-1;;;;;5951:6:0;204:10;5951:22;5943:67;;;;-1:-1:-1;;;5943:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6285:22:0;::::1;6277:73;;;::::0;-1:-1:-1;;;6277:73:0;;11348:2:1;6277:73:0::1;::::0;::::1;11330:21:1::0;11387:2;11367:18;;;11360:30;11426:34;11406:18;;;11399:62;-1:-1:-1;;;11477:18:1;;;11470:36;11523:19;;6277:73:0::1;11146:402:1::0;6277:73:0::1;6387:6;::::0;;6366:38:::1;::::0;-1:-1:-1;;;;;6366:38:0;;::::1;::::0;6387:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;6366:38:0;::::1;6415:6;:17:::0;;-1:-1:-1;;;;;;6415:17:0::1;-1:-1:-1::0;;;;;6415:17:0;;;::::1;::::0;;;::::1;::::0;;6196:244::o;37405:116::-;5951:6;;-1:-1:-1;;;;;5951:6:0;204:10;5951:22;5943:67;;;;-1:-1:-1;;;5943:67:0;;;;;;;:::i;:::-;37488:14:::1;:25:::0;;-1:-1:-1;;;;;;37488:25:0::1;-1:-1:-1::0;;;;;37488:25:0;;;::::1;::::0;;;::::1;::::0;;37405:116::o;15564:72::-;5951:6;;-1:-1:-1;;;;;5951:6:0;204:10;5951:22;5943:67;;;;-1:-1:-1;;;5943:67:0;;;;;;;:::i;:::-;15615:6:::1;:13:::0;;-1:-1:-1;;15615:13:0::1;15624:4;15615:13;::::0;;15564:72::o;1971:132::-;2029:7;2056:39;2060:1;2063;2056:39;;;;;;;;;;;;;;;;;:3;:39::i;1713:246::-;1771:7;1795:6;1791:47;;-1:-1:-1;1825:1:0;1818:8;;1791:47;1848:9;1860:5;1864:1;1860;:5;:::i;:::-;1848:17;-1:-1:-1;1893:1:0;1884:5;1888:1;1848:17;1884:5;:::i;:::-;:10;1876:56;;;;-1:-1:-1;;;1876:56:0;;12150:2:1;1876:56:0;;;12132:21:1;12189:2;12169:18;;;12162:30;12228:34;12208:18;;;12201:62;-1:-1:-1;;;12279:18:1;;;12272:31;12320:19;;1876:56:0;11948:397:1;23300:338:0;-1:-1:-1;;;;;23393:19:0;;23385:68;;;;-1:-1:-1;;;23385:68:0;;12552:2:1;23385:68:0;;;12534:21:1;12591:2;12571:18;;;12564:30;12630:34;12610:18;;;12603:62;-1:-1:-1;;;12681:18:1;;;12674:34;12725:19;;23385:68:0;12350:400:1;23385:68:0;-1:-1:-1;;;;;23472:21:0;;23464:68;;;;-1:-1:-1;;;23464:68:0;;12957:2:1;23464:68:0;;;12939:21:1;12996:2;12976:18;;;12969:30;13035:34;13015:18;;;13008:62;-1:-1:-1;;;13086:18:1;;;13079:32;13128:19;;23464:68:0;12755:398:1;23464:68:0;-1:-1:-1;;;;;23546:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;23598:32;;2807:25:1;;;23598:32:0;;2780:18:1;23598:32:0;;;;;;;23300:338;;;:::o;23647:1338::-;15364:6;;23721:4;;23727:2;;15364:6;;;:26;;-1:-1:-1;;;;;;15374:16:0;;;;;;:10;:16;;;;;;;;15364:26;:44;;;-1:-1:-1;;;;;;15394:14:0;;;;;;:10;:14;;;;;;;;15364:44;15356:65;;;;-1:-1:-1;;;15356:65:0;;13360:2:1;15356:65:0;;;13342:21:1;13399:1;13379:18;;;13372:29;-1:-1:-1;;;13417:18:1;;;13410:38;13465:18;;15356:65:0;13158:331:1;15356:65:0;-1:-1:-1;;;;;23756:18:0;::::1;23748:68;;;::::0;-1:-1:-1;;;23748:68:0;;13696:2:1;23748:68:0::1;::::0;::::1;13678:21:1::0;13735:2;13715:18;;;13708:30;13774:34;13754:18;;;13747:62;-1:-1:-1;;;13825:18:1;;;13818:35;13870:19;;23748:68:0::1;13494:401:1::0;23748:68:0::1;-1:-1:-1::0;;;;;23835:16:0;::::1;23827:64;;;::::0;-1:-1:-1;;;23827:64:0;;14102:2:1;23827:64:0::1;::::0;::::1;14084:21:1::0;14141:2;14121:18;;;14114:30;14180:34;14160:18;;;14153:62;-1:-1:-1;;;14231:18:1;;;14224:33;14274:19;;23827:64:0::1;13900:399:1::0;23827:64:0::1;23919:1;23910:6;:10;23902:64;;;::::0;-1:-1:-1;;;23902:64:0;;14506:2:1;23902:64:0::1;::::0;::::1;14488:21:1::0;14545:2;14525:18;;;14518:30;14584:34;14564:18;;;14557:62;-1:-1:-1;;;14635:18:1;;;14628:39;14684:19;;23902:64:0::1;14304:405:1::0;23902:64:0::1;23980:27;23998:4;24004:2;23980:17;:27::i;:::-;24018:31;24032:4;24038:2;24042:6;24018:13;:31::i;:::-;5858:7:::0;5885:6;-1:-1:-1;;;;;24066:15:0;;::::1;5885:6:::0;;24066:15:::1;::::0;::::1;::::0;:32:::1;;-1:-1:-1::0;5858:7:0;5885:6;-1:-1:-1;;;;;24085:13:0;;::::1;5885:6:::0;;24085:13:::1;;24066:32;24063:149;;;24143:12;;24133:6;:22;;24125:75;;;::::0;-1:-1:-1;;;24125:75:0;;14916:2:1;24125:75:0::1;::::0;::::1;14898:21:1::0;14955:2;14935:18;;;14928:30;14994:34;14974:18;;;14967:62;-1:-1:-1;;;15045:18:1;;;15038:38;15093:19;;24125:75:0::1;14714:404:1::0;24125:75:0::1;24225:28;24256:24;24274:4;24256:9;:24::i;:::-;24346:19;::::0;24384:16:::1;::::0;24225:55;;-1:-1:-1;24322:43:0;::::1;;::::0;24384:16:::1;;24383:17;:42:::0;::::1;;;-1:-1:-1::0;24404:21:0::1;::::0;::::1;::::0;::::1;;;24383:42;:67;;;;;24437:13;-1:-1:-1::0;;;;;24429:21:0::1;:4;-1:-1:-1::0;;;;;24429:21:0::1;;;24383:67;24379:278;;;24471:23;24467:179;;;24552:19;;24529:42;;24590:36;24605:20;24590:14;:36::i;:::-;24670:12;24685:4;24670:19;;24707:13;-1:-1:-1::0;;;;;24703:17:0::1;:2;-1:-1:-1::0;;;;;24703:17:0::1;;24700:39;;;24724:12;34617:11:::0;;34607:7;:21;34655:17;;34639:13;:33;34699:17;;34683:13;:33;34743:17;;34727:13;:33;34785:15;;34771:11;:29;34822:12;;34811:8;:23;34560:282;24724:12:::1;-1:-1:-1::0;;;;;24836:24:0;::::1;;::::0;;;:18:::1;:24;::::0;;;;;::::1;;::::0;:50:::1;;-1:-1:-1::0;;;;;;24864:22:0;::::1;;::::0;;;:18:::1;:22;::::0;;;;;::::1;;24836:50;24833:96;;;-1:-1:-1::0;24912:5:0::1;24833:96;24939:38;24954:4;24959:2;24962:6;24969:7;24939:14;:38::i;:::-;23737:1248;;;23647:1338:::0;;;;;:::o;1511:193::-;1597:7;1633:12;1625:6;;;;1617:29;;;;-1:-1:-1;;;1617:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1657:9:0;1669:5;1673:1;1669;:5;:::i;:::-;1657:17;1511:193;-1:-1:-1;;;;;1511:193:0:o;32456:163::-;32497:7;32518:15;32535;32554:19;:17;:19::i;:::-;32517:56;;-1:-1:-1;32517:56:0;-1:-1:-1;32591:20:0;32517:56;;32591:11;:20::i;:::-;32584:27;;;;32456:163;:::o;1178:179::-;1236:7;;1268:5;1272:1;1268;:5;:::i;:::-;1256:17;;1297:1;1292;:6;;1284:46;;;;-1:-1:-1;;;1284:46:0;;15325:2:1;1284:46:0;;;15307:21:1;15364:2;15344:18;;;15337:30;15403:29;15383:18;;;15376:57;15450:18;;1284:46:0;15123:351:1;31251:419:0;31310:7;31319;31328;31337;31346;31355;31376:23;31401:12;31415:18;31437:20;31449:7;31437:11;:20::i;:::-;31375:82;;;;;;31469:15;31486:23;31511:12;31527:50;31539:7;31548:4;31554:10;31566;:8;:10::i;:::-;31527:11;:50::i;:::-;31468:109;;;;-1:-1:-1;31468:109:0;;-1:-1:-1;31628:15:0;;-1:-1:-1;31645:4:0;;-1:-1:-1;31651:10:0;;-1:-1:-1;31251:419:0;;-1:-1:-1;;;;;31251:419:0:o;2112:279::-;2198:7;2233:12;2226:5;2218:28;;;;-1:-1:-1;;;2218:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2257:9:0;2269:5;2273:1;2269;:5;:::i;40772:166::-;-1:-1:-1;;;;;40863:20:0;;;;;;:14;:20;;;;;;;;40862:21;:44;;;;-1:-1:-1;;;;;;40888:18:0;;;;;;:14;:18;;;;;;;;40887:19;40862:44;40854:76;;;;-1:-1:-1;;;40854:76:0;;15681:2:1;40854:76:0;;;15663:21:1;15720:2;15700:18;;;15693:30;-1:-1:-1;;;15739:18:1;;;15732:49;15798:18;;40854:76:0;15479:343:1;39554:546:0;39654:18;39675:25;39693:6;39675:13;39685:2;39675:9;:13::i;:25::-;-1:-1:-1;;;;;39715:26:0;;;;;;:20;:26;;;;;;39654:46;;-1:-1:-1;39715:26:0;;39714:27;:56;;;;-1:-1:-1;;;;;;39746:24:0;;;;;;:20;:24;;;;;;;;39745:25;39714:56;39711:189;;;39820:22;;39806:10;:36;;39798:89;;;;-1:-1:-1;;;39798:89:0;;;;;;;:::i;:::-;39920:13;-1:-1:-1;;;;;39914:19:0;:4;-1:-1:-1;;;;;39914:19:0;;:48;;;;-1:-1:-1;;;;;;39938:24:0;;;;;;:20;:24;;;;;;;;39937:25;39914:48;39911:181;;;40012:22;;39998:10;:36;;39990:89;;;;-1:-1:-1;;;39990:89:0;;;;;;;:::i;:::-;39643:457;39554:546;;;:::o;24994:1058::-;18837:16;:23;;-1:-1:-1;;18837:23:0;18856:4;18837:23;;;25144:13:::1;::::0;25125::::1;::::0;25107::::1;::::0;18837:16;;25107:51:::1;::::0;25144:13;;25107:32:::1;::::0;:17:::1;:32::i;:51::-;25085:73;;25169:27;25199:63;25260:1;25199:56;25243:11;25199:39;25224:13;;25199:20;:24;;:39;;;;:::i;:::-;:43:::0;::::1;:56::i;:63::-;25169:93:::0;-1:-1:-1;25273:22:0::1;25298:45;:20:::0;25169:93;25298:24:::1;:45::i;:::-;25273:70:::0;-1:-1:-1;25379:21:0::1;25411:32;25273:70:::0;25411:16:::1;:32::i;:::-;25455:18;25476:41;:21;25502:14:::0;25476:25:::1;:41::i;:::-;25455:62;;25528:23;25554:53;25605:1;25554:46;25588:11;25554:29;25569:13;;25554:10;:14;;:29;;;;:::i;:53::-;25528:79;;25618:50;25631:19;25652:15;25618:12;:50::i;:::-;25684:73;::::0;;16438:25:1;;;16494:2;16479:18;;16472:34;;;16522:18;;;16515:34;;;25684:73:0::1;::::0;16426:2:1;16411:18;25684:73:0::1;;;;;;;25771:23;25797:46;25831:11;25797:29;25812:13;;25797:10;:14;;:29;;;;:::i;:46::-;25771:72:::0;-1:-1:-1;25854:23:0::1;25880:52;25916:15:::0;25880:31:::1;:10:::0;25771:72;25880:14:::1;:31::i;:::-;:35:::0;::::1;:52::i;:::-;25946:16;::::0;:42:::1;::::0;25854:78;;-1:-1:-1;;;;;;25946:16:0::1;::::0;:42;::::1;;;::::0;25972:15;;25946:16:::1;:42:::0;:16;:42;25972:15;25946:16;:42;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;25999:16:0::1;::::0;:42:::1;::::0;-1:-1:-1;;;;;25999:16:0;;::::1;::::0;:42;::::1;;;::::0;26025:15;;25999:16:::1;:42:::0;:16;:42;26025:15;25999:16;:42;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;18883:16:0;:24;;-1:-1:-1;;18883:24:0;;;-1:-1:-1;;;;;;;;24994:1058:0:o;27263:1171::-;27374:7;27370:32;;27385:14;34088:1;34078:7;:11;;;34100:13;:17;;;34128:13;:17;;;34156:13;:17;;;34184:11;:15;;;34210:8;:12;34022:208;27385:14;27415:18;27436:29;27461:3;27436:20;27447:8;;27436:6;:10;;:20;;;;:::i;:29::-;27415:50;;27476:21;27500:32;27528:3;27500:23;27511:11;;27500:6;:10;;:23;;;;:::i;:32::-;27476:56;-1:-1:-1;27555:41:0;27476:56;27555:22;:6;27566:10;27555;:22::i;:41::-;-1:-1:-1;;;;;27614:19:0;;;;;;:11;:19;;;;;;27546:50;;-1:-1:-1;27614:19:0;;:46;;;;-1:-1:-1;;;;;;27638:22:0;;;;;;:11;:22;;;;;;;;27637:23;27614:46;27610:507;;;27687:48;27709:6;27717:9;27728:6;27687:21;:48::i;:::-;27610:507;;;-1:-1:-1;;;;;27758:19:0;;;;;;:11;:19;;;;;;;;27757:20;:46;;;;-1:-1:-1;;;;;;27781:22:0;;;;;;:11;:22;;;;;;;;27757:46;27753:364;;;27830:46;27850:6;27858:9;27869:6;27830:19;:46::i;27753:364::-;-1:-1:-1;;;;;27898:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;27921:22:0;;;;;;:11;:22;;;;;;;;27898:45;27894:223;;;27970:48;27992:6;28000:9;28011:6;27970:21;:48::i;27894:223::-;28061:44;28079:6;28087:9;28098:6;28061:17;:44::i;:::-;28130:14;34088:1;34078:7;:11;;;34100:13;:17;;;34128:13;:17;;;34156:13;:17;;;34184:11;:15;;;34210:8;:12;34022:208;28130:14;28161;;28158:105;;28201:50;28219:6;28227:11;28240:10;28201:17;:50::i;:::-;28283:17;;28280:114;;28352:14;;28326:56;;28344:6;;-1:-1:-1;;;;;28352:14:0;28368:13;28326:17;:56::i;:::-;28408:15;34299;;34289:7;:25;34341:21;;34325:13;:37;34389:21;;34373:13;:37;34437:21;;34421:13;:37;34483:19;;34469:11;:33;34524:16;;34513:8;:27;34239:309;28408:15;27359:1075;;27263:1171;;;;:::o;32628:561::-;32725:7;;32761;;32678;;;;;32785:289;32809:9;:16;32805:20;;32785:289;;;32875:7;32851;:21;32859:9;32869:1;32859:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;32859:12:0;32851:21;;;;;;;;;;;;;:31;;:66;;;32910:7;32886;:21;32894:9;32904:1;32894:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;32894:12:0;32886:21;;;;;;;;;;;;;:31;32851:66;32847:97;;;32927:7;;32936;;32919:25;;;;;;;32628:561;;:::o;32847:97::-;32969:34;32981:7;:21;32989:9;32999:1;32989:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;32989:12:0;32981:21;;;;;;;;;;;;;32969:7;;:11;:34::i;:::-;32959:44;;33028:34;33040:7;:21;33048:9;33058:1;33048:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;33048:12:0;33040:21;;;;;;;;;;;;;33028:7;;:11;:34::i;:::-;33018:44;-1:-1:-1;32827:3:0;;;;:::i;:::-;;;;32785:289;;;-1:-1:-1;33110:7:0;;33098;;:20;;:11;:20::i;:::-;33088:7;:30;33084:61;;;33128:7;;33137;;33120:25;;;;;;32628:561;;:::o;33084:61::-;33164:7;;33173;;-1:-1:-1;32628:561:0;-1:-1:-1;32628:561:0:o;31679:330::-;31739:7;31748;31757;31777:12;31792:24;31808:7;31792:15;:24::i;:::-;31777:39;;31827:18;31848:30;31870:7;31848:21;:30::i;:::-;31827:51;-1:-1:-1;31889:23:0;31915:33;31827:51;31915:17;:7;31927:4;31915:11;:17::i;:33::-;31889:59;31984:4;;-1:-1:-1;31990:10:0;;-1:-1:-1;31679:330:0;;-1:-1:-1;;;31679:330:0:o;32018:429::-;32133:7;;;;32189:24;:7;32201:11;32189;:24::i;:::-;32171:42;-1:-1:-1;32224:12:0;32239:21;:4;32248:11;32239:8;:21::i;:::-;32224:36;-1:-1:-1;32271:18:0;32292:27;:10;32307:11;32292:14;:27::i;:::-;32271:48;-1:-1:-1;32330:23:0;32356:33;32271:48;32356:17;:7;32368:4;32356:11;:17::i;:33::-;32408:7;;;;-1:-1:-1;32434:4:0;;-1:-1:-1;32018:429:0;;-1:-1:-1;;;;;;;32018:429:0:o;1366:136::-;1424:7;1451:43;1455:1;1458;1451:43;;;;;;;;;;;;;;;;;:3;:43::i;26067:661::-;26217:16;;;26231:1;26217:16;;;;;;;;26193:21;;26217:16;;;;;;;;;;-1:-1:-1;26217:16:0;26193:40;;26262:4;26244;26249:1;26244:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;26244:23:0;;;-1:-1:-1;;;;;26244:23:0;;;;;26288:15;-1:-1:-1;;;;;26288:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26278:4;26283:1;26278:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;26278:32:0;;;-1:-1:-1;;;;;26278:32:0;;;;;26324:62;26341:4;26356:15;26374:11;26324:8;:62::i;:::-;26426:240;;-1:-1:-1;;;26426:240:0;;-1:-1:-1;;;;;26426:15:0;:66;;;;:240;;26507:11;;26533:1;;26577:4;;26604;;26640:15;;26426:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26685:35;26702:11;26715:4;26685:35;;;;;;;:::i;26740:514::-;26888:62;26905:4;26920:15;26938:11;26888:8;:62::i;:::-;26994:15;-1:-1:-1;;;;;26994:31:0;;27033:9;27066:4;27086:11;27112:1;27155;27198:7;5858;5885:6;-1:-1:-1;;;;;5885:6:0;;5820:79;27198:7;26994:252;;;;;;-1:-1:-1;;;;;;26994:252:0;;;-1:-1:-1;;;;;18565:15:1;;;26994:252:0;;;18547:34:1;18597:18;;;18590:34;;;;18640:18;;;18633:34;;;;18683:18;;;18676:34;18747:15;;;18726:19;;;18719:44;27220:15:0;18779:19:1;;;18772:35;18481:19;;26994:252:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;26740:514;;:::o;29715:643::-;29818:15;29835:23;29860:12;29874:23;29899:12;29913:18;29935:19;29946:7;29935:10;:19::i;:::-;-1:-1:-1;;;;;29980:15:0;;;;;;:7;:15;;;;;;29817:137;;-1:-1:-1;29817:137:0;;-1:-1:-1;29817:137:0;;-1:-1:-1;29817:137:0;-1:-1:-1;29817:137:0;-1:-1:-1;29817:137:0;-1:-1:-1;29980:28:0;;30000:7;29980:19;:28::i;:::-;-1:-1:-1;;;;;29962:15:0;;;;;;:7;:15;;;;;;;;:46;;;;30037:7;:15;;;;:28;;30057:7;30037:19;:28::i;:::-;-1:-1:-1;;;;;30019:15:0;;;;;;;:7;:15;;;;;;:46;;;;30097:18;;;;;;;:39;;30120:15;30097:22;:39::i;:::-;-1:-1:-1;;;;;30076:18:0;;;;;;:7;:18;;;;;:60;30150:26;30165:10;30150:14;:26::i;:::-;30187:23;30199:4;30205;30187:11;:23::i;:::-;30243:9;-1:-1:-1;;;;;30226:44:0;30235:6;-1:-1:-1;;;;;30226:44:0;;30254:15;30226:44;;;;2807:25:1;;2795:2;2780:18;;2661:177;30226:44:0;;;;;;;;30284:12;;30281:70;;30305:43;;2807:25:1;;;30330:4:0;;-1:-1:-1;;;;;30305:43:0;;;;;2795:2:1;2780:18;30305:43:0;;;;;;;30281:70;29806:552;;;;;;29715:643;;;:::o;29043:663::-;29144:15;29161:23;29186:12;29200:23;29225:12;29239:18;29261:19;29272:7;29261:10;:19::i;:::-;-1:-1:-1;;;;;29306:15:0;;;;;;:7;:15;;;;;;29143:137;;-1:-1:-1;29143:137:0;;-1:-1:-1;29143:137:0;;-1:-1:-1;29143:137:0;-1:-1:-1;29143:137:0;-1:-1:-1;29143:137:0;-1:-1:-1;29306:28:0;;29143:137;29306:19;:28::i;:::-;-1:-1:-1;;;;;29288:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;29366:18;;;;;:7;:18;;;;;:39;;29389:15;29366:22;:39::i;:::-;-1:-1:-1;;;;;29345:18:0;;;;;;:7;:18;;;;;;;;:60;;;;29437:7;:18;;;;:39;;29460:15;29437:22;:39::i;30367:719::-;30470:15;30487:23;30512:12;30526:23;30551:12;30565:18;30587:19;30598:7;30587:10;:19::i;:::-;-1:-1:-1;;;;;30632:15:0;;;;;;:7;:15;;;;;;30469:137;;-1:-1:-1;30469:137:0;;-1:-1:-1;30469:137:0;;-1:-1:-1;30469:137:0;-1:-1:-1;30469:137:0;-1:-1:-1;30469:137:0;-1:-1:-1;30632:28:0;;30652:7;30632:19;:28::i;:::-;-1:-1:-1;;;;;30614:15:0;;;;;;:7;:15;;;;;;;;:46;;;;30689:7;:15;;;;:28;;30709:7;30689:19;:28::i;28443:588::-;28548:15;28565:23;28590:12;28604:23;28629:12;28643:18;28665:19;28676:7;28665:10;:19::i;:::-;-1:-1:-1;;;;;28713:15:0;;;;;;:7;:15;;;;;;28547:137;;-1:-1:-1;28547:137:0;;-1:-1:-1;28547:137:0;;-1:-1:-1;28547:137:0;-1:-1:-1;28547:137:0;-1:-1:-1;28547:137:0;-1:-1:-1;28713:28:0;;28547:137;28713:19;:28::i;33562:201::-;33626:7;33662:46;33696:11;;33687:8;;33683:3;:12;;;;:::i;:::-;:24;;;;:::i;:::-;33662:16;:7;33674:3;33662:11;:16::i;:46::-;33652:56;;33726:29;33751:3;33726:20;33738:7;;33726;:11;;:20;;;;:::i;33772:241::-;33842:7;33878:46;33912:11;;33903:8;;33899:3;:12;;;;:::i;33878:46::-;33868:56;;33942:63;34001:3;33942:54;33982:13;;33968;;33954;;:27;;;;:::i;:::-;:41;;;;:::i;:::-;33942:7;;:11;:54::i;33198:355::-;33261:19;33284:10;:8;:10::i;:::-;33261:33;-1:-1:-1;33305:18:0;33326:27;:10;33261:33;33326:14;:27::i;:::-;33405:4;33389:22;;;;:7;:22;;;;;;33305:48;;-1:-1:-1;33389:38:0;;33305:48;33389:26;:38::i;:::-;33380:4;33364:22;;;;:7;:22;;;;;;;;:63;;;;33441:11;:26;;;;;;33438:107;;;33523:4;33507:22;;;;:7;:22;;;;;;:38;;33534:10;33507:26;:38::i;:::-;33498:4;33482:22;;;;:7;:22;;;;;:63;33438:107;33250:303;;33198:355;:::o;31095:147::-;31173:7;;:17;;31185:4;31173:11;:17::i;:::-;31163:7;:27;31214:10;;:20;;31229:4;31214:14;:20::i;:::-;31201:10;:33;-1:-1:-1;;31095:147:0:o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:134;820:20;;849:31;820:20;849:31;:::i;:::-;752:134;;;:::o;891:315::-;959:6;967;1020:2;1008:9;999:7;995:23;991:32;988:52;;;1036:1;1033;1026:12;988:52;1075:9;1062:23;1094:31;1119:5;1094:31;:::i;:::-;1144:5;1196:2;1181:18;;;;1168:32;;-1:-1:-1;;;891:315:1:o;1403:127::-;1464:10;1459:3;1455:20;1452:1;1445:31;1495:4;1492:1;1485:15;1519:4;1516:1;1509:15;1535:1121;1619:6;1650:2;1693;1681:9;1672:7;1668:23;1664:32;1661:52;;;1709:1;1706;1699:12;1661:52;1749:9;1736:23;1778:18;1819:2;1811:6;1808:14;1805:34;;;1835:1;1832;1825:12;1805:34;1873:6;1862:9;1858:22;1848:32;;1918:7;1911:4;1907:2;1903:13;1899:27;1889:55;;1940:1;1937;1930:12;1889:55;1976:2;1963:16;1998:2;1994;1991:10;1988:36;;;2004:18;;:::i;:::-;2050:2;2047:1;2043:10;2082:2;2076:9;2145:2;2141:7;2136:2;2132;2128:11;2124:25;2116:6;2112:38;2200:6;2188:10;2185:22;2180:2;2168:10;2165:18;2162:46;2159:72;;;2211:18;;:::i;:::-;2247:2;2240:22;2297:18;;;2331:15;;;;-1:-1:-1;2373:11:1;;;2369:20;;;2401:19;;;2398:39;;;2433:1;2430;2423:12;2398:39;2457:11;;;;2477:148;2493:6;2488:3;2485:15;2477:148;;;2559:23;2578:3;2559:23;:::i;:::-;2547:36;;2510:12;;;;2603;;;;2477:148;;;2644:6;1535:1121;-1:-1:-1;;;;;;;;1535:1121:1:o;3078:247::-;3137:6;3190:2;3178:9;3169:7;3165:23;3161:32;3158:52;;;3206:1;3203;3196:12;3158:52;3245:9;3232:23;3264:31;3289:5;3264:31;:::i;3330:180::-;3389:6;3442:2;3430:9;3421:7;3417:23;3413:32;3410:52;;;3458:1;3455;3448:12;3410:52;-1:-1:-1;3481:23:1;;3330:180;-1:-1:-1;3330:180:1:o;3515:456::-;3592:6;3600;3608;3661:2;3649:9;3640:7;3636:23;3632:32;3629:52;;;3677:1;3674;3667:12;3629:52;3716:9;3703:23;3735:31;3760:5;3735:31;:::i;:::-;3785:5;-1:-1:-1;3842:2:1;3827:18;;3814:32;3855:33;3814:32;3855:33;:::i;:::-;3515:456;;3907:7;;-1:-1:-1;;;3961:2:1;3946:18;;;;3933:32;;3515:456::o;4373:523::-;4477:6;4485;4493;4501;4509;4517;4570:3;4558:9;4549:7;4545:23;4541:33;4538:53;;;4587:1;4584;4577:12;4538:53;-1:-1:-1;;4610:23:1;;;4680:2;4665:18;;4652:32;;-1:-1:-1;4731:2:1;4716:18;;4703:32;;4782:2;4767:18;;4754:32;;-1:-1:-1;4833:3:1;4818:19;;4805:33;;-1:-1:-1;4885:3:1;4870:19;4857:33;;-1:-1:-1;4373:523:1;-1:-1:-1;4373:523:1:o;4901:160::-;4966:20;;5022:13;;5015:21;5005:32;;4995:60;;5051:1;5048;5041:12;5066:248;5131:6;5139;5192:2;5180:9;5171:7;5167:23;5163:32;5160:52;;;5208:1;5205;5198:12;5160:52;5244:9;5231:23;5221:33;;5273:35;5304:2;5293:9;5289:18;5273:35;:::i;:::-;5263:45;;5066:248;;;;;:::o;5319:315::-;5384:6;5392;5445:2;5433:9;5424:7;5420:23;5416:32;5413:52;;;5461:1;5458;5451:12;5413:52;5500:9;5487:23;5519:31;5544:5;5519:31;:::i;:::-;5569:5;-1:-1:-1;5593:35:1;5624:2;5609:18;;5593:35;:::i;5863:180::-;5919:6;5972:2;5960:9;5951:7;5947:23;5943:32;5940:52;;;5988:1;5985;5978:12;5940:52;6011:26;6027:9;6011:26;:::i;6048:388::-;6116:6;6124;6177:2;6165:9;6156:7;6152:23;6148:32;6145:52;;;6193:1;6190;6183:12;6145:52;6232:9;6219:23;6251:31;6276:5;6251:31;:::i;:::-;6301:5;-1:-1:-1;6358:2:1;6343:18;;6330:32;6371:33;6330:32;6371:33;:::i;:::-;6423:7;6413:17;;;6048:388;;;;;:::o;6441:380::-;6520:1;6516:12;;;;6563;;;6584:61;;6638:4;6630:6;6626:17;6616:27;;6584:61;6691:2;6683:6;6680:14;6660:18;6657:38;6654:161;;;6737:10;6732:3;6728:20;6725:1;6718:31;6772:4;6769:1;6762:15;6800:4;6797:1;6790:15;6654:161;;6441:380;;;:::o;6826:356::-;7028:2;7010:21;;;7047:18;;;7040:30;7106:34;7101:2;7086:18;;7079:62;7173:2;7158:18;;6826:356::o;7187:127::-;7248:10;7243:3;7239:20;7236:1;7229:31;7279:4;7276:1;7269:15;7303:4;7300:1;7293:15;7319:127;7380:10;7375:3;7371:20;7368:1;7361:31;7411:4;7408:1;7401:15;7435:4;7432:1;7425:15;7451:175;7488:3;7532:4;7525:5;7521:16;7561:4;7552:7;7549:17;7546:43;;;7569:18;;:::i;:::-;7618:1;7605:15;;7451:175;-1:-1:-1;;7451:175:1:o;8398:125::-;8438:4;8466:1;8463;8460:8;8457:34;;;8471:18;;:::i;:::-;-1:-1:-1;8508:9:1;;8398:125::o;8528:127::-;8589:10;8584:3;8580:20;8577:1;8570:31;8620:4;8617:1;8610:15;8644:4;8641:1;8634:15;8660:135;8699:3;-1:-1:-1;;8720:17:1;;8717:43;;;8740:18;;:::i;:::-;-1:-1:-1;8787:1:1;8776:13;;8660:135::o;10668:128::-;10708:3;10739:1;10735:6;10732:1;10729:13;10726:39;;;10745:18;;:::i;:::-;-1:-1:-1;10781:9:1;;10668:128::o;11553:168::-;11593:7;11659:1;11655;11651:6;11647:14;11644:1;11641:21;11636:1;11629:9;11622:17;11618:45;11615:71;;;11666:18;;:::i;:::-;-1:-1:-1;11706:9:1;;11553:168::o;11726:217::-;11766:1;11792;11782:132;;11836:10;11831:3;11827:20;11824:1;11817:31;11871:4;11868:1;11861:15;11899:4;11896:1;11889:15;11782:132;-1:-1:-1;11928:9:1;;11726:217::o;15827:404::-;16029:2;16011:21;;;16068:2;16048:18;;;16041:30;16107:34;16102:2;16087:18;;16080:62;-1:-1:-1;;;16173:2:1;16158:18;;16151:38;16221:3;16206:19;;15827:404::o;16560:251::-;16630:6;16683:2;16671:9;16662:7;16658:23;16654:32;16651:52;;;16699:1;16696;16689:12;16651:52;16731:9;16725:16;16750:31;16775:5;16750:31;:::i;16816:461::-;16869:3;16907:5;16901:12;16934:6;16929:3;16922:19;16960:4;16989:2;16984:3;16980:12;16973:19;;17026:2;17019:5;17015:14;17047:1;17057:195;17071:6;17068:1;17065:13;17057:195;;;17136:13;;-1:-1:-1;;;;;17132:39:1;17120:52;;17192:12;;;;17227:15;;;;17168:1;17086:9;17057:195;;;-1:-1:-1;17268:3:1;;16816:461;-1:-1:-1;;;;;16816:461:1:o;17282:582::-;17581:6;17570:9;17563:25;17624:6;17619:2;17608:9;17604:18;17597:34;17667:3;17662:2;17651:9;17647:18;17640:31;17544:4;17688:57;17740:3;17729:9;17725:19;17717:6;17688:57;:::i;:::-;-1:-1:-1;;;;;17781:32:1;;;;17776:2;17761:18;;17754:60;-1:-1:-1;17845:3:1;17830:19;17823:35;17680:65;17282:582;-1:-1:-1;;;17282:582:1:o;17869:332::-;18076:6;18065:9;18058:25;18119:2;18114;18103:9;18099:18;18092:30;18039:4;18139:56;18191:2;18180:9;18176:18;18168:6;18139:56;:::i;:::-;18131:64;17869:332;-1:-1:-1;;;;17869:332:1:o;18818:306::-;18906:6;18914;18922;18975:2;18963:9;18954:7;18950:23;18946:32;18943:52;;;18991:1;18988;18981:12;18943:52;19020:9;19014:16;19004:26;;19070:2;19059:9;19055:18;19049:25;19039:35;;19114:2;19103:9;19099:18;19093:25;19083:35;;18818:306;;;;;:::o
Swarm Source
ipfs://6cbd8c53ecff2751b8799cdad84690c360bf8daa14644f0c45aa0bf04716f7a5
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.