Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 227 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 20608849 | 98 days ago | IN | 0 ETH | 0.00003737 | ||||
Transfer | 20608271 | 98 days ago | IN | 0 ETH | 0.00029473 | ||||
Approve | 12831351 | 1235 days ago | IN | 0 ETH | 0.00118019 | ||||
Approve | 12803469 | 1240 days ago | IN | 0 ETH | 0.00014582 | ||||
Approve | 12797585 | 1241 days ago | IN | 0 ETH | 0.00037318 | ||||
Approve | 12793678 | 1241 days ago | IN | 0 ETH | 0.00184726 | ||||
Approve | 12793036 | 1241 days ago | IN | 0 ETH | 0.00112888 | ||||
Approve | 12790673 | 1242 days ago | IN | 0 ETH | 0.00112888 | ||||
Approve | 12789650 | 1242 days ago | IN | 0 ETH | 0.0012315 | ||||
Approve | 12786795 | 1242 days ago | IN | 0 ETH | 0.0014111 | ||||
Approve | 12786514 | 1242 days ago | IN | 0 ETH | 0.00083966 | ||||
Approve | 12784281 | 1243 days ago | IN | 0 ETH | 0.00197554 | ||||
Approve | 12783207 | 1243 days ago | IN | 0 ETH | 0.00153938 | ||||
Approve | 12782384 | 1243 days ago | IN | 0 ETH | 0.00177798 | ||||
Approve | 12781714 | 1243 days ago | IN | 0 ETH | 0.00135279 | ||||
Approve | 12781153 | 1243 days ago | IN | 0 ETH | 0.00172597 | ||||
Approve | 12781012 | 1243 days ago | IN | 0 ETH | 0.00251899 | ||||
Approve | 12780975 | 1243 days ago | IN | 0 ETH | 0.00194988 | ||||
Approve | 12780832 | 1243 days ago | IN | 0 ETH | 0.00181927 | ||||
Approve | 12780724 | 1243 days ago | IN | 0 ETH | 0.00200119 | ||||
Approve | 12780493 | 1243 days ago | IN | 0 ETH | 0.00139944 | ||||
Approve | 12780232 | 1243 days ago | IN | 0 ETH | 0.00143675 | ||||
Approve | 12779992 | 1243 days ago | IN | 0 ETH | 0.00111955 | ||||
Transfer | 12779830 | 1244 days ago | IN | 0 ETH | 0.00626651 | ||||
Transfer | 12779822 | 1244 days ago | IN | 0 ETH | 0.00643773 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
20608851 | 98 days ago | 0.00651111 ETH | ||||
20608851 | 98 days ago | 0.00651111 ETH | ||||
20608271 | 98 days ago | 0.00644549 ETH | ||||
20608271 | 98 days ago | 0.00644549 ETH | ||||
12868207 | 1230 days ago | 0.00684432 ETH | ||||
12868207 | 1230 days ago | 0.00684432 ETH | ||||
12848881 | 1233 days ago | 0.00696474 ETH | ||||
12848881 | 1233 days ago | 0.00696474 ETH | ||||
12831355 | 1235 days ago | 0.00710474 ETH | ||||
12831355 | 1235 days ago | 0.00710474 ETH | ||||
12807628 | 1239 days ago | 0.0071429 ETH | ||||
12807628 | 1239 days ago | 0.0071429 ETH | ||||
12804518 | 1240 days ago | 0.00718494 ETH | ||||
12804518 | 1240 days ago | 0.00718494 ETH | ||||
12799970 | 1240 days ago | 0.00723674 ETH | ||||
12799970 | 1240 days ago | 0.00723674 ETH | ||||
12798207 | 1241 days ago | 0.00732922 ETH | ||||
12798207 | 1241 days ago | 0.00732922 ETH | ||||
12797952 | 1241 days ago | 0.00768363 ETH | ||||
12797952 | 1241 days ago | 0.00768363 ETH | ||||
12794181 | 1241 days ago | 0.00777569 ETH | ||||
12794181 | 1241 days ago | 0.00777569 ETH | ||||
12793972 | 1241 days ago | 0.00786973 ETH | ||||
12793972 | 1241 days ago | 0.00786973 ETH | ||||
12793045 | 1241 days ago | 0.00803779 ETH |
Loading...
Loading
Contract Name:
skinnydoge
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-07-05 */ /** */ /** */ pragma solidity ^0.6.12; // SPDX-License-Identifier: Unlicensed abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } library Address { function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } contract Ownable is Context { address private _owner; address private _previousOwner; uint256 private _lockTime; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } function getUnlockTime() public view returns (uint256) { return _lockTime; } function getTime() public view returns (uint256) { return now; } function lock(uint256 time) public virtual onlyOwner { _previousOwner = _owner; _owner = address(0); _lockTime = now + time; emit OwnershipTransferred(_owner, address(0)); } function unlock() public virtual { require(_previousOwner == msg.sender, "You don't have permission to unlock"); require(now > _lockTime , "Contract is locked until 7 days"); emit OwnershipTransferred(_owner, _previousOwner); _owner = _previousOwner; } } // pragma solidity >=0.5.0; interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } // pragma solidity >=0.5.0; interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } // pragma solidity >=0.6.2; interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } // pragma solidity >=0.6.2; interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract skinnydoge is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; address[] private _excluded; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 1000 * 10**9 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 private _tBurnTotal; uint256 private _tskinnydogeTotal; string private _name = "skinnydoge"; string private _symbol = "SkinnyDoge"; uint8 private _decimals = 9; uint256 public _taxFee = 2; uint256 private _previousTaxFee = _taxFee; uint256 public _burnFee = 0; uint256 private _previousBurnFee = _burnFee; uint256 public _liquidityFee = 5; uint256 private _previousLiquidityFee = _liquidityFee; uint256 public _skinnydogeFee = 10; uint256 private _previousskinnydogeFee = _skinnydogeFee; uint256 public _maxTxAmount = 1000 * 10**9 * 10**9; uint256 private numTokensSellToAddToLiquidity = 1 * 10**9 * 10**9; address payable public skinnydogeAddress = 0x47Eb47225D6F3D6f60a02382CB3b2AADA0f503A1; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; event RewardLiquidityProviders(uint256 tokenAmount); event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor () public { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; emit Transfer(address(0), _msgSender(), _tTotal); } 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 totalBurn() public view returns (uint256) { return _tBurnTotal; } 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(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.'); require(!_isExcluded[account], "Account is already excluded"); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeInReward(address account) external onlyOwner() { require(_isExcluded[account], "Account is already excluded"); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { 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"); if(from != owner() && to != owner()) require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); uint256 contractTokenBalance = balanceOf(address(this)); bool overMinimumTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity; if ( overMinimumTokenBalance && !inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled ) { contractTokenBalance = numTokensSellToAddToLiquidity; swapAndLiquify(contractTokenBalance); } bool takeFee = true; //if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){ takeFee = false; } _tokenTransfer(from,to,amount,takeFee); } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { swapTokensForEth(contractTokenBalance); _tskinnydogeTotal = _tskinnydogeTotal.add(address(this).balance); TransferCharityETH(skinnydogeAddress, address(this).balance); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), // The contract block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } function _tokenTransfer(address sender, address recipient, uint256 amount,bool takeFee) private { if(!takeFee) removeAllFee(); 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 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tLiquidity) = _getValues(tAmount); uint256 rBurn = tBurn.mul(currentRate); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, rBurn, tFee, tBurn); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded(address sender, address recipient, uint256 tAmount) private { uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tLiquidity) = _getValues(tAmount); uint256 rBurn = tBurn.mul(currentRate); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, rBurn, tFee, tBurn); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private { uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tLiquidity) = _getValues(tAmount); uint256 rBurn = tBurn.mul(currentRate); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, rBurn, tFee, tBurn); emit Transfer(sender, recipient, tTransferAmount); } function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private { uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tLiquidity) = _getValues(tAmount); uint256 rBurn = tBurn.mul(currentRate); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, rBurn, tFee, tBurn); emit Transfer(sender, recipient, tTransferAmount); } function _reflectFee(uint256 rFee, uint256 rBurn, uint256 tFee, uint256 tBurn) private { _rTotal = _rTotal.sub(rFee).sub(rBurn); _tFeeTotal = _tFeeTotal.add(tFee); _tBurnTotal = _tBurnTotal.add(tBurn); _tTotal = _tTotal.sub(tBurn); } function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tBurn, uint256 tLiquidity) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tBurn, tLiquidity, _getRate()); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tBurn, tLiquidity); } function _getTValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256) { uint256 tFee = calculateTaxFee(tAmount); uint256 tBurn = calculateBurnFee(tAmount); uint256 tLiquidity = calculateLiquidityFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee).sub(tBurn).sub(tLiquidity); return (tTransferAmount, tFee, tBurn, tLiquidity); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 tBurn, uint256 tLiquidity, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rBurn = tBurn.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rBurn).sub(rLiquidity); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _takeLiquidity(uint256 tLiquidity) private { uint256 currentRate = _getRate(); uint256 rLiquidity = tLiquidity.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity); if(_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity); } function calculateTaxFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_taxFee).div( 10**2 ); } function calculateBurnFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_burnFee).div( 10**2 ); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_skinnydogeFee).div( 10**2 ); } function removeAllFee() private { if(_taxFee == 0 && _burnFee == 0 && _skinnydogeFee == 0 && _liquidityFee == 0) return; _previousTaxFee = _taxFee; _previousBurnFee = _burnFee; _previousskinnydogeFee = _skinnydogeFee; _previousLiquidityFee = _liquidityFee; _taxFee = 0; _burnFee = 0; _skinnydogeFee = 0; _liquidityFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _burnFee = _previousBurnFee; _skinnydogeFee = _previousskinnydogeFee; _liquidityFee = _previousLiquidityFee; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function setTaxFeePercent(uint256 taxFee) external onlyOwner() { _taxFee = taxFee; } function setBurnFeePercent(uint256 burnFee) external onlyOwner() { _burnFee = burnFee; } function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner { _liquidityFee = liquidityFee; } function setskinnydogeFeePercent(uint256 skinnydogeFee) external onlyOwner() { _skinnydogeFee = skinnydogeFee; } function setMaxTxPercent(uint256 maxTxPercent, uint256 maxTxDecimals) external onlyOwner() { _maxTxAmount = _tTotal.mul(maxTxPercent).div( 10**(uint256(maxTxDecimals) + 2) ); } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function TransferCharityETH(address payable recipient, uint256 amount) private { recipient.transfer(amount); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"RewardLiquidityProviders","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_skinnydogeFee","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":[],"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":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"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":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"burnFee","type":"uint256"}],"name":"setBurnFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"},{"internalType":"uint256","name":"maxTxDecimals","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"skinnydogeFee","type":"uint256"}],"name":"setskinnydogeFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"skinnydogeAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","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":"totalBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c0604052683635c9adc5dea00000600955600954600019816200001f57fe5b0660001903600a556040518060400160405280600a81526020017f736b696e6e79646f676500000000000000000000000000000000000000000000815250600e90805190602001906200007492919062000666565b506040518060400160405280600a81526020017f536b696e6e79446f676500000000000000000000000000000000000000000000815250600f9080519060200190620000c292919062000666565b506009601060006101000a81548160ff021916908360ff160217905550600260115560115460125560006013556013546014556005601555601554601655600a601755601754601855683635c9adc5dea00000601955670de0b6b3a7640000601a557347eb47225d6f3d6f60a02382cb3b2aada0f503a1601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601b60156101000a81548160ff021916908315150217905550348015620001a157600080fd5b506000620001b46200063560201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600a5460036000620002696200063560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200030757600080fd5b505afa1580156200031c573d6000803e3d6000fd5b505050506040513d60208110156200033357600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003a757600080fd5b505afa158015620003bc573d6000803e3d6000fd5b505050506040513d6020811015620003d357600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1580156200044e57600080fd5b505af115801562000463573d6000803e3d6000fd5b505050506040513d60208110156200047a57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250506001600660006200050e6200063d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620005c76200063560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009546040518082815260200191505060405180910390a3506200070c565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620006a957805160ff1916838001178555620006da565b82800160010185558215620006da579182015b82811115620006d9578251825591602001919060010190620006bc565b5b509050620006e99190620006ed565b5090565b5b8082111562000708576000816000905550600101620006ee565b5090565b60805160601c60a05160601c6152416200074a60003980611afc528061333a5250806110a052806140295280614115528061413c52506152416000f3fe60806040526004361061026b5760003560e01c806359aeef7511610144578063a457c2d7116100b6578063cea269581161007a578063cea2695814610d3a578063d8dc680314610d75578063dd46706414610da0578063dd62ed3e14610ddb578063ea2f0b3714610e60578063f2fde38b14610eb157610272565b8063a457c2d714610bd9578063a69df4b514610c4a578063a9059cbb14610c61578063c0b0fda214610cd2578063c49b9a8014610cfd57610272565b8063715018a611610108578063715018a614610a245780637d1db4a514610a3b57806388f8202014610a665780638da5cb5b14610acd5780638ee88c5314610b0e57806395d89b4114610b4957610272565b806359aeef75146108ed578063602bc62b1461092857806364712539146109535780636bc87c3a1461099457806370a08231146109bf57610272565b80633b124fe7116101dd5780634549b039116101a15780634549b0391461074157806349bd5a5e1461079c5780634a74bb02146107dd57806352390c021461080a5780635342acb41461085b578063557ed1ba146108c257610272565b80633b124fe71461061a5780633bd5d173146106455780633c9f861d146106805780633f3cf56c146106ab578063437823ec146106f057610272565b806318160ddd1161022f57806318160ddd1461041f57806323b872dd1461044a5780632d838119146104db578063313ce5671461052a5780633685d4191461055857806339509351146105a957610272565b8063061c82d01461027757806306fdde03146102b2578063095ea7b31461034257806313114a9d146103b35780631694505e146103de57610272565b3661027257005b600080fd5b34801561028357600080fd5b506102b06004803603602081101561029a57600080fd5b8101908080359060200190929190505050610f02565b005b3480156102be57600080fd5b506102c7610fd4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103075780820151818401526020810190506102ec565b50505050905090810190601f1680156103345780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561034e57600080fd5b5061039b6004803603604081101561036557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611076565b60405180821515815260200191505060405180910390f35b3480156103bf57600080fd5b506103c8611094565b6040518082815260200191505060405180910390f35b3480156103ea57600080fd5b506103f361109e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561042b57600080fd5b506104346110c2565b6040518082815260200191505060405180910390f35b34801561045657600080fd5b506104c36004803603606081101561046d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110cc565b60405180821515815260200191505060405180910390f35b3480156104e757600080fd5b50610514600480360360208110156104fe57600080fd5b81019080803590602001909291905050506111a5565b6040518082815260200191505060405180910390f35b34801561053657600080fd5b5061053f611229565b604051808260ff16815260200191505060405180910390f35b34801561056457600080fd5b506105a76004803603602081101561057b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611240565b005b3480156105b557600080fd5b50610602600480360360408110156105cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115ca565b60405180821515815260200191505060405180910390f35b34801561062657600080fd5b5061062f61167d565b6040518082815260200191505060405180910390f35b34801561065157600080fd5b5061067e6004803603602081101561066857600080fd5b8101908080359060200190929190505050611683565b005b34801561068c57600080fd5b50610695611815565b6040518082815260200191505060405180910390f35b3480156106b757600080fd5b506106ee600480360360408110156106ce57600080fd5b81019080803590602001909291908035906020019092919050505061181f565b005b3480156106fc57600080fd5b5061073f6004803603602081101561071357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061191e565b005b34801561074d57600080fd5b506107866004803603604081101561076457600080fd5b8101908080359060200190929190803515159060200190929190505050611a41565b6040518082815260200191505060405180910390f35b3480156107a857600080fd5b506107b1611afa565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107e957600080fd5b506107f2611b1e565b60405180821515815260200191505060405180910390f35b34801561081657600080fd5b506108596004803603602081101561082d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b31565b005b34801561086757600080fd5b506108aa6004803603602081101561087e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e4b565b60405180821515815260200191505060405180910390f35b3480156108ce57600080fd5b506108d7611ea1565b6040518082815260200191505060405180910390f35b3480156108f957600080fd5b506109266004803603602081101561091057600080fd5b8101908080359060200190929190505050611ea9565b005b34801561093457600080fd5b5061093d611f7b565b6040518082815260200191505060405180910390f35b34801561095f57600080fd5b50610968611f85565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109a057600080fd5b506109a9611fab565b6040518082815260200191505060405180910390f35b3480156109cb57600080fd5b50610a0e600480360360208110156109e257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fb1565b6040518082815260200191505060405180910390f35b348015610a3057600080fd5b50610a3961209c565b005b348015610a4757600080fd5b50610a50612222565b6040518082815260200191505060405180910390f35b348015610a7257600080fd5b50610ab560048036036020811015610a8957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612228565b60405180821515815260200191505060405180910390f35b348015610ad957600080fd5b50610ae261227e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b1a57600080fd5b50610b4760048036036020811015610b3157600080fd5b81019080803590602001909291905050506122a7565b005b348015610b5557600080fd5b50610b5e612379565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b9e578082015181840152602081019050610b83565b50505050905090810190601f168015610bcb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610be557600080fd5b50610c3260048036036040811015610bfc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061241b565b60405180821515815260200191505060405180910390f35b348015610c5657600080fd5b50610c5f6124e8565b005b348015610c6d57600080fd5b50610cba60048036036040811015610c8457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612705565b60405180821515815260200191505060405180910390f35b348015610cde57600080fd5b50610ce7612723565b6040518082815260200191505060405180910390f35b348015610d0957600080fd5b50610d3860048036036020811015610d2057600080fd5b81019080803515159060200190929190505050612729565b005b348015610d4657600080fd5b50610d7360048036036020811015610d5d57600080fd5b8101908080359060200190929190505050612847565b005b348015610d8157600080fd5b50610d8a612919565b6040518082815260200191505060405180910390f35b348015610dac57600080fd5b50610dd960048036036020811015610dc357600080fd5b810190808035906020019092919050505061291f565b005b348015610de757600080fd5b50610e4a60048036036040811015610dfe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b10565b6040518082815260200191505060405180910390f35b348015610e6c57600080fd5b50610eaf60048036036020811015610e8357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b97565b005b348015610ebd57600080fd5b50610f0060048036036020811015610ed457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612cba565b005b610f0a612ec5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060118190555050565b6060600e8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561106c5780601f106110415761010080835404028352916020019161106c565b820191906000526020600020905b81548152906001019060200180831161104f57829003601f168201915b5050505050905090565b600061108a611083612ec5565b8484612ecd565b6001905092915050565b6000600b54905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600954905090565b60006110d98484846130c4565b61119a846110e5612ec5565b611195856040518060600160405280602881526020016150fe60289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061114b612ec5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461347a9092919063ffffffff16565b612ecd565b600190509392505050565b6000600a54821115611202576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615043602a913960400191505060405180910390fd5b600061120c61353a565b9050611221818461356590919063ffffffff16565b915050919050565b6000601060009054906101000a900460ff16905090565b611248612ec5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611308576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166113c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b6008805490508110156115c6578173ffffffffffffffffffffffffffffffffffffffff16600882815481106113fb57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156115b95760086001600880549050038154811061145757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008828154811061148f57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600880548061157f57fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556115c6565b80806001019150506113ca565b5050565b60006116736115d7612ec5565b8461166e85600560006115e8612ec5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135af90919063ffffffff16565b612ecd565b6001905092915050565b60115481565b600061168d612ec5565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611732576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615198602c913960400191505060405180910390fd5b600061173d83613637565b505050505050905061179781600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461369f90919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ef81600a5461369f90919063ffffffff16565b600a8190555061180a83600b546135af90919063ffffffff16565b600b81905550505050565b6000600c54905090565b611827612ec5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61191460028201600a0a611906846009546136e990919063ffffffff16565b61356590919063ffffffff16565b6019819055505050565b611926612ec5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600954831115611abb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b81611adc576000611acb84613637565b505050505050905080915050611af4565b6000611ae784613637565b5050505050915050809150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601b60159054906101000a900460ff1681565b611b39612ec5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bf9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611cb9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611d8d57611d49600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111a5565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600042905090565b611eb1612ec5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f71576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060178190555050565b6000600254905090565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561204c57600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050612097565b612094600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111a5565b90505b919050565b6120a4612ec5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612164576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60195481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6122af612ec5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461236f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060158190555050565b6060600f8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156124115780601f106123e657610100808354040283529160200191612411565b820191906000526020600020905b8154815290600101906020018083116123f457829003601f168201915b5050505050905090565b60006124de612428612ec5565b846124d9856040518060600160405280602581526020016151e76025913960056000612452612ec5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461347a9092919063ffffffff16565b612ecd565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461258e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806151c46023913960400191505060405180910390fd5b6002544211612605576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f6e7472616374206973206c6f636b656420756e74696c203720646179730081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000612719612712612ec5565b84846130c4565b6001905092915050565b60135481565b612731612ec5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601b60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405180821515815260200191505060405180910390a150565b61284f612ec5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461290f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060138190555050565b60175481565b612927612ec5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804201600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612b9f612ec5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c5f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b612cc2612ec5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d82576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612e08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061506d6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612f53576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806151746024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612fd9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806150936022913960400191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561314a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061514f6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156131d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806150206023913960400191505060405180910390fd5b60008111613229576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806151266029913960400191505060405180910390fd5b61323161227e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561329f575061326f61227e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15613300576019548111156132ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806150b56028913960400191505060405180910390fd5b5b600061330b30611fb1565b90506000601a5482101590508080156133315750601b60149054906101000a900460ff16155b801561338957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156133a15750601b60159054906101000a900460ff165b156133b557601a5491506133b48261376f565b5b600060019050600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061345c5750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561346657600090505b613472868686846137f8565b505050505050565b6000838311158290613527576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156134ec5780820151818401526020810190506134d1565b50505050905090810190601f1680156135195780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000613547613b09565b9150915061355e818361356590919063ffffffff16565b9250505090565b60006135a783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613d9a565b905092915050565b60008082840190508381101561362d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008060008060008060008060008060006136518c613e60565b935093509350935060008060006136728f87878761366d61353a565b613edf565b925092509250828282898989899d509d509d509d509d509d509d5050505050505050919395979092949650565b60006136e183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061347a565b905092915050565b6000808314156136fc5760009050613769565b600082840290508284828161370d57fe5b0414613764576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806150dd6021913960400191505060405180910390fd5b809150505b92915050565b6001601b60146101000a81548160ff02191690831515021790555061379381613f93565b6137a847600d546135af90919063ffffffff16565b600d819055506137da601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1647614241565b6000601b60146101000a81548160ff02191690831515021790555050565b806138065761380561428c565b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156138a95750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156138be576138b984848461430d565b613af5565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156139615750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561397657613971848484614599565b613af4565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613a1a5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613a2f57613a2a848484614825565b613af3565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613ad15750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613ae657613ae1848484614a1c565b613af2565b613af1848484614825565b5b5b5b5b80613b0357613b02614d3d565b5b50505050565b6000806000600a5490506000600954905060005b600880549050811015613d5d57826003600060088481548110613b3c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180613c235750816004600060088481548110613bbb57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15613c3a57600a5460095494509450505050613d96565b613cc36003600060088481548110613c4e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461369f90919063ffffffff16565b9250613d4e6004600060088481548110613cd957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361369f90919063ffffffff16565b91508080600101915050613b1d565b50613d75600954600a5461356590919063ffffffff16565b821015613d8d57600a54600954935093505050613d96565b81819350935050505b9091565b60008083118290613e46576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613e0b578082015181840152602081019050613df0565b50505050905090810190601f168015613e385780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581613e5257fe5b049050809150509392505050565b6000806000806000613e7186614d63565b90506000613e7e87614d94565b90506000613e8b88614dc5565b90506000613ec682613eb885613eaa888e61369f90919063ffffffff16565b61369f90919063ffffffff16565b61369f90919063ffffffff16565b9050808484849750975097509750505050509193509193565b600080600080613ef8858a6136e990919063ffffffff16565b90506000613f0f868a6136e990919063ffffffff16565b90506000613f26878a6136e990919063ffffffff16565b90506000613f3d888a6136e990919063ffffffff16565b90506000613f7882613f6a85613f5c888a61369f90919063ffffffff16565b61369f90919063ffffffff16565b61369f90919063ffffffff16565b90508481859750975097505050505050955095509592505050565b6060600267ffffffffffffffff81118015613fad57600080fd5b50604051908082528060200260200182016040528015613fdc5781602001602082028036833780820191505090505b5090503081600081518110613fed57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561408d57600080fd5b505afa1580156140a1573d6000803e3d6000fd5b505050506040513d60208110156140b757600080fd5b8101908080519060200190929190505050816001815181106140d557fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061413a307f000000000000000000000000000000000000000000000000000000000000000084612ecd565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156141fc5780820151818401526020810190506141e1565b505050509050019650505050505050600060405180830381600087803b15801561422557600080fd5b505af1158015614239573d6000803e3d6000fd5b505050505050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015614287573d6000803e3d6000fd5b505050565b60006011541480156142a057506000601354145b80156142ae57506000601754145b80156142bc57506000601554145b156142c65761430b565b60115460128190555060135460148190555060175460188190555060155460168190555060006011819055506000601381905550600060178190555060006015819055505b565b600061431761353a565b9050600080600080600080600061432d89613637565b9650965096509650965096509650600061435089846136e990919063ffffffff16565b90506143a48a600460008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461369f90919063ffffffff16565b600460008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061443988600360008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461369f90919063ffffffff16565b600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506144ce87600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135af90919063ffffffff16565b600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061451a82614df6565b61452686828686614f9b565b8a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3505050505050505050505050565b60006145a361353a565b905060008060008060008060006145b989613637565b965096509650965096509650965060006145dc89846136e990919063ffffffff16565b905061463088600360008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461369f90919063ffffffff16565b600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506146c585600460008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135af90919063ffffffff16565b600460008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061475a87600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135af90919063ffffffff16565b600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506147a682614df6565b6147b286828686614f9b565b8a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3505050505050505050505050565b600061482f61353a565b9050600080600080600080600061484589613637565b9650965096509650965096509650600061486889846136e990919063ffffffff16565b90506148bc88600360008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461369f90919063ffffffff16565b600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061495187600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135af90919063ffffffff16565b600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061499d82614df6565b6149a986828686614f9b565b8a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3505050505050505050505050565b6000614a2661353a565b90506000806000806000806000614a3c89613637565b96509650965096509650965096506000614a5f89846136e990919063ffffffff16565b9050614ab38a600460008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461369f90919063ffffffff16565b600460008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614b4888600360008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461369f90919063ffffffff16565b600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614bdd85600460008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135af90919063ffffffff16565b600460008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614c7287600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135af90919063ffffffff16565b600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614cbe82614df6565b614cca86828686614f9b565b8a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3505050505050505050505050565b601254601181905550601454601381905550601854601781905550601654601581905550565b6000614d8d6064614d7f601154856136e990919063ffffffff16565b61356590919063ffffffff16565b9050919050565b6000614dbe6064614db0601354856136e990919063ffffffff16565b61356590919063ffffffff16565b9050919050565b6000614def6064614de1601754856136e990919063ffffffff16565b61356590919063ffffffff16565b9050919050565b6000614e0061353a565b90506000614e1782846136e990919063ffffffff16565b9050614e6b81600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135af90919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614f9657614f5283600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135af90919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b614fc283614fb486600a5461369f90919063ffffffff16565b61369f90919063ffffffff16565b600a81905550614fdd82600b546135af90919063ffffffff16565b600b81905550614ff881600c546135af90919063ffffffff16565b600c819055506150138160095461369f90919063ffffffff16565b6009819055505050505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220871666d1df4ddd006114dca76146f3b9c048b602e785732699bbb22968f412bd64736f6c634300060c0033
Deployed Bytecode
0x60806040526004361061026b5760003560e01c806359aeef7511610144578063a457c2d7116100b6578063cea269581161007a578063cea2695814610d3a578063d8dc680314610d75578063dd46706414610da0578063dd62ed3e14610ddb578063ea2f0b3714610e60578063f2fde38b14610eb157610272565b8063a457c2d714610bd9578063a69df4b514610c4a578063a9059cbb14610c61578063c0b0fda214610cd2578063c49b9a8014610cfd57610272565b8063715018a611610108578063715018a614610a245780637d1db4a514610a3b57806388f8202014610a665780638da5cb5b14610acd5780638ee88c5314610b0e57806395d89b4114610b4957610272565b806359aeef75146108ed578063602bc62b1461092857806364712539146109535780636bc87c3a1461099457806370a08231146109bf57610272565b80633b124fe7116101dd5780634549b039116101a15780634549b0391461074157806349bd5a5e1461079c5780634a74bb02146107dd57806352390c021461080a5780635342acb41461085b578063557ed1ba146108c257610272565b80633b124fe71461061a5780633bd5d173146106455780633c9f861d146106805780633f3cf56c146106ab578063437823ec146106f057610272565b806318160ddd1161022f57806318160ddd1461041f57806323b872dd1461044a5780632d838119146104db578063313ce5671461052a5780633685d4191461055857806339509351146105a957610272565b8063061c82d01461027757806306fdde03146102b2578063095ea7b31461034257806313114a9d146103b35780631694505e146103de57610272565b3661027257005b600080fd5b34801561028357600080fd5b506102b06004803603602081101561029a57600080fd5b8101908080359060200190929190505050610f02565b005b3480156102be57600080fd5b506102c7610fd4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103075780820151818401526020810190506102ec565b50505050905090810190601f1680156103345780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561034e57600080fd5b5061039b6004803603604081101561036557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611076565b60405180821515815260200191505060405180910390f35b3480156103bf57600080fd5b506103c8611094565b6040518082815260200191505060405180910390f35b3480156103ea57600080fd5b506103f361109e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561042b57600080fd5b506104346110c2565b6040518082815260200191505060405180910390f35b34801561045657600080fd5b506104c36004803603606081101561046d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110cc565b60405180821515815260200191505060405180910390f35b3480156104e757600080fd5b50610514600480360360208110156104fe57600080fd5b81019080803590602001909291905050506111a5565b6040518082815260200191505060405180910390f35b34801561053657600080fd5b5061053f611229565b604051808260ff16815260200191505060405180910390f35b34801561056457600080fd5b506105a76004803603602081101561057b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611240565b005b3480156105b557600080fd5b50610602600480360360408110156105cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506115ca565b60405180821515815260200191505060405180910390f35b34801561062657600080fd5b5061062f61167d565b6040518082815260200191505060405180910390f35b34801561065157600080fd5b5061067e6004803603602081101561066857600080fd5b8101908080359060200190929190505050611683565b005b34801561068c57600080fd5b50610695611815565b6040518082815260200191505060405180910390f35b3480156106b757600080fd5b506106ee600480360360408110156106ce57600080fd5b81019080803590602001909291908035906020019092919050505061181f565b005b3480156106fc57600080fd5b5061073f6004803603602081101561071357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061191e565b005b34801561074d57600080fd5b506107866004803603604081101561076457600080fd5b8101908080359060200190929190803515159060200190929190505050611a41565b6040518082815260200191505060405180910390f35b3480156107a857600080fd5b506107b1611afa565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107e957600080fd5b506107f2611b1e565b60405180821515815260200191505060405180910390f35b34801561081657600080fd5b506108596004803603602081101561082d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b31565b005b34801561086757600080fd5b506108aa6004803603602081101561087e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e4b565b60405180821515815260200191505060405180910390f35b3480156108ce57600080fd5b506108d7611ea1565b6040518082815260200191505060405180910390f35b3480156108f957600080fd5b506109266004803603602081101561091057600080fd5b8101908080359060200190929190505050611ea9565b005b34801561093457600080fd5b5061093d611f7b565b6040518082815260200191505060405180910390f35b34801561095f57600080fd5b50610968611f85565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109a057600080fd5b506109a9611fab565b6040518082815260200191505060405180910390f35b3480156109cb57600080fd5b50610a0e600480360360208110156109e257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fb1565b6040518082815260200191505060405180910390f35b348015610a3057600080fd5b50610a3961209c565b005b348015610a4757600080fd5b50610a50612222565b6040518082815260200191505060405180910390f35b348015610a7257600080fd5b50610ab560048036036020811015610a8957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612228565b60405180821515815260200191505060405180910390f35b348015610ad957600080fd5b50610ae261227e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610b1a57600080fd5b50610b4760048036036020811015610b3157600080fd5b81019080803590602001909291905050506122a7565b005b348015610b5557600080fd5b50610b5e612379565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b9e578082015181840152602081019050610b83565b50505050905090810190601f168015610bcb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610be557600080fd5b50610c3260048036036040811015610bfc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061241b565b60405180821515815260200191505060405180910390f35b348015610c5657600080fd5b50610c5f6124e8565b005b348015610c6d57600080fd5b50610cba60048036036040811015610c8457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612705565b60405180821515815260200191505060405180910390f35b348015610cde57600080fd5b50610ce7612723565b6040518082815260200191505060405180910390f35b348015610d0957600080fd5b50610d3860048036036020811015610d2057600080fd5b81019080803515159060200190929190505050612729565b005b348015610d4657600080fd5b50610d7360048036036020811015610d5d57600080fd5b8101908080359060200190929190505050612847565b005b348015610d8157600080fd5b50610d8a612919565b6040518082815260200191505060405180910390f35b348015610dac57600080fd5b50610dd960048036036020811015610dc357600080fd5b810190808035906020019092919050505061291f565b005b348015610de757600080fd5b50610e4a60048036036040811015610dfe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b10565b6040518082815260200191505060405180910390f35b348015610e6c57600080fd5b50610eaf60048036036020811015610e8357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b97565b005b348015610ebd57600080fd5b50610f0060048036036020811015610ed457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612cba565b005b610f0a612ec5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060118190555050565b6060600e8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561106c5780601f106110415761010080835404028352916020019161106c565b820191906000526020600020905b81548152906001019060200180831161104f57829003601f168201915b5050505050905090565b600061108a611083612ec5565b8484612ecd565b6001905092915050565b6000600b54905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600954905090565b60006110d98484846130c4565b61119a846110e5612ec5565b611195856040518060600160405280602881526020016150fe60289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061114b612ec5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461347a9092919063ffffffff16565b612ecd565b600190509392505050565b6000600a54821115611202576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615043602a913960400191505060405180910390fd5b600061120c61353a565b9050611221818461356590919063ffffffff16565b915050919050565b6000601060009054906101000a900460ff16905090565b611248612ec5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611308576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166113c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b60005b6008805490508110156115c6578173ffffffffffffffffffffffffffffffffffffffff16600882815481106113fb57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156115b95760086001600880549050038154811061145757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008828154811061148f57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600880548061157f57fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556115c6565b80806001019150506113ca565b5050565b60006116736115d7612ec5565b8461166e85600560006115e8612ec5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135af90919063ffffffff16565b612ecd565b6001905092915050565b60115481565b600061168d612ec5565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611732576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615198602c913960400191505060405180910390fd5b600061173d83613637565b505050505050905061179781600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461369f90919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ef81600a5461369f90919063ffffffff16565b600a8190555061180a83600b546135af90919063ffffffff16565b600b81905550505050565b6000600c54905090565b611827612ec5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61191460028201600a0a611906846009546136e990919063ffffffff16565b61356590919063ffffffff16565b6019819055505050565b611926612ec5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600954831115611abb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b81611adc576000611acb84613637565b505050505050905080915050611af4565b6000611ae784613637565b5050505050915050809150505b92915050565b7f00000000000000000000000036a5ae6a6d9acae452d328d155b9d9e03cca560081565b601b60159054906101000a900460ff1681565b611b39612ec5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bf9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611cb9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611d8d57611d49600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111a5565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600042905090565b611eb1612ec5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f71576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060178190555050565b6000600254905090565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561204c57600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050612097565b612094600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111a5565b90505b919050565b6120a4612ec5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612164576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60195481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6122af612ec5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461236f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060158190555050565b6060600f8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156124115780601f106123e657610100808354040283529160200191612411565b820191906000526020600020905b8154815290600101906020018083116123f457829003601f168201915b5050505050905090565b60006124de612428612ec5565b846124d9856040518060600160405280602581526020016151e76025913960056000612452612ec5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461347a9092919063ffffffff16565b612ecd565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461258e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806151c46023913960400191505060405180910390fd5b6002544211612605576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f6e7472616374206973206c6f636b656420756e74696c203720646179730081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000612719612712612ec5565b84846130c4565b6001905092915050565b60135481565b612731612ec5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601b60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405180821515815260200191505060405180910390a150565b61284f612ec5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461290f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060138190555050565b60175481565b612927612ec5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804201600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612b9f612ec5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c5f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b612cc2612ec5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d82576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612e08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061506d6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612f53576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806151746024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612fd9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806150936022913960400191505060405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561314a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061514f6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156131d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806150206023913960400191505060405180910390fd5b60008111613229576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806151266029913960400191505060405180910390fd5b61323161227e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561329f575061326f61227e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15613300576019548111156132ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806150b56028913960400191505060405180910390fd5b5b600061330b30611fb1565b90506000601a5482101590508080156133315750601b60149054906101000a900460ff16155b801561338957507f00000000000000000000000036a5ae6a6d9acae452d328d155b9d9e03cca560073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156133a15750601b60159054906101000a900460ff165b156133b557601a5491506133b48261376f565b5b600060019050600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061345c5750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561346657600090505b613472868686846137f8565b505050505050565b6000838311158290613527576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156134ec5780820151818401526020810190506134d1565b50505050905090810190601f1680156135195780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000613547613b09565b9150915061355e818361356590919063ffffffff16565b9250505090565b60006135a783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613d9a565b905092915050565b60008082840190508381101561362d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008060008060008060008060008060006136518c613e60565b935093509350935060008060006136728f87878761366d61353a565b613edf565b925092509250828282898989899d509d509d509d509d509d509d5050505050505050919395979092949650565b60006136e183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061347a565b905092915050565b6000808314156136fc5760009050613769565b600082840290508284828161370d57fe5b0414613764576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806150dd6021913960400191505060405180910390fd5b809150505b92915050565b6001601b60146101000a81548160ff02191690831515021790555061379381613f93565b6137a847600d546135af90919063ffffffff16565b600d819055506137da601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1647614241565b6000601b60146101000a81548160ff02191690831515021790555050565b806138065761380561428c565b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156138a95750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156138be576138b984848461430d565b613af5565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156139615750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561397657613971848484614599565b613af4565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613a1a5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613a2f57613a2a848484614825565b613af3565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613ad15750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613ae657613ae1848484614a1c565b613af2565b613af1848484614825565b5b5b5b5b80613b0357613b02614d3d565b5b50505050565b6000806000600a5490506000600954905060005b600880549050811015613d5d57826003600060088481548110613b3c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180613c235750816004600060088481548110613bbb57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15613c3a57600a5460095494509450505050613d96565b613cc36003600060088481548110613c4e57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461369f90919063ffffffff16565b9250613d4e6004600060088481548110613cd957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361369f90919063ffffffff16565b91508080600101915050613b1d565b50613d75600954600a5461356590919063ffffffff16565b821015613d8d57600a54600954935093505050613d96565b81819350935050505b9091565b60008083118290613e46576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613e0b578082015181840152602081019050613df0565b50505050905090810190601f168015613e385780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581613e5257fe5b049050809150509392505050565b6000806000806000613e7186614d63565b90506000613e7e87614d94565b90506000613e8b88614dc5565b90506000613ec682613eb885613eaa888e61369f90919063ffffffff16565b61369f90919063ffffffff16565b61369f90919063ffffffff16565b9050808484849750975097509750505050509193509193565b600080600080613ef8858a6136e990919063ffffffff16565b90506000613f0f868a6136e990919063ffffffff16565b90506000613f26878a6136e990919063ffffffff16565b90506000613f3d888a6136e990919063ffffffff16565b90506000613f7882613f6a85613f5c888a61369f90919063ffffffff16565b61369f90919063ffffffff16565b61369f90919063ffffffff16565b90508481859750975097505050505050955095509592505050565b6060600267ffffffffffffffff81118015613fad57600080fd5b50604051908082528060200260200182016040528015613fdc5781602001602082028036833780820191505090505b5090503081600081518110613fed57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561408d57600080fd5b505afa1580156140a1573d6000803e3d6000fd5b505050506040513d60208110156140b757600080fd5b8101908080519060200190929190505050816001815181106140d557fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061413a307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612ecd565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156141fc5780820151818401526020810190506141e1565b505050509050019650505050505050600060405180830381600087803b15801561422557600080fd5b505af1158015614239573d6000803e3d6000fd5b505050505050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015614287573d6000803e3d6000fd5b505050565b60006011541480156142a057506000601354145b80156142ae57506000601754145b80156142bc57506000601554145b156142c65761430b565b60115460128190555060135460148190555060175460188190555060155460168190555060006011819055506000601381905550600060178190555060006015819055505b565b600061431761353a565b9050600080600080600080600061432d89613637565b9650965096509650965096509650600061435089846136e990919063ffffffff16565b90506143a48a600460008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461369f90919063ffffffff16565b600460008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061443988600360008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461369f90919063ffffffff16565b600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506144ce87600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135af90919063ffffffff16565b600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061451a82614df6565b61452686828686614f9b565b8a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3505050505050505050505050565b60006145a361353a565b905060008060008060008060006145b989613637565b965096509650965096509650965060006145dc89846136e990919063ffffffff16565b905061463088600360008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461369f90919063ffffffff16565b600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506146c585600460008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135af90919063ffffffff16565b600460008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061475a87600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135af90919063ffffffff16565b600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506147a682614df6565b6147b286828686614f9b565b8a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3505050505050505050505050565b600061482f61353a565b9050600080600080600080600061484589613637565b9650965096509650965096509650600061486889846136e990919063ffffffff16565b90506148bc88600360008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461369f90919063ffffffff16565b600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061495187600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135af90919063ffffffff16565b600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061499d82614df6565b6149a986828686614f9b565b8a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3505050505050505050505050565b6000614a2661353a565b90506000806000806000806000614a3c89613637565b96509650965096509650965096506000614a5f89846136e990919063ffffffff16565b9050614ab38a600460008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461369f90919063ffffffff16565b600460008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614b4888600360008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461369f90919063ffffffff16565b600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614bdd85600460008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135af90919063ffffffff16565b600460008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614c7287600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135af90919063ffffffff16565b600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614cbe82614df6565b614cca86828686614f9b565b8a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040518082815260200191505060405180910390a3505050505050505050505050565b601254601181905550601454601381905550601854601781905550601654601581905550565b6000614d8d6064614d7f601154856136e990919063ffffffff16565b61356590919063ffffffff16565b9050919050565b6000614dbe6064614db0601354856136e990919063ffffffff16565b61356590919063ffffffff16565b9050919050565b6000614def6064614de1601754856136e990919063ffffffff16565b61356590919063ffffffff16565b9050919050565b6000614e0061353a565b90506000614e1782846136e990919063ffffffff16565b9050614e6b81600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135af90919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614f9657614f5283600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135af90919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b614fc283614fb486600a5461369f90919063ffffffff16565b61369f90919063ffffffff16565b600a81905550614fdd82600b546135af90919063ffffffff16565b600b81905550614ff881600c546135af90919063ffffffff16565b600c819055506150138160095461369f90919063ffffffff16565b6009819055505050505056fe45524332303a207472616e7366657220746f20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220871666d1df4ddd006114dca76146f3b9c048b602e785732699bbb22968f412bd64736f6c634300060c0033
Deployed Bytecode Sourcemap
15143:19029:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33038:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17742:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18654:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;19775:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16618:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18019:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18823:313;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20809:253;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17928:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21525:479;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19144:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15988:26;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19973:378;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19874:88;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;33532:212;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;32793:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20363:438;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16676:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16755:40;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21070:447;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;32658:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;6567:78;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;33394:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6466:90;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16516:85;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16165:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18122:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6058:148;;;;;;;;;;;;;:::i;:::-;;16380:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19647:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;5844:79;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;33262:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17833:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19370:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;6879:293;;;;;;;;;;;;;:::i;:::-;;18328:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16075:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;33752:171;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;33148:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16271:34;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6653:214;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18503:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;32916:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6214:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;33038:98;5981:12;:10;:12::i;:::-;5971:22;;:6;;;;;;;;;;:22;;;5963:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33122:6:::1;33112:7;:16;;;;33038:98:::0;:::o;17742:83::-;17779:13;17812:5;17805:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17742:83;:::o;18654:161::-;18729:4;18746:39;18755:12;:10;:12::i;:::-;18769:7;18778:6;18746:8;:39::i;:::-;18803:4;18796:11;;18654:161;;;;:::o;19775:87::-;19817:7;19844:10;;19837:17;;19775:87;:::o;16618:51::-;;;:::o;18019:95::-;18072:7;18099;;18092:14;;18019:95;:::o;18823:313::-;18921:4;18938:36;18948:6;18956:9;18967:6;18938:9;:36::i;:::-;18985:121;18994:6;19002:12;:10;:12::i;:::-;19016:89;19054:6;19016:89;;;;;;;;;;;;;;;;;:11;:19;19028:6;19016:19;;;;;;;;;;;;;;;:33;19036:12;:10;:12::i;:::-;19016:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;18985:8;:121::i;:::-;19124:4;19117:11;;18823:313;;;;;:::o;20809:253::-;20875:7;20914;;20903;:18;;20895:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20979:19;21002:10;:8;:10::i;:::-;20979:33;;21030:24;21042:11;21030:7;:11;;:24;;;;:::i;:::-;21023:31;;;20809:253;;;:::o;17928:83::-;17969:5;17994:9;;;;;;;;;;;17987:16;;17928:83;:::o;21525:479::-;5981:12;:10;:12::i;:::-;5971:22;;:6;;;;;;;;;;:22;;;5963:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21607:11:::1;:20;21619:7;21607:20;;;;;;;;;;;;;;;;;;;;;;;;;21599:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;21675:9;21670:327;21694:9;:16;;;;21690:1;:20;21670:327;;;21752:7;21736:23;;:9;21746:1;21736:12;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;21732:254;;;21795:9;21824:1;21805:9;:16;;;;:20;21795:31;;;;;;;;;;;;;;;;;;;;;;;;;21780:9;21790:1;21780:12;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;21864:1;21845:7;:16;21853:7;21845:16;;;;;;;;;;;;;;;:20;;;;21907:5;21884:11;:20;21896:7;21884:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;21931:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21965:5;;21732:254;21712:3;;;;;;;21670:327;;;;21525:479:::0;:::o;19144:218::-;19232:4;19249:83;19258:12;:10;:12::i;:::-;19272:7;19281:50;19320:10;19281:11;:25;19293:12;:10;:12::i;:::-;19281:25;;;;;;;;;;;;;;;:34;19307:7;19281:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;19249:8;:83::i;:::-;19350:4;19343:11;;19144:218;;;;:::o;15988:26::-;;;;:::o;19973:378::-;20025:14;20042:12;:10;:12::i;:::-;20025:29;;20074:11;:19;20086:6;20074:19;;;;;;;;;;;;;;;;;;;;;;;;;20073:20;20065:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20154:15;20179:19;20190:7;20179:10;:19::i;:::-;20153:45;;;;;;;;20227:28;20247:7;20227;:15;20235:6;20227:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;20209:7;:15;20217:6;20209:15;;;;;;;;;;;;;;;:46;;;;20276:20;20288:7;20276;;:11;;:20;;;;:::i;:::-;20266:7;:30;;;;20320:23;20335:7;20320:10;;:14;;:23;;;;:::i;:::-;20307:10;:36;;;;19973:378;;;:::o;19874:88::-;19916:7;19943:11;;19936:18;;19874:88;:::o;33532:212::-;5981:12;:10;:12::i;:::-;5971:22;;:6;;;;;;;;;;:22;;;5963:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33649:87:::1;33723:1;33706:13;33698:26;33693:2;:32;33649:25;33661:12;33649:7;;:11;;:25;;;;:::i;:::-;:29;;:87;;;;:::i;:::-;33634:12;:102;;;;33532:212:::0;;:::o;32793:111::-;5981:12;:10;:12::i;:::-;5971:22;;:6;;;;;;;;;;:22;;;5963:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32892:4:::1;32862:18;:27;32881:7;32862:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;32793:111:::0;:::o;20363:438::-;20453:7;20492;;20481;:18;;20473:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20551:17;20546:248;;20586:15;20611:19;20622:7;20611:10;:19::i;:::-;20585:45;;;;;;;;20652:7;20645:14;;;;;20546:248;20694:23;20726:19;20737:7;20726:10;:19::i;:::-;20692:53;;;;;;;;20767:15;20760:22;;;20363:438;;;;;:::o;16676:38::-;;;:::o;16755:40::-;;;;;;;;;;;;;:::o;21070:447::-;5981:12;:10;:12::i;:::-;5971:22;;:6;;;;;;;;;;:22;;;5963:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21267:11:::1;:20;21279:7;21267:20;;;;;;;;;;;;;;;;;;;;;;;;;21266:21;21258:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;21352:1;21333:7;:16;21341:7;21333:16;;;;;;;;;;;;;;;;:20;21330:108;;;21389:37;21409:7;:16;21417:7;21409:16;;;;;;;;;;;;;;;;21389:19;:37::i;:::-;21370:7;:16;21378:7;21370:16;;;;;;;;;;;;;;;:56;;;;21330:108;21471:4;21448:11;:20;21460:7;21448:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;21486:9;21501:7;21486:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21070:447:::0;:::o;32658:123::-;32722:4;32746:18;:27;32765:7;32746:27;;;;;;;;;;;;;;;;;;;;;;;;;32739:34;;32658:123;;;:::o;6567:78::-;6607:7;6634:3;6627:10;;6567:78;:::o;33394:126::-;5981:12;:10;:12::i;:::-;5971:22;;:6;;;;;;;;;;:22;;;5963:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33499:13:::1;33482:14;:30;;;;33394:126:::0;:::o;6466:90::-;6512:7;6539:9;;6532:16;;6466:90;:::o;16516:85::-;;;;;;;;;;;;;:::o;16165:32::-;;;;:::o;18122:198::-;18188:7;18212:11;:20;18224:7;18212:20;;;;;;;;;;;;;;;;;;;;;;;;;18208:49;;;18241:7;:16;18249:7;18241:16;;;;;;;;;;;;;;;;18234:23;;;;18208:49;18275:37;18295:7;:16;18303:7;18295:16;;;;;;;;;;;;;;;;18275:19;:37::i;:::-;18268:44;;18122:198;;;;:::o;6058:148::-;5981:12;:10;:12::i;:::-;5971:22;;:6;;;;;;;;;;:22;;;5963:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6165:1:::1;6128:40;;6149:6;::::0;::::1;;;;;;;;6128:40;;;;;;;;;;;;6196:1;6179:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6058:148::o:0;16380:50::-;;;;:::o;19647:120::-;19715:4;19739:11;:20;19751:7;19739:20;;;;;;;;;;;;;;;;;;;;;;;;;19732:27;;19647:120;;;:::o;5844:79::-;5882:7;5909:6;;;;;;;;;;;5902:13;;5844:79;:::o;33262:120::-;5981:12;:10;:12::i;:::-;5971:22;;:6;;;;;;;;;;:22;;;5963:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33362:12:::1;33346:13;:28;;;;33262:120:::0;:::o;17833:87::-;17872:13;17905:7;17898:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17833:87;:::o;19370:269::-;19463:4;19480:129;19489:12;:10;:12::i;:::-;19503:7;19512:96;19551:15;19512:96;;;;;;;;;;;;;;;;;:11;:25;19524:12;:10;:12::i;:::-;19512:25;;;;;;;;;;;;;;;:34;19538:7;19512:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;19480:8;:129::i;:::-;19627:4;19620:11;;19370:269;;;;:::o;6879:293::-;6949:10;6931:28;;:14;;;;;;;;;;;:28;;;6923:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7024:9;;7018:3;:15;7010:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7115:14;;;;;;;;;;;7086:44;;7107:6;;;;;;;;;;7086:44;;;;;;;;;;;;7150:14;;;;;;;;;;;7141:6;;:23;;;;;;;;;;;;;;;;;;6879:293::o;18328:167::-;18406:4;18423:42;18433:12;:10;:12::i;:::-;18447:9;18458:6;18423:9;:42::i;:::-;18483:4;18476:11;;18328:167;;;;:::o;16075:27::-;;;;:::o;33752:171::-;5981:12;:10;:12::i;:::-;5971:22;;:6;;;;;;;;;;:22;;;5963:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33853:8:::1;33829:21;;:32;;;;;;;;;;;;;;;;;;33877:38;33906:8;33877:38;;;;;;;;;;;;;;;;;;;;33752:171:::0;:::o;33148:102::-;5981:12;:10;:12::i;:::-;5971:22;;:6;;;;;;;;;;:22;;;5963:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33235:7:::1;33224:8;:18;;;;33148:102:::0;:::o;16271:34::-;;;;:::o;6653:214::-;5981:12;:10;:12::i;:::-;5971:22;;:6;;;;;;;;;;:22;;;5963:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6734:6:::1;::::0;::::1;;;;;;;;6717:14;;:23;;;;;;;;;;;;;;;;;;6768:1;6751:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6799:4;6793:3;:10;6781:9;:22;;;;6856:1;6819:40;;6840:6;::::0;::::1;;;;;;;;6819:40;;;;;;;;;;;;6653:214:::0;:::o;18503:143::-;18584:7;18611:11;:18;18623:5;18611:18;;;;;;;;;;;;;;;:27;18630:7;18611:27;;;;;;;;;;;;;;;;18604:34;;18503:143;;;;:::o;32916:110::-;5981:12;:10;:12::i;:::-;5971:22;;:6;;;;;;;;;;:22;;;5963:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33013:5:::1;32983:18;:27;33002:7;32983:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;32916:110:::0;:::o;6214:244::-;5981:12;:10;:12::i;:::-;5971:22;;:6;;;;;;;;;;:22;;;5963:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6323:1:::1;6303:22;;:8;:22;;;;6295:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6413:8;6384:38;;6405:6;::::0;::::1;;;;;;;;6384:38;;;;;;;;;;;;6442:8;6433:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6214:244:::0;:::o;132:106::-;185:15;220:10;213:17;;132:106;:::o;22012:337::-;22122:1;22105:19;;:5;:19;;;;22097:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22203:1;22184:21;;:7;:21;;;;22176:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22287:6;22257:11;:18;22269:5;22257:18;;;;;;;;;;;;;;;:27;22276:7;22257:27;;;;;;;;;;;;;;;:36;;;;22325:7;22309:32;;22318:5;22309:32;;;22334:6;22309:32;;;;;;;;;;;;;;;;;;22012:337;;;:::o;22357:1245::-;22495:1;22479:18;;:4;:18;;;;22471:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22572:1;22558:16;;:2;:16;;;;22550:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22642:1;22633:6;:10;22625:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22711:7;:5;:7::i;:::-;22703:15;;:4;:15;;;;:32;;;;;22728:7;:5;:7::i;:::-;22722:13;;:2;:13;;;;22703:32;22700:125;;;22768:12;;22758:6;:22;;22750:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22700:125;22840:28;22871:24;22889:4;22871:9;:24::i;:::-;22840:55;;22906:28;22961:29;;22937:20;:53;;22906:84;;23019:23;:57;;;;;23060:16;;;;;;;;;;;23059:17;23019:57;:95;;;;;23101:13;23093:21;;:4;:21;;;;23019:95;:133;;;;;23131:21;;;;;;;;;;;23019:133;23001:293;;;23202:29;;23179:52;;23246:36;23261:20;23246:14;:36::i;:::-;23001:293;23316:12;23331:4;23316:19;;23443:18;:24;23462:4;23443:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;23471:18;:22;23490:2;23471:22;;;;;;;;;;;;;;;;;;;;;;;;;23443:50;23440:96;;;23519:5;23509:15;;23440:96;23556:38;23571:4;23576:2;23579:6;23586:7;23556:14;:38::i;:::-;22357:1245;;;;;;:::o;1534:192::-;1620:7;1653:1;1648;:6;;1656:12;1640:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1680:9;1696:1;1692;:5;1680:17;;1717:1;1710:8;;;1534:192;;;;;:::o;30371:163::-;30412:7;30433:15;30450;30469:19;:17;:19::i;:::-;30432:56;;;;30506:20;30518:7;30506;:11;;:20;;;;:::i;:::-;30499:27;;;;30371:163;:::o;1994:132::-;2052:7;2079:39;2083:1;2086;2079:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2072:46;;1994:132;;;;:::o;1201:181::-;1259:7;1279:9;1295:1;1291;:5;1279:17;;1320:1;1315;:6;;1307:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1373:1;1366:8;;;1201:181;;;;:::o;28977:457::-;29036:7;29045;29054;29063;29072;29081;29090;29111:23;29136:12;29150:13;29165:18;29187:20;29199:7;29187:11;:20::i;:::-;29110:97;;;;;;;;29219:15;29236:23;29261:12;29277:57;29289:7;29298:4;29304:5;29311:10;29323;:8;:10::i;:::-;29277:11;:57::i;:::-;29218:116;;;;;;29353:7;29362:15;29379:4;29385:15;29402:4;29408:5;29415:10;29345:81;;;;;;;;;;;;;;;;;;;;;28977:457;;;;;;;;;:::o;1390:136::-;1448:7;1475:43;1479:1;1482;1475:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1468:50;;1390:136;;;;:::o;1734:250::-;1792:7;1821:1;1816;:6;1812:47;;;1846:1;1839:8;;;;1812:47;1871:9;1887:1;1883;:5;1871:17;;1916:1;1911;1907;:5;;;;;;:10;1899:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1975:1;1968:8;;;1734:250;;;;;:::o;23610:278::-;17111:4;17092:16;;:23;;;;;;;;;;;;;;;;;;23695:38:::1;23712:20;23695:16;:38::i;:::-;23765:44;23787:21;23765:17;;:21;;:44;;;;:::i;:::-;23745:17;:64;;;;23820:60;23839:17;;;;;;;;;;;23858:21;23820:18;:60::i;:::-;17157:5:::0;17138:16;;:24;;;;;;;;;;;;;;;;;;23610:278;:::o;25031:834::-;25142:7;25138:40;;25164:14;:12;:14::i;:::-;25138:40;25203:11;:19;25215:6;25203:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;25227:11;:22;25239:9;25227:22;;;;;;;;;;;;;;;;;;;;;;;;;25226:23;25203:46;25199:597;;;25266:48;25288:6;25296:9;25307:6;25266:21;:48::i;:::-;25199:597;;;25337:11;:19;25349:6;25337:19;;;;;;;;;;;;;;;;;;;;;;;;;25336:20;:46;;;;;25360:11;:22;25372:9;25360:22;;;;;;;;;;;;;;;;;;;;;;;;;25336:46;25332:464;;;25399:46;25419:6;25427:9;25438:6;25399:19;:46::i;:::-;25332:464;;;25468:11;:19;25480:6;25468:19;;;;;;;;;;;;;;;;;;;;;;;;;25467:20;:47;;;;;25492:11;:22;25504:9;25492:22;;;;;;;;;;;;;;;;;;;;;;;;;25491:23;25467:47;25463:333;;;25531:44;25549:6;25557:9;25568:6;25531:17;:44::i;:::-;25463:333;;;25597:11;:19;25609:6;25597:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;25620:11;:22;25632:9;25620:22;;;;;;;;;;;;;;;;;;;;;;;;;25597:45;25593:203;;;25659:48;25681:6;25689:9;25700:6;25659:21;:48::i;:::-;25593:203;;;25740:44;25758:6;25766:9;25777:6;25740:17;:44::i;:::-;25593:203;25463:333;25332:464;25199:597;25820:7;25816:41;;25842:15;:13;:15::i;:::-;25816:41;25031:834;;;;:::o;30542:561::-;30592:7;30601;30621:15;30639:7;;30621:25;;30657:15;30675:7;;30657:25;;30704:9;30699:289;30723:9;:16;;;;30719:1;:20;30699:289;;;30789:7;30765;:21;30773:9;30783:1;30773:12;;;;;;;;;;;;;;;;;;;;;;;;;30765:21;;;;;;;;;;;;;;;;:31;:66;;;;30824:7;30800;:21;30808:9;30818:1;30808:12;;;;;;;;;;;;;;;;;;;;;;;;;30800:21;;;;;;;;;;;;;;;;:31;30765:66;30761:97;;;30841:7;;30850;;30833:25;;;;;;;;;30761:97;30883:34;30895:7;:21;30903:9;30913:1;30903:12;;;;;;;;;;;;;;;;;;;;;;;;;30895:21;;;;;;;;;;;;;;;;30883:7;:11;;:34;;;;:::i;:::-;30873:44;;30942:34;30954:7;:21;30962:9;30972:1;30962:12;;;;;;;;;;;;;;;;;;;;;;;;;30954:21;;;;;;;;;;;;;;;;30942:7;:11;;:34;;;;:::i;:::-;30932:44;;30741:3;;;;;;;30699:289;;;;31012:20;31024:7;;31012;;:11;;:20;;;;:::i;:::-;31002:7;:30;30998:61;;;31042:7;;31051;;31034:25;;;;;;;;30998:61;31078:7;31087;31070:25;;;;;;30542:561;;;:::o;2134:278::-;2220:7;2252:1;2248;:5;2255:12;2240:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2279:9;2295:1;2291;:5;;;;;;2279:17;;2403:1;2396:8;;;2134:278;;;;;:::o;29442:409::-;29502:7;29511;29520;29529;29549:12;29564:24;29580:7;29564:15;:24::i;:::-;29549:39;;29599:13;29615:25;29632:7;29615:16;:25::i;:::-;29599:41;;29651:18;29672:30;29694:7;29672:21;:30::i;:::-;29651:51;;29713:23;29739:44;29772:10;29739:28;29761:5;29739:17;29751:4;29739:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;:32;;:44;;;;:::i;:::-;29713:70;;29802:15;29819:4;29825:5;29832:10;29794:49;;;;;;;;;;;;29442:409;;;;;:::o;29859:504::-;29989:7;29998;30007;30027:15;30045:24;30057:11;30045:7;:11;;:24;;;;:::i;:::-;30027:42;;30080:12;30095:21;30104:11;30095:4;:8;;:21;;;;:::i;:::-;30080:36;;30127:13;30143:22;30153:11;30143:5;:9;;:22;;;;:::i;:::-;30127:38;;30176:18;30197:27;30212:11;30197:10;:14;;:27;;;;:::i;:::-;30176:48;;30235:23;30261:44;30294:10;30261:28;30283:5;30261:17;30273:4;30261:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;:32;;:44;;;;:::i;:::-;30235:70;;30324:7;30333:15;30350:4;30316:39;;;;;;;;;;;29859:504;;;;;;;;;:::o;23896:605::-;24022:21;24060:1;24046:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24022:40;;24091:4;24073;24078:1;24073:7;;;;;;;;;;;;;:23;;;;;;;;;;;24117:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24107:4;24112:1;24107:7;;;;;;;;;;;;;:32;;;;;;;;;;;24152:62;24169:4;24184:15;24202:11;24152:8;:62::i;:::-;24253:15;:66;;;24334:11;24360:1;24404:4;24431;24467:15;24253:240;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23896:605;;:::o;33941:124::-;34031:9;:18;;:26;34050:6;34031:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33941:124;;:::o;31995:430::-;32052:1;32041:7;;:12;:29;;;;;32069:1;32057:8;;:13;32041:29;:52;;;;;32092:1;32074:14;;:19;32041:52;:74;;;;;32114:1;32097:13;;:18;32041:74;32038:86;;;32117:7;;32038:86;32162:7;;32144:15;:25;;;;32199:8;;32180:16;:27;;;;32243:14;;32218:22;:39;;;;32292:13;;32268:21;:37;;;;32336:1;32326:7;:11;;;;32359:1;32348:8;:12;;;;32388:1;32371:14;:18;;;;32416:1;32400:13;:17;;;;31995:430;:::o;27225:689::-;27327:19;27350:10;:8;:10::i;:::-;27327:33;;27372:15;27389:23;27414:12;27428:23;27453:12;27467:13;27482:18;27504:19;27515:7;27504:10;:19::i;:::-;27371:152;;;;;;;;;;;;;;27534:13;27551:22;27561:11;27551:5;:9;;:22;;;;:::i;:::-;27534:39;;27602:28;27622:7;27602;:15;27610:6;27602:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;27584:7;:15;27592:6;27584:15;;;;;;;;;;;;;;;:46;;;;27659:28;27679:7;27659;:15;27667:6;27659:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;27641:7;:15;27649:6;27641:15;;;;;;;;;;;;;;;:46;;;;27719:39;27742:15;27719:7;:18;27727:9;27719:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;27698:7;:18;27706:9;27698:18;;;;;;;;;;;;;;;:60;;;;27772:26;27787:10;27772:14;:26::i;:::-;27809:37;27821:4;27827:5;27834:4;27840:5;27809:11;:37::i;:::-;27879:9;27862:44;;27871:6;27862:44;;;27890:15;27862:44;;;;;;;;;;;;;;;;;;27225:689;;;;;;;;;;;;:::o;26508:709::-;26608:19;26631:10;:8;:10::i;:::-;26608:33;;26653:15;26670:23;26695:12;26709:23;26734:12;26748:13;26763:18;26785:19;26796:7;26785:10;:19::i;:::-;26652:152;;;;;;;;;;;;;;26815:13;26832:22;26842:11;26832:5;:9;;:22;;;;:::i;:::-;26815:39;;26883:28;26903:7;26883;:15;26891:6;26883:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;26865:7;:15;26873:6;26865:15;;;;;;;;;;;;;;;:46;;;;26943:39;26966:15;26943:7;:18;26951:9;26943:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;26922:7;:18;26930:9;26922:18;;;;;;;;;;;;;;;:60;;;;27014:39;27037:15;27014:7;:18;27022:9;27014:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;26993:7;:18;27001:9;26993:18;;;;;;;;;;;;;;;:60;;;;27075:26;27090:10;27075:14;:26::i;:::-;27112:37;27124:4;27130:5;27137:4;27143:5;27112:11;:37::i;:::-;27182:9;27165:44;;27174:6;27165:44;;;27193:15;27165:44;;;;;;;;;;;;;;;;;;26508:709;;;;;;;;;;;;:::o;25875:625::-;25973:19;25996:10;:8;:10::i;:::-;25973:33;;26018:15;26035:23;26060:12;26074:23;26099:12;26113:13;26128:18;26150:19;26161:7;26150:10;:19::i;:::-;26017:152;;;;;;;;;;;;;;26180:13;26197:22;26207:11;26197:5;:9;;:22;;;;:::i;:::-;26180:39;;26248:28;26268:7;26248;:15;26256:6;26248:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;26230:7;:15;26238:6;26230:15;;;;;;;;;;;;;;;:46;;;;26308:39;26331:15;26308:7;:18;26316:9;26308:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;26287:7;:18;26295:9;26287:18;;;;;;;;;;;;;;;:60;;;;26358:26;26373:10;26358:14;:26::i;:::-;26395:37;26407:4;26413:5;26420:4;26426:5;26395:11;:37::i;:::-;26465:9;26448:44;;26457:6;26448:44;;;26476:15;26448:44;;;;;;;;;;;;;;;;;;25875:625;;;;;;;;;;;;:::o;27922:765::-;28024:19;28047:10;:8;:10::i;:::-;28024:33;;28069:15;28086:23;28111:12;28125:23;28150:12;28164:13;28179:18;28201:19;28212:7;28201:10;:19::i;:::-;28068:152;;;;;;;;;;;;;;28231:13;28248:22;28258:11;28248:5;:9;;:22;;;;:::i;:::-;28231:39;;28299:28;28319:7;28299;:15;28307:6;28299:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;28281:7;:15;28289:6;28281:15;;;;;;;;;;;;;;;:46;;;;28356:28;28376:7;28356;:15;28364:6;28356:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;28338:7;:15;28346:6;28338:15;;;;;;;;;;;;;;;:46;;;;28416:39;28439:15;28416:7;:18;28424:9;28416:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;28395:7;:18;28403:9;28395:18;;;;;;;;;;;;;;;:60;;;;28487:39;28510:15;28487:7;:18;28495:9;28487:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;28466:7;:18;28474:9;28466:18;;;;;;;;;;;;;;;:60;;;;28545:26;28560:10;28545:14;:26::i;:::-;28582:37;28594:4;28600:5;28607:4;28613:5;28582:11;:37::i;:::-;28652:9;28635:44;;28644:6;28635:44;;;28663:15;28635:44;;;;;;;;;;;;;;;;;;27922:765;;;;;;;;;;;;:::o;32437:213::-;32491:15;;32481:7;:25;;;;32528:16;;32517:8;:27;;;;32572:22;;32555:14;:39;;;;32621:21;;32605:13;:37;;;;32437:213::o;31482:154::-;31546:7;31573:55;31612:5;31573:20;31585:7;;31573;:11;;:20;;;;:::i;:::-;:24;;:55;;;;:::i;:::-;31566:62;;31482:154;;;:::o;31648:156::-;31713:7;31740:56;31780:5;31740:21;31752:8;;31740:7;:11;;:21;;;;:::i;:::-;:25;;:56;;;;:::i;:::-;31733:63;;31648:156;;;:::o;31816:167::-;31886:7;31913:62;31959:5;31913:27;31925:14;;31913:7;:11;;:27;;;;:::i;:::-;:31;;:62;;;;:::i;:::-;31906:69;;31816:167;;;:::o;31115:355::-;31178:19;31201:10;:8;:10::i;:::-;31178:33;;31222:18;31243:27;31258:11;31243:10;:14;;:27;;;;:::i;:::-;31222:48;;31306:38;31333:10;31306:7;:22;31322:4;31306:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;31281:7;:22;31297:4;31281:22;;;;;;;;;;;;;;;:63;;;;31358:11;:26;31378:4;31358:26;;;;;;;;;;;;;;;;;;;;;;;;;31355:107;;;31424:38;31451:10;31424:7;:22;31440:4;31424:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;31399:7;:22;31415:4;31399:22;;;;;;;;;;;;;;;:63;;;;31355:107;31115:355;;;:::o;28695:274::-;28803:28;28825:5;28803:17;28815:4;28803:7;;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;28793:7;:38;;;;28855:20;28870:4;28855:10;;:14;;:20;;;;:::i;:::-;28842:10;:33;;;;28900:22;28916:5;28900:11;;:15;;:22;;;;:::i;:::-;28886:11;:36;;;;28943:18;28955:5;28943:7;;:11;;:18;;;;:::i;:::-;28933:7;:28;;;;28695:274;;;;:::o
Swarm Source
ipfs://871666d1df4ddd006114dca76146f3b9c048b602e785732699bbb22968f412bd
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.