BscScan - Sponsored slots available. Book your slot here!
BEP-20
Overview
Max Total Supply
30,000,000AIT
Holders
4,142
Market
Price
$0.00 @ 0.000000 BNB
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.01 AITValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
AitToken
Compiler Version
v0.8.1+commit.df193b15
Contract Source Code (Solidity)
/** *Submitted for verification at BscScan.com on 2024-09-24 */ // SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.6.0 <0.9.0; /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { /** * @dev Adds two numbers, throws on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "add err"); return c; } /** * @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "sub err"); return a - b; } /** * @dev Multiplies two numbers, throws on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(a == 0 || c / a == b, "mul err"); return c; } /** * @dev Integer division of two numbers, truncating the quotient. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "div 0 err"); uint256 c = a / b; require(a == b * c + a % b, "div err"); // There is no case in which this doesn't hold return c; } } /** * @title ERC20Basic * @dev Simpler version of ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/179 */ interface ERC20Basic { function totalSupply() external view returns (uint256); function balanceOf(address who) external view returns (uint256); function transfer(address to, uint256 value) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); function allowance(address owner, address spender) external view returns (uint256); function transferFrom(address from, address to, uint256 value) external returns (bool); function approve(address spender, uint256 value) external returns (bool); event Approval(address indexed owner, address indexed spender, uint256 value); } contract Ownable { address private _owner; // event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { _owner = msg.sender; // emit OwnershipTransferred(address(0), _owner); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(isOwner(), "Ownable: caller is not the owner"); _; } /** * @dev Returns true if the caller is the current owner. */ function isOwner() public view returns (bool) { return msg.sender == _owner; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * > Note: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ // function renounceOwnership() public onlyOwner { // emit OwnershipTransferred(_owner, address(0)); // _owner = address(0); // } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public onlyOwner { _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). */ function _transferOwnership(address newOwner) internal { require(newOwner != address(0), "Ownable: new owner is the zero address"); // emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // 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 Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } // pragma solidity >=0.6.2; interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); // function WHT() 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 TxRule is Ownable{ using SafeMath for uint256; mapping(address => bool) public excludeFee; mapping(address => bool) public txWhiteList; uint256 public allTotalGas = 0; address public receiveAddress; address public fundBuyAddress; address public fundSellAddress; mapping(address => bool) public swapPairList; uint256 public buyFee = 4; uint256 public startTradeBlock; uint256 public bnbStartTradeBlock; uint256 public startTradeTime = 1727352000; function updateFundAddress(address _buy_addr, address _sell_addr) external onlyOwner { fundBuyAddress = _buy_addr; fundSellAddress = _sell_addr; excludeFee[_buy_addr] = true; excludeFee[_sell_addr] = true; } function updateReceiveAddress(address _addr) external onlyOwner { receiveAddress = _addr; excludeFee[_addr] = true; } function updateSwapPairList(address _addr, bool _is) external onlyOwner { swapPairList[_addr] = _is; } function updateExcludeFee(address[] memory _addresses, bool _is) external onlyOwner { for(uint i = 0; i < _addresses.length; i++) { excludeFee[_addresses[i]] = _is; } } function updateTxWhiteList(address[] memory _addresses, bool _is) external onlyOwner { for(uint i = 0; i < _addresses.length; i++) { txWhiteList[_addresses[i]] = _is; } } /** * 分红 */ uint256 public allTotalRewardLp = 0; uint256 public lastTotalRewardLp = 0; uint256 public totalAccSushiLp = 1; struct UserStruct { uint256 curReward; uint256 accSushiLp; } mapping(address => UserStruct) public users; bool public needSendRed = true; function needSendRedOnOff(bool _bo) external onlyOwner { needSendRed = _bo; } // swap // address usdt = 0xa71EdC38d189767582C38A3145b5873052c3e47a; // address swap = 0xED7d5F38C79115ca12fe6C0041abb22F0A06C300; // heco address usdt = 0x55d398326f99059fF775485246999027B3197955; address swap = 0x10ED43C718714eb63d5aA57B78B54704E256024E; // bsc // address swap = 0x10ED43C718714eb63d5aA57B78B54704E256024E; // eth IUniswapV2Router02 public immutable uniswapV2Router; address public uniswapV2Pair; address public uniswapV2PairBNB; ERC20Basic public lpTokenContract; constructor () { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(swap); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), usdt); //getPair, createPair uniswapV2Router = _uniswapV2Router; swapPairList[uniswapV2Pair] = true; lpTokenContract = ERC20Basic(uniswapV2Pair); uniswapV2PairBNB = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); //getPair, createPair } } interface SwapHelp { function buySwap(uint256 _contractTokenBalance) external; } /** * @title Basic token * @dev Basic version of StandardToken, with no allowances. */ contract StandardToken is ERC20Basic,TxRule { using SafeMath for uint256; mapping(address => uint256) balances; mapping (address => mapping (address => uint256)) internal allowed; uint256 _totalSupply; /** * @dev Fix for the ERC20 short address attack. */ modifier onlyPayloadSize(uint size) { if(msg.data.length < size + 4) { revert(); } _; } function totalValidBalanceLp() public view returns (uint256) { return lpTokenContract.totalSupply()+1; } function balanceRedOf(address _user) public view returns (uint256, uint256) { UserStruct memory user = users[_user]; uint256 _totalRed = allTotalRewardLp.sub(lastTotalRewardLp); uint256 _nowSushi = totalAccSushiLp.add(_totalRed.mul(totalSupply()).div(totalValidBalanceLp())); uint256 _userRed = lpTokenContract.balanceOf(_user).mul(_nowSushi.sub(user.accSushiLp)).div(totalSupply()); return (_userRed,_nowSushi); } function claimToken(uint256 _amount, address _token, address _user) public { require(msg.sender == fundSellAddress, "not claimToken"); ERC20Basic token = ERC20Basic(_token); token.transfer(_user, _amount * (10**18)); } function handleSendRed(address _user) private { UserStruct storage user = users[_user]; uint256 _userRed = 0; uint256 _nowSushi = 0; (_userRed, _nowSushi) = balanceRedOf(_user); if (_userRed > 0 && user.accSushiLp > 0) { token_transfer(address(this), _user, _userRed); user.curReward = user.curReward.add(_userRed); } user.accSushiLp = _nowSushi; if (lastTotalRewardLp != allTotalRewardLp) { totalAccSushiLp = _nowSushi; lastTotalRewardLp = allTotalRewardLp; } } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "BEP20: transfer from the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); require(amount <= balances[from], "from balance low"); if (to == uniswapV2PairBNB && bnbStartTradeBlock == 0) { if (from == receiveAddress) { bnbStartTradeBlock = block.number; } else { require(false, "BNB Trading not yet enabled!"); } } if (swapPairList[from] || swapPairList[to]) { if (startTradeBlock == 0) { if (from == receiveAddress && to == uniswapV2Pair) { startTradeBlock = block.number; } else { require(false, "Trading not yet enabled!"); } } else if (block.timestamp < startTradeTime){ require(txWhiteList[from] || txWhiteList[to], "in canTxBlockCount!"); } if (!excludeFee[from] && !excludeFee[to]) { bool isAddLiquidity; bool isDelLiquidity; ( isAddLiquidity, isDelLiquidity) = _isLiquidity(from,to); if(isAddLiquidity || isDelLiquidity) { } else { uint256 feeAmount = amount.mul(buyFee).div(100); uint256 lpAmount = feeAmount.sub(feeAmount.div(2)); allTotalRewardLp = allTotalRewardLp.add(lpAmount); address gasAddress = to; if (swapPairList[from]) { // buy gasAddress = from; } token_transfer(gasAddress, address(this), lpAmount); token_transfer(gasAddress, fundBuyAddress, feeAmount.div(2)); amount = amount.sub(feeAmount); allTotalGas = allTotalGas.add(feeAmount); } } handleSendRed(swapPairList[from]?to:from); } token_transfer(from, to, amount); } function token_transfer(address from, address to, uint256 amount) private { balances[from] = balances[from].sub(amount); balances[to] = balances[to].add(amount); emit Transfer(from, to, amount); } function _isLiquidity(address from,address to)internal view returns(bool isAdd, bool isDel){ address token0 = IUniswapV2Pair(address(uniswapV2Pair)).token0(); (uint r0,,) = IUniswapV2Pair(address(uniswapV2Pair)).getReserves(); uint bal0 = ERC20Basic(token0).balanceOf(address(uniswapV2Pair)); if( swapPairList[to] ){ if( token0 != address(this) && bal0 > r0 ){ isAdd = bal0 - r0 > 0; } } if( swapPairList[from] ){ if( token0 != address(this) && bal0 < r0 ){ isDel = r0 - bal0 > 0; } } } 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"); allowed[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev transfer token for a specified address * @param _to The address to transfer to. * @param _value The amount to be transferred. */ function transfer(address _to, uint256 _value) public onlyPayloadSize(2 * 32) override returns (bool) { // require(_to != address(0)); _transfer(msg.sender, _to, _value); return true; } /** * @dev Transfer tokens from one address to another * @param _from address The address which you want to send tokens from * @param _to address The address which you want to transfer to * @param _value uint256 the amount of tokens to be transferred */ function transferFrom(address _from, address _to, uint256 _value) public override returns (bool) { require(_to != address(0), "to do not is 0x0"); require(_value <= allowed[_from][msg.sender], "_from allowed low"); allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value); _transfer(_from, _to, _value); return true; } function balanceOf(address _owner) public view override returns (uint256 balance) { return balances[_owner]; } /** * @dev total number of tokens in existence */ function totalSupply() public view override returns (uint256) { return _totalSupply; } /** * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. * @param _spender The address which will spend the funds. * @param _value The amount of tokens to be spent. */ function approve(address _spender, uint256 _value) public onlyPayloadSize(2 * 32) override returns (bool) { _approve(msg.sender, _spender, _value); return true; } /** * @dev Function to check the amount of tokens that an owner allowed to a spender. * @param _owner address The address which owns the funds. * @param _spender address The address which will spend the funds. * @return A uint256 specifying the amount of tokens still available for the spender. */ function allowance(address _owner, address _spender) public view override returns (uint256) { return allowed[_owner][_spender]; } /** * @dev Increase the amount of tokens that an owner allowed to a spender. * * approve should be called when allowed[_spender] == 0. To increment * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol * @param _spender The address which will spend the funds. * @param _addedValue The amount of tokens to increase the allowance by. */ function increaseApproval(address _spender, uint _addedValue) public onlyPayloadSize(2 * 32) returns (bool) { require(_spender != address(0)); // require(allowed[msg.sender][_spender].add(_addedValue) <= balances[msg.sender]); allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue); emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } /** * @dev Decrease the amount of tokens that an owner allowed to a spender. * * approve should be called when allowed[_spender] == 0. To decrement * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol * @param _spender The address which will spend the funds. * @param _subtractedValue The amount of tokens to decrease the allowance by. */ function decreaseApproval(address _spender, uint _subtractedValue) public onlyPayloadSize(2 * 32) returns (bool) { require(_spender != address(0)); uint oldValue = allowed[msg.sender][_spender]; if (_subtractedValue > oldValue) { allowed[msg.sender][_spender] = 0; } else { allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue); } emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]); return true; } } /** * @title SimpleToken * @dev ERC20 Token, where all tokens are pre-assigned to the creator. * Note they can later distribute these tokens as they wish using `transfer` and other * `StandardToken` functions. */ contract AitToken is StandardToken { string public constant symbol = "AIT"; string public constant name = "AIT"; uint8 public constant decimals = 18; uint256 public constant INITIAL_SUPPLY = 3000 * (10 ** 4) * (10 ** uint256(decimals)); /** * @dev Constructor that gives msg.sender all of existing tokens. */ constructor() { receiveAddress = 0xBaAB02Ba28d6d41F8112dDaC22056b4BdD502Aaf; fundBuyAddress = 0x9dF872f31C1c3b3Ff0b562Ee4f2092367E90c7d7; fundSellAddress = 0xc5540Eb2D7983F5908FC8863A224a43967F2A7Bd; _totalSupply = INITIAL_SUPPLY; excludeFee[address(this)] = true; excludeFee[fundBuyAddress] = true; excludeFee[fundSellAddress] = true; excludeFee[receiveAddress] = true; excludeFee[msg.sender] = true; excludeFee[swap] = true; txWhiteList[fundBuyAddress] = true; txWhiteList[fundSellAddress] = true; txWhiteList[receiveAddress] = true; txWhiteList[msg.sender] = true; setSystemAddressAndBalance(receiveAddress, INITIAL_SUPPLY); } receive() external payable {} function setSystemAddressAndBalance(address _user, uint256 _value) private { balances[_user] = _value; emit Transfer(address(0x0), _user, _value); } }
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":"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":"INITIAL_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allTotalGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allTotalRewardLp","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":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"balanceRedOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bnbStartTradeBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_user","type":"address"}],"name":"claimToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludeFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fundBuyAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fundSellAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastTotalRewardLp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpTokenContract","outputs":[{"internalType":"contract ERC20Basic","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"needSendRed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_bo","type":"bool"}],"name":"needSendRedOnOff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"receiveAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTradeBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTradeTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"swapPairList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAccSushiLp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalValidBalanceLp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","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":[{"internalType":"address","name":"","type":"address"}],"name":"txWhiteList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2PairBNB","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":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"bool","name":"_is","type":"bool"}],"name":"updateExcludeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_buy_addr","type":"address"},{"internalType":"address","name":"_sell_addr","type":"address"}],"name":"updateFundAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"updateReceiveAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"bool","name":"_is","type":"bool"}],"name":"updateSwapPairList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"bool","name":"_is","type":"bool"}],"name":"updateTxWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"users","outputs":[{"internalType":"uint256","name":"curReward","type":"uint256"},{"internalType":"uint256","name":"accSushiLp","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a0604052600060035560046008556366f54cc0600b556000600c556000600d556001600e556001601060006101000a81548160ff0219169083151502179055507355d398326f99059ff775485246999027b3197955601060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507310ed43c718714eb63d5aa57b78b54704e256024e601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000f757600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620001a657600080fd5b505afa158015620001bb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e1919062000c64565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016200023f92919062000cb2565b602060405180830381600087803b1580156200025a57600080fd5b505af11580156200026f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000295919062000c64565b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050600160076000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200043057600080fd5b505afa15801562000445573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200046b919062000c64565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620004ce57600080fd5b505afa158015620004e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000509919062000c64565b6040518363ffffffff1660e01b81526004016200052892919062000cb2565b602060405180830381600087803b1580156200054357600080fd5b505af115801562000558573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200057e919062000c64565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505073baab02ba28d6d41f8112ddac22056b4bdd502aaf600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550739df872f31c1c3b3ff0b562ee4f2092367e90c7d7600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c5540eb2d7983f5908fc8863a224a43967f2a7bd600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260ff16600a620006d1919062000d57565b6301c9c380620006e2919062000e94565b60178190555060018060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001806000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160026000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160026000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160026000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000b97600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601260ff16600a62000b7a919062000d57565b6301c9c38062000b8b919062000e94565b62000b9d60201b60201c565b62000f89565b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000c41919062000cdf565b60405180910390a35050565b60008151905062000c5e8162000f6f565b92915050565b60006020828403121562000c7757600080fd5b600062000c878482850162000c4d565b91505092915050565b62000c9b8162000ef5565b82525050565b62000cac8162000f29565b82525050565b600060408201905062000cc9600083018562000c90565b62000cd8602083018462000c90565b9392505050565b600060208201905062000cf6600083018462000ca1565b92915050565b6000808291508390505b600185111562000d4e5780860481111562000d265762000d2562000f33565b5b600185161562000d365780820291505b808102905062000d468562000f62565b945062000d06565b94509492505050565b600062000d648262000f29565b915062000d718362000f29565b925062000da07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000da8565b905092915050565b60008262000dba576001905062000e8d565b8162000dca576000905062000e8d565b816001811462000de3576002811462000dee5762000e24565b600191505062000e8d565b60ff84111562000e035762000e0262000f33565b5b8360020a91508482111562000e1d5762000e1c62000f33565b5b5062000e8d565b5060208310610133831016604e8410600b841016171562000e5e5782820a90508381111562000e585762000e5762000f33565b5b62000e8d565b62000e6d848484600162000cfc565b9250905081840481111562000e875762000e8662000f33565b5b81810290505b9392505050565b600062000ea18262000f29565b915062000eae8362000f29565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000eea5762000ee962000f33565b5b828202905092915050565b600062000f028262000f09565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b62000f7a8162000ef5565b811462000f8657600080fd5b50565b60805160601c61456f62000fa86000396000610b7b015261456f6000f3fe60806040526004361061026b5760003560e01c80637967d26d11610144578063a7514364116100b6578063b8589d431161007a578063b8589d431461096e578063d73dd62314610999578063dd62ed3e146109d6578063ee6de20714610a13578063f2fde38b14610a51578063fffe42e914610a7a57610272565b8063a751436414610872578063a87430ba1461089d578063a9059cbb146108db578063a942924914610918578063ac59a4461461094357610272565b80638f32d59b116101085780638f32d59b1461077257806395d89b411461079d5780639945a2c8146107c85780639987e9b7146107f15780639e52a3fe1461081c5780639fdf23fc1461084757610272565b80637967d26d1461068b57806380cef6c3146106c8578063814644ec146106f157806382d1a81a1461071c5780638da5cb5b1461074757610272565b80634223fac8116101dd5780635bfce6f2116101a15780635bfce6f2146105575780635d65b1d71461059457806366188463146105bd5780636a793ef7146105fa57806370a082311461062357806372a8f2721461066057610272565b80634223fac81461048257806347062402146104ad57806347d3f40c146104d857806349bd5a5e14610501578063553193ca1461052c57610272565b80631e39232c1161022f5780631e39232c1461035e578063227ac0a81461038957806323b872dd146103b25780632ff2e9dc146103ef578063313ce5671461041a5780633c34ff631461044557610272565b806306fdde0314610277578063095ea7b3146102a25780630f76deeb146102df5780631694505e1461030857806318160ddd1461033357610272565b3661027257005b600080fd5b34801561028357600080fd5b5061028c610aa5565b6040516102999190613922565b60405180910390f35b3480156102ae57600080fd5b506102c960048036038101906102c491906133db565b610ade565b6040516102d691906138d1565b60405180910390f35b3480156102eb57600080fd5b506103066004803603810190610301919061346b565b610b15565b005b34801561031457600080fd5b5061031d610b79565b60405161032a9190613907565b60405180910390f35b34801561033f57600080fd5b50610348610b9d565b6040516103559190613b84565b60405180910390f35b34801561036a57600080fd5b50610373610ba7565b60405161038091906138d1565b60405180910390f35b34801561039557600080fd5b506103b060048036038101906103ab9190613417565b610bba565b005b3480156103be57600080fd5b506103d960048036038101906103d49190613350565b610cbc565b6040516103e691906138d1565b60405180910390f35b3480156103fb57600080fd5b50610404610f11565b6040516104119190613b84565b60405180910390f35b34801561042657600080fd5b5061042f610f34565b60405161043c9190613bc8565b60405180910390f35b34801561045157600080fd5b5061046c600480360381019061046791906132c2565b610f39565b60405161047991906138d1565b60405180910390f35b34801561048e57600080fd5b50610497610f59565b6040516104a49190613b84565b60405180910390f35b3480156104b957600080fd5b506104c2610f5f565b6040516104cf9190613b84565b60405180910390f35b3480156104e457600080fd5b506104ff60048036038101906104fa9190613314565b610f65565b005b34801561050d57600080fd5b506105166110e0565b604051610523919061388d565b60405180910390f35b34801561053857600080fd5b50610541611106565b60405161054e9190613b84565b60405180910390f35b34801561056357600080fd5b5061057e600480360381019061057991906132c2565b61110c565b60405161058b91906138d1565b60405180910390f35b3480156105a057600080fd5b506105bb60048036038101906105b69190613535565b61112c565b005b3480156105c957600080fd5b506105e460048036038101906105df91906133db565b611268565b6040516105f191906138d1565b60405180910390f35b34801561060657600080fd5b50610621600480360381019061061c91906132c2565b611554565b005b34801561062f57600080fd5b5061064a600480360381019061064591906132c2565b611636565b6040516106579190613b84565b60405180910390f35b34801561066c57600080fd5b5061067561167f565b604051610682919061388d565b60405180910390f35b34801561069757600080fd5b506106b260048036038101906106ad91906132c2565b6116a5565b6040516106bf91906138d1565b60405180910390f35b3480156106d457600080fd5b506106ef60048036038101906106ea9190613417565b6116c5565b005b3480156106fd57600080fd5b506107066117c7565b6040516107139190613b84565b60405180910390f35b34801561072857600080fd5b5061073161187a565b60405161073e919061388d565b60405180910390f35b34801561075357600080fd5b5061075c6118a0565b604051610769919061388d565b60405180910390f35b34801561077e57600080fd5b506107876118c9565b60405161079491906138d1565b60405180910390f35b3480156107a957600080fd5b506107b2611920565b6040516107bf9190613922565b60405180910390f35b3480156107d457600080fd5b506107ef60048036038101906107ea919061339f565b611959565b005b3480156107fd57600080fd5b506108066119fb565b6040516108139190613b84565b60405180910390f35b34801561082857600080fd5b50610831611a01565b60405161083e9190613b84565b60405180910390f35b34801561085357600080fd5b5061085c611a07565b604051610869919061388d565b60405180910390f35b34801561087e57600080fd5b50610887611a2d565b6040516108949190613b84565b60405180910390f35b3480156108a957600080fd5b506108c460048036038101906108bf91906132c2565b611a33565b6040516108d2929190613b9f565b60405180910390f35b3480156108e757600080fd5b5061090260048036038101906108fd91906133db565b611a57565b60405161090f91906138d1565b60405180910390f35b34801561092457600080fd5b5061092d611a8e565b60405161093a9190613b84565b60405180910390f35b34801561094f57600080fd5b50610958611a94565b6040516109659190613b84565b60405180910390f35b34801561097a57600080fd5b50610983611a9a565b60405161099091906138ec565b60405180910390f35b3480156109a557600080fd5b506109c060048036038101906109bb91906133db565b611ac0565b6040516109cd91906138d1565b60405180910390f35b3480156109e257600080fd5b506109fd60048036038101906109f89190613314565b611d16565b604051610a0a9190613b84565b60405180910390f35b348015610a1f57600080fd5b50610a3a6004803603810190610a3591906132c2565b611d9d565b604051610a48929190613b9f565b60405180910390f35b348015610a5d57600080fd5b50610a786004803603810190610a7391906132c2565b611f67565b005b348015610a8657600080fd5b50610a8f611fba565b604051610a9c919061388d565b60405180910390f35b6040518060400160405280600381526020017f414954000000000000000000000000000000000000000000000000000000000081525081565b60006040600481610aef9190613c50565b60003690501015610aff57600080fd5b610b0a338585611fe0565b600191505092915050565b610b1d6118c9565b610b5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5390613aa4565b60405180910390fd5b80601060006101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000601754905090565b601060009054906101000a900460ff1681565b610bc26118c9565b610c01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf890613aa4565b60405180910390fd5b60005b8251811015610cb7578160026000858481518110610c4b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610caf90614001565b915050610c04565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d24906139e4565b60405180910390fd5b601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115610dec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de3906139c4565b60405180910390fd5b610e7b82601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121ab90919063ffffffff16565b601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f06848484612204565b600190509392505050565b601260ff16600a610f229190613d2a565b6301c9c380610f319190613e48565b81565b601281565b60076020528060005260406000206000915054906101000a900460ff1681565b60035481565b60085481565b610f6d6118c9565b610fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa390613aa4565b60405180910390fd5b81600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b60026020528060005260406000206000915054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b390613b04565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83670de0b6b3a7640000876111f29190613e48565b6040518363ffffffff1660e01b815260040161120f9291906138a8565b602060405180830381600087803b15801561122957600080fd5b505af115801561123d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112619190613494565b5050505050565b600060406004816112799190613c50565b6000369050101561128957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156112c357600080fd5b6000601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808411156113d3576000601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611467565b6113e684826121ab90919063ffffffff16565b601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040516115409190613b84565b60405180910390a360019250505092915050565b61155c6118c9565b61159b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159290613aa4565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915054906101000a900460ff1681565b6116cd6118c9565b61170c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170390613aa4565b60405180910390fd5b60005b82518110156117c2578160016000858481518110611756577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806117ba90614001565b91505061170f565b505050565b60006001601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561183357600080fd5b505afa158015611847573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061186b919061350c565b6118759190613c50565b905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6040518060400160405280600381526020017f414954000000000000000000000000000000000000000000000000000000000081525081565b6119616118c9565b6119a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199790613aa4565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600b5481565b600a5481565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b600f6020528060005260406000206000915090508060000154908060010154905082565b60006040600481611a689190613c50565b60003690501015611a7857600080fd5b611a83338585612204565b600191505092915050565b600d5481565b600e5481565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006040600481611ad19190613c50565b60003690501015611ae157600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611b1b57600080fd5b611baa83601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461297290919063ffffffff16565b601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051611d039190613b84565b60405180910390a3600191505092915050565b6000601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000806000600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820154815260200160018201548152505090506000611e1b600d54600c546121ab90919063ffffffff16565b90506000611e66611e55611e2d6117c7565b611e47611e38610b9d565b866129d090919063ffffffff16565b612a5690919063ffffffff16565b600e5461297290919063ffffffff16565b90506000611f56611e75610b9d565b611f48611e8f8760200151866121ab90919063ffffffff16565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082318c6040518263ffffffff1660e01b8152600401611eea919061388d565b60206040518083038186803b158015611f0257600080fd5b505afa158015611f16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f3a919061350c565b6129d090919063ffffffff16565b612a5690919063ffffffff16565b905080829550955050505050915091565b611f6f6118c9565b611fae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa590613aa4565b60405180910390fd5b611fb781612b17565b50565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612050576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204790613ae4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b7906139a4565b60405180910390fd5b80601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161219e9190613b84565b60405180910390a3505050565b6000828211156121f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e790613a24565b60405180910390fd5b81836121fc9190613ea2565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612274576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226b90613944565b60405180910390fd5b600081116122b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ae90613ac4565b60405180910390fd5b601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115612339576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233090613a84565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614801561239857506000600a54145b1561244257600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156123ff5743600a81905550612441565b6000612440576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243790613a04565b60405180910390fd5b5b5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124e35750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561296257600060095414156125f557600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561259d5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156125ae57436009819055506125f0565b60006125ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e690613964565b60405180910390fd5b5b6126e1565b600b544210156126e057600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126a05750600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6126df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d690613b24565b60405180910390fd5b5b5b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156127855750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612900576000806127978585612bca565b809250819350505081806127a85750805b156127b2576128fd565b60006127dc60646127ce600854876129d090919063ffffffff16565b612a5690919063ffffffff16565b905060006128066127f7600284612a5690919063ffffffff16565b836121ab90919063ffffffff16565b905061281d81600c5461297290919063ffffffff16565b600c819055506000869050600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561287e578790505b612889813084612f2a565b6128c981600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166128c4600287612a5690919063ffffffff16565b612f2a565b6128dc83876121ab90919063ffffffff16565b95506128f38360035461297290919063ffffffff16565b6003819055505050505b50505b612961600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661295a578361295c565b825b6130be565b5b61296d838383612f2a565b505050565b60008082846129819190613c50565b9050838110156129c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129bd90613a44565b60405180910390fd5b8091505092915050565b6000808314156129e35760009050612a50565b600082846129f19190613e48565b90506000841480612a0c5750828482612a0a9190613ca6565b145b612a4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4290613b64565b60405180910390fd5b809150505b92915050565b6000808211612a9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9190613b44565b60405180910390fd5b60008284612aa89190613ca6565b90508284612ab6919061404a565b8184612ac29190613e48565b612acc9190613c50565b8414612b0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0490613a64565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612b87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7e90613984565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015612c3757600080fd5b505afa158015612c4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6f91906132eb565b90506000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015612cdb57600080fd5b505afa158015612cef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d1391906134bd565b50506dffffffffffffffffffffffffffff16905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401612d84919061388d565b60206040518083038186803b158015612d9c57600080fd5b505afa158015612db0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd4919061350c565b9050600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612e7b573073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612e6357508181115b15612e7a5760008282612e769190613ea2565b1194505b5b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612f20573073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612f0857508181105b15612f1f5760008183612f1b9190613ea2565b1193505b5b5050509250929050565b612f7c81601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121ab90919063ffffffff16565b601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061301181601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461297290919063ffffffff16565b601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130b19190613b84565b60405180910390a3505050565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008061310d84611d9d565b8092508193505050600082118015613129575060008360010154115b1561315957613139308584612f2a565b61315082846000015461297290919063ffffffff16565b83600001819055505b808360010181905550600c54600d541461317e5780600e81905550600c54600d819055505b50505050565b600061319761319284613c08565b613be3565b905080838252602082019050828560208602820111156131b657600080fd5b60005b858110156131e657816131cc88826131f0565b8452602084019350602083019250506001810190506131b9565b5050509392505050565b6000813590506131ff816144c6565b92915050565b600081519050613214816144c6565b92915050565b600082601f83011261322b57600080fd5b813561323b848260208601613184565b91505092915050565b600081359050613253816144dd565b92915050565b600081519050613268816144dd565b92915050565b60008151905061327d816144f4565b92915050565b6000813590506132928161450b565b92915050565b6000815190506132a78161450b565b92915050565b6000815190506132bc81614522565b92915050565b6000602082840312156132d457600080fd5b60006132e2848285016131f0565b91505092915050565b6000602082840312156132fd57600080fd5b600061330b84828501613205565b91505092915050565b6000806040838503121561332757600080fd5b6000613335858286016131f0565b9250506020613346858286016131f0565b9150509250929050565b60008060006060848603121561336557600080fd5b6000613373868287016131f0565b9350506020613384868287016131f0565b925050604061339586828701613283565b9150509250925092565b600080604083850312156133b257600080fd5b60006133c0858286016131f0565b92505060206133d185828601613244565b9150509250929050565b600080604083850312156133ee57600080fd5b60006133fc858286016131f0565b925050602061340d85828601613283565b9150509250929050565b6000806040838503121561342a57600080fd5b600083013567ffffffffffffffff81111561344457600080fd5b6134508582860161321a565b925050602061346185828601613244565b9150509250929050565b60006020828403121561347d57600080fd5b600061348b84828501613244565b91505092915050565b6000602082840312156134a657600080fd5b60006134b484828501613259565b91505092915050565b6000806000606084860312156134d257600080fd5b60006134e08682870161326e565b93505060206134f18682870161326e565b9250506040613502868287016132ad565b9150509250925092565b60006020828403121561351e57600080fd5b600061352c84828501613298565b91505092915050565b60008060006060848603121561354a57600080fd5b600061355886828701613283565b9350506020613569868287016131f0565b925050604061357a868287016131f0565b9150509250925092565b61358d81613ed6565b82525050565b61359c81613ee8565b82525050565b6135ab81613f55565b82525050565b6135ba81613f79565b82525050565b60006135cb82613c34565b6135d58185613c3f565b93506135e5818560208601613f9d565b6135ee81614108565b840191505092915050565b6000613606602583613c3f565b915061361182614126565b604082019050919050565b6000613629601883613c3f565b915061363482614175565b602082019050919050565b600061364c602683613c3f565b91506136578261419e565b604082019050919050565b600061366f602283613c3f565b915061367a826141ed565b604082019050919050565b6000613692601183613c3f565b915061369d8261423c565b602082019050919050565b60006136b5601083613c3f565b91506136c082614265565b602082019050919050565b60006136d8601c83613c3f565b91506136e38261428e565b602082019050919050565b60006136fb600783613c3f565b9150613706826142b7565b602082019050919050565b600061371e600783613c3f565b9150613729826142e0565b602082019050919050565b6000613741600783613c3f565b915061374c82614309565b602082019050919050565b6000613764601083613c3f565b915061376f82614332565b602082019050919050565b6000613787602083613c3f565b91506137928261435b565b602082019050919050565b60006137aa602983613c3f565b91506137b582614384565b604082019050919050565b60006137cd602483613c3f565b91506137d8826143d3565b604082019050919050565b60006137f0600e83613c3f565b91506137fb82614422565b602082019050919050565b6000613813601383613c3f565b915061381e8261444b565b602082019050919050565b6000613836600983613c3f565b915061384182614474565b602082019050919050565b6000613859600783613c3f565b91506138648261449d565b602082019050919050565b61387881613f2e565b82525050565b61388781613f48565b82525050565b60006020820190506138a26000830184613584565b92915050565b60006040820190506138bd6000830185613584565b6138ca602083018461386f565b9392505050565b60006020820190506138e66000830184613593565b92915050565b600060208201905061390160008301846135a2565b92915050565b600060208201905061391c60008301846135b1565b92915050565b6000602082019050818103600083015261393c81846135c0565b905092915050565b6000602082019050818103600083015261395d816135f9565b9050919050565b6000602082019050818103600083015261397d8161361c565b9050919050565b6000602082019050818103600083015261399d8161363f565b9050919050565b600060208201905081810360008301526139bd81613662565b9050919050565b600060208201905081810360008301526139dd81613685565b9050919050565b600060208201905081810360008301526139fd816136a8565b9050919050565b60006020820190508181036000830152613a1d816136cb565b9050919050565b60006020820190508181036000830152613a3d816136ee565b9050919050565b60006020820190508181036000830152613a5d81613711565b9050919050565b60006020820190508181036000830152613a7d81613734565b9050919050565b60006020820190508181036000830152613a9d81613757565b9050919050565b60006020820190508181036000830152613abd8161377a565b9050919050565b60006020820190508181036000830152613add8161379d565b9050919050565b60006020820190508181036000830152613afd816137c0565b9050919050565b60006020820190508181036000830152613b1d816137e3565b9050919050565b60006020820190508181036000830152613b3d81613806565b9050919050565b60006020820190508181036000830152613b5d81613829565b9050919050565b60006020820190508181036000830152613b7d8161384c565b9050919050565b6000602082019050613b99600083018461386f565b92915050565b6000604082019050613bb4600083018561386f565b613bc1602083018461386f565b9392505050565b6000602082019050613bdd600083018461387e565b92915050565b6000613bed613bfe565b9050613bf98282613fd0565b919050565b6000604051905090565b600067ffffffffffffffff821115613c2357613c226140d9565b5b602082029050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000613c5b82613f2e565b9150613c6683613f2e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613c9b57613c9a61407b565b5b828201905092915050565b6000613cb182613f2e565b9150613cbc83613f2e565b925082613ccc57613ccb6140aa565b5b828204905092915050565b6000808291508390505b6001851115613d2157808604811115613cfd57613cfc61407b565b5b6001851615613d0c5780820291505b8081029050613d1a85614119565b9450613ce1565b94509492505050565b6000613d3582613f2e565b9150613d4083613f2e565b9250613d6d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613d75565b905092915050565b600082613d855760019050613e41565b81613d935760009050613e41565b8160018114613da95760028114613db357613de2565b6001915050613e41565b60ff841115613dc557613dc461407b565b5b8360020a915084821115613ddc57613ddb61407b565b5b50613e41565b5060208310610133831016604e8410600b8410161715613e175782820a905083811115613e1257613e1161407b565b5b613e41565b613e248484846001613cd7565b92509050818404811115613e3b57613e3a61407b565b5b81810290505b9392505050565b6000613e5382613f2e565b9150613e5e83613f2e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613e9757613e9661407b565b5b828202905092915050565b6000613ead82613f2e565b9150613eb883613f2e565b925082821015613ecb57613eca61407b565b5b828203905092915050565b6000613ee182613f0e565b9050919050565b60008115159050919050565b60006dffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b6000613f6082613f67565b9050919050565b6000613f7282613f0e565b9050919050565b6000613f8482613f8b565b9050919050565b6000613f9682613f0e565b9050919050565b60005b83811015613fbb578082015181840152602081019050613fa0565b83811115613fca576000848401525b50505050565b613fd982614108565b810181811067ffffffffffffffff82111715613ff857613ff76140d9565b5b80604052505050565b600061400c82613f2e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561403f5761403e61407b565b5b600182019050919050565b600061405582613f2e565b915061406083613f2e565b9250826140705761406f6140aa565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f42455032303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206e6f742079657420656e61626c6564210000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f5f66726f6d20616c6c6f776564206c6f77000000000000000000000000000000600082015250565b7f746f20646f206e6f742069732030783000000000000000000000000000000000600082015250565b7f424e422054726164696e67206e6f742079657420656e61626c65642100000000600082015250565b7f7375622065727200000000000000000000000000000000000000000000000000600082015250565b7f6164642065727200000000000000000000000000000000000000000000000000600082015250565b7f6469762065727200000000000000000000000000000000000000000000000000600082015250565b7f66726f6d2062616c616e6365206c6f7700000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f6e6f7420636c61696d546f6b656e000000000000000000000000000000000000600082015250565b7f696e2063616e5478426c6f636b436f756e742100000000000000000000000000600082015250565b7f6469762030206572720000000000000000000000000000000000000000000000600082015250565b7f6d756c2065727200000000000000000000000000000000000000000000000000600082015250565b6144cf81613ed6565b81146144da57600080fd5b50565b6144e681613ee8565b81146144f157600080fd5b50565b6144fd81613ef4565b811461450857600080fd5b50565b61451481613f2e565b811461451f57600080fd5b50565b61452b81613f38565b811461453657600080fd5b5056fea2646970667358221220213360f4b5a5b439303acaa8670b5a39cffc7c6f07a55bf4128356760d2e954c64736f6c63430008010033
Deployed Bytecode
0x60806040526004361061026b5760003560e01c80637967d26d11610144578063a7514364116100b6578063b8589d431161007a578063b8589d431461096e578063d73dd62314610999578063dd62ed3e146109d6578063ee6de20714610a13578063f2fde38b14610a51578063fffe42e914610a7a57610272565b8063a751436414610872578063a87430ba1461089d578063a9059cbb146108db578063a942924914610918578063ac59a4461461094357610272565b80638f32d59b116101085780638f32d59b1461077257806395d89b411461079d5780639945a2c8146107c85780639987e9b7146107f15780639e52a3fe1461081c5780639fdf23fc1461084757610272565b80637967d26d1461068b57806380cef6c3146106c8578063814644ec146106f157806382d1a81a1461071c5780638da5cb5b1461074757610272565b80634223fac8116101dd5780635bfce6f2116101a15780635bfce6f2146105575780635d65b1d71461059457806366188463146105bd5780636a793ef7146105fa57806370a082311461062357806372a8f2721461066057610272565b80634223fac81461048257806347062402146104ad57806347d3f40c146104d857806349bd5a5e14610501578063553193ca1461052c57610272565b80631e39232c1161022f5780631e39232c1461035e578063227ac0a81461038957806323b872dd146103b25780632ff2e9dc146103ef578063313ce5671461041a5780633c34ff631461044557610272565b806306fdde0314610277578063095ea7b3146102a25780630f76deeb146102df5780631694505e1461030857806318160ddd1461033357610272565b3661027257005b600080fd5b34801561028357600080fd5b5061028c610aa5565b6040516102999190613922565b60405180910390f35b3480156102ae57600080fd5b506102c960048036038101906102c491906133db565b610ade565b6040516102d691906138d1565b60405180910390f35b3480156102eb57600080fd5b506103066004803603810190610301919061346b565b610b15565b005b34801561031457600080fd5b5061031d610b79565b60405161032a9190613907565b60405180910390f35b34801561033f57600080fd5b50610348610b9d565b6040516103559190613b84565b60405180910390f35b34801561036a57600080fd5b50610373610ba7565b60405161038091906138d1565b60405180910390f35b34801561039557600080fd5b506103b060048036038101906103ab9190613417565b610bba565b005b3480156103be57600080fd5b506103d960048036038101906103d49190613350565b610cbc565b6040516103e691906138d1565b60405180910390f35b3480156103fb57600080fd5b50610404610f11565b6040516104119190613b84565b60405180910390f35b34801561042657600080fd5b5061042f610f34565b60405161043c9190613bc8565b60405180910390f35b34801561045157600080fd5b5061046c600480360381019061046791906132c2565b610f39565b60405161047991906138d1565b60405180910390f35b34801561048e57600080fd5b50610497610f59565b6040516104a49190613b84565b60405180910390f35b3480156104b957600080fd5b506104c2610f5f565b6040516104cf9190613b84565b60405180910390f35b3480156104e457600080fd5b506104ff60048036038101906104fa9190613314565b610f65565b005b34801561050d57600080fd5b506105166110e0565b604051610523919061388d565b60405180910390f35b34801561053857600080fd5b50610541611106565b60405161054e9190613b84565b60405180910390f35b34801561056357600080fd5b5061057e600480360381019061057991906132c2565b61110c565b60405161058b91906138d1565b60405180910390f35b3480156105a057600080fd5b506105bb60048036038101906105b69190613535565b61112c565b005b3480156105c957600080fd5b506105e460048036038101906105df91906133db565b611268565b6040516105f191906138d1565b60405180910390f35b34801561060657600080fd5b50610621600480360381019061061c91906132c2565b611554565b005b34801561062f57600080fd5b5061064a600480360381019061064591906132c2565b611636565b6040516106579190613b84565b60405180910390f35b34801561066c57600080fd5b5061067561167f565b604051610682919061388d565b60405180910390f35b34801561069757600080fd5b506106b260048036038101906106ad91906132c2565b6116a5565b6040516106bf91906138d1565b60405180910390f35b3480156106d457600080fd5b506106ef60048036038101906106ea9190613417565b6116c5565b005b3480156106fd57600080fd5b506107066117c7565b6040516107139190613b84565b60405180910390f35b34801561072857600080fd5b5061073161187a565b60405161073e919061388d565b60405180910390f35b34801561075357600080fd5b5061075c6118a0565b604051610769919061388d565b60405180910390f35b34801561077e57600080fd5b506107876118c9565b60405161079491906138d1565b60405180910390f35b3480156107a957600080fd5b506107b2611920565b6040516107bf9190613922565b60405180910390f35b3480156107d457600080fd5b506107ef60048036038101906107ea919061339f565b611959565b005b3480156107fd57600080fd5b506108066119fb565b6040516108139190613b84565b60405180910390f35b34801561082857600080fd5b50610831611a01565b60405161083e9190613b84565b60405180910390f35b34801561085357600080fd5b5061085c611a07565b604051610869919061388d565b60405180910390f35b34801561087e57600080fd5b50610887611a2d565b6040516108949190613b84565b60405180910390f35b3480156108a957600080fd5b506108c460048036038101906108bf91906132c2565b611a33565b6040516108d2929190613b9f565b60405180910390f35b3480156108e757600080fd5b5061090260048036038101906108fd91906133db565b611a57565b60405161090f91906138d1565b60405180910390f35b34801561092457600080fd5b5061092d611a8e565b60405161093a9190613b84565b60405180910390f35b34801561094f57600080fd5b50610958611a94565b6040516109659190613b84565b60405180910390f35b34801561097a57600080fd5b50610983611a9a565b60405161099091906138ec565b60405180910390f35b3480156109a557600080fd5b506109c060048036038101906109bb91906133db565b611ac0565b6040516109cd91906138d1565b60405180910390f35b3480156109e257600080fd5b506109fd60048036038101906109f89190613314565b611d16565b604051610a0a9190613b84565b60405180910390f35b348015610a1f57600080fd5b50610a3a6004803603810190610a3591906132c2565b611d9d565b604051610a48929190613b9f565b60405180910390f35b348015610a5d57600080fd5b50610a786004803603810190610a7391906132c2565b611f67565b005b348015610a8657600080fd5b50610a8f611fba565b604051610a9c919061388d565b60405180910390f35b6040518060400160405280600381526020017f414954000000000000000000000000000000000000000000000000000000000081525081565b60006040600481610aef9190613c50565b60003690501015610aff57600080fd5b610b0a338585611fe0565b600191505092915050565b610b1d6118c9565b610b5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5390613aa4565b60405180910390fd5b80601060006101000a81548160ff02191690831515021790555050565b7f00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e81565b6000601754905090565b601060009054906101000a900460ff1681565b610bc26118c9565b610c01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf890613aa4565b60405180910390fd5b60005b8251811015610cb7578160026000858481518110610c4b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610caf90614001565b915050610c04565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d24906139e4565b60405180910390fd5b601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115610dec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de3906139c4565b60405180910390fd5b610e7b82601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121ab90919063ffffffff16565b601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f06848484612204565b600190509392505050565b601260ff16600a610f229190613d2a565b6301c9c380610f319190613e48565b81565b601281565b60076020528060005260406000206000915054906101000a900460ff1681565b60035481565b60085481565b610f6d6118c9565b610fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa390613aa4565b60405180910390fd5b81600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b60026020528060005260406000206000915054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b390613b04565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83670de0b6b3a7640000876111f29190613e48565b6040518363ffffffff1660e01b815260040161120f9291906138a8565b602060405180830381600087803b15801561122957600080fd5b505af115801561123d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112619190613494565b5050505050565b600060406004816112799190613c50565b6000369050101561128957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156112c357600080fd5b6000601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808411156113d3576000601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611467565b6113e684826121ab90919063ffffffff16565b601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040516115409190613b84565b60405180910390a360019250505092915050565b61155c6118c9565b61159b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159290613aa4565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60016020528060005260406000206000915054906101000a900460ff1681565b6116cd6118c9565b61170c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170390613aa4565b60405180910390fd5b60005b82518110156117c2578160016000858481518110611756577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806117ba90614001565b91505061170f565b505050565b60006001601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561183357600080fd5b505afa158015611847573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061186b919061350c565b6118759190613c50565b905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b6040518060400160405280600381526020017f414954000000000000000000000000000000000000000000000000000000000081525081565b6119616118c9565b6119a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199790613aa4565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600b5481565b600a5481565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600c5481565b600f6020528060005260406000206000915090508060000154908060010154905082565b60006040600481611a689190613c50565b60003690501015611a7857600080fd5b611a83338585612204565b600191505092915050565b600d5481565b600e5481565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006040600481611ad19190613c50565b60003690501015611ae157600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611b1b57600080fd5b611baa83601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461297290919063ffffffff16565b601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051611d039190613b84565b60405180910390a3600191505092915050565b6000601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000806000600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518060400160405290816000820154815260200160018201548152505090506000611e1b600d54600c546121ab90919063ffffffff16565b90506000611e66611e55611e2d6117c7565b611e47611e38610b9d565b866129d090919063ffffffff16565b612a5690919063ffffffff16565b600e5461297290919063ffffffff16565b90506000611f56611e75610b9d565b611f48611e8f8760200151866121ab90919063ffffffff16565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a082318c6040518263ffffffff1660e01b8152600401611eea919061388d565b60206040518083038186803b158015611f0257600080fd5b505afa158015611f16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f3a919061350c565b6129d090919063ffffffff16565b612a5690919063ffffffff16565b905080829550955050505050915091565b611f6f6118c9565b611fae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa590613aa4565b60405180910390fd5b611fb781612b17565b50565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612050576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204790613ae4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b7906139a4565b60405180910390fd5b80601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161219e9190613b84565b60405180910390a3505050565b6000828211156121f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e790613a24565b60405180910390fd5b81836121fc9190613ea2565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612274576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226b90613944565b60405180910390fd5b600081116122b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ae90613ac4565b60405180910390fd5b601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115612339576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233090613a84565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614801561239857506000600a54145b1561244257600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156123ff5743600a81905550612441565b6000612440576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243790613a04565b60405180910390fd5b5b5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124e35750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561296257600060095414156125f557600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561259d5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156125ae57436009819055506125f0565b60006125ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e690613964565b60405180910390fd5b5b6126e1565b600b544210156126e057600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126a05750600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6126df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d690613b24565b60405180910390fd5b5b5b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156127855750600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612900576000806127978585612bca565b809250819350505081806127a85750805b156127b2576128fd565b60006127dc60646127ce600854876129d090919063ffffffff16565b612a5690919063ffffffff16565b905060006128066127f7600284612a5690919063ffffffff16565b836121ab90919063ffffffff16565b905061281d81600c5461297290919063ffffffff16565b600c819055506000869050600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561287e578790505b612889813084612f2a565b6128c981600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166128c4600287612a5690919063ffffffff16565b612f2a565b6128dc83876121ab90919063ffffffff16565b95506128f38360035461297290919063ffffffff16565b6003819055505050505b50505b612961600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661295a578361295c565b825b6130be565b5b61296d838383612f2a565b505050565b60008082846129819190613c50565b9050838110156129c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129bd90613a44565b60405180910390fd5b8091505092915050565b6000808314156129e35760009050612a50565b600082846129f19190613e48565b90506000841480612a0c5750828482612a0a9190613ca6565b145b612a4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4290613b64565b60405180910390fd5b809150505b92915050565b6000808211612a9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9190613b44565b60405180910390fd5b60008284612aa89190613ca6565b90508284612ab6919061404a565b8184612ac29190613e48565b612acc9190613c50565b8414612b0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0490613a64565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612b87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7e90613984565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000806000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015612c3757600080fd5b505afa158015612c4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6f91906132eb565b90506000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015612cdb57600080fd5b505afa158015612cef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d1391906134bd565b50506dffffffffffffffffffffffffffff16905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401612d84919061388d565b60206040518083038186803b158015612d9c57600080fd5b505afa158015612db0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd4919061350c565b9050600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612e7b573073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612e6357508181115b15612e7a5760008282612e769190613ea2565b1194505b5b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612f20573073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612f0857508181105b15612f1f5760008183612f1b9190613ea2565b1193505b5b5050509250929050565b612f7c81601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121ab90919063ffffffff16565b601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061301181601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461297290919063ffffffff16565b601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130b19190613b84565b60405180910390a3505050565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008061310d84611d9d565b8092508193505050600082118015613129575060008360010154115b1561315957613139308584612f2a565b61315082846000015461297290919063ffffffff16565b83600001819055505b808360010181905550600c54600d541461317e5780600e81905550600c54600d819055505b50505050565b600061319761319284613c08565b613be3565b905080838252602082019050828560208602820111156131b657600080fd5b60005b858110156131e657816131cc88826131f0565b8452602084019350602083019250506001810190506131b9565b5050509392505050565b6000813590506131ff816144c6565b92915050565b600081519050613214816144c6565b92915050565b600082601f83011261322b57600080fd5b813561323b848260208601613184565b91505092915050565b600081359050613253816144dd565b92915050565b600081519050613268816144dd565b92915050565b60008151905061327d816144f4565b92915050565b6000813590506132928161450b565b92915050565b6000815190506132a78161450b565b92915050565b6000815190506132bc81614522565b92915050565b6000602082840312156132d457600080fd5b60006132e2848285016131f0565b91505092915050565b6000602082840312156132fd57600080fd5b600061330b84828501613205565b91505092915050565b6000806040838503121561332757600080fd5b6000613335858286016131f0565b9250506020613346858286016131f0565b9150509250929050565b60008060006060848603121561336557600080fd5b6000613373868287016131f0565b9350506020613384868287016131f0565b925050604061339586828701613283565b9150509250925092565b600080604083850312156133b257600080fd5b60006133c0858286016131f0565b92505060206133d185828601613244565b9150509250929050565b600080604083850312156133ee57600080fd5b60006133fc858286016131f0565b925050602061340d85828601613283565b9150509250929050565b6000806040838503121561342a57600080fd5b600083013567ffffffffffffffff81111561344457600080fd5b6134508582860161321a565b925050602061346185828601613244565b9150509250929050565b60006020828403121561347d57600080fd5b600061348b84828501613244565b91505092915050565b6000602082840312156134a657600080fd5b60006134b484828501613259565b91505092915050565b6000806000606084860312156134d257600080fd5b60006134e08682870161326e565b93505060206134f18682870161326e565b9250506040613502868287016132ad565b9150509250925092565b60006020828403121561351e57600080fd5b600061352c84828501613298565b91505092915050565b60008060006060848603121561354a57600080fd5b600061355886828701613283565b9350506020613569868287016131f0565b925050604061357a868287016131f0565b9150509250925092565b61358d81613ed6565b82525050565b61359c81613ee8565b82525050565b6135ab81613f55565b82525050565b6135ba81613f79565b82525050565b60006135cb82613c34565b6135d58185613c3f565b93506135e5818560208601613f9d565b6135ee81614108565b840191505092915050565b6000613606602583613c3f565b915061361182614126565b604082019050919050565b6000613629601883613c3f565b915061363482614175565b602082019050919050565b600061364c602683613c3f565b91506136578261419e565b604082019050919050565b600061366f602283613c3f565b915061367a826141ed565b604082019050919050565b6000613692601183613c3f565b915061369d8261423c565b602082019050919050565b60006136b5601083613c3f565b91506136c082614265565b602082019050919050565b60006136d8601c83613c3f565b91506136e38261428e565b602082019050919050565b60006136fb600783613c3f565b9150613706826142b7565b602082019050919050565b600061371e600783613c3f565b9150613729826142e0565b602082019050919050565b6000613741600783613c3f565b915061374c82614309565b602082019050919050565b6000613764601083613c3f565b915061376f82614332565b602082019050919050565b6000613787602083613c3f565b91506137928261435b565b602082019050919050565b60006137aa602983613c3f565b91506137b582614384565b604082019050919050565b60006137cd602483613c3f565b91506137d8826143d3565b604082019050919050565b60006137f0600e83613c3f565b91506137fb82614422565b602082019050919050565b6000613813601383613c3f565b915061381e8261444b565b602082019050919050565b6000613836600983613c3f565b915061384182614474565b602082019050919050565b6000613859600783613c3f565b91506138648261449d565b602082019050919050565b61387881613f2e565b82525050565b61388781613f48565b82525050565b60006020820190506138a26000830184613584565b92915050565b60006040820190506138bd6000830185613584565b6138ca602083018461386f565b9392505050565b60006020820190506138e66000830184613593565b92915050565b600060208201905061390160008301846135a2565b92915050565b600060208201905061391c60008301846135b1565b92915050565b6000602082019050818103600083015261393c81846135c0565b905092915050565b6000602082019050818103600083015261395d816135f9565b9050919050565b6000602082019050818103600083015261397d8161361c565b9050919050565b6000602082019050818103600083015261399d8161363f565b9050919050565b600060208201905081810360008301526139bd81613662565b9050919050565b600060208201905081810360008301526139dd81613685565b9050919050565b600060208201905081810360008301526139fd816136a8565b9050919050565b60006020820190508181036000830152613a1d816136cb565b9050919050565b60006020820190508181036000830152613a3d816136ee565b9050919050565b60006020820190508181036000830152613a5d81613711565b9050919050565b60006020820190508181036000830152613a7d81613734565b9050919050565b60006020820190508181036000830152613a9d81613757565b9050919050565b60006020820190508181036000830152613abd8161377a565b9050919050565b60006020820190508181036000830152613add8161379d565b9050919050565b60006020820190508181036000830152613afd816137c0565b9050919050565b60006020820190508181036000830152613b1d816137e3565b9050919050565b60006020820190508181036000830152613b3d81613806565b9050919050565b60006020820190508181036000830152613b5d81613829565b9050919050565b60006020820190508181036000830152613b7d8161384c565b9050919050565b6000602082019050613b99600083018461386f565b92915050565b6000604082019050613bb4600083018561386f565b613bc1602083018461386f565b9392505050565b6000602082019050613bdd600083018461387e565b92915050565b6000613bed613bfe565b9050613bf98282613fd0565b919050565b6000604051905090565b600067ffffffffffffffff821115613c2357613c226140d9565b5b602082029050602081019050919050565b600081519050919050565b600082825260208201905092915050565b6000613c5b82613f2e565b9150613c6683613f2e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613c9b57613c9a61407b565b5b828201905092915050565b6000613cb182613f2e565b9150613cbc83613f2e565b925082613ccc57613ccb6140aa565b5b828204905092915050565b6000808291508390505b6001851115613d2157808604811115613cfd57613cfc61407b565b5b6001851615613d0c5780820291505b8081029050613d1a85614119565b9450613ce1565b94509492505050565b6000613d3582613f2e565b9150613d4083613f2e565b9250613d6d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613d75565b905092915050565b600082613d855760019050613e41565b81613d935760009050613e41565b8160018114613da95760028114613db357613de2565b6001915050613e41565b60ff841115613dc557613dc461407b565b5b8360020a915084821115613ddc57613ddb61407b565b5b50613e41565b5060208310610133831016604e8410600b8410161715613e175782820a905083811115613e1257613e1161407b565b5b613e41565b613e248484846001613cd7565b92509050818404811115613e3b57613e3a61407b565b5b81810290505b9392505050565b6000613e5382613f2e565b9150613e5e83613f2e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613e9757613e9661407b565b5b828202905092915050565b6000613ead82613f2e565b9150613eb883613f2e565b925082821015613ecb57613eca61407b565b5b828203905092915050565b6000613ee182613f0e565b9050919050565b60008115159050919050565b60006dffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b6000613f6082613f67565b9050919050565b6000613f7282613f0e565b9050919050565b6000613f8482613f8b565b9050919050565b6000613f9682613f0e565b9050919050565b60005b83811015613fbb578082015181840152602081019050613fa0565b83811115613fca576000848401525b50505050565b613fd982614108565b810181811067ffffffffffffffff82111715613ff857613ff76140d9565b5b80604052505050565b600061400c82613f2e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561403f5761403e61407b565b5b600182019050919050565b600061405582613f2e565b915061406083613f2e565b9250826140705761406f6140aa565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f42455032303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f54726164696e67206e6f742079657420656e61626c6564210000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f5f66726f6d20616c6c6f776564206c6f77000000000000000000000000000000600082015250565b7f746f20646f206e6f742069732030783000000000000000000000000000000000600082015250565b7f424e422054726164696e67206e6f742079657420656e61626c65642100000000600082015250565b7f7375622065727200000000000000000000000000000000000000000000000000600082015250565b7f6164642065727200000000000000000000000000000000000000000000000000600082015250565b7f6469762065727200000000000000000000000000000000000000000000000000600082015250565b7f66726f6d2062616c616e6365206c6f7700000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f6e6f7420636c61696d546f6b656e000000000000000000000000000000000000600082015250565b7f696e2063616e5478426c6f636b436f756e742100000000000000000000000000600082015250565b7f6469762030206572720000000000000000000000000000000000000000000000600082015250565b7f6d756c2065727200000000000000000000000000000000000000000000000000600082015250565b6144cf81613ed6565b81146144da57600080fd5b50565b6144e681613ee8565b81146144f157600080fd5b50565b6144fd81613ef4565b811461450857600080fd5b50565b61451481613f2e565b811461451f57600080fd5b50565b61452b81613f38565b811461453657600080fd5b5056fea2646970667358221220213360f4b5a5b439303acaa8670b5a39cffc7c6f07a55bf4128356760d2e954c64736f6c63430008010033
Deployed Bytecode Sourcemap
24972:1358:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25058:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22260:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14002:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14475:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21925:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13965:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13448:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21369:363;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25144:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25100:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12505:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12359:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12556:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12716:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14533:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12588:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12309:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16366:251;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24263:474;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12970:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21740:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12432:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12260:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13238:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15764:118;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12468:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2471:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2837:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25014:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13116:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12665:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12625:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14568:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13698:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13915:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;20883:203;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13742:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13785:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14606:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23372:417;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22766:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15894:464;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;3589:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12396:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25058:35;;;;;;;;;;;;;;;;;;;:::o;22260:175::-;22360:4;22334:6;15715:1;15708:4;:8;;;;:::i;:::-;15690;;:15;;:26;15687:56;;;15727:8;;;15687:56;22373:38:::1;22382:10;22394:8;22404:6;22373:8;:38::i;:::-;22425:4;22418:11;;22260:175:::0;;;;;:::o;14002:91::-;2683:9;:7;:9::i;:::-;2675:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;14082:3:::1;14068:11;;:17;;;;;;;;;;;;;;;;;;14002:91:::0;:::o;14475:51::-;;;:::o;21925:94::-;21978:7;22001:12;;21994:19;;21925:94;:::o;13965:30::-;;;;;;;;;;;;;:::o;13448:206::-;2683:9;:7;:9::i;:::-;2675:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;13548:6:::1;13544:103;13564:10;:17;13560:1;:21;13544:103;;;13632:3;13603:11;:26;13615:10;13626:1;13615:13;;;;;;;;;;;;;;;;;;;;;;13603:26;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;13583:3;;;;;:::i;:::-;;;;13544:103;;;;13448:206:::0;;:::o;21369:363::-;21460:4;21496:1;21481:17;;:3;:17;;;;21473:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;21544:7;:14;21552:5;21544:14;;;;;;;;;;;;;;;:26;21559:10;21544:26;;;;;;;;;;;;;;;;21534:6;:36;;21526:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;21628:38;21659:6;21628:7;:14;21636:5;21628:14;;;;;;;;;;;;;;;:26;21643:10;21628:26;;;;;;;;;;;;;;;;:30;;:38;;;;:::i;:::-;21599:7;:14;21607:5;21599:14;;;;;;;;;;;;;;;:26;21614:10;21599:26;;;;;;;;;;;;;;;:67;;;;21679:29;21689:5;21696:3;21701:6;21679:9;:29::i;:::-;21722:4;21715:11;;21369:363;;;;;:::o;25144:85::-;25133:2;25211:17;;25205:2;:23;;;;:::i;:::-;25185:16;:44;;;;:::i;:::-;25144:85;:::o;25100:35::-;25133:2;25100:35;:::o;12505:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;12359:30::-;;;;:::o;12556:25::-;;;;:::o;12716:248::-;2683:9;:7;:9::i;:::-;2675:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;12829:9:::1;12812:14;;:26;;;;;;;;;;;;;;;;;;12867:10;12849:15;;:28;;;;;;;;;;;;;;;;;;12912:4;12888:10:::0;:21:::1;12899:9;12888:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;12952:4;12927:10:::0;:22:::1;12938:10;12927:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;12716:248:::0;;:::o;14533:28::-;;;;;;;;;;;;;:::o;12588:30::-;;;;:::o;12309:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;16366:251::-;16475:15;;;;;;;;;;;16461:29;;:10;:29;;;16453:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;16520:16;16550:6;16520:37;;16568:5;:14;;;16583:5;16601:6;16590:7;:18;;;;:::i;:::-;16568:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16366:251;;;;:::o;24263:474::-;24370:4;24353:6;15715:1;15708:4;:8;;;;:::i;:::-;15690;;:15;;:26;15687:56;;;15727:8;;;15687:56;24411:1:::1;24391:22;;:8;:22;;;;24383:31;;;::::0;::::1;;24421:13;24437:7;:19;24445:10;24437:19;;;;;;;;;;;;;;;:29;24457:8;24437:29;;;;;;;;;;;;;;;;24421:45;;24496:8;24477:16;:27;24473:168;;;24547:1;24515:7;:19;24523:10;24515:19;;;;;;;;;;;;;;;:29;24535:8;24515:29;;;;;;;;;;;;;;;:33;;;;24473:168;;;24603:30;24616:16;24603:8;:12;;:30;;;;:::i;:::-;24571:7;:19;24579:10;24571:19;;;;;;;;;;;;;;;:29;24591:8;24571:29;;;;;;;;;;;;;;;:62;;;;24473:168;24673:8;24652:61;;24661:10;24652:61;;;24683:7;:19;24691:10;24683:19;;;;;;;;;;;;;;;:29;24703:8;24683:29;;;;;;;;;;;;;;;;24652:61;;;;;;:::i;:::-;;;;;;;;24727:4;24720:11;;;24263:474:::0;;;;;:::o;12970:140::-;2683:9;:7;:9::i;:::-;2675:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;13062:5:::1;13045:14;;:22;;;;;;;;;;;;;;;;;;13098:4;13078:10:::0;:17:::1;13089:5;13078:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;12970:140:::0;:::o;21740:118::-;21805:15;21836:8;:16;21845:6;21836:16;;;;;;;;;;;;;;;;21829:23;;21740:118;;;:::o;12432:29::-;;;;;;;;;;;;;:::o;12260:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;13238:204::-;2683:9;:7;:9::i;:::-;2675:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;13337:6:::1;13333:102;13353:10;:17;13349:1;:21;13333:102;;;13420:3;13392:10;:25;13403:10;13414:1;13403:13;;;;;;;;;;;;;;;;;;;;;;13392:25;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;13372:3;;;;;:::i;:::-;;;;13333:102;;;;13238:204:::0;;:::o;15764:118::-;15816:7;15873:1;15843:15;;;;;;;;;;;:27;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:31;;;;:::i;:::-;15836:38;;15764:118;:::o;12468:30::-;;;;;;;;;;;;;:::o;2471:79::-;2509:7;2536:6;;;;;;;;;;;2529:13;;2471:79;:::o;2837:92::-;2877:4;2915:6;;;;;;;;;;;2901:20;;:10;:20;;;2894:27;;2837:92;:::o;25014:37::-;;;;;;;;;;;;;;;;;;;:::o;13116:116::-;2683:9;:7;:9::i;:::-;2675:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;13221:3:::1;13199:12;:19;13212:5;13199:19;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;13116:116:::0;;:::o;12665:42::-;;;;:::o;12625:33::-;;;;:::o;14568:31::-;;;;;;;;;;;;;:::o;13698:35::-;;;;:::o;13915:43::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;20883:203::-;20979:4;20953:6;15715:1;15708:4;:8;;;;:::i;:::-;15690;;:15;;:26;15687:56;;;15727:8;;;15687:56;21028:34:::1;21038:10;21050:3;21055:6;21028:9;:34::i;:::-;21076:4;21069:11;;20883:203:::0;;;;;:::o;13742:36::-;;;;:::o;13785:34::-;;;;:::o;14606:33::-;;;;;;;;;;;;;:::o;23372:417::-;23474:4;23457:6;15715:1;15708:4;:8;;;;:::i;:::-;15690;;:15;;:26;15687:56;;;15727:8;;;15687:56;23515:1:::1;23495:22;;:8;:22;;;;23487:31;;;::::0;::::1;;23646:46;23680:11;23646:7;:19;23654:10;23646:19;;;;;;;;;;;;;;;:29;23666:8;23646:29;;;;;;;;;;;;;;;;:33;;:46;;;;:::i;:::-;23614:7;:19;23622:10;23614:19;;;;;;;;;;;;;;;:29;23634:8;23614:29;;;;;;;;;;;;;;;:78;;;;23725:8;23704:61;;23713:10;23704:61;;;23735:7;:19;23743:10;23735:19;;;;;;;;;;;;;;;:29;23755:8;23735:29;;;;;;;;;;;;;;;;23704:61;;;;;;:::i;:::-;;;;;;;;23779:4;23772:11;;23372:417:::0;;;;;:::o;22766:137::-;22849:7;22872;:15;22880:6;22872:15;;;;;;;;;;;;;;;:25;22888:8;22872:25;;;;;;;;;;;;;;;;22865:32;;22766:137;;;;:::o;15894:464::-;15952:7;15961;15981:22;16006:5;:12;16012:5;16006:12;;;;;;;;;;;;;;;15981:37;;;;;;;;;;;;;;;;;;;;;;;;;;;16029:17;16049:39;16070:17;;16049:16;;:20;;:39;;;;:::i;:::-;16029:59;;16099:17;16119:76;16139:55;16172:21;:19;:21::i;:::-;16139:28;16153:13;:11;:13::i;:::-;16139:9;:13;;:28;;;;:::i;:::-;:32;;:55;;;;:::i;:::-;16119:15;;:19;;:76;;;;:::i;:::-;16099:96;;16206:16;16225:87;16298:13;:11;:13::i;:::-;16225:68;16262:30;16276:4;:15;;;16262:9;:13;;:30;;;;:::i;:::-;16225:15;;;;;;;;;;;:25;;;16251:5;16225:32;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:36;;:68;;;;:::i;:::-;:72;;:87;;;;:::i;:::-;16206:106;;16331:8;16340:9;16323:27;;;;;;;;15894:464;;;:::o;3589:109::-;2683:9;:7;:9::i;:::-;2675:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;3662:28:::1;3681:8;3662:18;:28::i;:::-;3589:109:::0;:::o;12396:29::-;;;;;;;;;;;;;:::o;20381:331::-;20491:1;20474:19;;:5;:19;;;;20466:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20572:1;20553:21;;:7;:21;;;;20545:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20650:6;20624:7;:14;20632:5;20624:14;;;;;;;;;;;;;;;:23;20639:7;20624:23;;;;;;;;;;;;;;;:32;;;;20688:7;20672:32;;20681:5;20672:32;;;20697:6;20672:32;;;;;;:::i;:::-;;;;;;;;20381:331;;;:::o;516:125::-;574:7;603:1;598;:6;;590:26;;;;;;;;;;;;:::i;:::-;;;;;;;;;634:1;630;:5;;;;:::i;:::-;623:12;;516:125;;;;:::o;17257:2230::-;17395:1;17379:18;;:4;:18;;;;17371:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17467:1;17458:6;:10;17450:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;17543:8;:14;17552:4;17543:14;;;;;;;;;;;;;;;;17533:6;:24;;17525:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;17613:16;;;;;;;;;;;17607:22;;:2;:22;;;:49;;;;;17655:1;17633:18;;:23;17607:49;17603:288;;;17689:14;;;;;;;;;;;17681:22;;:4;:22;;;17677:199;;;17749:12;17728:18;:33;;;;17677:199;;;17818:5;17810:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;17677:199;17603:288;17905:12;:18;17918:4;17905:18;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;17927:12;:16;17940:2;17927:16;;;;;;;;;;;;;;;;;;;;;;;;;17905:38;17901:1536;;;17983:1;17964:15;;:20;17960:421;;;18017:14;;;;;;;;;;;18009:22;;:4;:22;;;:45;;;;;18041:13;;;;;;;;;;;18035:19;;:2;:19;;;18009:45;18005:215;;;18097:12;18079:15;:30;;;;18005:215;;;18166:5;18158:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;18005:215;17960:421;;;18263:14;;18245:15;:32;18241:140;;;18305:11;:17;18317:4;18305:17;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;18326:11;:15;18338:2;18326:15;;;;;;;;;;;;;;;;;;;;;;;;;18305:36;18297:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18241:140;17960:421;18400:10;:16;18411:4;18400:16;;;;;;;;;;;;;;;;;;;;;;;;;18399:17;:36;;;;;18421:10;:14;18432:2;18421:14;;;;;;;;;;;;;;;;;;;;;;;;;18420:15;18399:36;18395:975;;;18456:19;18494;18568:21;18581:4;18586:2;18568:12;:21::i;:::-;18532:57;;;;;;;;18611:14;:32;;;;18629:14;18611:32;18608:746;;;;;;18694:17;18714:27;18737:3;18714:18;18725:6;;18714;:10;;:18;;;;:::i;:::-;:22;;:27;;;;:::i;:::-;18694:47;;18764:16;18783:31;18797:16;18811:1;18797:9;:13;;:16;;;;:::i;:::-;18783:9;:13;;:31;;;;:::i;:::-;18764:50;;18860:30;18881:8;18860:16;;:20;;:30;;;;:::i;:::-;18841:16;:49;;;;18913:18;18934:2;18913:23;;18963:12;:18;18976:4;18963:18;;;;;;;;;;;;;;;;;;;;;;;;;18959:99;;;19030:4;19017:17;;18959:99;19080:51;19095:10;19115:4;19122:8;19080:14;:51::i;:::-;19155:60;19170:10;19182:14;;;;;;;;;;;19198:16;19212:1;19198:9;:13;;:16;;;;:::i;:::-;19155:14;:60::i;:::-;19250:21;19261:9;19250:6;:10;;:21;;;;:::i;:::-;19241:30;;19308:26;19324:9;19308:11;;:15;;:26;;;;:::i;:::-;19294:11;:40;;;;18608:746;;;;18395:975;;;19384:41;19398:12;:18;19411:4;19398:18;;;;;;;;;;;;;;;;;;;;;;;;;:26;;19420:4;19398:26;;;19417:2;19398:26;19384:13;:41::i;:::-;17901:1536;19447:32;19462:4;19468:2;19472:6;19447:14;:32::i;:::-;17257:2230;;;:::o;253:145::-;311:7;327:9;343:1;339;:5;;;;:::i;:::-;327:17;;364:1;359;:6;;351:26;;;;;;;;;;;;:::i;:::-;;;;;;;;;391:1;384:8;;;253:145;;;;:::o;714:202::-;772:7;797:1;792;:6;788:37;;;816:1;809:8;;;;788:37;831:9;847:1;843;:5;;;;:::i;:::-;831:17;;868:1;863;:6;:20;;;;882:1;877;873;:5;;;;:::i;:::-;:10;863:20;855:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;909:1;902:8;;;714:202;;;;;:::o;1003:238::-;1061:7;1089:1;1085;:5;1077:27;;;;;;;;;;;;:::i;:::-;;;;;;;;;1111:9;1127:1;1123;:5;;;;:::i;:::-;1111:17;;1160:1;1156;:5;;;;:::i;:::-;1152:1;1148;:5;;;;:::i;:::-;:13;;;;:::i;:::-;1143:1;:18;1135:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;1234:1;1227:8;;;1003:238;;;;:::o;3804:232::-;3898:1;3878:22;;:8;:22;;;;3870:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;4020:8;4011:6;;:17;;;;;;;;;;;;;;;;;;3804:232;:::o;19732:641::-;19800:10;19812;19834:14;19874:13;;;;;;;;;;;19851:45;;;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19834:64;;19910:7;19946:13;;;;;;;;;;;19923:50;;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19909:66;;;;;;19986:9;20009:6;19998:28;;;20035:13;;;;;;;;;;;19998:52;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19986:64;;20065:12;:16;20078:2;20065:16;;;;;;;;;;;;;;;;;;;;;;;;;20061:146;;;20120:4;20102:23;;:6;:23;;;;:36;;;;;20136:2;20129:4;:9;20102:36;20098:98;;;20179:1;20174:2;20167:4;:9;;;;:::i;:::-;:13;20159:21;;20098:98;20061:146;20221:12;:18;20234:4;20221:18;;;;;;;;;;;;;;;;;;;;;;;;;20217:149;;;20278:4;20260:23;;:6;:23;;;;:36;;;;;20294:2;20287:4;:9;20260:36;20256:99;;;20337:1;20330:4;20325:2;:9;;;;:::i;:::-;:13;20317:21;;20256:99;20217:149;19732:641;;;;;;;;:::o;19495:229::-;19598:26;19617:6;19598:8;:14;19607:4;19598:14;;;;;;;;;;;;;;;;:18;;:26;;;;:::i;:::-;19581:8;:14;19590:4;19581:14;;;;;;;;;;;;;;;:43;;;;19650:24;19667:6;19650:8;:12;19659:2;19650:12;;;;;;;;;;;;;;;;:16;;:24;;;;:::i;:::-;19635:8;:12;19644:2;19635:12;;;;;;;;;;;;;;;:39;;;;19705:2;19690:26;;19699:4;19690:26;;;19709:6;19690:26;;;;;;:::i;:::-;;;;;;;;19495:229;;;:::o;16625:624::-;16682:23;16708:5;:12;16714:5;16708:12;;;;;;;;;;;;;;;16682:38;;16741:16;16772:17;16828:19;16841:5;16828:12;:19::i;:::-;16804:43;;;;;;;;16873:1;16862:8;:12;:35;;;;;16896:1;16878:4;:15;;;:19;16862:35;16858:180;;;16914:46;16937:4;16944:5;16951:8;16914:14;:46::i;:::-;16993:28;17012:8;16993:4;:14;;;:18;;:28;;;;:::i;:::-;16976:4;:14;;:45;;;;16858:180;17074:9;17056:4;:15;;:27;;;;17119:16;;17098:17;;:37;17094:148;;17170:9;17152:15;:27;;;;17214:16;;17194:17;:36;;;;17094:148;16625:624;;;;:::o;24:623:1:-;;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;274:6;267:5;260:21;300:4;293:5;289:16;282:23;;325:6;375:3;367:4;359:6;355:17;350:3;346:27;343:36;340:2;;;392:1;389;382:12;340:2;420:1;405:236;430:6;427:1;424:13;405:236;;;497:3;525:37;558:3;546:10;525:37;:::i;:::-;520:3;513:50;592:4;587:3;583:14;576:21;;626:4;621:3;617:14;610:21;;465:176;452:1;449;445:9;440:14;;405:236;;;409:14;126:521;;;;;;;:::o;653:139::-;;737:6;724:20;715:29;;753:33;780:5;753:33;:::i;:::-;705:87;;;;:::o;798:143::-;;886:6;880:13;871:22;;902:33;929:5;902:33;:::i;:::-;861:80;;;;:::o;964:303::-;;1084:3;1077:4;1069:6;1065:17;1061:27;1051:2;;1102:1;1099;1092:12;1051:2;1142:6;1129:20;1167:94;1257:3;1249:6;1242:4;1234:6;1230:17;1167:94;:::i;:::-;1158:103;;1041:226;;;;;:::o;1273:133::-;;1354:6;1341:20;1332:29;;1370:30;1394:5;1370:30;:::i;:::-;1322:84;;;;:::o;1412:137::-;;1497:6;1491:13;1482:22;;1513:30;1537:5;1513:30;:::i;:::-;1472:77;;;;:::o;1555:143::-;;1643:6;1637:13;1628:22;;1659:33;1686:5;1659:33;:::i;:::-;1618:80;;;;:::o;1704:139::-;;1788:6;1775:20;1766:29;;1804:33;1831:5;1804:33;:::i;:::-;1756:87;;;;:::o;1849:143::-;;1937:6;1931:13;1922:22;;1953:33;1980:5;1953:33;:::i;:::-;1912:80;;;;:::o;1998:141::-;;2085:6;2079:13;2070:22;;2101:32;2127:5;2101:32;:::i;:::-;2060:79;;;;:::o;2145:262::-;;2253:2;2241:9;2232:7;2228:23;2224:32;2221:2;;;2269:1;2266;2259:12;2221:2;2312:1;2337:53;2382:7;2373:6;2362:9;2358:22;2337:53;:::i;:::-;2327:63;;2283:117;2211:196;;;;:::o;2413:284::-;;2532:2;2520:9;2511:7;2507:23;2503:32;2500:2;;;2548:1;2545;2538:12;2500:2;2591:1;2616:64;2672:7;2663:6;2652:9;2648:22;2616:64;:::i;:::-;2606:74;;2562:128;2490:207;;;;:::o;2703:407::-;;;2828:2;2816:9;2807:7;2803:23;2799:32;2796:2;;;2844:1;2841;2834:12;2796:2;2887:1;2912:53;2957:7;2948:6;2937:9;2933:22;2912:53;:::i;:::-;2902:63;;2858:117;3014:2;3040:53;3085:7;3076:6;3065:9;3061:22;3040:53;:::i;:::-;3030:63;;2985:118;2786:324;;;;;:::o;3116:552::-;;;;3258:2;3246:9;3237:7;3233:23;3229:32;3226:2;;;3274:1;3271;3264:12;3226:2;3317:1;3342:53;3387:7;3378:6;3367:9;3363:22;3342:53;:::i;:::-;3332:63;;3288:117;3444:2;3470:53;3515:7;3506:6;3495:9;3491:22;3470:53;:::i;:::-;3460:63;;3415:118;3572:2;3598:53;3643:7;3634:6;3623:9;3619:22;3598:53;:::i;:::-;3588:63;;3543:118;3216:452;;;;;:::o;3674:401::-;;;3796:2;3784:9;3775:7;3771:23;3767:32;3764:2;;;3812:1;3809;3802:12;3764:2;3855:1;3880:53;3925:7;3916:6;3905:9;3901:22;3880:53;:::i;:::-;3870:63;;3826:117;3982:2;4008:50;4050:7;4041:6;4030:9;4026:22;4008:50;:::i;:::-;3998:60;;3953:115;3754:321;;;;;:::o;4081:407::-;;;4206:2;4194:9;4185:7;4181:23;4177:32;4174:2;;;4222:1;4219;4212:12;4174:2;4265:1;4290:53;4335:7;4326:6;4315:9;4311:22;4290:53;:::i;:::-;4280:63;;4236:117;4392:2;4418:53;4463:7;4454:6;4443:9;4439:22;4418:53;:::i;:::-;4408:63;;4363:118;4164:324;;;;;:::o;4494:544::-;;;4641:2;4629:9;4620:7;4616:23;4612:32;4609:2;;;4657:1;4654;4647:12;4609:2;4728:1;4717:9;4713:17;4700:31;4758:18;4750:6;4747:30;4744:2;;;4790:1;4787;4780:12;4744:2;4818:78;4888:7;4879:6;4868:9;4864:22;4818:78;:::i;:::-;4808:88;;4671:235;4945:2;4971:50;5013:7;5004:6;4993:9;4989:22;4971:50;:::i;:::-;4961:60;;4916:115;4599:439;;;;;:::o;5044:256::-;;5149:2;5137:9;5128:7;5124:23;5120:32;5117:2;;;5165:1;5162;5155:12;5117:2;5208:1;5233:50;5275:7;5266:6;5255:9;5251:22;5233:50;:::i;:::-;5223:60;;5179:114;5107:193;;;;:::o;5306:278::-;;5422:2;5410:9;5401:7;5397:23;5393:32;5390:2;;;5438:1;5435;5428:12;5390:2;5481:1;5506:61;5559:7;5550:6;5539:9;5535:22;5506:61;:::i;:::-;5496:71;;5452:125;5380:204;;;;:::o;5590:594::-;;;;5742:2;5730:9;5721:7;5717:23;5713:32;5710:2;;;5758:1;5755;5748:12;5710:2;5801:1;5826:64;5882:7;5873:6;5862:9;5858:22;5826:64;:::i;:::-;5816:74;;5772:128;5939:2;5965:64;6021:7;6012:6;6001:9;5997:22;5965:64;:::i;:::-;5955:74;;5910:129;6078:2;6104:63;6159:7;6150:6;6139:9;6135:22;6104:63;:::i;:::-;6094:73;;6049:128;5700:484;;;;;:::o;6190:284::-;;6309:2;6297:9;6288:7;6284:23;6280:32;6277:2;;;6325:1;6322;6315:12;6277:2;6368:1;6393:64;6449:7;6440:6;6429:9;6425:22;6393:64;:::i;:::-;6383:74;;6339:128;6267:207;;;;:::o;6480:552::-;;;;6622:2;6610:9;6601:7;6597:23;6593:32;6590:2;;;6638:1;6635;6628:12;6590:2;6681:1;6706:53;6751:7;6742:6;6731:9;6727:22;6706:53;:::i;:::-;6696:63;;6652:117;6808:2;6834:53;6879:7;6870:6;6859:9;6855:22;6834:53;:::i;:::-;6824:63;;6779:118;6936:2;6962:53;7007:7;6998:6;6987:9;6983:22;6962:53;:::i;:::-;6952:63;;6907:118;6580:452;;;;;:::o;7038:118::-;7125:24;7143:5;7125:24;:::i;:::-;7120:3;7113:37;7103:53;;:::o;7162:109::-;7243:21;7258:5;7243:21;:::i;:::-;7238:3;7231:34;7221:50;;:::o;7277:167::-;7382:55;7431:5;7382:55;:::i;:::-;7377:3;7370:68;7360:84;;:::o;7450:183::-;7563:63;7620:5;7563:63;:::i;:::-;7558:3;7551:76;7541:92;;:::o;7639:364::-;;7755:39;7788:5;7755:39;:::i;:::-;7810:71;7874:6;7869:3;7810:71;:::i;:::-;7803:78;;7890:52;7935:6;7930:3;7923:4;7916:5;7912:16;7890:52;:::i;:::-;7967:29;7989:6;7967:29;:::i;:::-;7962:3;7958:39;7951:46;;7731:272;;;;;:::o;8009:366::-;;8172:67;8236:2;8231:3;8172:67;:::i;:::-;8165:74;;8248:93;8337:3;8248:93;:::i;:::-;8366:2;8361:3;8357:12;8350:19;;8155:220;;;:::o;8381:366::-;;8544:67;8608:2;8603:3;8544:67;:::i;:::-;8537:74;;8620:93;8709:3;8620:93;:::i;:::-;8738:2;8733:3;8729:12;8722:19;;8527:220;;;:::o;8753:366::-;;8916:67;8980:2;8975:3;8916:67;:::i;:::-;8909:74;;8992:93;9081:3;8992:93;:::i;:::-;9110:2;9105:3;9101:12;9094:19;;8899:220;;;:::o;9125:366::-;;9288:67;9352:2;9347:3;9288:67;:::i;:::-;9281:74;;9364:93;9453:3;9364:93;:::i;:::-;9482:2;9477:3;9473:12;9466:19;;9271:220;;;:::o;9497:366::-;;9660:67;9724:2;9719:3;9660:67;:::i;:::-;9653:74;;9736:93;9825:3;9736:93;:::i;:::-;9854:2;9849:3;9845:12;9838:19;;9643:220;;;:::o;9869:366::-;;10032:67;10096:2;10091:3;10032:67;:::i;:::-;10025:74;;10108:93;10197:3;10108:93;:::i;:::-;10226:2;10221:3;10217:12;10210:19;;10015:220;;;:::o;10241:366::-;;10404:67;10468:2;10463:3;10404:67;:::i;:::-;10397:74;;10480:93;10569:3;10480:93;:::i;:::-;10598:2;10593:3;10589:12;10582:19;;10387:220;;;:::o;10613:365::-;;10776:66;10840:1;10835:3;10776:66;:::i;:::-;10769:73;;10851:93;10940:3;10851:93;:::i;:::-;10969:2;10964:3;10960:12;10953:19;;10759:219;;;:::o;10984:365::-;;11147:66;11211:1;11206:3;11147:66;:::i;:::-;11140:73;;11222:93;11311:3;11222:93;:::i;:::-;11340:2;11335:3;11331:12;11324:19;;11130:219;;;:::o;11355:365::-;;11518:66;11582:1;11577:3;11518:66;:::i;:::-;11511:73;;11593:93;11682:3;11593:93;:::i;:::-;11711:2;11706:3;11702:12;11695:19;;11501:219;;;:::o;11726:366::-;;11889:67;11953:2;11948:3;11889:67;:::i;:::-;11882:74;;11965:93;12054:3;11965:93;:::i;:::-;12083:2;12078:3;12074:12;12067:19;;11872:220;;;:::o;12098:366::-;;12261:67;12325:2;12320:3;12261:67;:::i;:::-;12254:74;;12337:93;12426:3;12337:93;:::i;:::-;12455:2;12450:3;12446:12;12439:19;;12244:220;;;:::o;12470:366::-;;12633:67;12697:2;12692:3;12633:67;:::i;:::-;12626:74;;12709:93;12798:3;12709:93;:::i;:::-;12827:2;12822:3;12818:12;12811:19;;12616:220;;;:::o;12842:366::-;;13005:67;13069:2;13064:3;13005:67;:::i;:::-;12998:74;;13081:93;13170:3;13081:93;:::i;:::-;13199:2;13194:3;13190:12;13183:19;;12988:220;;;:::o;13214:366::-;;13377:67;13441:2;13436:3;13377:67;:::i;:::-;13370:74;;13453:93;13542:3;13453:93;:::i;:::-;13571:2;13566:3;13562:12;13555:19;;13360:220;;;:::o;13586:366::-;;13749:67;13813:2;13808:3;13749:67;:::i;:::-;13742:74;;13825:93;13914:3;13825:93;:::i;:::-;13943:2;13938:3;13934:12;13927:19;;13732:220;;;:::o;13958:365::-;;14121:66;14185:1;14180:3;14121:66;:::i;:::-;14114:73;;14196:93;14285:3;14196:93;:::i;:::-;14314:2;14309:3;14305:12;14298:19;;14104:219;;;:::o;14329:365::-;;14492:66;14556:1;14551:3;14492:66;:::i;:::-;14485:73;;14567:93;14656:3;14567:93;:::i;:::-;14685:2;14680:3;14676:12;14669:19;;14475:219;;;:::o;14700:118::-;14787:24;14805:5;14787:24;:::i;:::-;14782:3;14775:37;14765:53;;:::o;14824:112::-;14907:22;14923:5;14907:22;:::i;:::-;14902:3;14895:35;14885:51;;:::o;14942:222::-;;15073:2;15062:9;15058:18;15050:26;;15086:71;15154:1;15143:9;15139:17;15130:6;15086:71;:::i;:::-;15040:124;;;;:::o;15170:332::-;;15329:2;15318:9;15314:18;15306:26;;15342:71;15410:1;15399:9;15395:17;15386:6;15342:71;:::i;:::-;15423:72;15491:2;15480:9;15476:18;15467:6;15423:72;:::i;:::-;15296:206;;;;;:::o;15508:210::-;;15633:2;15622:9;15618:18;15610:26;;15646:65;15708:1;15697:9;15693:17;15684:6;15646:65;:::i;:::-;15600:118;;;;:::o;15724:258::-;;15873:2;15862:9;15858:18;15850:26;;15886:89;15972:1;15961:9;15957:17;15948:6;15886:89;:::i;:::-;15840:142;;;;:::o;15988:274::-;;16145:2;16134:9;16130:18;16122:26;;16158:97;16252:1;16241:9;16237:17;16228:6;16158:97;:::i;:::-;16112:150;;;;:::o;16268:313::-;;16419:2;16408:9;16404:18;16396:26;;16468:9;16462:4;16458:20;16454:1;16443:9;16439:17;16432:47;16496:78;16569:4;16560:6;16496:78;:::i;:::-;16488:86;;16386:195;;;;:::o;16587:419::-;;16791:2;16780:9;16776:18;16768:26;;16840:9;16834:4;16830:20;16826:1;16815:9;16811:17;16804:47;16868:131;16994:4;16868:131;:::i;:::-;16860:139;;16758:248;;;:::o;17012:419::-;;17216:2;17205:9;17201:18;17193:26;;17265:9;17259:4;17255:20;17251:1;17240:9;17236:17;17229:47;17293:131;17419:4;17293:131;:::i;:::-;17285:139;;17183:248;;;:::o;17437:419::-;;17641:2;17630:9;17626:18;17618:26;;17690:9;17684:4;17680:20;17676:1;17665:9;17661:17;17654:47;17718:131;17844:4;17718:131;:::i;:::-;17710:139;;17608:248;;;:::o;17862:419::-;;18066:2;18055:9;18051:18;18043:26;;18115:9;18109:4;18105:20;18101:1;18090:9;18086:17;18079:47;18143:131;18269:4;18143:131;:::i;:::-;18135:139;;18033:248;;;:::o;18287:419::-;;18491:2;18480:9;18476:18;18468:26;;18540:9;18534:4;18530:20;18526:1;18515:9;18511:17;18504:47;18568:131;18694:4;18568:131;:::i;:::-;18560:139;;18458:248;;;:::o;18712:419::-;;18916:2;18905:9;18901:18;18893:26;;18965:9;18959:4;18955:20;18951:1;18940:9;18936:17;18929:47;18993:131;19119:4;18993:131;:::i;:::-;18985:139;;18883:248;;;:::o;19137:419::-;;19341:2;19330:9;19326:18;19318:26;;19390:9;19384:4;19380:20;19376:1;19365:9;19361:17;19354:47;19418:131;19544:4;19418:131;:::i;:::-;19410:139;;19308:248;;;:::o;19562:419::-;;19766:2;19755:9;19751:18;19743:26;;19815:9;19809:4;19805:20;19801:1;19790:9;19786:17;19779:47;19843:131;19969:4;19843:131;:::i;:::-;19835:139;;19733:248;;;:::o;19987:419::-;;20191:2;20180:9;20176:18;20168:26;;20240:9;20234:4;20230:20;20226:1;20215:9;20211:17;20204:47;20268:131;20394:4;20268:131;:::i;:::-;20260:139;;20158:248;;;:::o;20412:419::-;;20616:2;20605:9;20601:18;20593:26;;20665:9;20659:4;20655:20;20651:1;20640:9;20636:17;20629:47;20693:131;20819:4;20693:131;:::i;:::-;20685:139;;20583:248;;;:::o;20837:419::-;;21041:2;21030:9;21026:18;21018:26;;21090:9;21084:4;21080:20;21076:1;21065:9;21061:17;21054:47;21118:131;21244:4;21118:131;:::i;:::-;21110:139;;21008:248;;;:::o;21262:419::-;;21466:2;21455:9;21451:18;21443:26;;21515:9;21509:4;21505:20;21501:1;21490:9;21486:17;21479:47;21543:131;21669:4;21543:131;:::i;:::-;21535:139;;21433:248;;;:::o;21687:419::-;;21891:2;21880:9;21876:18;21868:26;;21940:9;21934:4;21930:20;21926:1;21915:9;21911:17;21904:47;21968:131;22094:4;21968:131;:::i;:::-;21960:139;;21858:248;;;:::o;22112:419::-;;22316:2;22305:9;22301:18;22293:26;;22365:9;22359:4;22355:20;22351:1;22340:9;22336:17;22329:47;22393:131;22519:4;22393:131;:::i;:::-;22385:139;;22283:248;;;:::o;22537:419::-;;22741:2;22730:9;22726:18;22718:26;;22790:9;22784:4;22780:20;22776:1;22765:9;22761:17;22754:47;22818:131;22944:4;22818:131;:::i;:::-;22810:139;;22708:248;;;:::o;22962:419::-;;23166:2;23155:9;23151:18;23143:26;;23215:9;23209:4;23205:20;23201:1;23190:9;23186:17;23179:47;23243:131;23369:4;23243:131;:::i;:::-;23235:139;;23133:248;;;:::o;23387:419::-;;23591:2;23580:9;23576:18;23568:26;;23640:9;23634:4;23630:20;23626:1;23615:9;23611:17;23604:47;23668:131;23794:4;23668:131;:::i;:::-;23660:139;;23558:248;;;:::o;23812:419::-;;24016:2;24005:9;24001:18;23993:26;;24065:9;24059:4;24055:20;24051:1;24040:9;24036:17;24029:47;24093:131;24219:4;24093:131;:::i;:::-;24085:139;;23983:248;;;:::o;24237:222::-;;24368:2;24357:9;24353:18;24345:26;;24381:71;24449:1;24438:9;24434:17;24425:6;24381:71;:::i;:::-;24335:124;;;;:::o;24465:332::-;;24624:2;24613:9;24609:18;24601:26;;24637:71;24705:1;24694:9;24690:17;24681:6;24637:71;:::i;:::-;24718:72;24786:2;24775:9;24771:18;24762:6;24718:72;:::i;:::-;24591:206;;;;;:::o;24803:214::-;;24930:2;24919:9;24915:18;24907:26;;24943:67;25007:1;24996:9;24992:17;24983:6;24943:67;:::i;:::-;24897:120;;;;:::o;25023:129::-;;25084:20;;:::i;:::-;25074:30;;25113:33;25141:4;25133:6;25113:33;:::i;:::-;25064:88;;;:::o;25158:75::-;;25224:2;25218:9;25208:19;;25198:35;:::o;25239:311::-;;25406:18;25398:6;25395:30;25392:2;;;25428:18;;:::i;:::-;25392:2;25478:4;25470:6;25466:17;25458:25;;25538:4;25532;25528:15;25520:23;;25321:229;;;:::o;25556:99::-;;25642:5;25636:12;25626:22;;25615:40;;;:::o;25661:169::-;;25779:6;25774:3;25767:19;25819:4;25814:3;25810:14;25795:29;;25757:73;;;;:::o;25836:305::-;;25895:20;25913:1;25895:20;:::i;:::-;25890:25;;25929:20;25947:1;25929:20;:::i;:::-;25924:25;;26083:1;26015:66;26011:74;26008:1;26005:81;26002:2;;;26089:18;;:::i;:::-;26002:2;26133:1;26130;26126:9;26119:16;;25880:261;;;;:::o;26147:185::-;;26204:20;26222:1;26204:20;:::i;:::-;26199:25;;26238:20;26256:1;26238:20;:::i;:::-;26233:25;;26277:1;26267:2;;26282:18;;:::i;:::-;26267:2;26324:1;26321;26317:9;26312:14;;26189:143;;;;:::o;26338:848::-;;;26430:6;26421:15;;26454:5;26445:14;;26468:712;26489:1;26479:8;26476:15;26468:712;;;26584:4;26579:3;26575:14;26569:4;26566:24;26563:2;;;26593:18;;:::i;:::-;26563:2;26643:1;26633:8;26629:16;26626:2;;;27058:4;27051:5;27047:16;27038:25;;26626:2;27108:4;27102;27098:15;27090:23;;27138:32;27161:8;27138:32;:::i;:::-;27126:44;;26468:712;;;26411:775;;;;;;;:::o;27192:285::-;;27276:23;27294:4;27276:23;:::i;:::-;27268:31;;27320:27;27338:8;27320:27;:::i;:::-;27308:39;;27366:104;27403:66;27393:8;27387:4;27366:104;:::i;:::-;27357:113;;27258:219;;;;:::o;27483:1073::-;;27728:8;27718:2;;27749:1;27740:10;;27751:5;;27718:2;27777:4;27767:2;;27794:1;27785:10;;27796:5;;27767:2;27863:4;27911:1;27906:27;;;;27947:1;27942:191;;;;27856:277;;27906:27;27924:1;27915:10;;27926:5;;;27942:191;27987:3;27977:8;27974:17;27971:2;;;27994:18;;:::i;:::-;27971:2;28043:8;28040:1;28036:16;28027:25;;28078:3;28071:5;28068:14;28065:2;;;28085:18;;:::i;:::-;28065:2;28118:5;;;27856:277;;28242:2;28232:8;28229:16;28223:3;28217:4;28214:13;28210:36;28192:2;28182:8;28179:16;28174:2;28168:4;28165:12;28161:35;28145:111;28142:2;;;28298:8;28292:4;28288:19;28279:28;;28333:3;28326:5;28323:14;28320:2;;;28340:18;;:::i;:::-;28320:2;28373:5;;28142:2;28413:42;28451:3;28441:8;28435:4;28432:1;28413:42;:::i;:::-;28398:57;;;;28487:4;28482:3;28478:14;28471:5;28468:25;28465:2;;;28496:18;;:::i;:::-;28465:2;28545:4;28538:5;28534:16;28525:25;;27543:1013;;;;;;:::o;28562:348::-;;28625:20;28643:1;28625:20;:::i;:::-;28620:25;;28659:20;28677:1;28659:20;:::i;:::-;28654:25;;28847:1;28779:66;28775:74;28772:1;28769:81;28764:1;28757:9;28750:17;28746:105;28743:2;;;28854:18;;:::i;:::-;28743:2;28902:1;28899;28895:9;28884:20;;28610:300;;;;:::o;28916:191::-;;28976:20;28994:1;28976:20;:::i;:::-;28971:25;;29010:20;29028:1;29010:20;:::i;:::-;29005:25;;29049:1;29046;29043:8;29040:2;;;29054:18;;:::i;:::-;29040:2;29099:1;29096;29092:9;29084:17;;28961:146;;;;:::o;29113:96::-;;29179:24;29197:5;29179:24;:::i;:::-;29168:35;;29158:51;;;:::o;29215:90::-;;29292:5;29285:13;29278:21;29267:32;;29257:48;;;:::o;29311:114::-;;29388:30;29381:5;29377:42;29366:53;;29356:69;;;:::o;29431:126::-;;29508:42;29501:5;29497:54;29486:65;;29476:81;;;:::o;29563:77::-;;29629:5;29618:16;;29608:32;;;:::o;29646:93::-;;29722:10;29715:5;29711:22;29700:33;;29690:49;;;:::o;29745:86::-;;29820:4;29813:5;29809:16;29798:27;;29788:43;;;:::o;29837:162::-;;29938:55;29987:5;29938:55;:::i;:::-;29925:68;;29915:84;;;:::o;30005:131::-;;30106:24;30124:5;30106:24;:::i;:::-;30093:37;;30083:53;;;:::o;30142:178::-;;30251:63;30308:5;30251:63;:::i;:::-;30238:76;;30228:92;;;:::o;30326:139::-;;30435:24;30453:5;30435:24;:::i;:::-;30422:37;;30412:53;;;:::o;30471:307::-;30539:1;30549:113;30563:6;30560:1;30557:13;30549:113;;;30648:1;30643:3;30639:11;30633:18;30629:1;30624:3;30620:11;30613:39;30585:2;30582:1;30578:10;30573:15;;30549:113;;;30680:6;30677:1;30674:13;30671:2;;;30760:1;30751:6;30746:3;30742:16;30735:27;30671:2;30520:258;;;;:::o;30784:281::-;30867:27;30889:4;30867:27;:::i;:::-;30859:6;30855:40;30997:6;30985:10;30982:22;30961:18;30949:10;30946:34;30943:62;30940:2;;;31008:18;;:::i;:::-;30940:2;31048:10;31044:2;31037:22;30827:238;;;:::o;31071:233::-;;31133:24;31151:5;31133:24;:::i;:::-;31124:33;;31179:66;31172:5;31169:77;31166:2;;;31249:18;;:::i;:::-;31166:2;31296:1;31289:5;31285:13;31278:20;;31114:190;;;:::o;31310:176::-;;31359:20;31377:1;31359:20;:::i;:::-;31354:25;;31393:20;31411:1;31393:20;:::i;:::-;31388:25;;31432:1;31422:2;;31437:18;;:::i;:::-;31422:2;31478:1;31475;31471:9;31466:14;;31344:142;;;;:::o;31492:180::-;31540:77;31537:1;31530:88;31637:4;31634:1;31627:15;31661:4;31658:1;31651:15;31678:180;31726:77;31723:1;31716:88;31823:4;31820:1;31813:15;31847:4;31844:1;31837:15;31864:180;31912:77;31909:1;31902:88;32009:4;32006:1;31999:15;32033:4;32030:1;32023:15;32050:102;;32142:2;32138:7;32133:2;32126:5;32122:14;32118:28;32108:38;;32098:54;;;:::o;32158:102::-;;32247:5;32244:1;32240:13;32219:34;;32209:51;;;:::o;32266:224::-;32406:34;32402:1;32394:6;32390:14;32383:58;32475:7;32470:2;32462:6;32458:15;32451:32;32372:118;:::o;32496:174::-;32636:26;32632:1;32624:6;32620:14;32613:50;32602:68;:::o;32676:225::-;32816:34;32812:1;32804:6;32800:14;32793:58;32885:8;32880:2;32872:6;32868:15;32861:33;32782:119;:::o;32907:221::-;33047:34;33043:1;33035:6;33031:14;33024:58;33116:4;33111:2;33103:6;33099:15;33092:29;33013:115;:::o;33134:167::-;33274:19;33270:1;33262:6;33258:14;33251:43;33240:61;:::o;33307:166::-;33447:18;33443:1;33435:6;33431:14;33424:42;33413:60;:::o;33479:178::-;33619:30;33615:1;33607:6;33603:14;33596:54;33585:72;:::o;33663:157::-;33803:9;33799:1;33791:6;33787:14;33780:33;33769:51;:::o;33826:157::-;33966:9;33962:1;33954:6;33950:14;33943:33;33932:51;:::o;33989:157::-;34129:9;34125:1;34117:6;34113:14;34106:33;34095:51;:::o;34152:166::-;34292:18;34288:1;34280:6;34276:14;34269:42;34258:60;:::o;34324:182::-;34464:34;34460:1;34452:6;34448:14;34441:58;34430:76;:::o;34512:228::-;34652:34;34648:1;34640:6;34636:14;34629:58;34721:11;34716:2;34708:6;34704:15;34697:36;34618:122;:::o;34746:223::-;34886:34;34882:1;34874:6;34870:14;34863:58;34955:6;34950:2;34942:6;34938:15;34931:31;34852:117;:::o;34975:164::-;35115:16;35111:1;35103:6;35099:14;35092:40;35081:58;:::o;35145:169::-;35285:21;35281:1;35273:6;35269:14;35262:45;35251:63;:::o;35320:159::-;35460:11;35456:1;35448:6;35444:14;35437:35;35426:53;:::o;35485:157::-;35625:9;35621:1;35613:6;35609:14;35602:33;35591:51;:::o;35648:122::-;35721:24;35739:5;35721:24;:::i;:::-;35714:5;35711:35;35701:2;;35760:1;35757;35750:12;35701:2;35691:79;:::o;35776:116::-;35846:21;35861:5;35846:21;:::i;:::-;35839:5;35836:32;35826:2;;35882:1;35879;35872:12;35826:2;35816:76;:::o;35898:122::-;35971:24;35989:5;35971:24;:::i;:::-;35964:5;35961:35;35951:2;;36010:1;36007;36000:12;35951:2;35941:79;:::o;36026:122::-;36099:24;36117:5;36099:24;:::i;:::-;36092:5;36089:35;36079:2;;36138:1;36135;36128:12;36079:2;36069:79;:::o;36154:120::-;36226:23;36243:5;36226:23;:::i;:::-;36219:5;36216:34;36206:2;;36264:1;36261;36254:12;36206:2;36196:78;:::o
Swarm Source
ipfs://213360f4b5a5b439303acaa8670b5a39cffc7c6f07a55bf4128356760d2e954c
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.