Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
500,000,000 $TAs
Holders
851
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
1,678.5 $TAsValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
TheAmericansToken
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-07-17 */ // SPDX-License-Identifier: MIT /** * @title TheAmericanToken * @author DevAmerican * @dev Used for Ethereum projects compatible with OpenSea */ pragma solidity ^0.8.0; 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); } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _setOwner(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // This version of SafeMath should only be used with Solidity 0.8 or later, library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // benefit is lost if 'b' is also tested. if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } library Address { function isContract(address account) internal view returns (bool) { // construction, since the code is only stored at the end of the uint256 size; assembly { size := extcodesize(account) } return size > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } 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"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResult(success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResult(success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResult(success, returndata, errorMessage); } function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountOut); function getAmountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); 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(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } enum TokenType { standard, antiBotStandard, liquidityGenerator, antiBotLiquidityGenerator, baby, antiBotBaby, buybackBaby, antiBotBuybackBaby } abstract contract BaseToken { event TokenCreated( address indexed owner, address indexed token, TokenType tokenType, uint256 version ); } pragma solidity =0.8.4; contract TheAmericansToken is IERC20, Ownable, BaseToken { using SafeMath for uint256; using Address for address; uint256 public constant VERSION = 1; 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; uint256 private _rTotal; uint256 private _tFeeTotal; string private _name; string private _symbol; uint8 private _decimals; uint256 public _taxFee; uint256 private _previousTaxFee = _taxFee; uint256 public _liquidityFee; uint256 private _previousLiquidityFee = _liquidityFee; uint256 public _marketingFee; uint256 private _previousMarketingFee = _marketingFee; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; address public _marketingAddress; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled; uint256 private numTokensSellToAddToLiquidity; event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); modifier lockTheSwap() { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor( string memory name_, string memory symbol_, uint256 totalSupply_, address router_, address marketingAddress_, uint16 taxFeeBps_, uint16 liquidityFeeBps_, uint16 marketingFeeBps_ ) { require(taxFeeBps_ >= 0 && taxFeeBps_ <= 10**4, "Invalid tax fee"); require( liquidityFeeBps_ >= 0 && liquidityFeeBps_ <= 10**4, "Invalid liquidity fee" ); require( marketingFeeBps_ >= 0 && marketingFeeBps_ <= 10**4, "Invalid marketing fee" ); if (marketingAddress_ == address(0)) { require( marketingFeeBps_ == 0, "Cant set both marketing address to address 0 and marketing percent more than 0" ); } require( taxFeeBps_ + liquidityFeeBps_ + marketingFeeBps_ <= 10**4, "Total fee is over 100% of transfer amount" ); _name = name_; _symbol = symbol_; _decimals = 18; _tTotal = totalSupply_; _rTotal = (MAX - (MAX % _tTotal)); _taxFee = taxFeeBps_; _previousTaxFee = _taxFee; _liquidityFee = liquidityFeeBps_; _previousLiquidityFee = _liquidityFee; _marketingAddress = marketingAddress_; _marketingFee = marketingFeeBps_; _previousMarketingFee = _marketingFee; numTokensSellToAddToLiquidity = totalSupply_.mul(5).div(10**4); // 0.05% swapAndLiquifyEnabled = true; _rOwned[owner()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router_); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; emit Transfer(address(0), owner(), _tTotal); emit TokenCreated( owner(), address(this), TokenType.antiBotLiquidityGenerator, VERSION ); } 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 deliver(uint256 tAmount) public { address sender = _msgSender(); require( !_isExcluded[sender], "Excluded addresses cannot call this function" ); (uint256 rAmount, , , , , , ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rTotal = _rTotal.sub(rAmount); _tFeeTotal = _tFeeTotal.add(tAmount); } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns (uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferFee) { (uint256 rAmount, , , , , , ) = _getValues(tAmount); return rAmount; } else { (, uint256 rTransferAmount, , , , , ) = _getValues(tAmount); return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns (uint256) { require( rAmount <= _rTotal, "Amount must be less than total reflections" ); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function 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 _transferBothExcluded( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tMarketing ) = _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); _takeMarketingFee(tMarketing); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function setTaxFeePercent(uint256 taxFeeBps) external onlyOwner { require(taxFeeBps >= 0 && taxFeeBps <= 10**4, "Invalid bps"); _taxFee = taxFeeBps; } function setLiquidityFeePercent(uint256 liquidityFeeBps) external onlyOwner { require(liquidityFeeBps >= 0 && liquidityFeeBps <= 10**4, "Invalid bps"); _liquidityFee = liquidityFeeBps; } function setMarketFeePercent(uint256 marketFeeBps) external onlyOwner { require(marketFeeBps >= 0 && marketFeeBps <= 10**4, "Invalid bps"); _marketingFee = marketFeeBps; } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } receive() external payable {} 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 ) { ( uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tMarketing ) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues( tAmount, tFee, tLiquidity, tMarketing, _getRate() ); return ( rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity, tMarketing ); } function _getTValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256 ) { uint256 tFee = calculateTaxFee(tAmount); uint256 tLiquidity = calculateLiquidityFee(tAmount); uint256 tMarketingFee = calculateMarketingFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity).sub( tMarketingFee ); return (tTransferAmount, tFee, tLiquidity, tMarketingFee); } function _getRValues( uint256 tAmount, uint256 tFee, uint256 tLiquidity, uint256 tMarketing, uint256 currentRate ) private pure returns ( uint256, uint256, uint256 ) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rMarketing = tMarketing.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity).sub( rMarketing ); 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 _takeMarketingFee(uint256 tMarketing) private { if (tMarketing > 0) { uint256 currentRate = _getRate(); uint256 rMarketing = tMarketing.mul(currentRate); _rOwned[_marketingAddress] = _rOwned[_marketingAddress].add(rMarketing); if (_isExcluded[_marketingAddress]) _tOwned[_marketingAddress] = _tOwned[_marketingAddress].add( tMarketing ); emit Transfer(_msgSender(), _marketingAddress, tMarketing); } } function calculateTaxFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_taxFee).div(10**4); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_liquidityFee).div(10**4); } function calculateMarketingFee(uint256 _amount) private view returns (uint256) { if (_marketingAddress == address(0)) return 0; return _amount.mul(_marketingFee).div(10**4); } function removeAllFee() private { if (_taxFee == 0 && _liquidityFee == 0 && _marketingFee == 0) return; _previousTaxFee = _taxFee; _previousLiquidityFee = _liquidityFee; _previousMarketingFee = _marketingFee; _taxFee = 0; _liquidityFee = 0; _marketingFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _liquidityFee = _previousLiquidityFee; _marketingFee = _previousMarketingFee; } function isExcludedFromFee(address account) public view returns (bool) { return _isExcludedFromFee[account]; } function _approve( address owner, address spender, uint256 amount ) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { 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"); // tokens that we need to initiate a swap + liquidity lock? // also, don't swap & liquify if sender is uniswap pair. uint256 contractTokenBalance = balanceOf(address(this)); bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity; if ( overMinTokenBalance && !inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled ) { contractTokenBalance = numTokensSellToAddToLiquidity; swapAndLiquify(contractTokenBalance); } bool takeFee = true; if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) { takeFee = false; } _tokenTransfer(from, to, amount, takeFee); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { uint256 half = contractTokenBalance.div(2); uint256 otherHalf = contractTokenBalance.sub(half); // this is so that we can capture exactly the amount of ETH that the // has been manually sent to the contract uint256 initialBalance = address(this).balance; swapTokensForEth(half); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered uint256 newBalance = address(this).balance.sub(initialBalance); addLiquidity(otherHalf, newBalance); emit SwapAndLiquify(half, newBalance, otherHalf); } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { _approve(address(this), address(uniswapV2Router), tokenAmount); 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(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if (!takeFee) restoreAllFee(); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tMarketing ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeMarketingFee(tMarketing); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tMarketing ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeMarketingFee(tMarketing); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity, uint256 tMarketing ) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _takeMarketingFee(tMarketing); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } //ONLY OWNER function changeMarketingAddress(address _newMarketingAddress) public onlyOwner { _marketingAddress = _newMarketingAddress; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint256","name":"totalSupply_","type":"uint256"},{"internalType":"address","name":"router_","type":"address"},{"internalType":"address","name":"marketingAddress_","type":"address"},{"internalType":"uint16","name":"taxFeeBps_","type":"uint16"},{"internalType":"uint16","name":"liquidityFeeBps_","type":"uint16"},{"internalType":"uint16","name":"marketingFeeBps_","type":"uint16"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"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":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"enum TokenType","name":"tokenType","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"version","type":"uint256"}],"name":"TokenCreated","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":"VERSION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"_newMarketingAddress","type":"address"}],"name":"changeMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":[{"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":"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":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFeeBps","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketFeeBps","type":"uint256"}],"name":"setMarketFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFeeBps","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600d54600e55600f546010556011546012553480156200002357600080fd5b50604051620064ef380380620064ef833981810160405281019062000049919062000aa2565b620000696200005d620007ea60201b60201c565b620007f260201b60201c565b60008361ffff16101580156200008557506127108361ffff1611155b620000c7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000be9062000ce7565b60405180910390fd5b60008261ffff1610158015620000e357506127108261ffff1611155b62000125576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200011c9062000d2b565b60405180910390fd5b60008161ffff16101580156200014157506127108161ffff1611155b62000183576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200017a9062000d6f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415620002045760008161ffff161462000203576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001fa9062000d09565b60405180910390fd5b5b61271081838562000216919062000e1e565b62000222919062000e1e565b61ffff1611156200026a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002619062000d4d565b60405180910390fd5b87600a9080519060200190620002829291906200090f565b5086600b90805190602001906200029b9291906200090f565b506012600c60006101000a81548160ff021916908360ff16021790555085600781905550600754600019620002d1919062001048565b600019620002e0919062000ef6565b6008819055508261ffff16600d81905550600d54600e819055508161ffff16600f81905550600f5460108190555083601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508061ffff166011819055506011546012819055506200039961271062000385600589620008b660201b62001fe01790919060201c565b620008ce60201b62001ff61790919060201c565b60168190555060016015806101000a81548160ff02191690831515021790555060085460016000620003d0620008e660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008590508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200045a57600080fd5b505afa1580156200046f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000495919062000a76565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620004f857600080fd5b505afa1580156200050d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000533919062000a76565b6040518363ffffffff1660e01b81526004016200055292919062000c8d565b602060405180830381600087803b1580156200056d57600080fd5b505af115801562000582573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005a8919062000a76565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460006200063f620008e660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006f8620008e660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60075460405162000759919062000d91565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff1662000788620008e660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff167f56358b41df5fa59f5639228f0930994cbdde383c8a8fd74e06c04e1deebe356260036001604051620007d392919062000cba565b60405180910390a350505050505050505062001320565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008183620008c6919062000e95565b905092915050565b60008183620008de919062000e5d565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8280546200091d9062000fdc565b90600052602060002090601f0160209004810192826200094157600085556200098d565b82601f106200095c57805160ff19168380011785556200098d565b828001600101855582156200098d579182015b828111156200098c5782518255916020019190600101906200096f565b5b5090506200099c9190620009a0565b5090565b5b80821115620009bb576000816000905550600101620009a1565b5090565b6000620009d6620009d08462000dd7565b62000dae565b905082815260208101848484011115620009ef57600080fd5b620009fc84828562000fa6565b509392505050565b60008151905062000a1581620012d2565b92915050565b600082601f83011262000a2d57600080fd5b815162000a3f848260208601620009bf565b91505092915050565b60008151905062000a5981620012ec565b92915050565b60008151905062000a708162001306565b92915050565b60006020828403121562000a8957600080fd5b600062000a998482850162000a04565b91505092915050565b600080600080600080600080610100898b03121562000ac057600080fd5b600089015167ffffffffffffffff81111562000adb57600080fd5b62000ae98b828c0162000a1b565b985050602089015167ffffffffffffffff81111562000b0757600080fd5b62000b158b828c0162000a1b565b975050604062000b288b828c0162000a5f565b965050606062000b3b8b828c0162000a04565b955050608062000b4e8b828c0162000a04565b94505060a062000b618b828c0162000a48565b93505060c062000b748b828c0162000a48565b92505060e062000b878b828c0162000a48565b9150509295985092959890939650565b62000ba28162000f31565b82525050565b62000bb38162000f92565b82525050565b600062000bc8600f8362000e0d565b915062000bd5826200117c565b602082019050919050565b600062000bef604e8362000e0d565b915062000bfc82620011a5565b606082019050919050565b600062000c1660158362000e0d565b915062000c23826200121a565b602082019050919050565b600062000c3d60298362000e0d565b915062000c4a8262001243565b604082019050919050565b600062000c6460158362000e0d565b915062000c718262001292565b602082019050919050565b62000c878162000f88565b82525050565b600060408201905062000ca4600083018562000b97565b62000cb3602083018462000b97565b9392505050565b600060408201905062000cd1600083018562000ba8565b62000ce0602083018462000c7c565b9392505050565b6000602082019050818103600083015262000d028162000bb9565b9050919050565b6000602082019050818103600083015262000d248162000be0565b9050919050565b6000602082019050818103600083015262000d468162000c07565b9050919050565b6000602082019050818103600083015262000d688162000c2e565b9050919050565b6000602082019050818103600083015262000d8a8162000c55565b9050919050565b600060208201905062000da8600083018462000c7c565b92915050565b600062000dba62000dcd565b905062000dc8828262001012565b919050565b6000604051905090565b600067ffffffffffffffff82111562000df55762000df46200113c565b5b62000e00826200116b565b9050602081019050919050565b600082825260208201905092915050565b600062000e2b8262000f5a565b915062000e388362000f5a565b92508261ffff0382111562000e525762000e5162001080565b5b828201905092915050565b600062000e6a8262000f88565b915062000e778362000f88565b92508262000e8a5762000e89620010af565b5b828204905092915050565b600062000ea28262000f88565b915062000eaf8362000f88565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000eeb5762000eea62001080565b5b828202905092915050565b600062000f038262000f88565b915062000f108362000f88565b92508282101562000f265762000f2562001080565b5b828203905092915050565b600062000f3e8262000f68565b9050919050565b600081905062000f5582620012bb565b919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600062000f9f8262000f45565b9050919050565b60005b8381101562000fc657808201518184015260208101905062000fa9565b8381111562000fd6576000848401525b50505050565b6000600282049050600182168062000ff557607f821691505b602082108114156200100c576200100b6200110d565b5b50919050565b6200101d826200116b565b810181811067ffffffffffffffff821117156200103f576200103e6200113c565b5b80604052505050565b6000620010558262000f88565b9150620010628362000f88565b925082620010755762001074620010af565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f496e76616c696420746178206665650000000000000000000000000000000000600082015250565b7f43616e742073657420626f7468206d61726b6574696e6720616464726573732060008201527f746f2061646472657373203020616e64206d61726b6574696e6720706572636560208201527f6e74206d6f7265207468616e2030000000000000000000000000000000000000604082015250565b7f496e76616c6964206c6971756964697479206665650000000000000000000000600082015250565b7f546f74616c20666565206973206f7665722031303025206f66207472616e736660008201527f657220616d6f756e740000000000000000000000000000000000000000000000602082015250565b7f496e76616c6964206d61726b6574696e67206665650000000000000000000000600082015250565b60088110620012cf57620012ce620010de565b5b50565b620012dd8162000f31565b8114620012e957600080fd5b50565b620012f78162000f5a565b81146200130357600080fd5b50565b620013118162000f88565b81146200131d57600080fd5b50565b6151bf80620013306000396000f3fe60806040526004361061021e5760003560e01c806349bd5a5e116101235780638ee88c53116100ab578063caac79341161006f578063caac793414610818578063dd62ed3e14610843578063ea2f0b3714610880578063f2fde38b146108a9578063ffa1ad74146108d257610225565b80638ee88c531461072157806395d89b411461074a578063a457c2d714610775578063a9059cbb146107b2578063c49b9a80146107ef57610225565b80636bc87c3a116100f25780636bc87c3a1461063a57806370a0823114610665578063715018a6146106a257806388f82020146106b95780638da5cb5b146106f657610225565b806349bd5a5e1461057e5780634a74bb02146105a957806352390c02146105d45780635342acb4146105fd57610225565b80632d838119116101a6578063395093511161017557806339509351146104875780633b124fe7146104c45780633bd5d173146104ef578063437823ec146105185780634549b0391461054157610225565b80632d838119146103cd578063313ce5671461040a5780633685d41914610435578063392659891461045e57610225565b806313114a9d116101ed57806313114a9d146102e45780631694505e1461030f57806318160ddd1461033a57806322976e0d1461036557806323b872dd1461039057610225565b8063048dec381461022a578063061c82d01461025357806306fdde031461027c578063095ea7b3146102a757610225565b3661022557005b600080fd5b34801561023657600080fd5b50610251600480360381019061024c91906142cd565b6108fd565b005b34801561025f57600080fd5b5061027a6004803603810190610275919061440f565b6109bd565b005b34801561028857600080fd5b50610291610a95565b60405161029e9190614831565b60405180910390f35b3480156102b357600080fd5b506102ce60048036038101906102c991906143aa565b610b27565b6040516102db91906147fb565b60405180910390f35b3480156102f057600080fd5b506102f9610b45565b60405161030691906149d3565b60405180910390f35b34801561031b57600080fd5b50610324610b4f565b6040516103319190614816565b60405180910390f35b34801561034657600080fd5b5061034f610b75565b60405161035c91906149d3565b60405180910390f35b34801561037157600080fd5b5061037a610b7f565b60405161038791906149d3565b60405180910390f35b34801561039c57600080fd5b506103b760048036038101906103b2919061435b565b610b85565b6040516103c491906147fb565b60405180910390f35b3480156103d957600080fd5b506103f460048036038101906103ef919061440f565b610c5e565b60405161040191906149d3565b60405180910390f35b34801561041657600080fd5b5061041f610ccc565b60405161042c9190614a7f565b60405180910390f35b34801561044157600080fd5b5061045c600480360381019061045791906142cd565b610ce3565b005b34801561046a57600080fd5b506104856004803603810190610480919061440f565b6110b1565b005b34801561049357600080fd5b506104ae60048036038101906104a991906143aa565b611189565b6040516104bb91906147fb565b60405180910390f35b3480156104d057600080fd5b506104d961123c565b6040516104e691906149d3565b60405180910390f35b3480156104fb57600080fd5b506105166004803603810190610511919061440f565b611242565b005b34801561052457600080fd5b5061053f600480360381019061053a91906142cd565b6113be565b005b34801561054d57600080fd5b5061056860048036038101906105639190614438565b611495565b60405161057591906149d3565b60405180910390f35b34801561058a57600080fd5b5061059361151b565b6040516105a0919061477f565b60405180910390f35b3480156105b557600080fd5b506105be611541565b6040516105cb91906147fb565b60405180910390f35b3480156105e057600080fd5b506105fb60048036038101906105f691906142cd565b611552565b005b34801561060957600080fd5b50610624600480360381019061061f91906142cd565b6117ed565b60405161063191906147fb565b60405180910390f35b34801561064657600080fd5b5061064f611843565b60405161065c91906149d3565b60405180910390f35b34801561067157600080fd5b5061068c600480360381019061068791906142cd565b611849565b60405161069991906149d3565b60405180910390f35b3480156106ae57600080fd5b506106b7611934565b005b3480156106c557600080fd5b506106e060048036038101906106db91906142cd565b6119bc565b6040516106ed91906147fb565b60405180910390f35b34801561070257600080fd5b5061070b611a12565b604051610718919061477f565b60405180910390f35b34801561072d57600080fd5b506107486004803603810190610743919061440f565b611a3b565b005b34801561075657600080fd5b5061075f611b13565b60405161076c9190614831565b60405180910390f35b34801561078157600080fd5b5061079c600480360381019061079791906143aa565b611ba5565b6040516107a991906147fb565b60405180910390f35b3480156107be57600080fd5b506107d960048036038101906107d491906143aa565b611c72565b6040516107e691906147fb565b60405180910390f35b3480156107fb57600080fd5b50610816600480360381019061081191906143e6565b611c90565b005b34801561082457600080fd5b5061082d611d5f565b60405161083a919061477f565b60405180910390f35b34801561084f57600080fd5b5061086a6004803603810190610865919061431f565b611d85565b60405161087791906149d3565b60405180910390f35b34801561088c57600080fd5b506108a760048036038101906108a291906142cd565b611e0c565b005b3480156108b557600080fd5b506108d060048036038101906108cb91906142cd565b611ee3565b005b3480156108de57600080fd5b506108e7611fdb565b6040516108f491906149d3565b60405180910390f35b61090561200c565b73ffffffffffffffffffffffffffffffffffffffff16610923611a12565b73ffffffffffffffffffffffffffffffffffffffff1614610979576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097090614913565b60405180910390fd5b80601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6109c561200c565b73ffffffffffffffffffffffffffffffffffffffff166109e3611a12565b73ffffffffffffffffffffffffffffffffffffffff1614610a39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3090614913565b60405180910390fd5b60008110158015610a4c57506127108111155b610a8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8290614953565b60405180910390fd5b80600d8190555050565b6060600a8054610aa490614cc2565b80601f0160208091040260200160405190810160405280929190818152602001828054610ad090614cc2565b8015610b1d5780601f10610af257610100808354040283529160200191610b1d565b820191906000526020600020905b815481529060010190602001808311610b0057829003601f168201915b5050505050905090565b6000610b3b610b3461200c565b8484612014565b6001905092915050565b6000600954905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600754905090565b60115481565b6000610b928484846121df565b610c5384610b9e61200c565b610c4e8560405180606001604052806028815260200161513d60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c0461200c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247c9092919063ffffffff16565b612014565b600190509392505050565b6000600854821115610ca5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9c90614873565b60405180910390fd5b6000610caf6124d1565b9050610cc48184611ff690919063ffffffff16565b915050919050565b6000600c60009054906101000a900460ff16905090565b610ceb61200c565b73ffffffffffffffffffffffffffffffffffffffff16610d09611a12565b73ffffffffffffffffffffffffffffffffffffffff1614610d5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5690614913565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610deb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de2906148d3565b60405180910390fd5b60005b6006805490508110156110ad578173ffffffffffffffffffffffffffffffffffffffff1660068281548110610e4c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561109a5760066001600680549050610ea79190614bd0565b81548110610ede577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660068281548110610f43577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006805480611060577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556110ad565b80806110a590614cf4565b915050610dee565b5050565b6110b961200c565b73ffffffffffffffffffffffffffffffffffffffff166110d7611a12565b73ffffffffffffffffffffffffffffffffffffffff161461112d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112490614913565b60405180910390fd5b6000811015801561114057506127108111155b61117f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117690614953565b60405180910390fd5b8060118190555050565b600061123261119661200c565b8461122d85600360006111a761200c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124fc90919063ffffffff16565b612014565b6001905092915050565b600d5481565b600061124c61200c565b9050600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156112db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d2906149b3565b60405180910390fd5b60006112e683612512565b505050505050905061134081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257a90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113988160085461257a90919063ffffffff16565b6008819055506113b3836009546124fc90919063ffffffff16565b600981905550505050565b6113c661200c565b73ffffffffffffffffffffffffffffffffffffffff166113e4611a12565b73ffffffffffffffffffffffffffffffffffffffff161461143a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143190614913565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006007548311156114dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d3906148f3565b60405180910390fd5b816114fd5760006114ec84612512565b505050505050905080915050611515565b600061150884612512565b5050505050915050809150505b92915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60158054906101000a900460ff1681565b61155a61200c565b73ffffffffffffffffffffffffffffffffffffffff16611578611a12565b73ffffffffffffffffffffffffffffffffffffffff16146115ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c590614913565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561165b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611652906148d3565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561172f576116eb600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c5e565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600f5481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156118e457600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061192f565b61192c600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c5e565b90505b919050565b61193c61200c565b73ffffffffffffffffffffffffffffffffffffffff1661195a611a12565b73ffffffffffffffffffffffffffffffffffffffff16146119b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a790614913565b60405180910390fd5b6119ba6000612590565b565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611a4361200c565b73ffffffffffffffffffffffffffffffffffffffff16611a61611a12565b73ffffffffffffffffffffffffffffffffffffffff1614611ab7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aae90614913565b60405180910390fd5b60008110158015611aca57506127108111155b611b09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0090614953565b60405180910390fd5b80600f8190555050565b6060600b8054611b2290614cc2565b80601f0160208091040260200160405190810160405280929190818152602001828054611b4e90614cc2565b8015611b9b5780601f10611b7057610100808354040283529160200191611b9b565b820191906000526020600020905b815481529060010190602001808311611b7e57829003601f168201915b5050505050905090565b6000611c68611bb261200c565b84611c63856040518060600160405280602581526020016151656025913960036000611bdc61200c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247c9092919063ffffffff16565b612014565b6001905092915050565b6000611c86611c7f61200c565b84846121df565b6001905092915050565b611c9861200c565b73ffffffffffffffffffffffffffffffffffffffff16611cb6611a12565b73ffffffffffffffffffffffffffffffffffffffff1614611d0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0390614913565b60405180910390fd5b806015806101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051611d5491906147fb565b60405180910390a150565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611e1461200c565b73ffffffffffffffffffffffffffffffffffffffff16611e32611a12565b73ffffffffffffffffffffffffffffffffffffffff1614611e88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7f90614913565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611eeb61200c565b73ffffffffffffffffffffffffffffffffffffffff16611f09611a12565b73ffffffffffffffffffffffffffffffffffffffff1614611f5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5690614913565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611fcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc690614893565b60405180910390fd5b611fd881612590565b50565b600181565b60008183611fee9190614b76565b905092915050565b600081836120049190614b45565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612084576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207b90614993565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120eb906148b3565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121d291906149d3565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561224f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224690614973565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b690614853565b60405180910390fd5b60008111612302576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f990614933565b60405180910390fd5b600061230d30611849565b9050600060165482101590508080156123335750601560149054906101000a900460ff16155b801561238d5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156123a3575060158054906101000a900460ff165b156123b75760165491506123b682612654565b5b600060019050600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061245e5750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561246857600090505b6124748686868461272a565b505050505050565b60008383111582906124c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124bb9190614831565b60405180910390fd5b5082840390509392505050565b60008060006124de612a3b565b915091506124f58183611ff690919063ffffffff16565b9250505090565b6000818361250a9190614aef565b905092915050565b600080600080600080600080600080600061252c8c612d86565b9350935093509350600080600061254d8f8787876125486124d1565b612e05565b925092509250828282898989899d509d509d509d509d509d509d5050505050505050919395979092949650565b600081836125889190614bd0565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001601560146101000a81548160ff0219169083151502179055506000612685600283611ff690919063ffffffff16565b9050600061269c828461257a90919063ffffffff16565b905060004790506126ac83612eb9565b60006126c1824761257a90919063ffffffff16565b90506126cd838261317d565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161270093929190614a48565b60405180910390a1505050506000601560146101000a81548160ff02191690831515021790555050565b8061273857612737613271565b5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127db5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156127f0576127eb8484846132d3565b612a27565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128935750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156128a8576128a3848484613541565b612a26565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561294c5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156129615761295c8484846137af565b612a25565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a035750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612a1857612a13848484613988565b612a24565b612a238484846137af565b5b5b5b5b80612a3557612a34613c8b565b5b50505050565b600080600060085490506000600754905060005b600680549050811015612d4957826001600060068481548110612a9b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612baf5750816002600060068481548110612b47577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612bc65760085460075494509450505050612d82565b612c7c6001600060068481548110612c07577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461257a90919063ffffffff16565b9250612d346002600060068481548110612cbf577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361257a90919063ffffffff16565b91508080612d4190614cf4565b915050612a4f565b50612d61600754600854611ff690919063ffffffff16565b821015612d7957600854600754935093505050612d82565b81819350935050505b9091565b6000806000806000612d9786613ca8565b90506000612da487613cda565b90506000612db188613d0c565b90506000612dec82612dde85612dd0888e61257a90919063ffffffff16565b61257a90919063ffffffff16565b61257a90919063ffffffff16565b9050808484849750975097509750505050509193509193565b600080600080612e1e858a611fe090919063ffffffff16565b90506000612e35868a611fe090919063ffffffff16565b90506000612e4c878a611fe090919063ffffffff16565b90506000612e63888a611fe090919063ffffffff16565b90506000612e9e82612e9085612e82888a61257a90919063ffffffff16565b61257a90919063ffffffff16565b61257a90919063ffffffff16565b90508481859750975097505050505050955095509592505050565b6000600267ffffffffffffffff811115612efc577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612f2a5781602001602082028036833780820191505090505b5090503081600081518110612f68577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561300a57600080fd5b505afa15801561301e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061304291906142f6565b8160018151811061307c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506130e330601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612014565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016131479594939291906149ee565b600060405180830381600087803b15801561316157600080fd5b505af1158015613175573d6000803e3d6000fd5b505050505050565b6131aa30601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612014565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806131f6611a12565b426040518863ffffffff1660e01b81526004016132189695949392919061479a565b6060604051808303818588803b15801561323157600080fd5b505af1158015613245573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061326a9190614474565b5050505050565b6000600d5414801561328557506000600f54145b801561329357506000601154145b1561329d576132d1565b600d54600e81905550600f546010819055506011546012819055506000600d819055506000600f8190555060006011819055505b565b60008060008060008060006132e788612512565b965096509650965096509650965061334788600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257a90919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133dc87600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257a90919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061347186600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124fc90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134bd82613d9e565b6134c681613f43565b6134d0858461422a565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161352d91906149d3565b60405180910390a350505050505050505050565b600080600080600080600061355588612512565b96509650965096509650965096506135b587600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257a90919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061364a84600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124fc90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136df86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124fc90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061372b82613d9e565b61373481613f43565b61373e858461422a565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161379b91906149d3565b60405180910390a350505050505050505050565b60008060008060008060006137c388612512565b965096509650965096509650965061382387600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257a90919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138b886600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124fc90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061390482613d9e565b61390d81613f43565b613917858461422a565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161397491906149d3565b60405180910390a350505050505050505050565b600080600080600080600061399c88612512565b96509650965096509650965096506139fc88600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257a90919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a9187600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257a90919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b2684600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124fc90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613bbb86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124fc90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c0782613d9e565b613c1081613f43565b613c1a858461422a565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051613c7791906149d3565b60405180910390a350505050505050505050565b600e54600d81905550601054600f81905550601254601181905550565b6000613cd3612710613cc5600d5485611fe090919063ffffffff16565b611ff690919063ffffffff16565b9050919050565b6000613d05612710613cf7600f5485611fe090919063ffffffff16565b611ff690919063ffffffff16565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff16601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613d6d5760009050613d99565b613d96612710613d8860115485611fe090919063ffffffff16565b611ff690919063ffffffff16565b90505b919050565b6000613da86124d1565b90506000613dbf8284611fe090919063ffffffff16565b9050613e1381600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124fc90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613f3e57613efa83600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124fc90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b6000811115614227576000613f566124d1565b90506000613f6d8284611fe090919063ffffffff16565b9050613fe38160016000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124fc90919063ffffffff16565b60016000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060056000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614196576141308360026000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124fc90919063ffffffff16565b60026000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166141d761200c565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161421c91906149d3565b60405180910390a350505b50565b61423f8260085461257a90919063ffffffff16565b60088190555061425a816009546124fc90919063ffffffff16565b6009819055505050565b600081359050614273816150f7565b92915050565b600081519050614288816150f7565b92915050565b60008135905061429d8161510e565b92915050565b6000813590506142b281615125565b92915050565b6000815190506142c781615125565b92915050565b6000602082840312156142df57600080fd5b60006142ed84828501614264565b91505092915050565b60006020828403121561430857600080fd5b600061431684828501614279565b91505092915050565b6000806040838503121561433257600080fd5b600061434085828601614264565b925050602061435185828601614264565b9150509250929050565b60008060006060848603121561437057600080fd5b600061437e86828701614264565b935050602061438f86828701614264565b92505060406143a0868287016142a3565b9150509250925092565b600080604083850312156143bd57600080fd5b60006143cb85828601614264565b92505060206143dc858286016142a3565b9150509250929050565b6000602082840312156143f857600080fd5b60006144068482850161428e565b91505092915050565b60006020828403121561442157600080fd5b600061442f848285016142a3565b91505092915050565b6000806040838503121561444b57600080fd5b6000614459858286016142a3565b925050602061446a8582860161428e565b9150509250929050565b60008060006060848603121561448957600080fd5b6000614497868287016142b8565b93505060206144a8868287016142b8565b92505060406144b9868287016142b8565b9150509250925092565b60006144cf83836144db565b60208301905092915050565b6144e481614c04565b82525050565b6144f381614c04565b82525050565b600061450482614aaa565b61450e8185614acd565b935061451983614a9a565b8060005b8381101561454a57815161453188826144c3565b975061453c83614ac0565b92505060018101905061451d565b5085935050505092915050565b61456081614c16565b82525050565b61456f81614c59565b82525050565b61457e81614c7d565b82525050565b600061458f82614ab5565b6145998185614ade565b93506145a9818560208601614c8f565b6145b281614dca565b840191505092915050565b60006145ca602383614ade565b91506145d582614ddb565b604082019050919050565b60006145ed602a83614ade565b91506145f882614e2a565b604082019050919050565b6000614610602683614ade565b915061461b82614e79565b604082019050919050565b6000614633602283614ade565b915061463e82614ec8565b604082019050919050565b6000614656601b83614ade565b915061466182614f17565b602082019050919050565b6000614679601f83614ade565b915061468482614f40565b602082019050919050565b600061469c602083614ade565b91506146a782614f69565b602082019050919050565b60006146bf602983614ade565b91506146ca82614f92565b604082019050919050565b60006146e2600b83614ade565b91506146ed82614fe1565b602082019050919050565b6000614705602583614ade565b91506147108261500a565b604082019050919050565b6000614728602483614ade565b915061473382615059565b604082019050919050565b600061474b602c83614ade565b9150614756826150a8565b604082019050919050565b61476a81614c42565b82525050565b61477981614c4c565b82525050565b600060208201905061479460008301846144ea565b92915050565b600060c0820190506147af60008301896144ea565b6147bc6020830188614761565b6147c96040830187614575565b6147d66060830186614575565b6147e360808301856144ea565b6147f060a0830184614761565b979650505050505050565b60006020820190506148106000830184614557565b92915050565b600060208201905061482b6000830184614566565b92915050565b6000602082019050818103600083015261484b8184614584565b905092915050565b6000602082019050818103600083015261486c816145bd565b9050919050565b6000602082019050818103600083015261488c816145e0565b9050919050565b600060208201905081810360008301526148ac81614603565b9050919050565b600060208201905081810360008301526148cc81614626565b9050919050565b600060208201905081810360008301526148ec81614649565b9050919050565b6000602082019050818103600083015261490c8161466c565b9050919050565b6000602082019050818103600083015261492c8161468f565b9050919050565b6000602082019050818103600083015261494c816146b2565b9050919050565b6000602082019050818103600083015261496c816146d5565b9050919050565b6000602082019050818103600083015261498c816146f8565b9050919050565b600060208201905081810360008301526149ac8161471b565b9050919050565b600060208201905081810360008301526149cc8161473e565b9050919050565b60006020820190506149e86000830184614761565b92915050565b600060a082019050614a036000830188614761565b614a106020830187614575565b8181036040830152614a2281866144f9565b9050614a3160608301856144ea565b614a3e6080830184614761565b9695505050505050565b6000606082019050614a5d6000830186614761565b614a6a6020830185614761565b614a776040830184614761565b949350505050565b6000602082019050614a946000830184614770565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614afa82614c42565b9150614b0583614c42565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614b3a57614b39614d3d565b5b828201905092915050565b6000614b5082614c42565b9150614b5b83614c42565b925082614b6b57614b6a614d6c565b5b828204905092915050565b6000614b8182614c42565b9150614b8c83614c42565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614bc557614bc4614d3d565b5b828202905092915050565b6000614bdb82614c42565b9150614be683614c42565b925082821015614bf957614bf8614d3d565b5b828203905092915050565b6000614c0f82614c22565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614c6482614c6b565b9050919050565b6000614c7682614c22565b9050919050565b6000614c8882614c42565b9050919050565b60005b83811015614cad578082015181840152602081019050614c92565b83811115614cbc576000848401525b50505050565b60006002820490506001821680614cda57607f821691505b60208210811415614cee57614ced614d9b565b5b50919050565b6000614cff82614c42565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614d3257614d31614d3d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f496e76616c696420627073000000000000000000000000000000000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b61510081614c04565b811461510b57600080fd5b50565b61511781614c16565b811461512257600080fd5b50565b61512e81614c42565b811461513957600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212202058e8b09a2f18733b3bb5fe6773f3b3cf181a0fccbd27e9fa960c36f7fa102b64736f6c63430008040033000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000019d971e4fe8401e740000000000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000008b96427b35a9baec0b80e65e5d75a341dede72c6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c80000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000001354686520416d65726963616e7320546f6b656e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000042454417300000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x60806040526004361061021e5760003560e01c806349bd5a5e116101235780638ee88c53116100ab578063caac79341161006f578063caac793414610818578063dd62ed3e14610843578063ea2f0b3714610880578063f2fde38b146108a9578063ffa1ad74146108d257610225565b80638ee88c531461072157806395d89b411461074a578063a457c2d714610775578063a9059cbb146107b2578063c49b9a80146107ef57610225565b80636bc87c3a116100f25780636bc87c3a1461063a57806370a0823114610665578063715018a6146106a257806388f82020146106b95780638da5cb5b146106f657610225565b806349bd5a5e1461057e5780634a74bb02146105a957806352390c02146105d45780635342acb4146105fd57610225565b80632d838119116101a6578063395093511161017557806339509351146104875780633b124fe7146104c45780633bd5d173146104ef578063437823ec146105185780634549b0391461054157610225565b80632d838119146103cd578063313ce5671461040a5780633685d41914610435578063392659891461045e57610225565b806313114a9d116101ed57806313114a9d146102e45780631694505e1461030f57806318160ddd1461033a57806322976e0d1461036557806323b872dd1461039057610225565b8063048dec381461022a578063061c82d01461025357806306fdde031461027c578063095ea7b3146102a757610225565b3661022557005b600080fd5b34801561023657600080fd5b50610251600480360381019061024c91906142cd565b6108fd565b005b34801561025f57600080fd5b5061027a6004803603810190610275919061440f565b6109bd565b005b34801561028857600080fd5b50610291610a95565b60405161029e9190614831565b60405180910390f35b3480156102b357600080fd5b506102ce60048036038101906102c991906143aa565b610b27565b6040516102db91906147fb565b60405180910390f35b3480156102f057600080fd5b506102f9610b45565b60405161030691906149d3565b60405180910390f35b34801561031b57600080fd5b50610324610b4f565b6040516103319190614816565b60405180910390f35b34801561034657600080fd5b5061034f610b75565b60405161035c91906149d3565b60405180910390f35b34801561037157600080fd5b5061037a610b7f565b60405161038791906149d3565b60405180910390f35b34801561039c57600080fd5b506103b760048036038101906103b2919061435b565b610b85565b6040516103c491906147fb565b60405180910390f35b3480156103d957600080fd5b506103f460048036038101906103ef919061440f565b610c5e565b60405161040191906149d3565b60405180910390f35b34801561041657600080fd5b5061041f610ccc565b60405161042c9190614a7f565b60405180910390f35b34801561044157600080fd5b5061045c600480360381019061045791906142cd565b610ce3565b005b34801561046a57600080fd5b506104856004803603810190610480919061440f565b6110b1565b005b34801561049357600080fd5b506104ae60048036038101906104a991906143aa565b611189565b6040516104bb91906147fb565b60405180910390f35b3480156104d057600080fd5b506104d961123c565b6040516104e691906149d3565b60405180910390f35b3480156104fb57600080fd5b506105166004803603810190610511919061440f565b611242565b005b34801561052457600080fd5b5061053f600480360381019061053a91906142cd565b6113be565b005b34801561054d57600080fd5b5061056860048036038101906105639190614438565b611495565b60405161057591906149d3565b60405180910390f35b34801561058a57600080fd5b5061059361151b565b6040516105a0919061477f565b60405180910390f35b3480156105b557600080fd5b506105be611541565b6040516105cb91906147fb565b60405180910390f35b3480156105e057600080fd5b506105fb60048036038101906105f691906142cd565b611552565b005b34801561060957600080fd5b50610624600480360381019061061f91906142cd565b6117ed565b60405161063191906147fb565b60405180910390f35b34801561064657600080fd5b5061064f611843565b60405161065c91906149d3565b60405180910390f35b34801561067157600080fd5b5061068c600480360381019061068791906142cd565b611849565b60405161069991906149d3565b60405180910390f35b3480156106ae57600080fd5b506106b7611934565b005b3480156106c557600080fd5b506106e060048036038101906106db91906142cd565b6119bc565b6040516106ed91906147fb565b60405180910390f35b34801561070257600080fd5b5061070b611a12565b604051610718919061477f565b60405180910390f35b34801561072d57600080fd5b506107486004803603810190610743919061440f565b611a3b565b005b34801561075657600080fd5b5061075f611b13565b60405161076c9190614831565b60405180910390f35b34801561078157600080fd5b5061079c600480360381019061079791906143aa565b611ba5565b6040516107a991906147fb565b60405180910390f35b3480156107be57600080fd5b506107d960048036038101906107d491906143aa565b611c72565b6040516107e691906147fb565b60405180910390f35b3480156107fb57600080fd5b50610816600480360381019061081191906143e6565b611c90565b005b34801561082457600080fd5b5061082d611d5f565b60405161083a919061477f565b60405180910390f35b34801561084f57600080fd5b5061086a6004803603810190610865919061431f565b611d85565b60405161087791906149d3565b60405180910390f35b34801561088c57600080fd5b506108a760048036038101906108a291906142cd565b611e0c565b005b3480156108b557600080fd5b506108d060048036038101906108cb91906142cd565b611ee3565b005b3480156108de57600080fd5b506108e7611fdb565b6040516108f491906149d3565b60405180910390f35b61090561200c565b73ffffffffffffffffffffffffffffffffffffffff16610923611a12565b73ffffffffffffffffffffffffffffffffffffffff1614610979576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097090614913565b60405180910390fd5b80601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6109c561200c565b73ffffffffffffffffffffffffffffffffffffffff166109e3611a12565b73ffffffffffffffffffffffffffffffffffffffff1614610a39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3090614913565b60405180910390fd5b60008110158015610a4c57506127108111155b610a8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8290614953565b60405180910390fd5b80600d8190555050565b6060600a8054610aa490614cc2565b80601f0160208091040260200160405190810160405280929190818152602001828054610ad090614cc2565b8015610b1d5780601f10610af257610100808354040283529160200191610b1d565b820191906000526020600020905b815481529060010190602001808311610b0057829003601f168201915b5050505050905090565b6000610b3b610b3461200c565b8484612014565b6001905092915050565b6000600954905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600754905090565b60115481565b6000610b928484846121df565b610c5384610b9e61200c565b610c4e8560405180606001604052806028815260200161513d60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c0461200c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247c9092919063ffffffff16565b612014565b600190509392505050565b6000600854821115610ca5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9c90614873565b60405180910390fd5b6000610caf6124d1565b9050610cc48184611ff690919063ffffffff16565b915050919050565b6000600c60009054906101000a900460ff16905090565b610ceb61200c565b73ffffffffffffffffffffffffffffffffffffffff16610d09611a12565b73ffffffffffffffffffffffffffffffffffffffff1614610d5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5690614913565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610deb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de2906148d3565b60405180910390fd5b60005b6006805490508110156110ad578173ffffffffffffffffffffffffffffffffffffffff1660068281548110610e4c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561109a5760066001600680549050610ea79190614bd0565b81548110610ede577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660068281548110610f43577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006805480611060577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556110ad565b80806110a590614cf4565b915050610dee565b5050565b6110b961200c565b73ffffffffffffffffffffffffffffffffffffffff166110d7611a12565b73ffffffffffffffffffffffffffffffffffffffff161461112d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112490614913565b60405180910390fd5b6000811015801561114057506127108111155b61117f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117690614953565b60405180910390fd5b8060118190555050565b600061123261119661200c565b8461122d85600360006111a761200c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124fc90919063ffffffff16565b612014565b6001905092915050565b600d5481565b600061124c61200c565b9050600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156112db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d2906149b3565b60405180910390fd5b60006112e683612512565b505050505050905061134081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257a90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113988160085461257a90919063ffffffff16565b6008819055506113b3836009546124fc90919063ffffffff16565b600981905550505050565b6113c661200c565b73ffffffffffffffffffffffffffffffffffffffff166113e4611a12565b73ffffffffffffffffffffffffffffffffffffffff161461143a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143190614913565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006007548311156114dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d3906148f3565b60405180910390fd5b816114fd5760006114ec84612512565b505050505050905080915050611515565b600061150884612512565b5050505050915050809150505b92915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60158054906101000a900460ff1681565b61155a61200c565b73ffffffffffffffffffffffffffffffffffffffff16611578611a12565b73ffffffffffffffffffffffffffffffffffffffff16146115ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c590614913565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561165b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611652906148d3565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561172f576116eb600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c5e565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600f5481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156118e457600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061192f565b61192c600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c5e565b90505b919050565b61193c61200c565b73ffffffffffffffffffffffffffffffffffffffff1661195a611a12565b73ffffffffffffffffffffffffffffffffffffffff16146119b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a790614913565b60405180910390fd5b6119ba6000612590565b565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611a4361200c565b73ffffffffffffffffffffffffffffffffffffffff16611a61611a12565b73ffffffffffffffffffffffffffffffffffffffff1614611ab7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aae90614913565b60405180910390fd5b60008110158015611aca57506127108111155b611b09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0090614953565b60405180910390fd5b80600f8190555050565b6060600b8054611b2290614cc2565b80601f0160208091040260200160405190810160405280929190818152602001828054611b4e90614cc2565b8015611b9b5780601f10611b7057610100808354040283529160200191611b9b565b820191906000526020600020905b815481529060010190602001808311611b7e57829003601f168201915b5050505050905090565b6000611c68611bb261200c565b84611c63856040518060600160405280602581526020016151656025913960036000611bdc61200c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461247c9092919063ffffffff16565b612014565b6001905092915050565b6000611c86611c7f61200c565b84846121df565b6001905092915050565b611c9861200c565b73ffffffffffffffffffffffffffffffffffffffff16611cb6611a12565b73ffffffffffffffffffffffffffffffffffffffff1614611d0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0390614913565b60405180910390fd5b806015806101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15981604051611d5491906147fb565b60405180910390a150565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611e1461200c565b73ffffffffffffffffffffffffffffffffffffffff16611e32611a12565b73ffffffffffffffffffffffffffffffffffffffff1614611e88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7f90614913565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611eeb61200c565b73ffffffffffffffffffffffffffffffffffffffff16611f09611a12565b73ffffffffffffffffffffffffffffffffffffffff1614611f5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5690614913565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611fcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc690614893565b60405180910390fd5b611fd881612590565b50565b600181565b60008183611fee9190614b76565b905092915050565b600081836120049190614b45565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612084576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207b90614993565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120eb906148b3565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121d291906149d3565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561224f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224690614973565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b690614853565b60405180910390fd5b60008111612302576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f990614933565b60405180910390fd5b600061230d30611849565b9050600060165482101590508080156123335750601560149054906101000a900460ff16155b801561238d5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156123a3575060158054906101000a900460ff165b156123b75760165491506123b682612654565b5b600060019050600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061245e5750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561246857600090505b6124748686868461272a565b505050505050565b60008383111582906124c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124bb9190614831565b60405180910390fd5b5082840390509392505050565b60008060006124de612a3b565b915091506124f58183611ff690919063ffffffff16565b9250505090565b6000818361250a9190614aef565b905092915050565b600080600080600080600080600080600061252c8c612d86565b9350935093509350600080600061254d8f8787876125486124d1565b612e05565b925092509250828282898989899d509d509d509d509d509d509d5050505050505050919395979092949650565b600081836125889190614bd0565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001601560146101000a81548160ff0219169083151502179055506000612685600283611ff690919063ffffffff16565b9050600061269c828461257a90919063ffffffff16565b905060004790506126ac83612eb9565b60006126c1824761257a90919063ffffffff16565b90506126cd838261317d565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161270093929190614a48565b60405180910390a1505050506000601560146101000a81548160ff02191690831515021790555050565b8061273857612737613271565b5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127db5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156127f0576127eb8484846132d3565b612a27565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128935750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156128a8576128a3848484613541565b612a26565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561294c5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156129615761295c8484846137af565b612a25565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a035750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612a1857612a13848484613988565b612a24565b612a238484846137af565b5b5b5b5b80612a3557612a34613c8b565b5b50505050565b600080600060085490506000600754905060005b600680549050811015612d4957826001600060068481548110612a9b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612baf5750816002600060068481548110612b47577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612bc65760085460075494509450505050612d82565b612c7c6001600060068481548110612c07577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461257a90919063ffffffff16565b9250612d346002600060068481548110612cbf577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361257a90919063ffffffff16565b91508080612d4190614cf4565b915050612a4f565b50612d61600754600854611ff690919063ffffffff16565b821015612d7957600854600754935093505050612d82565b81819350935050505b9091565b6000806000806000612d9786613ca8565b90506000612da487613cda565b90506000612db188613d0c565b90506000612dec82612dde85612dd0888e61257a90919063ffffffff16565b61257a90919063ffffffff16565b61257a90919063ffffffff16565b9050808484849750975097509750505050509193509193565b600080600080612e1e858a611fe090919063ffffffff16565b90506000612e35868a611fe090919063ffffffff16565b90506000612e4c878a611fe090919063ffffffff16565b90506000612e63888a611fe090919063ffffffff16565b90506000612e9e82612e9085612e82888a61257a90919063ffffffff16565b61257a90919063ffffffff16565b61257a90919063ffffffff16565b90508481859750975097505050505050955095509592505050565b6000600267ffffffffffffffff811115612efc577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612f2a5781602001602082028036833780820191505090505b5090503081600081518110612f68577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561300a57600080fd5b505afa15801561301e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061304291906142f6565b8160018151811061307c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506130e330601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612014565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016131479594939291906149ee565b600060405180830381600087803b15801561316157600080fd5b505af1158015613175573d6000803e3d6000fd5b505050505050565b6131aa30601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612014565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806131f6611a12565b426040518863ffffffff1660e01b81526004016132189695949392919061479a565b6060604051808303818588803b15801561323157600080fd5b505af1158015613245573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061326a9190614474565b5050505050565b6000600d5414801561328557506000600f54145b801561329357506000601154145b1561329d576132d1565b600d54600e81905550600f546010819055506011546012819055506000600d819055506000600f8190555060006011819055505b565b60008060008060008060006132e788612512565b965096509650965096509650965061334788600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257a90919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506133dc87600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257a90919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061347186600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124fc90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134bd82613d9e565b6134c681613f43565b6134d0858461422a565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161352d91906149d3565b60405180910390a350505050505050505050565b600080600080600080600061355588612512565b96509650965096509650965096506135b587600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257a90919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061364a84600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124fc90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136df86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124fc90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061372b82613d9e565b61373481613f43565b61373e858461422a565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161379b91906149d3565b60405180910390a350505050505050505050565b60008060008060008060006137c388612512565b965096509650965096509650965061382387600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257a90919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506138b886600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124fc90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061390482613d9e565b61390d81613f43565b613917858461422a565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161397491906149d3565b60405180910390a350505050505050505050565b600080600080600080600061399c88612512565b96509650965096509650965096506139fc88600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257a90919063ffffffff16565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a9187600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257a90919063ffffffff16565b600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b2684600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124fc90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613bbb86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124fc90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c0782613d9e565b613c1081613f43565b613c1a858461422a565b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051613c7791906149d3565b60405180910390a350505050505050505050565b600e54600d81905550601054600f81905550601254601181905550565b6000613cd3612710613cc5600d5485611fe090919063ffffffff16565b611ff690919063ffffffff16565b9050919050565b6000613d05612710613cf7600f5485611fe090919063ffffffff16565b611ff690919063ffffffff16565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff16601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613d6d5760009050613d99565b613d96612710613d8860115485611fe090919063ffffffff16565b611ff690919063ffffffff16565b90505b919050565b6000613da86124d1565b90506000613dbf8284611fe090919063ffffffff16565b9050613e1381600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124fc90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613f3e57613efa83600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124fc90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b6000811115614227576000613f566124d1565b90506000613f6d8284611fe090919063ffffffff16565b9050613fe38160016000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124fc90919063ffffffff16565b60016000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060056000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614196576141308360026000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124fc90919063ffffffff16565b60026000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166141d761200c565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161421c91906149d3565b60405180910390a350505b50565b61423f8260085461257a90919063ffffffff16565b60088190555061425a816009546124fc90919063ffffffff16565b6009819055505050565b600081359050614273816150f7565b92915050565b600081519050614288816150f7565b92915050565b60008135905061429d8161510e565b92915050565b6000813590506142b281615125565b92915050565b6000815190506142c781615125565b92915050565b6000602082840312156142df57600080fd5b60006142ed84828501614264565b91505092915050565b60006020828403121561430857600080fd5b600061431684828501614279565b91505092915050565b6000806040838503121561433257600080fd5b600061434085828601614264565b925050602061435185828601614264565b9150509250929050565b60008060006060848603121561437057600080fd5b600061437e86828701614264565b935050602061438f86828701614264565b92505060406143a0868287016142a3565b9150509250925092565b600080604083850312156143bd57600080fd5b60006143cb85828601614264565b92505060206143dc858286016142a3565b9150509250929050565b6000602082840312156143f857600080fd5b60006144068482850161428e565b91505092915050565b60006020828403121561442157600080fd5b600061442f848285016142a3565b91505092915050565b6000806040838503121561444b57600080fd5b6000614459858286016142a3565b925050602061446a8582860161428e565b9150509250929050565b60008060006060848603121561448957600080fd5b6000614497868287016142b8565b93505060206144a8868287016142b8565b92505060406144b9868287016142b8565b9150509250925092565b60006144cf83836144db565b60208301905092915050565b6144e481614c04565b82525050565b6144f381614c04565b82525050565b600061450482614aaa565b61450e8185614acd565b935061451983614a9a565b8060005b8381101561454a57815161453188826144c3565b975061453c83614ac0565b92505060018101905061451d565b5085935050505092915050565b61456081614c16565b82525050565b61456f81614c59565b82525050565b61457e81614c7d565b82525050565b600061458f82614ab5565b6145998185614ade565b93506145a9818560208601614c8f565b6145b281614dca565b840191505092915050565b60006145ca602383614ade565b91506145d582614ddb565b604082019050919050565b60006145ed602a83614ade565b91506145f882614e2a565b604082019050919050565b6000614610602683614ade565b915061461b82614e79565b604082019050919050565b6000614633602283614ade565b915061463e82614ec8565b604082019050919050565b6000614656601b83614ade565b915061466182614f17565b602082019050919050565b6000614679601f83614ade565b915061468482614f40565b602082019050919050565b600061469c602083614ade565b91506146a782614f69565b602082019050919050565b60006146bf602983614ade565b91506146ca82614f92565b604082019050919050565b60006146e2600b83614ade565b91506146ed82614fe1565b602082019050919050565b6000614705602583614ade565b91506147108261500a565b604082019050919050565b6000614728602483614ade565b915061473382615059565b604082019050919050565b600061474b602c83614ade565b9150614756826150a8565b604082019050919050565b61476a81614c42565b82525050565b61477981614c4c565b82525050565b600060208201905061479460008301846144ea565b92915050565b600060c0820190506147af60008301896144ea565b6147bc6020830188614761565b6147c96040830187614575565b6147d66060830186614575565b6147e360808301856144ea565b6147f060a0830184614761565b979650505050505050565b60006020820190506148106000830184614557565b92915050565b600060208201905061482b6000830184614566565b92915050565b6000602082019050818103600083015261484b8184614584565b905092915050565b6000602082019050818103600083015261486c816145bd565b9050919050565b6000602082019050818103600083015261488c816145e0565b9050919050565b600060208201905081810360008301526148ac81614603565b9050919050565b600060208201905081810360008301526148cc81614626565b9050919050565b600060208201905081810360008301526148ec81614649565b9050919050565b6000602082019050818103600083015261490c8161466c565b9050919050565b6000602082019050818103600083015261492c8161468f565b9050919050565b6000602082019050818103600083015261494c816146b2565b9050919050565b6000602082019050818103600083015261496c816146d5565b9050919050565b6000602082019050818103600083015261498c816146f8565b9050919050565b600060208201905081810360008301526149ac8161471b565b9050919050565b600060208201905081810360008301526149cc8161473e565b9050919050565b60006020820190506149e86000830184614761565b92915050565b600060a082019050614a036000830188614761565b614a106020830187614575565b8181036040830152614a2281866144f9565b9050614a3160608301856144ea565b614a3e6080830184614761565b9695505050505050565b6000606082019050614a5d6000830186614761565b614a6a6020830185614761565b614a776040830184614761565b949350505050565b6000602082019050614a946000830184614770565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000614afa82614c42565b9150614b0583614c42565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614b3a57614b39614d3d565b5b828201905092915050565b6000614b5082614c42565b9150614b5b83614c42565b925082614b6b57614b6a614d6c565b5b828204905092915050565b6000614b8182614c42565b9150614b8c83614c42565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614bc557614bc4614d3d565b5b828202905092915050565b6000614bdb82614c42565b9150614be683614c42565b925082821015614bf957614bf8614d3d565b5b828203905092915050565b6000614c0f82614c22565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614c6482614c6b565b9050919050565b6000614c7682614c22565b9050919050565b6000614c8882614c42565b9050919050565b60005b83811015614cad578082015181840152602081019050614c92565b83811115614cbc576000848401525b50505050565b60006002820490506001821680614cda57607f821691505b60208210811415614cee57614ced614d9b565b5b50919050565b6000614cff82614c42565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614d3257614d31614d3d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f496e76616c696420627073000000000000000000000000000000000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b61510081614c04565b811461510b57600080fd5b50565b61511781614c16565b811461512257600080fd5b50565b61512e81614c42565b811461513957600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212202058e8b09a2f18733b3bb5fe6773f3b3cf181a0fccbd27e9fa960c36f7fa102b64736f6c63430008040033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000019d971e4fe8401e740000000000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000008b96427b35a9baec0b80e65e5d75a341dede72c6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c80000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000001354686520416d65726963616e7320546f6b656e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000042454417300000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : name_ (string): The Americans Token
Arg [1] : symbol_ (string): $TAs
Arg [2] : totalSupply_ (uint256): 500000000000000000000000000
Arg [3] : router_ (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [4] : marketingAddress_ (address): 0x8B96427B35a9Baec0B80e65e5d75a341dEDE72c6
Arg [5] : taxFeeBps_ (uint16): 0
Arg [6] : liquidityFeeBps_ (uint16): 200
Arg [7] : marketingFeeBps_ (uint16): 800
-----Encoded View---------------
12 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [2] : 0000000000000000000000000000000000000000019d971e4fe8401e74000000
Arg [3] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [4] : 0000000000000000000000008b96427b35a9baec0b80e65e5d75a341dede72c6
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [6] : 00000000000000000000000000000000000000000000000000000000000000c8
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000320
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000013
Arg [9] : 54686520416d65726963616e7320546f6b656e00000000000000000000000000
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [11] : 2454417300000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
15018:21973:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36848:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24603:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18874:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19859:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21358:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16019:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19151:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15922:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20060:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22373:322;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19060:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23043:477;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25001:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20514:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15746:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21453:421;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24366:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21882:483;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16067:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16171:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22703:332;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30471:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15825:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19254:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1588:94;;;;;;;;;;;;;:::i;:::-;;21230:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1369:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24784:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18965:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20822:400;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19460:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25203:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16102:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19667:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24485:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1688:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15149:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36848:138;1513:12;:10;:12::i;:::-;1502:23;;:7;:5;:7::i;:::-;:23;;;1494:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36958:20:::1;36938:17;;:40;;;;;;;;;;;;;;;;;;36848:138:::0;:::o;24603:173::-;1513:12;:10;:12::i;:::-;1502:23;;:7;:5;:7::i;:::-;:23;;;1494:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24699:1:::1;24686:9;:14;;:36;;;;;24717:5;24704:9;:18;;24686:36;24678:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;24759:9;24749:7;:19;;;;24603:173:::0;:::o;18874:83::-;18911:13;18944:5;18937:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18874:83;:::o;19859:193::-;19961:4;19983:39;19992:12;:10;:12::i;:::-;20006:7;20015:6;19983:8;:39::i;:::-;20040:4;20033:11;;19859:193;;;;:::o;21358:87::-;21400:7;21427:10;;21420:17;;21358:87;:::o;16019:41::-;;;;;;;;;;;;;:::o;19151:95::-;19204:7;19231;;19224:14;;19151:95;:::o;15922:28::-;;;;:::o;20060:446::-;20192:4;20209:36;20219:6;20227:9;20238:6;20209:9;:36::i;:::-;20256:220;20279:6;20300:12;:10;:12::i;:::-;20327:138;20383:6;20327:138;;;;;;;;;;;;;;;;;:11;:19;20339:6;20327:19;;;;;;;;;;;;;;;:33;20347:12;:10;:12::i;:::-;20327:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;20256:8;:220::i;:::-;20494:4;20487:11;;20060:446;;;;;:::o;22373:322::-;22467:7;22525;;22514;:18;;22492:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;22613:19;22635:10;:8;:10::i;:::-;22613:32;;22663:24;22675:11;22663:7;:11;;:24;;;;:::i;:::-;22656:31;;;22373:322;;;:::o;19060:83::-;19101:5;19126:9;;;;;;;;;;;19119:16;;19060:83;:::o;23043:477::-;1513:12;:10;:12::i;:::-;1502:23;;:7;:5;:7::i;:::-;:23;;;1494:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23123:11:::1;:20;23135:7;23123:20;;;;;;;;;;;;;;;;;;;;;;;;;23115:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;23191:9;23186:327;23210:9;:16;;;;23206:1;:20;23186:327;;;23268:7;23252:23;;:9;23262:1;23252:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;23248:254;;;23311:9;23340:1;23321:9;:16;;;;:20;;;;:::i;:::-;23311:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23296:9;23306:1;23296:12;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;23380:1;23361:7;:16;23369:7;23361:16;;;;;;;;;;;;;;;:20;;;;23423:5;23400:11;:20;23412:7;23400:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;23447:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23481:5;;23248:254;23228:3;;;;;:::i;:::-;;;;23186:327;;;;23043:477:::0;:::o;25001:194::-;1513:12;:10;:12::i;:::-;1502:23;;:7;:5;:7::i;:::-;:23;;;1494:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25106:1:::1;25090:12;:17;;:42;;;;;25127:5;25111:12;:21;;25090:42;25082:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;25175:12;25159:13;:28;;;;25001:194:::0;:::o;20514:300::-;20629:4;20651:133;20674:12;:10;:12::i;:::-;20701:7;20723:50;20762:10;20723:11;:25;20735:12;:10;:12::i;:::-;20723:25;;;;;;;;;;;;;;;:34;20749:7;20723:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;20651:8;:133::i;:::-;20802:4;20795:11;;20514:300;;;;:::o;15746:22::-;;;;:::o;21453:421::-;21505:14;21522:12;:10;:12::i;:::-;21505:29;;21568:11;:19;21580:6;21568:19;;;;;;;;;;;;;;;;;;;;;;;;;21567:20;21545:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;21671:15;21702:19;21713:7;21702:10;:19::i;:::-;21670:51;;;;;;;;21750:28;21770:7;21750;:15;21758:6;21750:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;21732:7;:15;21740:6;21732:15;;;;;;;;;;;;;;;:46;;;;21799:20;21811:7;21799;;:11;;:20;;;;:::i;:::-;21789:7;:30;;;;21843:23;21858:7;21843:10;;:14;;:23;;;;:::i;:::-;21830:10;:36;;;;21453:421;;;:::o;24366:111::-;1513:12;:10;:12::i;:::-;1502:23;;:7;:5;:7::i;:::-;:23;;;1494:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24465:4:::1;24435:18;:27;24454:7;24435:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;24366:111:::0;:::o;21882:483::-;22000:7;22044;;22033;:18;;22025:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;22103:17;22098:260;;22138:15;22169:19;22180:7;22169:10;:19::i;:::-;22137:51;;;;;;;;22210:7;22203:14;;;;;22098:260;22253:23;22290:19;22301:7;22290:10;:19::i;:::-;22250:59;;;;;;;;22331:15;22324:22;;;21882:483;;;;;:::o;16067:28::-;;;;;;;;;;;;;:::o;16171:33::-;;;;;;;;;;;;:::o;22703:332::-;1513:12;:10;:12::i;:::-;1502:23;;:7;:5;:7::i;:::-;:23;;;1494:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22784:11:::1;:20;22796:7;22784:20;;;;;;;;;;;;;;;;;;;;;;;;;22783:21;22775:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;22870:1;22851:7;:16;22859:7;22851:16;;;;;;;;;;;;;;;;:20;22847:109;;;22907:37;22927:7;:16;22935:7;22927:16;;;;;;;;;;;;;;;;22907:19;:37::i;:::-;22888:7;:16;22896:7;22888:16;;;;;;;;;;;;;;;:56;;;;22847:109;22989:4;22966:11;:20;22978:7;22966:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;23004:9;23019:7;23004:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22703:332:::0;:::o;30471:124::-;30536:4;30560:18;:27;30579:7;30560:27;;;;;;;;;;;;;;;;;;;;;;;;;30553:34;;30471:124;;;:::o;15825:28::-;;;;:::o;19254:198::-;19320:7;19344:11;:20;19356:7;19344:20;;;;;;;;;;;;;;;;;;;;;;;;;19340:49;;;19373:7;:16;19381:7;19373:16;;;;;;;;;;;;;;;;19366:23;;;;19340:49;19407:37;19427:7;:16;19435:7;19427:16;;;;;;;;;;;;;;;;19407:19;:37::i;:::-;19400:44;;19254:198;;;;:::o;1588:94::-;1513:12;:10;:12::i;:::-;1502:23;;:7;:5;:7::i;:::-;:23;;;1494:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1653:21:::1;1671:1;1653:9;:21::i;:::-;1588:94::o:0;21230:120::-;21298:4;21322:11;:20;21334:7;21322:20;;;;;;;;;;;;;;;;;;;;;;;;;21315:27;;21230:120;;;:::o;1369:87::-;1415:7;1442:6;;;;;;;;;;;1435:13;;1369:87;:::o;24784:209::-;1513:12;:10;:12::i;:::-;1502:23;;:7;:5;:7::i;:::-;:23;;;1494:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24898:1:::1;24879:15;:20;;:48;;;;;24922:5;24903:15;:24;;24879:48;24871:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;24970:15;24954:13;:31;;;;24784:209:::0;:::o;18965:87::-;19004:13;19037:7;19030:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18965:87;:::o;20822:400::-;20942:4;20964:228;20987:12;:10;:12::i;:::-;21014:7;21036:145;21093:15;21036:145;;;;;;;;;;;;;;;;;:11;:25;21048:12;:10;:12::i;:::-;21036:25;;;;;;;;;;;;;;;:34;21062:7;21036:34;;;;;;;;;;;;;;;;:38;;:145;;;;;:::i;:::-;20964:8;:228::i;:::-;21210:4;21203:11;;20822:400;;;;:::o;19460:199::-;19565:4;19587:42;19597:12;:10;:12::i;:::-;19611:9;19622:6;19587:9;:42::i;:::-;19647:4;19640:11;;19460:199;;;;:::o;25203:171::-;1513:12;:10;:12::i;:::-;1502:23;;:7;:5;:7::i;:::-;:23;;;1494:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25304:8:::1;25280:21;::::0;:32:::1;;;;;;;;;;;;;;;;;;25328:38;25357:8;25328:38;;;;;;:::i;:::-;;;;;;;;25203:171:::0;:::o;16102:32::-;;;;;;;;;;;;;:::o;19667:184::-;19784:7;19816:11;:18;19828:5;19816:18;;;;;;;;;;;;;;;:27;19835:7;19816:27;;;;;;;;;;;;;;;;19809:34;;19667:184;;;;:::o;24485:110::-;1513:12;:10;:12::i;:::-;1502:23;;:7;:5;:7::i;:::-;:23;;;1494:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24582:5:::1;24552:18;:27;24571:7;24552:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;24485:110:::0;:::o;1688:192::-;1513:12;:10;:12::i;:::-;1502:23;;:7;:5;:7::i;:::-;:23;;;1494:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1797:1:::1;1777:22;;:8;:22;;;;1769:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1853:19;1863:8;1853:9;:19::i;:::-;1688:192:::0;:::o;15149:35::-;15183:1;15149:35;:::o;3540:98::-;3598:7;3629:1;3625;:5;;;;:::i;:::-;3618:12;;3540:98;;;;:::o;3644:::-;3702:7;3733:1;3729;:5;;;;:::i;:::-;3722:12;;3644:98;;;;:::o;926:::-;979:7;1006:10;999:17;;926:98;:::o;30603:371::-;30747:1;30730:19;;:5;:19;;;;30722:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30828:1;30809:21;;:7;:21;;;;30801:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30912:6;30882:11;:18;30894:5;30882:18;;;;;;;;;;;;;;;:27;30901:7;30882:27;;;;;;;;;;;;;;;:36;;;;30950:7;30934:32;;30943:5;30934:32;;;30959:6;30934:32;;;;;;:::i;:::-;;;;;;;;30603:371;;;:::o;30982:1138::-;31120:1;31104:18;;:4;:18;;;;31096:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31197:1;31183:16;;:2;:16;;;;31175:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;31267:1;31258:6;:10;31250:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;31462:28;31493:24;31511:4;31493:9;:24::i;:::-;31462:55;;31530:24;31594:29;;31557:20;:66;;31530:93;;31652:19;:53;;;;;31689:16;;;;;;;;;;;31688:17;31652:53;:91;;;;;31730:13;;;;;;;;;;;31722:21;;:4;:21;;;;31652:91;:129;;;;;31760:21;;;;;;;;;;31652:129;31634:289;;;31831:29;;31808:52;;31875:36;31890:20;31875:14;:36::i;:::-;31634:289;31933:12;31948:4;31933:19;;31967:18;:24;31986:4;31967:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;31995:18;:22;32014:2;31995:22;;;;;;;;;;;;;;;;;;;;;;;;;31967:50;31963:98;;;32044:5;32034:15;;31963:98;32071:41;32086:4;32092:2;32096:6;32104:7;32071:14;:41::i;:::-;30982:1138;;;;;;:::o;3852:240::-;3972:7;4030:1;4025;:6;;4033:12;4017:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4072:1;4068;:5;4061:12;;3852:240;;;;;:::o;27682:164::-;27724:7;27745:15;27762;27781:19;:17;:19::i;:::-;27744:56;;;;27818:20;27830:7;27818;:11;;:20;;;;:::i;:::-;27811:27;;;;27682:164;:::o;3332:98::-;3390:7;3421:1;3417;:5;;;;:::i;:::-;3410:12;;3332:98;;;;:::o;25572:847::-;25672:7;25694;25716;25738;25760;25782;25804;25854:23;25892:12;25919:18;25952;25984:20;25996:7;25984:11;:20::i;:::-;25839:165;;;;;;;;26016:15;26033:23;26058:12;26074:138;26100:7;26122:4;26141:10;26166;26191;:8;:10::i;:::-;26074:11;:138::i;:::-;26015:197;;;;;;26245:7;26267:15;26297:4;26316:15;26346:4;26365:10;26390;26223:188;;;;;;;;;;;;;;;;;;;;;25572:847;;;;;;;;;:::o;3436:98::-;3494:7;3525:1;3521;:5;;;;:::i;:::-;3514:12;;3436:98;;;;:::o;1888:173::-;1944:16;1963:6;;;;;;;;;;;1944:25;;1989:8;1980:6;;:17;;;;;;;;;;;;;;;;;;2044:8;2013:40;;2034:8;2013:40;;;;;;;;;;;;1888:173;;:::o;32128:665::-;16580:4;16561:16;;:23;;;;;;;;;;;;;;;;;;32213:12:::1;32228:27;32253:1;32228:20;:24;;:27;;;;:::i;:::-;32213:42;;32266:17;32286:30;32311:4;32286:20;:24;;:30;;;;:::i;:::-;32266:50;;32456:22;32481:21;32456:46;;32513:22;32530:4;32513:16;:22::i;:::-;32616:18;32637:41;32663:14;32637:21;:25;;:41;;;;:::i;:::-;32616:62;;32689:35;32702:9;32713:10;32689:12;:35::i;:::-;32742:43;32757:4;32763:10;32775:9;32742:43;;;;;;;;:::i;:::-;;;;;;;;16595:1;;;;16626:5:::0;16607:16;;:24;;;;;;;;;;;;;;;;;;32128:665;:::o;33730:838::-;33886:7;33881:28;;33895:14;:12;:14::i;:::-;33881:28;33926:11;:19;33938:6;33926:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;33950:11;:22;33962:9;33950:22;;;;;;;;;;;;;;;;;;;;;;;;;33949:23;33926:46;33922:597;;;33989:48;34011:6;34019:9;34030:6;33989:21;:48::i;:::-;33922:597;;;34060:11;:19;34072:6;34060:19;;;;;;;;;;;;;;;;;;;;;;;;;34059:20;:46;;;;;34083:11;:22;34095:9;34083:22;;;;;;;;;;;;;;;;;;;;;;;;;34059:46;34055:464;;;34122:46;34142:6;34150:9;34161:6;34122:19;:46::i;:::-;34055:464;;;34191:11;:19;34203:6;34191:19;;;;;;;;;;;;;;;;;;;;;;;;;34190:20;:47;;;;;34215:11;:22;34227:9;34215:22;;;;;;;;;;;;;;;;;;;;;;;;;34214:23;34190:47;34186:333;;;34254:44;34272:6;34280:9;34291:6;34254:17;:44::i;:::-;34186:333;;;34320:11;:19;34332:6;34320:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;34343:11;:22;34355:9;34343:22;;;;;;;;;;;;;;;;;;;;;;;;;34320:45;34316:203;;;34382:48;34404:6;34412:9;34423:6;34382:21;:48::i;:::-;34316:203;;;34463:44;34481:6;34489:9;34500:6;34463:17;:44::i;:::-;34316:203;34186:333;34055:464;33922:597;34536:7;34531:29;;34545:15;:13;:15::i;:::-;34531:29;33730:838;;;;:::o;27854:605::-;27905:7;27914;27934:15;27952:7;;27934:25;;27970:15;27988:7;;27970:25;;28011:9;28006:338;28030:9;:16;;;;28026:1;:20;28006:338;;;28114:7;28090;:21;28098:9;28108:1;28098:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28090:21;;;;;;;;;;;;;;;;:31;:83;;;;28166:7;28142;:21;28150:9;28160:1;28150:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28142:21;;;;;;;;;;;;;;;;:31;28090:83;28068:146;;;28197:7;;28206;;28189:25;;;;;;;;;28068:146;28239:34;28251:7;:21;28259:9;28269:1;28259:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28251:21;;;;;;;;;;;;;;;;28239:7;:11;;:34;;;;:::i;:::-;28229:44;;28298:34;28310:7;:21;28318:9;28328:1;28318:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28310:21;;;;;;;;;;;;;;;;28298:7;:11;;:34;;;;:::i;:::-;28288:44;;28048:3;;;;;:::i;:::-;;;;28006:338;;;;28368:20;28380:7;;28368;;:11;;:20;;;;:::i;:::-;28358:7;:30;28354:61;;;28398:7;;28407;;28390:25;;;;;;;;28354:61;28434:7;28443;28426:25;;;;;;27854:605;;;:::o;26427:557::-;26528:7;26550;26572;26594;26629:12;26644:24;26660:7;26644:15;:24::i;:::-;26629:39;;26679:18;26700:30;26722:7;26700:21;:30::i;:::-;26679:51;;26741:21;26765:30;26787:7;26765:21;:30::i;:::-;26741:54;;26806:23;26832:76;26884:13;26832:33;26854:10;26832:17;26844:4;26832:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;:37;;:76;;;;:::i;:::-;26806:102;;26927:15;26944:4;26950:10;26962:13;26919:57;;;;;;;;;;;;26427:557;;;;;:::o;26992:682::-;27220:7;27242;27264;27299:15;27317:24;27329:11;27317:7;:11;;:24;;;;:::i;:::-;27299:42;;27352:12;27367:21;27376:11;27367:4;:8;;:21;;;;:::i;:::-;27352:36;;27399:18;27420:27;27435:11;27420:10;:14;;:27;;;;:::i;:::-;27399:48;;27458:18;27479:27;27494:11;27479:10;:14;;:27;;;;:::i;:::-;27458:48;;27517:23;27543:73;27595:10;27543:33;27565:10;27543:17;27555:4;27543:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;:37;;:73;;;;:::i;:::-;27517:99;;27635:7;27644:15;27661:4;27627:39;;;;;;;;;;;26992:682;;;;;;;;;:::o;32801:501::-;32867:21;32905:1;32891:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32867:40;;32936:4;32918;32923:1;32918:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;32962:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32952:4;32957:1;32952:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;32997:62;33014:4;33029:15;;;;;;;;;;;33047:11;32997:8;:62::i;:::-;33070:15;;;;;;;;;;;:66;;;33151:11;33177:1;33221:4;33248;33268:15;33070:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32801:501;;:::o;33310:414::-;33391:62;33408:4;33423:15;;;;;;;;;;;33441:11;33391:8;:62::i;:::-;33464:15;;;;;;;;;;;:31;;;33503:9;33536:4;33556:11;33582:1;33625;33668:7;:5;:7::i;:::-;33690:15;33464:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;33310:414;;:::o;29949:333::-;30007:1;29996:7;;:12;:34;;;;;30029:1;30012:13;;:18;29996:34;:56;;;;;30051:1;30034:13;;:18;29996:56;29992:69;;;30054:7;;29992:69;30091:7;;30073:15;:25;;;;30133:13;;30109:21;:37;;;;30181:13;;30157:21;:37;;;;30217:1;30207:7;:11;;;;30245:1;30229:13;:17;;;;30273:1;30257:13;:17;;;;29949:333;:::o;36061:759::-;36212:15;36242:23;36280:12;36307:23;36345:12;36372:18;36405;36437:19;36448:7;36437:10;:19::i;:::-;36197:259;;;;;;;;;;;;;;36485:28;36505:7;36485;:15;36493:6;36485:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;36467:7;:15;36475:6;36467:15;;;;;;;;;;;;;;;:46;;;;36542:28;36562:7;36542;:15;36550:6;36542:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;36524:7;:15;36532:6;36524:15;;;;;;;;;;;;;;;:46;;;;36602:39;36625:15;36602:7;:18;36610:9;36602:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;36581:7;:18;36589:9;36581:18;;;;;;;;;;;;;;;:60;;;;36652:26;36667:10;36652:14;:26::i;:::-;36689:29;36707:10;36689:17;:29::i;:::-;36729:23;36741:4;36747;36729:11;:23::i;:::-;36785:9;36768:44;;36777:6;36768:44;;;36796:15;36768:44;;;;;;:::i;:::-;;;;;;;;36061:759;;;;;;;;;;:::o;35282:771::-;35431:15;35461:23;35499:12;35526:23;35564:12;35591:18;35624;35656:19;35667:7;35656:10;:19::i;:::-;35416:259;;;;;;;;;;;;;;35704:28;35724:7;35704;:15;35712:6;35704:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;35686:7;:15;35694:6;35686:15;;;;;;;;;;;;;;;:46;;;;35764:39;35787:15;35764:7;:18;35772:9;35764:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;35743:7;:18;35751:9;35743:18;;;;;;;;;;;;;;;:60;;;;35835:39;35858:15;35835:7;:18;35843:9;35835:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;35814:7;:18;35822:9;35814:18;;;;;;;;;;;;;;;:60;;;;35885:26;35900:10;35885:14;:26::i;:::-;35922:29;35940:10;35922:17;:29::i;:::-;35962:23;35974:4;35980;35962:11;:23::i;:::-;36018:9;36001:44;;36010:6;36001:44;;;36029:15;36001:44;;;;;;:::i;:::-;;;;;;;;35282:771;;;;;;;;;;:::o;34576:698::-;34723:15;34753:23;34791:12;34818:23;34856:12;34883:18;34916;34948:19;34959:7;34948:10;:19::i;:::-;34708:259;;;;;;;;;;;;;;34996:28;35016:7;34996;:15;35004:6;34996:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;34978:7;:15;34986:6;34978:15;;;;;;;;;;;;;;;:46;;;;35056:39;35079:15;35056:7;:18;35064:9;35056:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;35035:7;:18;35043:9;35035:18;;;;;;;;;;;;;;;:60;;;;35106:26;35121:10;35106:14;:26::i;:::-;35143:29;35161:10;35143:17;:29::i;:::-;35183:23;35195:4;35201;35183:11;:23::i;:::-;35239:9;35222:44;;35231:6;35222:44;;;35250:15;35222:44;;;;;;:::i;:::-;;;;;;;;34576:698;;;;;;;;;;:::o;23528:830::-;23679:15;23709:23;23747:12;23774:23;23812:12;23839:18;23872;23904:19;23915:7;23904:10;:19::i;:::-;23664:259;;;;;;;;;;;;;;23952:28;23972:7;23952;:15;23960:6;23952:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;23934:7;:15;23942:6;23934:15;;;;;;;;;;;;;;;:46;;;;24009:28;24029:7;24009;:15;24017:6;24009:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;23991:7;:15;23999:6;23991:15;;;;;;;;;;;;;;;:46;;;;24069:39;24092:15;24069:7;:18;24077:9;24069:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;24048:7;:18;24056:9;24048:18;;;;;;;;;;;;;;;:60;;;;24140:39;24163:15;24140:7;:18;24148:9;24140:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;24119:7;:18;24127:9;24119:18;;;;;;;;;;;;;;;:60;;;;24190:26;24205:10;24190:14;:26::i;:::-;24227:29;24245:10;24227:17;:29::i;:::-;24267:23;24279:4;24285;24267:11;:23::i;:::-;24323:9;24306:44;;24315:6;24306:44;;;24334:15;24306:44;;;;;;:::i;:::-;;;;;;;;23528:830;;;;;;;;;;:::o;30290:173::-;30344:15;;30334:7;:25;;;;30386:21;;30370:13;:37;;;;30434:21;;30418:13;:37;;;;30290:173::o;29391:130::-;29455:7;29482:31;29507:5;29482:20;29494:7;;29482;:11;;:20;;;;:::i;:::-;:24;;:31;;;;:::i;:::-;29475:38;;29391:130;;;:::o;29529:174::-;29626:7;29658:37;29689:5;29658:26;29670:13;;29658:7;:11;;:26;;;;:::i;:::-;:30;;:37;;;;:::i;:::-;29651:44;;29529:174;;;:::o;29711:230::-;29808:7;29866:1;29837:31;;:17;;;;;;;;;;;:31;;;29833:45;;;29877:1;29870:8;;;;29833:45;29896:37;29927:5;29896:26;29908:13;;29896:7;:11;;:26;;;;:::i;:::-;:30;;:37;;;;:::i;:::-;29889:44;;29711:230;;;;:::o;28467:355::-;28530:19;28552:10;:8;:10::i;:::-;28530:32;;28573:18;28594:27;28609:11;28594:10;:14;;:27;;;;:::i;:::-;28573:48;;28657:38;28684:10;28657:7;:22;28673:4;28657:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;28632:7;:22;28648:4;28632:22;;;;;;;;;;;;;;;:63;;;;28710:11;:26;28730:4;28710:26;;;;;;;;;;;;;;;;;;;;;;;;;28706:108;;;28776:38;28803:10;28776:7;:22;28792:4;28776:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;28751:7;:22;28767:4;28751:22;;;;;;;;;;;;;;;:63;;;;28706:108;28467:355;;;:::o;28830:553::-;28913:1;28900:10;:14;28896:480;;;28931:19;28953:10;:8;:10::i;:::-;28931:32;;28978:18;28999:27;29014:11;28999:10;:14;;:27;;;;:::i;:::-;28978:48;;29070:42;29101:10;29070:7;:26;29078:17;;;;;;;;;;;29070:26;;;;;;;;;;;;;;;;:30;;:42;;;;:::i;:::-;29041:7;:26;29049:17;;;;;;;;;;;29041:26;;;;;;;;;;;;;;;:71;;;;29131:11;:30;29143:17;;;;;;;;;;;29131:30;;;;;;;;;;;;;;;;;;;;;;;;;29127:164;;;29209:82;29262:10;29209:7;:26;29217:17;;;;;;;;;;;29209:26;;;;;;;;;;;;;;;;:30;;:82;;;;:::i;:::-;29180:7;:26;29188:17;;;;;;;;;;;29180:26;;;;;;;;;;;;;;;:111;;;;29127:164;29334:17;;;;;;;;;;;29311:53;;29320:12;:10;:12::i;:::-;29311:53;;;29353:10;29311:53;;;;;;:::i;:::-;;;;;;;;28896:480;;;28830:553;:::o;25417:147::-;25495:17;25507:4;25495:7;;:11;;:17;;;;:::i;:::-;25485:7;:27;;;;25536:20;25551:4;25536:10;;:14;;:20;;;;:::i;:::-;25523:10;:33;;;;25417:147;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;350:84;;;;:::o;440:139::-;486:5;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;492:87;;;;:::o;585:143::-;642:5;673:6;667:13;658:22;;689:33;716:5;689:33;:::i;:::-;648:80;;;;:::o;734:262::-;793:6;842:2;830:9;821:7;817:23;813:32;810:2;;;858:1;855;848:12;810:2;901:1;926:53;971:7;962:6;951:9;947:22;926:53;:::i;:::-;916:63;;872:117;800:196;;;;:::o;1002:284::-;1072:6;1121:2;1109:9;1100:7;1096:23;1092:32;1089:2;;;1137:1;1134;1127:12;1089:2;1180:1;1205:64;1261:7;1252:6;1241:9;1237:22;1205:64;:::i;:::-;1195:74;;1151:128;1079:207;;;;:::o;1292:407::-;1360:6;1368;1417:2;1405:9;1396:7;1392:23;1388:32;1385:2;;;1433:1;1430;1423:12;1385:2;1476:1;1501:53;1546:7;1537:6;1526:9;1522:22;1501:53;:::i;:::-;1491:63;;1447:117;1603:2;1629:53;1674:7;1665:6;1654:9;1650:22;1629:53;:::i;:::-;1619:63;;1574:118;1375:324;;;;;:::o;1705:552::-;1782:6;1790;1798;1847:2;1835:9;1826:7;1822:23;1818:32;1815:2;;;1863:1;1860;1853:12;1815:2;1906:1;1931:53;1976:7;1967:6;1956:9;1952:22;1931:53;:::i;:::-;1921:63;;1877:117;2033:2;2059:53;2104:7;2095:6;2084:9;2080:22;2059:53;:::i;:::-;2049:63;;2004:118;2161:2;2187:53;2232:7;2223:6;2212:9;2208:22;2187:53;:::i;:::-;2177:63;;2132:118;1805:452;;;;;:::o;2263:407::-;2331:6;2339;2388:2;2376:9;2367:7;2363:23;2359:32;2356:2;;;2404:1;2401;2394:12;2356:2;2447:1;2472:53;2517:7;2508:6;2497:9;2493:22;2472:53;:::i;:::-;2462:63;;2418:117;2574:2;2600:53;2645:7;2636:6;2625:9;2621:22;2600:53;:::i;:::-;2590:63;;2545:118;2346:324;;;;;:::o;2676:256::-;2732:6;2781:2;2769:9;2760:7;2756:23;2752:32;2749:2;;;2797:1;2794;2787:12;2749:2;2840:1;2865:50;2907:7;2898:6;2887:9;2883:22;2865:50;:::i;:::-;2855:60;;2811:114;2739:193;;;;:::o;2938:262::-;2997:6;3046:2;3034:9;3025:7;3021:23;3017:32;3014:2;;;3062:1;3059;3052:12;3014:2;3105:1;3130:53;3175:7;3166:6;3155:9;3151:22;3130:53;:::i;:::-;3120:63;;3076:117;3004:196;;;;:::o;3206:401::-;3271:6;3279;3328:2;3316:9;3307:7;3303:23;3299:32;3296:2;;;3344:1;3341;3334:12;3296:2;3387:1;3412:53;3457:7;3448:6;3437:9;3433:22;3412:53;:::i;:::-;3402:63;;3358:117;3514:2;3540:50;3582:7;3573:6;3562:9;3558:22;3540:50;:::i;:::-;3530:60;;3485:115;3286:321;;;;;:::o;3613:596::-;3701:6;3709;3717;3766:2;3754:9;3745:7;3741:23;3737:32;3734:2;;;3782:1;3779;3772:12;3734:2;3825:1;3850:64;3906:7;3897:6;3886:9;3882:22;3850:64;:::i;:::-;3840:74;;3796:128;3963:2;3989:64;4045:7;4036:6;4025:9;4021:22;3989:64;:::i;:::-;3979:74;;3934:129;4102:2;4128:64;4184:7;4175:6;4164:9;4160:22;4128:64;:::i;:::-;4118:74;;4073:129;3724:485;;;;;:::o;4215:179::-;4284:10;4305:46;4347:3;4339:6;4305:46;:::i;:::-;4383:4;4378:3;4374:14;4360:28;;4295:99;;;;:::o;4400:108::-;4477:24;4495:5;4477:24;:::i;:::-;4472:3;4465:37;4455:53;;:::o;4514:118::-;4601:24;4619:5;4601:24;:::i;:::-;4596:3;4589:37;4579:53;;:::o;4668:732::-;4787:3;4816:54;4864:5;4816:54;:::i;:::-;4886:86;4965:6;4960:3;4886:86;:::i;:::-;4879:93;;4996:56;5046:5;4996:56;:::i;:::-;5075:7;5106:1;5091:284;5116:6;5113:1;5110:13;5091:284;;;5192:6;5186:13;5219:63;5278:3;5263:13;5219:63;:::i;:::-;5212:70;;5305:60;5358:6;5305:60;:::i;:::-;5295:70;;5151:224;5138:1;5135;5131:9;5126:14;;5091:284;;;5095:14;5391:3;5384:10;;4792:608;;;;;;;:::o;5406:109::-;5487:21;5502:5;5487:21;:::i;:::-;5482:3;5475:34;5465:50;;:::o;5521:185::-;5635:64;5693:5;5635:64;:::i;:::-;5630:3;5623:77;5613:93;;:::o;5712:147::-;5807:45;5846:5;5807:45;:::i;:::-;5802:3;5795:58;5785:74;;:::o;5865:364::-;5953:3;5981:39;6014:5;5981:39;:::i;:::-;6036:71;6100:6;6095:3;6036:71;:::i;:::-;6029:78;;6116:52;6161:6;6156:3;6149:4;6142:5;6138:16;6116:52;:::i;:::-;6193:29;6215:6;6193:29;:::i;:::-;6188:3;6184:39;6177:46;;5957:272;;;;;:::o;6235:366::-;6377:3;6398:67;6462:2;6457:3;6398:67;:::i;:::-;6391:74;;6474:93;6563:3;6474:93;:::i;:::-;6592:2;6587:3;6583:12;6576:19;;6381:220;;;:::o;6607:366::-;6749:3;6770:67;6834:2;6829:3;6770:67;:::i;:::-;6763:74;;6846:93;6935:3;6846:93;:::i;:::-;6964:2;6959:3;6955:12;6948:19;;6753:220;;;:::o;6979:366::-;7121:3;7142:67;7206:2;7201:3;7142:67;:::i;:::-;7135:74;;7218:93;7307:3;7218:93;:::i;:::-;7336:2;7331:3;7327:12;7320:19;;7125:220;;;:::o;7351:366::-;7493:3;7514:67;7578:2;7573:3;7514:67;:::i;:::-;7507:74;;7590:93;7679:3;7590:93;:::i;:::-;7708:2;7703:3;7699:12;7692:19;;7497:220;;;:::o;7723:366::-;7865:3;7886:67;7950:2;7945:3;7886:67;:::i;:::-;7879:74;;7962:93;8051:3;7962:93;:::i;:::-;8080:2;8075:3;8071:12;8064:19;;7869:220;;;:::o;8095:366::-;8237:3;8258:67;8322:2;8317:3;8258:67;:::i;:::-;8251:74;;8334:93;8423:3;8334:93;:::i;:::-;8452:2;8447:3;8443:12;8436:19;;8241:220;;;:::o;8467:366::-;8609:3;8630:67;8694:2;8689:3;8630:67;:::i;:::-;8623:74;;8706:93;8795:3;8706:93;:::i;:::-;8824:2;8819:3;8815:12;8808:19;;8613:220;;;:::o;8839:366::-;8981:3;9002:67;9066:2;9061:3;9002:67;:::i;:::-;8995:74;;9078:93;9167:3;9078:93;:::i;:::-;9196:2;9191:3;9187:12;9180:19;;8985:220;;;:::o;9211:366::-;9353:3;9374:67;9438:2;9433:3;9374:67;:::i;:::-;9367:74;;9450:93;9539:3;9450:93;:::i;:::-;9568:2;9563:3;9559:12;9552:19;;9357:220;;;:::o;9583:366::-;9725:3;9746:67;9810:2;9805:3;9746:67;:::i;:::-;9739:74;;9822:93;9911:3;9822:93;:::i;:::-;9940:2;9935:3;9931:12;9924:19;;9729:220;;;:::o;9955:366::-;10097:3;10118:67;10182:2;10177:3;10118:67;:::i;:::-;10111:74;;10194:93;10283:3;10194:93;:::i;:::-;10312:2;10307:3;10303:12;10296:19;;10101:220;;;:::o;10327:366::-;10469:3;10490:67;10554:2;10549:3;10490:67;:::i;:::-;10483:74;;10566:93;10655:3;10566:93;:::i;:::-;10684:2;10679:3;10675:12;10668:19;;10473:220;;;:::o;10699:118::-;10786:24;10804:5;10786:24;:::i;:::-;10781:3;10774:37;10764:53;;:::o;10823:112::-;10906:22;10922:5;10906:22;:::i;:::-;10901:3;10894:35;10884:51;;:::o;10941:222::-;11034:4;11072:2;11061:9;11057:18;11049:26;;11085:71;11153:1;11142:9;11138:17;11129:6;11085:71;:::i;:::-;11039:124;;;;:::o;11169:807::-;11418:4;11456:3;11445:9;11441:19;11433:27;;11470:71;11538:1;11527:9;11523:17;11514:6;11470:71;:::i;:::-;11551:72;11619:2;11608:9;11604:18;11595:6;11551:72;:::i;:::-;11633:80;11709:2;11698:9;11694:18;11685:6;11633:80;:::i;:::-;11723;11799:2;11788:9;11784:18;11775:6;11723:80;:::i;:::-;11813:73;11881:3;11870:9;11866:19;11857:6;11813:73;:::i;:::-;11896;11964:3;11953:9;11949:19;11940:6;11896:73;:::i;:::-;11423:553;;;;;;;;;:::o;11982:210::-;12069:4;12107:2;12096:9;12092:18;12084:26;;12120:65;12182:1;12171:9;12167:17;12158:6;12120:65;:::i;:::-;12074:118;;;;:::o;12198:276::-;12318:4;12356:2;12345:9;12341:18;12333:26;;12369:98;12464:1;12453:9;12449:17;12440:6;12369:98;:::i;:::-;12323:151;;;;:::o;12480:313::-;12593:4;12631:2;12620:9;12616:18;12608:26;;12680:9;12674:4;12670:20;12666:1;12655:9;12651:17;12644:47;12708:78;12781:4;12772:6;12708:78;:::i;:::-;12700:86;;12598:195;;;;:::o;12799:419::-;12965:4;13003:2;12992:9;12988:18;12980:26;;13052:9;13046:4;13042:20;13038:1;13027:9;13023:17;13016:47;13080:131;13206:4;13080:131;:::i;:::-;13072:139;;12970:248;;;:::o;13224:419::-;13390:4;13428:2;13417:9;13413:18;13405:26;;13477:9;13471:4;13467:20;13463:1;13452:9;13448:17;13441:47;13505:131;13631:4;13505:131;:::i;:::-;13497:139;;13395:248;;;:::o;13649:419::-;13815:4;13853:2;13842:9;13838:18;13830:26;;13902:9;13896:4;13892:20;13888:1;13877:9;13873:17;13866:47;13930:131;14056:4;13930:131;:::i;:::-;13922:139;;13820:248;;;:::o;14074:419::-;14240:4;14278:2;14267:9;14263:18;14255:26;;14327:9;14321:4;14317:20;14313:1;14302:9;14298:17;14291:47;14355:131;14481:4;14355:131;:::i;:::-;14347:139;;14245:248;;;:::o;14499:419::-;14665:4;14703:2;14692:9;14688:18;14680:26;;14752:9;14746:4;14742:20;14738:1;14727:9;14723:17;14716:47;14780:131;14906:4;14780:131;:::i;:::-;14772:139;;14670:248;;;:::o;14924:419::-;15090:4;15128:2;15117:9;15113:18;15105:26;;15177:9;15171:4;15167:20;15163:1;15152:9;15148:17;15141:47;15205:131;15331:4;15205:131;:::i;:::-;15197:139;;15095:248;;;:::o;15349:419::-;15515:4;15553:2;15542:9;15538:18;15530:26;;15602:9;15596:4;15592:20;15588:1;15577:9;15573:17;15566:47;15630:131;15756:4;15630:131;:::i;:::-;15622:139;;15520:248;;;:::o;15774:419::-;15940:4;15978:2;15967:9;15963:18;15955:26;;16027:9;16021:4;16017:20;16013:1;16002:9;15998:17;15991:47;16055:131;16181:4;16055:131;:::i;:::-;16047:139;;15945:248;;;:::o;16199:419::-;16365:4;16403:2;16392:9;16388:18;16380:26;;16452:9;16446:4;16442:20;16438:1;16427:9;16423:17;16416:47;16480:131;16606:4;16480:131;:::i;:::-;16472:139;;16370:248;;;:::o;16624:419::-;16790:4;16828:2;16817:9;16813:18;16805:26;;16877:9;16871:4;16867:20;16863:1;16852:9;16848:17;16841:47;16905:131;17031:4;16905:131;:::i;:::-;16897:139;;16795:248;;;:::o;17049:419::-;17215:4;17253:2;17242:9;17238:18;17230:26;;17302:9;17296:4;17292:20;17288:1;17277:9;17273:17;17266:47;17330:131;17456:4;17330:131;:::i;:::-;17322:139;;17220:248;;;:::o;17474:419::-;17640:4;17678:2;17667:9;17663:18;17655:26;;17727:9;17721:4;17717:20;17713:1;17702:9;17698:17;17691:47;17755:131;17881:4;17755:131;:::i;:::-;17747:139;;17645:248;;;:::o;17899:222::-;17992:4;18030:2;18019:9;18015:18;18007:26;;18043:71;18111:1;18100:9;18096:17;18087:6;18043:71;:::i;:::-;17997:124;;;;:::o;18127:831::-;18390:4;18428:3;18417:9;18413:19;18405:27;;18442:71;18510:1;18499:9;18495:17;18486:6;18442:71;:::i;:::-;18523:80;18599:2;18588:9;18584:18;18575:6;18523:80;:::i;:::-;18650:9;18644:4;18640:20;18635:2;18624:9;18620:18;18613:48;18678:108;18781:4;18772:6;18678:108;:::i;:::-;18670:116;;18796:72;18864:2;18853:9;18849:18;18840:6;18796:72;:::i;:::-;18878:73;18946:3;18935:9;18931:19;18922:6;18878:73;:::i;:::-;18395:563;;;;;;;;:::o;18964:442::-;19113:4;19151:2;19140:9;19136:18;19128:26;;19164:71;19232:1;19221:9;19217:17;19208:6;19164:71;:::i;:::-;19245:72;19313:2;19302:9;19298:18;19289:6;19245:72;:::i;:::-;19327;19395:2;19384:9;19380:18;19371:6;19327:72;:::i;:::-;19118:288;;;;;;:::o;19412:214::-;19501:4;19539:2;19528:9;19524:18;19516:26;;19552:67;19616:1;19605:9;19601:17;19592:6;19552:67;:::i;:::-;19506:120;;;;:::o;19632:132::-;19699:4;19722:3;19714:11;;19752:4;19747:3;19743:14;19735:22;;19704:60;;;:::o;19770:114::-;19837:6;19871:5;19865:12;19855:22;;19844:40;;;:::o;19890:99::-;19942:6;19976:5;19970:12;19960:22;;19949:40;;;:::o;19995:113::-;20065:4;20097;20092:3;20088:14;20080:22;;20070:38;;;:::o;20114:184::-;20213:11;20247:6;20242:3;20235:19;20287:4;20282:3;20278:14;20263:29;;20225:73;;;;:::o;20304:169::-;20388:11;20422:6;20417:3;20410:19;20462:4;20457:3;20453:14;20438:29;;20400:73;;;;:::o;20479:305::-;20519:3;20538:20;20556:1;20538:20;:::i;:::-;20533:25;;20572:20;20590:1;20572:20;:::i;:::-;20567:25;;20726:1;20658:66;20654:74;20651:1;20648:81;20645:2;;;20732:18;;:::i;:::-;20645:2;20776:1;20773;20769:9;20762:16;;20523:261;;;;:::o;20790:185::-;20830:1;20847:20;20865:1;20847:20;:::i;:::-;20842:25;;20881:20;20899:1;20881:20;:::i;:::-;20876:25;;20920:1;20910:2;;20925:18;;:::i;:::-;20910:2;20967:1;20964;20960:9;20955:14;;20832:143;;;;:::o;20981:348::-;21021:7;21044:20;21062:1;21044:20;:::i;:::-;21039:25;;21078:20;21096:1;21078:20;:::i;:::-;21073:25;;21266:1;21198:66;21194:74;21191:1;21188:81;21183:1;21176:9;21169:17;21165:105;21162:2;;;21273:18;;:::i;:::-;21162:2;21321:1;21318;21314:9;21303:20;;21029:300;;;;:::o;21335:191::-;21375:4;21395:20;21413:1;21395:20;:::i;:::-;21390:25;;21429:20;21447:1;21429:20;:::i;:::-;21424:25;;21468:1;21465;21462:8;21459:2;;;21473:18;;:::i;:::-;21459:2;21518:1;21515;21511:9;21503:17;;21380:146;;;;:::o;21532:96::-;21569:7;21598:24;21616:5;21598:24;:::i;:::-;21587:35;;21577:51;;;:::o;21634:90::-;21668:7;21711:5;21704:13;21697:21;21686:32;;21676:48;;;:::o;21730:126::-;21767:7;21807:42;21800:5;21796:54;21785:65;;21775:81;;;:::o;21862:77::-;21899:7;21928:5;21917:16;;21907:32;;;:::o;21945:86::-;21980:7;22020:4;22013:5;22009:16;21998:27;;21988:43;;;:::o;22037:180::-;22114:9;22147:64;22205:5;22147:64;:::i;:::-;22134:77;;22124:93;;;:::o;22223:140::-;22300:9;22333:24;22351:5;22333:24;:::i;:::-;22320:37;;22310:53;;;:::o;22369:121::-;22427:9;22460:24;22478:5;22460:24;:::i;:::-;22447:37;;22437:53;;;:::o;22496:307::-;22564:1;22574:113;22588:6;22585:1;22582:13;22574:113;;;22673:1;22668:3;22664:11;22658:18;22654:1;22649:3;22645:11;22638:39;22610:2;22607:1;22603:10;22598:15;;22574:113;;;22705:6;22702:1;22699:13;22696:2;;;22785:1;22776:6;22771:3;22767:16;22760:27;22696:2;22545:258;;;;:::o;22809:320::-;22853:6;22890:1;22884:4;22880:12;22870:22;;22937:1;22931:4;22927:12;22958:18;22948:2;;23014:4;23006:6;23002:17;22992:27;;22948:2;23076;23068:6;23065:14;23045:18;23042:38;23039:2;;;23095:18;;:::i;:::-;23039:2;22860:269;;;;:::o;23135:233::-;23174:3;23197:24;23215:5;23197:24;:::i;:::-;23188:33;;23243:66;23236:5;23233:77;23230:2;;;23313:18;;:::i;:::-;23230:2;23360:1;23353:5;23349:13;23342:20;;23178:190;;;:::o;23374:180::-;23422:77;23419:1;23412:88;23519:4;23516:1;23509:15;23543:4;23540:1;23533:15;23560:180;23608:77;23605:1;23598:88;23705:4;23702:1;23695:15;23729:4;23726:1;23719:15;23746:180;23794:77;23791:1;23784:88;23891:4;23888:1;23881:15;23915:4;23912:1;23905:15;23932:102;23973:6;24024:2;24020:7;24015:2;24008:5;24004:14;24000:28;23990:38;;23980:54;;;:::o;24040:222::-;24180:34;24176:1;24168:6;24164:14;24157:58;24249:5;24244:2;24236:6;24232:15;24225:30;24146:116;:::o;24268:229::-;24408:34;24404:1;24396:6;24392:14;24385:58;24477:12;24472:2;24464:6;24460:15;24453:37;24374:123;:::o;24503:225::-;24643:34;24639:1;24631:6;24627:14;24620:58;24712:8;24707:2;24699:6;24695:15;24688:33;24609:119;:::o;24734:221::-;24874:34;24870:1;24862:6;24858:14;24851:58;24943:4;24938:2;24930:6;24926:15;24919:29;24840:115;:::o;24961:177::-;25101:29;25097:1;25089:6;25085:14;25078:53;25067:71;:::o;25144:181::-;25284:33;25280:1;25272:6;25268:14;25261:57;25250:75;:::o;25331:182::-;25471:34;25467:1;25459:6;25455:14;25448:58;25437:76;:::o;25519:228::-;25659:34;25655:1;25647:6;25643:14;25636:58;25728:11;25723:2;25715:6;25711:15;25704:36;25625:122;:::o;25753:161::-;25893:13;25889:1;25881:6;25877:14;25870:37;25859:55;:::o;25920:224::-;26060:34;26056:1;26048:6;26044:14;26037:58;26129:7;26124:2;26116:6;26112:15;26105:32;26026:118;:::o;26150:223::-;26290:34;26286:1;26278:6;26274:14;26267:58;26359:6;26354:2;26346:6;26342:15;26335:31;26256:117;:::o;26379:231::-;26519:34;26515:1;26507:6;26503:14;26496:58;26588:14;26583:2;26575:6;26571:15;26564:39;26485:125;:::o;26616:122::-;26689:24;26707:5;26689:24;:::i;:::-;26682:5;26679:35;26669:2;;26728:1;26725;26718:12;26669:2;26659:79;:::o;26744:116::-;26814:21;26829:5;26814:21;:::i;:::-;26807:5;26804:32;26794:2;;26850:1;26847;26840:12;26794:2;26784:76;:::o;26866:122::-;26939:24;26957:5;26939:24;:::i;:::-;26932:5;26929:35;26919:2;;26978:1;26975;26968:12;26919:2;26909:79;:::o
Swarm Source
ipfs://2058e8b09a2f18733b3bb5fe6773f3b3cf181a0fccbd27e9fa960c36f7fa102b
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.