Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000 RIOT
Holders
15
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
19,599,998.040000000194169633 RIOTValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
RIOT
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-07-13 */ /** IN A SPACE FULL OF JEETS AND PLEB DEVS, COMES A BASED DEV WITH A BASED UNEXPECTED LAUNCH! LETS SHOW THE PEOPLE HOW WE RIOT!!! WE ARE HOOLIGANS! NOT MANY PROJECTS GO BEYOND 50K MC CAP THESE DAYS! BUT, THESE HOOLIGANS WILL SHOW THE JEETS WE CAN HOLD A SOLID FLOOR AND SEND THIS OVER 50K MC CAP AND CREATE A MOTHAFUCKEN RIOTTTTTTT! LP LOCK 30 DAYS WILL RENOUNCE AT 50K MCAP WITH 0% TAX (COMMUNITY WILL TAKE OVER FROM THERE) 2% BUY 2% SELL 2% MAX WALLET https://t.me/HOOLIGANRIOT */ // SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.7; contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } contract ERC20Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "ERC20Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "ERC20Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IERC20 { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view 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); } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; 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 swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; 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); } 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; } contract RIOT is Context, IERC20, ERC20Ownable { using SafeMath for uint256; string private constant _nomenclature = "HOOLIGAN"; string private constant _symbol = "RIOT"; uint8 private constant _decimal = 18; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; mapping(address => bool) private _isExcluded; mapping(address => bool) private _isMaxWalletExclude; mapping (address => bool) private _isBot; mapping(address => bool) public boughtEarly; address dead = 0x000000000000000000000000000000000000dEaD; address[] private _excluded; address payable public marketingAddress; address payable public charityAddress; IUniswapV2Router02 private uniV2Router; address private uniV2Pair; bool inSwapAndLiquify; bool private swapAndLiquifyEnabled = true; bool private _initateLiqTrans = true; bool private _buyLimits = false; bool private _maxWalletOn = false; uint256 public tradingActiveBlock = 0; uint256 public earlyBuyPenaltyEnd; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 1000000000 * 10**18; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 private _maxWalletSize = 20000000 * 10**18; uint256 private minTokensBeforeSwap; uint256 private tokensForLiquidityToSwap; uint256 private tokensForMarketingToSwap; uint256 private tokensForCharityToSwap; uint8 private _marTax = 1; // tax for marketing uint8 private _previousMarTax = _marTax; uint8 private _charTax = 0; // tax for charity uint8 private _previousCharTax = _charTax; uint8 private _liqTax = 1; // tax for liquidity uint8 private _previousLiqTax = _liqTax; uint8 private _refTax = 0; //tax for reflections uint8 private _previousRefTax = _refTax; uint8 private _liqDiv = _marTax + _charTax + _liqTax; event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity); event UpdatedMarketingAddress(address marketing); event UpdatedCharityAddress(address charity); event BoughtEarly(address indexed sniper); event RemovedSniper(address indexed notsnipersupposedly); modifier lockTheSwap() { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor() { _rOwned[_msgSender()] = _rTotal; charityAddress = payable(0xe87D203686829EAfF535943405424A0521bEaba4); marketingAddress = payable(0xe87D203686829EAfF535943405424A0521bEaba4); minTokensBeforeSwap = _tTotal.mul(5).div(10000); _isExcludedFromFee[_msgSender()] = true; _isExcludedFromFee[address(this)] = true; _isMaxWalletExclude[address(this)] = true; _isMaxWalletExclude[_msgSender()] = true; _isMaxWalletExclude[address(dead)] = true; emit Transfer(address(0), _msgSender(), _tTotal); } receive() external payable {} function name() public pure override returns (string memory) { return _nomenclature; } function symbol() public pure override returns (string memory) { return _symbol; } function decimals() public pure override returns (uint8) { return _decimal; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function taxTokensBeforeSwap() external view returns (uint256) { return minTokensBeforeSwap; } function taxTokensForLiquidity() external view returns (uint256) { return tokensForLiquidityToSwap; } function taxTokensForCharity() external view returns (uint256) { return tokensForCharityToSwap; } function taxTokensForMarketing() external view returns (uint256) { return tokensForMarketingToSwap; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender,address recipient,uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender,_msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance") ); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero") ); return true; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns (uint256) { require(tAmount <= _tTotal, "Amt must be less than supply"); if (!deductTransferFee) { (uint256 rAmount, , , , , ) = _getValues(tAmount); return rAmount; } else { (, uint256 rTransferAmount, , , , ) = _getValues(tAmount); return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns (uint256) { require(rAmount <= _rTotal, "Amt must be less than tot refl"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } function _getValues(uint256 tAmount) private view returns (uint256,uint256,uint256,uint256,uint256,uint256) { (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) = _getTValues(tAmount); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tLiquidity, _getRate()); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tLiquidity); } function _getTValues(uint256 tAmount)private view returns (uint256,uint256,uint256) { uint256 tFee = calculateTaxFee(tAmount); uint256 tLiquidity = calculateLiquidityFee(tAmount); uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity); return (tTransferAmount, tFee, tLiquidity); } function _getRValues(uint256 tAmount,uint256 tFee,uint256 tLiquidity,uint256 currentRate) private pure returns (uint256,uint256,uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rLiquidity = tLiquidity.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _takeLiquidity(uint256 tLiquidity) private { tokensForMarketingToSwap += tLiquidity * _marTax / _liqDiv; tokensForLiquidityToSwap += tLiquidity * _liqTax / _liqDiv; tokensForCharityToSwap += tLiquidity * _charTax / _liqDiv; uint256 currentRate = _getRate(); uint256 rLiquidity = tLiquidity.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity); if (_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity); } function calculateTaxFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_refTax).div(10**2); } function calculateLiquidityFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_marTax + _charTax + _liqTax).div(10**2); } function removeAllFee() private { if (_refTax == 0 && _liqTax == 0 && _marTax == 0 && _charTax == 0) return; _previousRefTax = _refTax; _previousLiqTax = _liqTax; _previousMarTax = _marTax; _previousCharTax = _charTax; _refTax = 0; _liqTax = 0; _marTax = 0; _charTax = 0; } function restoreAllFee() private { _refTax = _previousRefTax; _liqTax = _previousLiqTax; _marTax = _previousMarTax; _charTax = _previousCharTax; } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function isExcludedFromFee(address account) public view returns (bool) { return _isExcludedFromFee[account]; } function _approve(address owner,address spender,uint256 amount) private { require(owner != address(0), "ERC20: approve from zero address"); require(spender != address(0), "ERC20: approve to zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address from,address to,uint256 amount) private { require(from != address(0), "ERC20: transfer from zero address"); require(to != address(0), "ERC20: transfer to zero address"); require(amount > 0, "Transfer amount must be greater than zero"); require(!_isBot[from]); require(!boughtEarly[from] || earlyBuyPenaltyEnd <= block.timestamp, "Snipers can't transfer tokens to sell cheaper DM a Mod."); if (_maxWalletOn == true && ! _isMaxWalletExclude[to]) { require(balanceOf(to) + amount <= _maxWalletSize, "Max amount of tokens for wallet reached"); } if (_buyLimits == true && from == uniV2Pair) { require(amount <= 10000000 * 10**18, "Limits are in place, please lower buying amount"); } if(_initateLiqTrans == true) { IUniswapV2Router02 _uniV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniV2Router = _uniV2Router; uniV2Pair = IUniswapV2Factory(_uniV2Router.factory()).getPair(address(this), _uniV2Router.WETH()); tradingActiveBlock = block.number; earlyBuyPenaltyEnd = block.timestamp + 1 hours; _isMaxWalletExclude[address(uniV2Pair)] = true; _isMaxWalletExclude[address(uniV2Router)] = true; _buyLimits = true; _maxWalletOn = true; _initateLiqTrans = false; } if(from != owner() && to != uniV2Pair && block.number == tradingActiveBlock){ boughtEarly[to] = true; emit BoughtEarly(to); } uint256 contractTokenBalance = balanceOf(address(this)); if (!inSwapAndLiquify && to == uniV2Pair && swapAndLiquifyEnabled) { if (contractTokenBalance >= minTokensBeforeSwap) { swapTokens(); } } bool takeFee = true; if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) { takeFee = false; } if(boughtEarly[from] && earlyBuyPenaltyEnd > block.timestamp){ _liqTax = _liqTax * 2; _marTax = _marTax * 3; _charTax = _charTax * 2; } _tokenTransfer(from, to, amount, takeFee); } function swapETHForTokens(uint256 amount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = uniV2Router.WETH(); path[1] = address(this); // make the swap uniV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}( 0, // accept any amount of Tokens path, dead, // Burn address block.timestamp.add(300) ); } function addBot(address _user) public onlyOwner { require(_user != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); require(!_isBot[_user], "user already add as bot"); _isBot[_user] = true; } function removeBot(address _user) public onlyOwner { require(_isBot[_user], "user already removed"); _isBot[_user] = false; } function removeBoughtEarly(address account) external onlyOwner { boughtEarly[account] = false; emit RemovedSniper(account); } function swapTokens() private lockTheSwap { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidityToSwap + tokensForMarketingToSwap + tokensForCharityToSwap; uint256 tokensForLiquidity = tokensForLiquidityToSwap.div(2); //Halve the amount of liquidity tokens uint256 amountToSwapForETH = contractBalance.sub(tokensForLiquidity); uint256 initialETHBalance = address(this).balance; swapTokensForETH(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = ethBalance.mul(tokensForMarketingToSwap).div(totalTokensToSwap); uint256 ethForCharity = ethBalance.mul(tokensForCharityToSwap).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance.sub(ethForMarketing).sub(ethForCharity); tokensForLiquidityToSwap = 0; tokensForMarketingToSwap = 0; tokensForCharityToSwap = 0; (bool success,) = address(marketingAddress).call{value: ethForMarketing}(""); (success,) = address(charityAddress).call{value: ethForCharity}(""); addLiquidity(tokensForLiquidity, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity); //If any eth left over transfer out of contract as to not get stuck if(address(this).balance > 0 * 10**18){ (success,) = address(marketingAddress).call{value: address(this).balance}(""); } } function swapTokensForETH(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniV2Router.WETH(); _approve(address(this), address(uniV2Router), tokenAmount); uniV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp.add(300) ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { _approve(address(this), address(uniV2Router), tokenAmount); uniV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable dead, block.timestamp.add(300) ); } function setMarketingAddress(address _marketingAddress) external onlyOwner { require(_marketingAddress != address(0), "_marketingAddress address cannot be 0"); _isExcludedFromFee[marketingAddress] = false; marketingAddress = payable(_marketingAddress); _isExcludedFromFee[marketingAddress] = true; emit UpdatedMarketingAddress(_marketingAddress); } function setCharityAddress(address _charityAddress) public onlyOwner { require(_charityAddress != address(0), "_liquidityAddress address cannot be 0"); charityAddress = payable(_charityAddress); emit UpdatedCharityAddress(_charityAddress); } function InitiateLiqAdd() external onlyOwner { _initateLiqTrans = true; //already delcared true above. Only call if declared false and are ready to add liquidity } function TaxSwapEnable() external onlyOwner { swapAndLiquifyEnabled = true; } function TaxSwapDisable() external onlyOwner { swapAndLiquifyEnabled = false; } function ResumeLimits() external onlyOwner { _buyLimits = true; } function RemoveLimits() external onlyOwner { _buyLimits = false; } function turnMaxWalletOn() external onlyOwner { _maxWalletOn = true; } function turnMaxWalletOff() external onlyOwner { _maxWalletOn = false; } function _tokenTransfer(address sender,address recipient,uint256 amount,bool takeFee) private { if (!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if (!takeFee) restoreAllFee(); } function _transferStandard(address sender,address recipient,uint256 tAmount) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded(address sender,address recipient,uint256 tAmount) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded(address sender,address recipient,uint256 tAmount) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferBothExcluded(address sender,address recipient,uint256 tAmount) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity ) = _getValues(tAmount); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeLiquidity(tLiquidity); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _tokenTransferNoFee(address sender,address recipient,uint256 amount) private { _rOwned[sender] = _rOwned[sender].sub(amount); _rOwned[recipient] = _rOwned[recipient].add(amount); if (_isExcluded[sender]) { _tOwned[sender] = _tOwned[sender].sub(amount); } if (_isExcluded[recipient]) { _tOwned[recipient] = _tOwned[recipient].add(amount); } emit Transfer(sender, recipient, amount); } }
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":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"notsnipersupposedly","type":"address"}],"name":"RemovedSniper","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"charity","type":"address"}],"name":"UpdatedCharityAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketing","type":"address"}],"name":"UpdatedMarketingAddress","type":"event"},{"inputs":[],"name":"InitiateLiqAdd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"RemoveLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ResumeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TaxSwapDisable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TaxSwapEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"addBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"boughtEarly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"charityAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlyBuyPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"removeBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBoughtEarly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_charityAddress","type":"address"}],"name":"setCharityAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingAddress","type":"address"}],"name":"setMarketingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxTokensBeforeSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxTokensForCharity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxTokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxTokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"turnMaxWalletOff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"turnMaxWalletOn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405261dead600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e60156101000a81548160ff0219169083151502179055506001600e60166101000a81548160ff0219169083151502179055506000600e60176101000a81548160ff0219169083151502179055506000600e60186101000a81548160ff0219169083151502179055506000600f556b033b2e3c9fd0803ce8000000600019620000d4919062000884565b600019620000e3919062000832565b6011556a108b2a2c280290940000006013556001601860006101000a81548160ff021916908360ff160217905550601860009054906101000a900460ff16601860016101000a81548160ff021916908360ff1602179055506000601860026101000a81548160ff021916908360ff160217905550601860029054906101000a900460ff16601860036101000a81548160ff021916908360ff1602179055506001601860046101000a81548160ff021916908360ff160217905550601860049054906101000a900460ff16601860056101000a81548160ff021916908360ff1602179055506000601860066101000a81548160ff021916908360ff160217905550601860069054906101000a900460ff16601860076101000a81548160ff021916908360ff160217905550601860049054906101000a900460ff16601860029054906101000a900460ff16601860009054906101000a900460ff166200024991906200075b565b6200025591906200075b565b601860086101000a81548160ff021916908360ff1602179055503480156200027c57600080fd5b5060006200028f620006f560201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506011546001600062000344620006f560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073e87d203686829eaff535943405424a0521beaba4600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e87d203686829eaff535943405424a0521beaba4600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200046e6127106200045a60056b033b2e3c9fd0803ce8000000620006fd60201b620020151790919060201c565b6200071560201b6200202b1790919060201c565b6014819055506001600460006200048a620006f560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000620005a1620006f560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200067c620006f560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b033b2e3c9fd0803ce8000000604051620006e791906200073e565b60405180910390a36200091a565b600033905090565b600081836200070d9190620007d1565b905092915050565b6000818362000725919062000799565b905092915050565b62000738816200086d565b82525050565b60006020820190506200075560008301846200072d565b92915050565b6000620007688262000877565b9150620007758362000877565b92508260ff038211156200078e576200078d620008bc565b5b828201905092915050565b6000620007a6826200086d565b9150620007b3836200086d565b925082620007c657620007c5620008eb565b5b828204905092915050565b6000620007de826200086d565b9150620007eb836200086d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620008275762000826620008bc565b5b828202905092915050565b60006200083f826200086d565b91506200084c836200086d565b925082821015620008625762000861620008bc565b5b828203905092915050565b6000819050919050565b600060ff82169050919050565b600062000891826200086d565b91506200089e836200086d565b925082620008b157620008b0620008eb565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b615cfc806200092a6000396000f3fe60806040526004361061023f5760003560e01c80635fecd9261161012e578063a457c2d7116100ab578063ea372aa71161006f578063ea372aa71461086e578063ee40166e14610899578063f2fde38b146108c4578063f5eb223d146108ed578063ffecf5161461090457610246565b8063a457c2d714610761578063a5ece9411461079e578063a9059cbb146107c9578063afcf2fc414610806578063dd62ed3e1461083157610246565b806385ecfd28116100f257806385ecfd281461066857806388f82020146106a55780638da5cb5b146106e2578063906e9dd01461070d57806395d89b411461073657610246565b80635fecd926146105bd578063620b4bfc146105e65780636e86ea8b146105fd57806370a0823114610614578063715018a61461065157610246565b806335d98bd3116101bc5780634f03cfbe116101805780634f03cfbe146104fe5780635342acb41461052957806356cd40e7146105665780635bb988c91461057d5780635c0fdd4c146105a657610246565b806335d98bd31461041957806339509351146104305780634130f6dc1461046d578063437823ec146104985780634549b039146104c157610246565b80631fc851bd116102035780631fc851bd1461033257806323b872dd1461035d5780632cf0d13d1461039a5780632d838119146103b1578063313ce567146103ee57610246565b806306fdde031461024b578063095ea7b3146102765780630c9be46d146102b35780631054ccab146102dc57806318160ddd1461030757610246565b3661024657005b600080fd5b34801561025757600080fd5b5061026061092d565b60405161026d91906151b4565b60405180910390f35b34801561028257600080fd5b5061029d60048036038101906102989190614c59565b61096a565b6040516102aa9190615199565b60405180910390f35b3480156102bf57600080fd5b506102da60048036038101906102d59190614b6c565b610988565b005b3480156102e857600080fd5b506102f1610aef565b6040516102fe91906153d6565b60405180910390f35b34801561031357600080fd5b5061031c610af9565b60405161032991906153d6565b60405180910390f35b34801561033e57600080fd5b50610347610b0d565b60405161035491906153d6565b60405180910390f35b34801561036957600080fd5b50610384600480360381019061037f9190614c06565b610b13565b6040516103919190615199565b60405180910390f35b3480156103a657600080fd5b506103af610bec565b005b3480156103bd57600080fd5b506103d860048036038101906103d39190614c99565b610c85565b6040516103e591906153d6565b60405180910390f35b3480156103fa57600080fd5b50610403610cf3565b6040516104109190615482565b60405180910390f35b34801561042557600080fd5b5061042e610cfc565b005b34801561043c57600080fd5b5061045760048036038101906104529190614c59565b610d95565b6040516104649190615199565b60405180910390f35b34801561047957600080fd5b50610482610e48565b60405161048f91906153d6565b60405180910390f35b3480156104a457600080fd5b506104bf60048036038101906104ba9190614b6c565b610e52565b005b3480156104cd57600080fd5b506104e860048036038101906104e39190614cc6565b610f29565b6040516104f591906153d6565b60405180910390f35b34801561050a57600080fd5b50610513610fb7565b60405161052091906153d6565b60405180910390f35b34801561053557600080fd5b50610550600480360381019061054b9190614b6c565b610fc1565b60405161055d9190615199565b60405180910390f35b34801561057257600080fd5b5061057b611017565b005b34801561058957600080fd5b506105a4600480360381019061059f9190614b6c565b6110b0565b005b3480156105b257600080fd5b506105bb6111ca565b005b3480156105c957600080fd5b506105e460048036038101906105df9190614b6c565b611263565b005b3480156105f257600080fd5b506105fb6113c6565b005b34801561060957600080fd5b5061061261145f565b005b34801561062057600080fd5b5061063b60048036038101906106369190614b6c565b6114f8565b60405161064891906153d6565b60405180910390f35b34801561065d57600080fd5b506106666115e3565b005b34801561067457600080fd5b5061068f600480360381019061068a9190614b6c565b61171d565b60405161069c9190615199565b60405180910390f35b3480156106b157600080fd5b506106cc60048036038101906106c79190614b6c565b61173d565b6040516106d99190615199565b60405180910390f35b3480156106ee57600080fd5b506106f7611793565b60405161070491906150d9565b60405180910390f35b34801561071957600080fd5b50610734600480360381019061072f9190614b6c565b6117bc565b005b34801561074257600080fd5b5061074b611a17565b60405161075891906151b4565b60405180910390f35b34801561076d57600080fd5b5061078860048036038101906107839190614c59565b611a54565b6040516107959190615199565b60405180910390f35b3480156107aa57600080fd5b506107b3611b21565b6040516107c091906150f4565b60405180910390f35b3480156107d557600080fd5b506107f060048036038101906107eb9190614c59565b611b47565b6040516107fd9190615199565b60405180910390f35b34801561081257600080fd5b5061081b611b65565b60405161082891906150f4565b60405180910390f35b34801561083d57600080fd5b5061085860048036038101906108539190614bc6565b611b8b565b60405161086591906153d6565b60405180910390f35b34801561087a57600080fd5b50610883611c12565b60405161089091906153d6565b60405180910390f35b3480156108a557600080fd5b506108ae611c1c565b6040516108bb91906153d6565b60405180910390f35b3480156108d057600080fd5b506108eb60048036038101906108e69190614b6c565b611c22565b005b3480156108f957600080fd5b50610902611dcb565b005b34801561091057600080fd5b5061092b60048036038101906109269190614b6c565b611e64565b005b60606040518060400160405280600881526020017f484f4f4c4947414e000000000000000000000000000000000000000000000000815250905090565b600061097e610977612041565b8484612049565b6001905092915050565b610990612041565b73ffffffffffffffffffffffffffffffffffffffff166109ae611793565b73ffffffffffffffffffffffffffffffffffffffff1614610a04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fb90615356565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610a74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6b906152d6565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fff6a822e9e2c4fe74d4f27fcde00b94c5abb41dd24b73e718952279715fa663281604051610ae491906150d9565b60405180910390a150565b6000601654905090565b60006b033b2e3c9fd0803ce8000000905090565b60105481565b6000610b20848484612214565b610be184610b2c612041565b610bdc85604051806060016040528060288152602001615c7a60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b92612041565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d009092919063ffffffff16565b612049565b600190509392505050565b610bf4612041565b73ffffffffffffffffffffffffffffffffffffffff16610c12611793565b73ffffffffffffffffffffffffffffffffffffffff1614610c68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5f90615356565b60405180910390fd5b6001600e60176101000a81548160ff021916908315150217905550565b6000601154821115610ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc3906152f6565b60405180910390fd5b6000610cd6612d55565b9050610ceb818461202b90919063ffffffff16565b915050919050565b60006012905090565b610d04612041565b73ffffffffffffffffffffffffffffffffffffffff16610d22611793565b73ffffffffffffffffffffffffffffffffffffffff1614610d78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6f90615356565b60405180910390fd5b6001600e60166101000a81548160ff021916908315150217905550565b6000610e3e610da2612041565b84610e398560036000610db3612041565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d8090919063ffffffff16565b612049565b6001905092915050565b6000601554905090565b610e5a612041565b73ffffffffffffffffffffffffffffffffffffffff16610e78611793565b73ffffffffffffffffffffffffffffffffffffffff1614610ece576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec590615356565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006b033b2e3c9fd0803ce8000000831115610f7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f71906151f6565b60405180910390fd5b81610f9a576000610f8a84612d96565b5050505050905080915050610fb1565b6000610fa584612d96565b50505050915050809150505b92915050565b6000601754905090565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61101f612041565b73ffffffffffffffffffffffffffffffffffffffff1661103d611793565b73ffffffffffffffffffffffffffffffffffffffff1614611093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108a90615356565b60405180910390fd5b6000600e60176101000a81548160ff021916908315150217905550565b6110b8612041565b73ffffffffffffffffffffffffffffffffffffffff166110d6611793565b73ffffffffffffffffffffffffffffffffffffffff161461112c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112390615356565b60405180910390fd5b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fccaa6e1cfd4cf9506fa856fdc8e0a00894b2621ece1d60ab362098733059449860405160405180910390a250565b6111d2612041565b73ffffffffffffffffffffffffffffffffffffffff166111f0611793565b73ffffffffffffffffffffffffffffffffffffffff1614611246576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123d90615356565b60405180910390fd5b6000600e60186101000a81548160ff021916908315150217905550565b61126b612041565b73ffffffffffffffffffffffffffffffffffffffff16611289611793565b73ffffffffffffffffffffffffffffffffffffffff16146112df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d690615356565b60405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661136b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136290615276565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6113ce612041565b73ffffffffffffffffffffffffffffffffffffffff166113ec611793565b73ffffffffffffffffffffffffffffffffffffffff1614611442576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143990615356565b60405180910390fd5b6000600e60156101000a81548160ff021916908315150217905550565b611467612041565b73ffffffffffffffffffffffffffffffffffffffff16611485611793565b73ffffffffffffffffffffffffffffffffffffffff16146114db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d290615356565b60405180910390fd5b6001600e60156101000a81548160ff021916908315150217905550565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561159357600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506115de565b6115db600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c85565b90505b919050565b6115eb612041565b73ffffffffffffffffffffffffffffffffffffffff16611609611793565b73ffffffffffffffffffffffffffffffffffffffff161461165f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165690615356565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60086020528060005260406000206000915054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6117c4612041565b73ffffffffffffffffffffffffffffffffffffffff166117e2611793565b73ffffffffffffffffffffffffffffffffffffffff1614611838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182f90615356565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189f90615316565b60405180910390fd5b600060046000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fd1e7d6a3390dd5008bd1c57798817b9f806e4c417264e7d3d67e42e784dc24a981604051611a0c91906150d9565b60405180910390a150565b60606040518060400160405280600481526020017f52494f5400000000000000000000000000000000000000000000000000000000815250905090565b6000611b17611a61612041565b84611b1285604051806060016040528060258152602001615ca26025913960036000611a8b612041565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d009092919063ffffffff16565b612049565b6001905092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611b5b611b54612041565b8484612214565b6001905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000601454905090565b600f5481565b611c2a612041565b73ffffffffffffffffffffffffffffffffffffffff16611c48611793565b73ffffffffffffffffffffffffffffffffffffffff1614611c9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9590615356565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611d0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0590615336565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611dd3612041565b73ffffffffffffffffffffffffffffffffffffffff16611df1611793565b73ffffffffffffffffffffffffffffffffffffffff1614611e47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3e90615356565b60405180910390fd5b6001600e60186101000a81548160ff021916908315150217905550565b611e6c612041565b73ffffffffffffffffffffffffffffffffffffffff16611e8a611793565b73ffffffffffffffffffffffffffffffffffffffff1614611ee0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed790615356565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611f2d57600080fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611fba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb190615256565b60405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000818361202391906155bb565b905092915050565b60008183612039919061558a565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156120b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b0906153b6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612129576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612120906151d6565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161220791906153d6565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227b90615236565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122eb90615296565b60405180910390fd5b60008111612337576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232e90615396565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561238e57600080fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615806123e957504260105411155b612428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241f90615376565b60405180910390fd5b60011515600e60189054906101000a900460ff1615151480156124955750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124f357601354816124a7846114f8565b6124b191906154fd565b11156124f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e9906152b6565b60405180910390fd5b5b60011515600e60179054906101000a900460ff1615151480156125635750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156125b7576a084595161401484a0000008111156125b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ad90615216565b60405180910390fd5b5b60011515600e60169054906101000a900460ff1615151415612954576000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561267357600080fd5b505afa158015612687573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ab9190614b99565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561270d57600080fd5b505afa158015612721573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127459190614b99565b6040518363ffffffff1660e01b815260040161276292919061510f565b60206040518083038186803b15801561277a57600080fd5b505afa15801561278e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127b29190614b99565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555043600f81905550610e104261280791906154fd565b601081905550600160066000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60176101000a81548160ff0219169083151502179055506001600e60186101000a81548160ff0219169083151502179055506000600e60166101000a81548160ff021916908315150217905550505b61295c611793565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129e55750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129f25750600f5443145b15612a93576001600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fb90badc1cf1c52268f4fa9afb5276aebf640bcca3300cdfc9cf37db17daa13e260405160405180910390a25b6000612a9e306114f8565b9050600e60149054906101000a900460ff16158015612b0a5750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015612b225750600e60159054906101000a900460ff165b15612b3a576014548110612b3957612b38612df2565b5b5b600060019050600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612be15750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612beb57600090505b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c45575042601054115b15612ced576002601860049054906101000a900460ff16612c669190615615565b601860046101000a81548160ff021916908360ff1602179055506003601860009054906101000a900460ff16612c9c9190615615565b601860006101000a81548160ff021916908360ff1602179055506002601860029054906101000a900460ff16612cd29190615615565b601860026101000a81548160ff021916908360ff1602179055505b612cf985858584613148565b5050505050565b6000838311158290612d48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3f91906151b4565b60405180910390fd5b5082840390509392505050565b6000806000612d62613459565b91509150612d79818361202b90919063ffffffff16565b9250505090565b60008183612d8e91906154fd565b905092915050565b6000806000806000806000806000612dad8a613734565b9250925092506000806000612dcb8d8686612dc6612d55565b61378e565b9250925092508282828888889b509b509b509b509b509b5050505050505091939550919395565b6001600e60146101000a81548160ff0219169083151502179055506000612e18306114f8565b90506000601754601654601554612e2f91906154fd565b612e3991906154fd565b90506000612e53600260155461202b90919063ffffffff16565b90506000612e6a828561381790919063ffffffff16565b90506000479050612e7a8261382d565b6000612e8f824761381790919063ffffffff16565b90506000612eba86612eac6016548561201590919063ffffffff16565b61202b90919063ffffffff16565b90506000612ee587612ed76017548661201590919063ffffffff16565b61202b90919063ffffffff16565b90506000612f0e82612f00858761381790919063ffffffff16565b61381790919063ffffffff16565b90506000601581905550600060168190555060006017819055506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051612f70906150c4565b60006040518083038185875af1925050503d8060008114612fad576040519150601f19603f3d011682016040523d82523d6000602084013e612fb2565b606091505b50509050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051612ffc906150c4565b60006040518083038185875af1925050503d8060008114613039576040519150601f19603f3d011682016040523d82523d6000602084013e61303e565b606091505b50508091505061304e8883613a93565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56187838a6040516130819392919061544b565b60405180910390a1600047111561312157600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516130d8906150c4565b60006040518083038185875af1925050503d8060008114613115576040519150601f19603f3d011682016040523d82523d6000602084013e61311a565b606091505b5050809150505b505050505050505050506000600e60146101000a81548160ff021916908315150217905550565b8061315657613155613bb6565b5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131f95750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561320e57613209848484613d4b565b613445565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156132b15750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156132c6576132c1848484613fab565b613444565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561336a5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561337f5761337a84848461420b565b613443565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134215750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613436576134318484846143d6565b613442565b61344184848461420b565b5b5b5b5b80613453576134526146cb565b5b50505050565b6000806000601154905060006b033b2e3c9fd0803ce8000000905060005b600a805490508110156136e3578260016000600a848154811061349d5761349c6157d7565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061358b57508160026000600a8481548110613523576135226157d7565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156135ac576011546b033b2e3c9fd0803ce800000094509450505050613730565b61363c60016000600a84815481106135c7576135c66157d7565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461381790919063ffffffff16565b92506136ce60026000600a8481548110613659576136586157d7565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361381790919063ffffffff16565b915080806136db90615730565b915050613477565b506137056b033b2e3c9fd0803ce800000060115461202b90919063ffffffff16565b821015613727576011546b033b2e3c9fd0803ce8000000935093505050613730565b81819350935050505b9091565b60008060008061374385614775565b90506000613750866147b6565b905060006137798261376b858a61381790919063ffffffff16565b61381790919063ffffffff16565b90508083839550955095505050509193909250565b6000806000806137a7858961201590919063ffffffff16565b905060006137be868961201590919063ffffffff16565b905060006137d5878961201590919063ffffffff16565b905060006137fe826137f0858761381790919063ffffffff16565b61381790919063ffffffff16565b9050838184965096509650505050509450945094915050565b600081836138259190615650565b905092915050565b6000600267ffffffffffffffff81111561384a57613849615806565b5b6040519080825280602002602001820160405280156138785781602001602082028036833780820191505090505b50905030816000815181106138905761388f6157d7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561393257600080fd5b505afa158015613946573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061396a9190614b99565b8160018151811061397e5761397d6157d7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506139e530600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612049565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430613a3d61012c42612d8090919063ffffffff16565b6040518663ffffffff1660e01b8152600401613a5d9594939291906153f1565b600060405180830381600087803b158015613a7757600080fd5b505af1158015613a8b573d6000803e3d6000fd5b505050505050565b613ac030600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612049565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613b3c61012c42612d8090919063ffffffff16565b6040518863ffffffff1660e01b8152600401613b5d96959493929190615138565b6060604051808303818588803b158015613b7657600080fd5b505af1158015613b8a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613baf9190614d06565b5050505050565b6000601860069054906101000a900460ff1660ff16148015613bea57506000601860049054906101000a900460ff1660ff16145b8015613c0857506000601860009054906101000a900460ff1660ff16145b8015613c2657506000601860029054906101000a900460ff1660ff16145b15613c3057613d49565b601860069054906101000a900460ff16601860076101000a81548160ff021916908360ff160217905550601860049054906101000a900460ff16601860056101000a81548160ff021916908360ff160217905550601860009054906101000a900460ff16601860016101000a81548160ff021916908360ff160217905550601860029054906101000a900460ff16601860036101000a81548160ff021916908360ff1602179055506000601860066101000a81548160ff021916908360ff1602179055506000601860046101000a81548160ff021916908360ff1602179055506000601860006101000a81548160ff021916908360ff1602179055506000601860026101000a81548160ff021916908360ff1602179055505b565b600080600080600080613d5d87612d96565b955095509550955095509550613dbb87600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461381790919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e5086600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461381790919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ee585600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d8090919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f318161482b565b613f3b8483614ac9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613f9891906153d6565b60405180910390a3505050505050505050565b600080600080600080613fbd87612d96565b95509550955095509550955061401b86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461381790919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506140b083600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d8090919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061414585600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d8090919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506141918161482b565b61419b8483614ac9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516141f891906153d6565b60405180910390a3505050505050505050565b60008060008060008061421d87612d96565b95509550955095509550955061427b86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461381790919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061431085600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d8090919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061435c8161482b565b6143668483614ac9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516143c391906153d6565b60405180910390a3505050505050505050565b6000806000806000806143e887612d96565b95509550955095509550955061444687600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461381790919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506144db86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461381790919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061457083600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d8090919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061460585600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d8090919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506146518161482b565b61465b8483614ac9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516146b891906153d6565b60405180910390a3505050505050505050565b601860079054906101000a900460ff16601860066101000a81548160ff021916908360ff160217905550601860059054906101000a900460ff16601860046101000a81548160ff021916908360ff160217905550601860019054906101000a900460ff16601860006101000a81548160ff021916908360ff160217905550601860039054906101000a900460ff16601860026101000a81548160ff021916908360ff160217905550565b60006147af60646147a1601860069054906101000a900460ff1660ff168561201590919063ffffffff16565b61202b90919063ffffffff16565b9050919050565b60006148246064614816601860049054906101000a900460ff16601860029054906101000a900460ff16601860009054906101000a900460ff166147fa9190615553565b6148049190615553565b60ff168561201590919063ffffffff16565b61202b90919063ffffffff16565b9050919050565b601860089054906101000a900460ff1660ff16601860009054906101000a900460ff1660ff168261485c91906155bb565b614866919061558a565b6016600082825461487791906154fd565b92505081905550601860089054906101000a900460ff1660ff16601860049054906101000a900460ff1660ff16826148af91906155bb565b6148b9919061558a565b601560008282546148ca91906154fd565b92505081905550601860089054906101000a900460ff1660ff16601860029054906101000a900460ff1660ff168261490291906155bb565b61490c919061558a565b6017600082825461491d91906154fd565b92505081905550600061492e612d55565b90506000614945828461201590919063ffffffff16565b905061499981600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d8090919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614ac457614a8083600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d8090919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b614ade8260115461381790919063ffffffff16565b601181905550614af981601254612d8090919063ffffffff16565b6012819055505050565b600081359050614b1281615c34565b92915050565b600081519050614b2781615c34565b92915050565b600081359050614b3c81615c4b565b92915050565b600081359050614b5181615c62565b92915050565b600081519050614b6681615c62565b92915050565b600060208284031215614b8257614b81615835565b5b6000614b9084828501614b03565b91505092915050565b600060208284031215614baf57614bae615835565b5b6000614bbd84828501614b18565b91505092915050565b60008060408385031215614bdd57614bdc615835565b5b6000614beb85828601614b03565b9250506020614bfc85828601614b03565b9150509250929050565b600080600060608486031215614c1f57614c1e615835565b5b6000614c2d86828701614b03565b9350506020614c3e86828701614b03565b9250506040614c4f86828701614b42565b9150509250925092565b60008060408385031215614c7057614c6f615835565b5b6000614c7e85828601614b03565b9250506020614c8f85828601614b42565b9150509250929050565b600060208284031215614caf57614cae615835565b5b6000614cbd84828501614b42565b91505092915050565b60008060408385031215614cdd57614cdc615835565b5b6000614ceb85828601614b42565b9250506020614cfc85828601614b2d565b9150509250929050565b600080600060608486031215614d1f57614d1e615835565b5b6000614d2d86828701614b57565b9350506020614d3e86828701614b57565b9250506040614d4f86828701614b57565b9150509250925092565b6000614d658383614d80565b60208301905092915050565b614d7a81615696565b82525050565b614d8981615684565b82525050565b614d9881615684565b82525050565b6000614da9826154ad565b614db381856154d0565b9350614dbe8361549d565b8060005b83811015614def578151614dd68882614d59565b9750614de1836154c3565b925050600181019050614dc2565b5085935050505092915050565b614e05816156a8565b82525050565b614e14816156eb565b82525050565b6000614e25826154b8565b614e2f81856154ec565b9350614e3f8185602086016156fd565b614e488161583a565b840191505092915050565b6000614e60601e836154ec565b9150614e6b8261584b565b602082019050919050565b6000614e83601c836154ec565b9150614e8e82615874565b602082019050919050565b6000614ea6602f836154ec565b9150614eb18261589d565b604082019050919050565b6000614ec96021836154ec565b9150614ed4826158ec565b604082019050919050565b6000614eec6017836154ec565b9150614ef78261593b565b602082019050919050565b6000614f0f6014836154ec565b9150614f1a82615964565b602082019050919050565b6000614f32601f836154ec565b9150614f3d8261598d565b602082019050919050565b6000614f556027836154ec565b9150614f60826159b6565b604082019050919050565b6000614f786025836154ec565b9150614f8382615a05565b604082019050919050565b6000614f9b601e836154ec565b9150614fa682615a54565b602082019050919050565b6000614fbe6025836154ec565b9150614fc982615a7d565b604082019050919050565b6000614fe1602b836154ec565b9150614fec82615acc565b604082019050919050565b60006150046025836154ec565b915061500f82615b1b565b604082019050919050565b60006150276037836154ec565b915061503282615b6a565b604082019050919050565b600061504a6029836154ec565b915061505582615bb9565b604082019050919050565b600061506d6000836154e1565b915061507882615c08565b600082019050919050565b60006150906020836154ec565b915061509b82615c0b565b602082019050919050565b6150af816156d4565b82525050565b6150be816156de565b82525050565b60006150cf82615060565b9150819050919050565b60006020820190506150ee6000830184614d8f565b92915050565b60006020820190506151096000830184614d71565b92915050565b60006040820190506151246000830185614d8f565b6151316020830184614d8f565b9392505050565b600060c08201905061514d6000830189614d8f565b61515a60208301886150a6565b6151676040830187614e0b565b6151746060830186614e0b565b6151816080830185614d8f565b61518e60a08301846150a6565b979650505050505050565b60006020820190506151ae6000830184614dfc565b92915050565b600060208201905081810360008301526151ce8184614e1a565b905092915050565b600060208201905081810360008301526151ef81614e53565b9050919050565b6000602082019050818103600083015261520f81614e76565b9050919050565b6000602082019050818103600083015261522f81614e99565b9050919050565b6000602082019050818103600083015261524f81614ebc565b9050919050565b6000602082019050818103600083015261526f81614edf565b9050919050565b6000602082019050818103600083015261528f81614f02565b9050919050565b600060208201905081810360008301526152af81614f25565b9050919050565b600060208201905081810360008301526152cf81614f48565b9050919050565b600060208201905081810360008301526152ef81614f6b565b9050919050565b6000602082019050818103600083015261530f81614f8e565b9050919050565b6000602082019050818103600083015261532f81614fb1565b9050919050565b6000602082019050818103600083015261534f81614fd4565b9050919050565b6000602082019050818103600083015261536f81614ff7565b9050919050565b6000602082019050818103600083015261538f8161501a565b9050919050565b600060208201905081810360008301526153af8161503d565b9050919050565b600060208201905081810360008301526153cf81615083565b9050919050565b60006020820190506153eb60008301846150a6565b92915050565b600060a08201905061540660008301886150a6565b6154136020830187614e0b565b81810360408301526154258186614d9e565b90506154346060830185614d8f565b61544160808301846150a6565b9695505050505050565b600060608201905061546060008301866150a6565b61546d60208301856150a6565b61547a60408301846150a6565b949350505050565b600060208201905061549760008301846150b5565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000615508826156d4565b9150615513836156d4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561554857615547615779565b5b828201905092915050565b600061555e826156de565b9150615569836156de565b92508260ff0382111561557f5761557e615779565b5b828201905092915050565b6000615595826156d4565b91506155a0836156d4565b9250826155b0576155af6157a8565b5b828204905092915050565b60006155c6826156d4565b91506155d1836156d4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561560a57615609615779565b5b828202905092915050565b6000615620826156de565b915061562b836156de565b92508160ff048311821515161561564557615644615779565b5b828202905092915050565b600061565b826156d4565b9150615666836156d4565b92508282101561567957615678615779565b5b828203905092915050565b600061568f826156b4565b9050919050565b60006156a1826156b4565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006156f6826156d4565b9050919050565b60005b8381101561571b578082015181840152602081019050615700565b8381111561572a576000848401525b50505050565b600061573b826156d4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561576e5761576d615779565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a20617070726f766520746f207a65726f20616464726573730000600082015250565b7f416d74206d757374206265206c657373207468616e20737570706c7900000000600082015250565b7f4c696d6974732061726520696e20706c6163652c20706c65617365206c6f776560008201527f7220627579696e6720616d6f756e740000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f7573657220616c72656164792061646420617320626f74000000000000000000600082015250565b7f7573657220616c72656164792072656d6f766564000000000000000000000000600082015250565b7f45524332303a207472616e7366657220746f207a65726f206164647265737300600082015250565b7f4d617820616d6f756e74206f6620746f6b656e7320666f722077616c6c65742060008201527f7265616368656400000000000000000000000000000000000000000000000000602082015250565b7f5f6c69717569646974794164647265737320616464726573732063616e6e6f7460008201527f2062652030000000000000000000000000000000000000000000000000000000602082015250565b7f416d74206d757374206265206c657373207468616e20746f74207265666c0000600082015250565b7f5f6d61726b6574696e674164647265737320616464726573732063616e6e6f7460008201527f2062652030000000000000000000000000000000000000000000000000000000602082015250565b7f45524332304f776e61626c653a206e6577206f776e657220697320746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f536e69706572732063616e2774207472616e7366657220746f6b656e7320746f60008201527f2073656c6c206368656170657220444d2061204d6f642e000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d207a65726f2061646472657373600082015250565b615c3d81615684565b8114615c4857600080fd5b50565b615c54816156a8565b8114615c5f57600080fd5b50565b615c6b816156d4565b8114615c7657600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205a192311db1cf116b2fdae8a0dc12b1964c4cad9df8c1dcb45c009ad5958d61064736f6c63430008070033
Deployed Bytecode
0x60806040526004361061023f5760003560e01c80635fecd9261161012e578063a457c2d7116100ab578063ea372aa71161006f578063ea372aa71461086e578063ee40166e14610899578063f2fde38b146108c4578063f5eb223d146108ed578063ffecf5161461090457610246565b8063a457c2d714610761578063a5ece9411461079e578063a9059cbb146107c9578063afcf2fc414610806578063dd62ed3e1461083157610246565b806385ecfd28116100f257806385ecfd281461066857806388f82020146106a55780638da5cb5b146106e2578063906e9dd01461070d57806395d89b411461073657610246565b80635fecd926146105bd578063620b4bfc146105e65780636e86ea8b146105fd57806370a0823114610614578063715018a61461065157610246565b806335d98bd3116101bc5780634f03cfbe116101805780634f03cfbe146104fe5780635342acb41461052957806356cd40e7146105665780635bb988c91461057d5780635c0fdd4c146105a657610246565b806335d98bd31461041957806339509351146104305780634130f6dc1461046d578063437823ec146104985780634549b039146104c157610246565b80631fc851bd116102035780631fc851bd1461033257806323b872dd1461035d5780632cf0d13d1461039a5780632d838119146103b1578063313ce567146103ee57610246565b806306fdde031461024b578063095ea7b3146102765780630c9be46d146102b35780631054ccab146102dc57806318160ddd1461030757610246565b3661024657005b600080fd5b34801561025757600080fd5b5061026061092d565b60405161026d91906151b4565b60405180910390f35b34801561028257600080fd5b5061029d60048036038101906102989190614c59565b61096a565b6040516102aa9190615199565b60405180910390f35b3480156102bf57600080fd5b506102da60048036038101906102d59190614b6c565b610988565b005b3480156102e857600080fd5b506102f1610aef565b6040516102fe91906153d6565b60405180910390f35b34801561031357600080fd5b5061031c610af9565b60405161032991906153d6565b60405180910390f35b34801561033e57600080fd5b50610347610b0d565b60405161035491906153d6565b60405180910390f35b34801561036957600080fd5b50610384600480360381019061037f9190614c06565b610b13565b6040516103919190615199565b60405180910390f35b3480156103a657600080fd5b506103af610bec565b005b3480156103bd57600080fd5b506103d860048036038101906103d39190614c99565b610c85565b6040516103e591906153d6565b60405180910390f35b3480156103fa57600080fd5b50610403610cf3565b6040516104109190615482565b60405180910390f35b34801561042557600080fd5b5061042e610cfc565b005b34801561043c57600080fd5b5061045760048036038101906104529190614c59565b610d95565b6040516104649190615199565b60405180910390f35b34801561047957600080fd5b50610482610e48565b60405161048f91906153d6565b60405180910390f35b3480156104a457600080fd5b506104bf60048036038101906104ba9190614b6c565b610e52565b005b3480156104cd57600080fd5b506104e860048036038101906104e39190614cc6565b610f29565b6040516104f591906153d6565b60405180910390f35b34801561050a57600080fd5b50610513610fb7565b60405161052091906153d6565b60405180910390f35b34801561053557600080fd5b50610550600480360381019061054b9190614b6c565b610fc1565b60405161055d9190615199565b60405180910390f35b34801561057257600080fd5b5061057b611017565b005b34801561058957600080fd5b506105a4600480360381019061059f9190614b6c565b6110b0565b005b3480156105b257600080fd5b506105bb6111ca565b005b3480156105c957600080fd5b506105e460048036038101906105df9190614b6c565b611263565b005b3480156105f257600080fd5b506105fb6113c6565b005b34801561060957600080fd5b5061061261145f565b005b34801561062057600080fd5b5061063b60048036038101906106369190614b6c565b6114f8565b60405161064891906153d6565b60405180910390f35b34801561065d57600080fd5b506106666115e3565b005b34801561067457600080fd5b5061068f600480360381019061068a9190614b6c565b61171d565b60405161069c9190615199565b60405180910390f35b3480156106b157600080fd5b506106cc60048036038101906106c79190614b6c565b61173d565b6040516106d99190615199565b60405180910390f35b3480156106ee57600080fd5b506106f7611793565b60405161070491906150d9565b60405180910390f35b34801561071957600080fd5b50610734600480360381019061072f9190614b6c565b6117bc565b005b34801561074257600080fd5b5061074b611a17565b60405161075891906151b4565b60405180910390f35b34801561076d57600080fd5b5061078860048036038101906107839190614c59565b611a54565b6040516107959190615199565b60405180910390f35b3480156107aa57600080fd5b506107b3611b21565b6040516107c091906150f4565b60405180910390f35b3480156107d557600080fd5b506107f060048036038101906107eb9190614c59565b611b47565b6040516107fd9190615199565b60405180910390f35b34801561081257600080fd5b5061081b611b65565b60405161082891906150f4565b60405180910390f35b34801561083d57600080fd5b5061085860048036038101906108539190614bc6565b611b8b565b60405161086591906153d6565b60405180910390f35b34801561087a57600080fd5b50610883611c12565b60405161089091906153d6565b60405180910390f35b3480156108a557600080fd5b506108ae611c1c565b6040516108bb91906153d6565b60405180910390f35b3480156108d057600080fd5b506108eb60048036038101906108e69190614b6c565b611c22565b005b3480156108f957600080fd5b50610902611dcb565b005b34801561091057600080fd5b5061092b60048036038101906109269190614b6c565b611e64565b005b60606040518060400160405280600881526020017f484f4f4c4947414e000000000000000000000000000000000000000000000000815250905090565b600061097e610977612041565b8484612049565b6001905092915050565b610990612041565b73ffffffffffffffffffffffffffffffffffffffff166109ae611793565b73ffffffffffffffffffffffffffffffffffffffff1614610a04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fb90615356565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610a74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6b906152d6565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fff6a822e9e2c4fe74d4f27fcde00b94c5abb41dd24b73e718952279715fa663281604051610ae491906150d9565b60405180910390a150565b6000601654905090565b60006b033b2e3c9fd0803ce8000000905090565b60105481565b6000610b20848484612214565b610be184610b2c612041565b610bdc85604051806060016040528060288152602001615c7a60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b92612041565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d009092919063ffffffff16565b612049565b600190509392505050565b610bf4612041565b73ffffffffffffffffffffffffffffffffffffffff16610c12611793565b73ffffffffffffffffffffffffffffffffffffffff1614610c68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5f90615356565b60405180910390fd5b6001600e60176101000a81548160ff021916908315150217905550565b6000601154821115610ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc3906152f6565b60405180910390fd5b6000610cd6612d55565b9050610ceb818461202b90919063ffffffff16565b915050919050565b60006012905090565b610d04612041565b73ffffffffffffffffffffffffffffffffffffffff16610d22611793565b73ffffffffffffffffffffffffffffffffffffffff1614610d78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6f90615356565b60405180910390fd5b6001600e60166101000a81548160ff021916908315150217905550565b6000610e3e610da2612041565b84610e398560036000610db3612041565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d8090919063ffffffff16565b612049565b6001905092915050565b6000601554905090565b610e5a612041565b73ffffffffffffffffffffffffffffffffffffffff16610e78611793565b73ffffffffffffffffffffffffffffffffffffffff1614610ece576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec590615356565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006b033b2e3c9fd0803ce8000000831115610f7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f71906151f6565b60405180910390fd5b81610f9a576000610f8a84612d96565b5050505050905080915050610fb1565b6000610fa584612d96565b50505050915050809150505b92915050565b6000601754905090565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61101f612041565b73ffffffffffffffffffffffffffffffffffffffff1661103d611793565b73ffffffffffffffffffffffffffffffffffffffff1614611093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108a90615356565b60405180910390fd5b6000600e60176101000a81548160ff021916908315150217905550565b6110b8612041565b73ffffffffffffffffffffffffffffffffffffffff166110d6611793565b73ffffffffffffffffffffffffffffffffffffffff161461112c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112390615356565b60405180910390fd5b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fccaa6e1cfd4cf9506fa856fdc8e0a00894b2621ece1d60ab362098733059449860405160405180910390a250565b6111d2612041565b73ffffffffffffffffffffffffffffffffffffffff166111f0611793565b73ffffffffffffffffffffffffffffffffffffffff1614611246576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123d90615356565b60405180910390fd5b6000600e60186101000a81548160ff021916908315150217905550565b61126b612041565b73ffffffffffffffffffffffffffffffffffffffff16611289611793565b73ffffffffffffffffffffffffffffffffffffffff16146112df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d690615356565b60405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661136b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136290615276565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6113ce612041565b73ffffffffffffffffffffffffffffffffffffffff166113ec611793565b73ffffffffffffffffffffffffffffffffffffffff1614611442576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143990615356565b60405180910390fd5b6000600e60156101000a81548160ff021916908315150217905550565b611467612041565b73ffffffffffffffffffffffffffffffffffffffff16611485611793565b73ffffffffffffffffffffffffffffffffffffffff16146114db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d290615356565b60405180910390fd5b6001600e60156101000a81548160ff021916908315150217905550565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561159357600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506115de565b6115db600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c85565b90505b919050565b6115eb612041565b73ffffffffffffffffffffffffffffffffffffffff16611609611793565b73ffffffffffffffffffffffffffffffffffffffff161461165f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165690615356565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60086020528060005260406000206000915054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6117c4612041565b73ffffffffffffffffffffffffffffffffffffffff166117e2611793565b73ffffffffffffffffffffffffffffffffffffffff1614611838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182f90615356565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156118a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189f90615316565b60405180910390fd5b600060046000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fd1e7d6a3390dd5008bd1c57798817b9f806e4c417264e7d3d67e42e784dc24a981604051611a0c91906150d9565b60405180910390a150565b60606040518060400160405280600481526020017f52494f5400000000000000000000000000000000000000000000000000000000815250905090565b6000611b17611a61612041565b84611b1285604051806060016040528060258152602001615ca26025913960036000611a8b612041565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d009092919063ffffffff16565b612049565b6001905092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611b5b611b54612041565b8484612214565b6001905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000601454905090565b600f5481565b611c2a612041565b73ffffffffffffffffffffffffffffffffffffffff16611c48611793565b73ffffffffffffffffffffffffffffffffffffffff1614611c9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9590615356565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611d0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0590615336565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611dd3612041565b73ffffffffffffffffffffffffffffffffffffffff16611df1611793565b73ffffffffffffffffffffffffffffffffffffffff1614611e47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3e90615356565b60405180910390fd5b6001600e60186101000a81548160ff021916908315150217905550565b611e6c612041565b73ffffffffffffffffffffffffffffffffffffffff16611e8a611793565b73ffffffffffffffffffffffffffffffffffffffff1614611ee0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed790615356565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611f2d57600080fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611fba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb190615256565b60405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000818361202391906155bb565b905092915050565b60008183612039919061558a565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156120b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b0906153b6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612129576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612120906151d6565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161220791906153d6565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227b90615236565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122eb90615296565b60405180910390fd5b60008111612337576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232e90615396565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561238e57600080fd5b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615806123e957504260105411155b612428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241f90615376565b60405180910390fd5b60011515600e60189054906101000a900460ff1615151480156124955750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124f357601354816124a7846114f8565b6124b191906154fd565b11156124f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e9906152b6565b60405180910390fd5b5b60011515600e60179054906101000a900460ff1615151480156125635750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156125b7576a084595161401484a0000008111156125b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ad90615216565b60405180910390fd5b5b60011515600e60169054906101000a900460ff1615151415612954576000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561267357600080fd5b505afa158015612687573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ab9190614b99565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561270d57600080fd5b505afa158015612721573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127459190614b99565b6040518363ffffffff1660e01b815260040161276292919061510f565b60206040518083038186803b15801561277a57600080fd5b505afa15801561278e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127b29190614b99565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555043600f81905550610e104261280791906154fd565b601081905550600160066000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60176101000a81548160ff0219169083151502179055506001600e60186101000a81548160ff0219169083151502179055506000600e60166101000a81548160ff021916908315150217905550505b61295c611793565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129e55750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129f25750600f5443145b15612a93576001600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fb90badc1cf1c52268f4fa9afb5276aebf640bcca3300cdfc9cf37db17daa13e260405160405180910390a25b6000612a9e306114f8565b9050600e60149054906101000a900460ff16158015612b0a5750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015612b225750600e60159054906101000a900460ff165b15612b3a576014548110612b3957612b38612df2565b5b5b600060019050600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612be15750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612beb57600090505b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c45575042601054115b15612ced576002601860049054906101000a900460ff16612c669190615615565b601860046101000a81548160ff021916908360ff1602179055506003601860009054906101000a900460ff16612c9c9190615615565b601860006101000a81548160ff021916908360ff1602179055506002601860029054906101000a900460ff16612cd29190615615565b601860026101000a81548160ff021916908360ff1602179055505b612cf985858584613148565b5050505050565b6000838311158290612d48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3f91906151b4565b60405180910390fd5b5082840390509392505050565b6000806000612d62613459565b91509150612d79818361202b90919063ffffffff16565b9250505090565b60008183612d8e91906154fd565b905092915050565b6000806000806000806000806000612dad8a613734565b9250925092506000806000612dcb8d8686612dc6612d55565b61378e565b9250925092508282828888889b509b509b509b509b509b5050505050505091939550919395565b6001600e60146101000a81548160ff0219169083151502179055506000612e18306114f8565b90506000601754601654601554612e2f91906154fd565b612e3991906154fd565b90506000612e53600260155461202b90919063ffffffff16565b90506000612e6a828561381790919063ffffffff16565b90506000479050612e7a8261382d565b6000612e8f824761381790919063ffffffff16565b90506000612eba86612eac6016548561201590919063ffffffff16565b61202b90919063ffffffff16565b90506000612ee587612ed76017548661201590919063ffffffff16565b61202b90919063ffffffff16565b90506000612f0e82612f00858761381790919063ffffffff16565b61381790919063ffffffff16565b90506000601581905550600060168190555060006017819055506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051612f70906150c4565b60006040518083038185875af1925050503d8060008114612fad576040519150601f19603f3d011682016040523d82523d6000602084013e612fb2565b606091505b50509050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051612ffc906150c4565b60006040518083038185875af1925050503d8060008114613039576040519150601f19603f3d011682016040523d82523d6000602084013e61303e565b606091505b50508091505061304e8883613a93565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56187838a6040516130819392919061544b565b60405180910390a1600047111561312157600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516130d8906150c4565b60006040518083038185875af1925050503d8060008114613115576040519150601f19603f3d011682016040523d82523d6000602084013e61311a565b606091505b5050809150505b505050505050505050506000600e60146101000a81548160ff021916908315150217905550565b8061315657613155613bb6565b5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131f95750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561320e57613209848484613d4b565b613445565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156132b15750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156132c6576132c1848484613fab565b613444565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561336a5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561337f5761337a84848461420b565b613443565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134215750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613436576134318484846143d6565b613442565b61344184848461420b565b5b5b5b5b80613453576134526146cb565b5b50505050565b6000806000601154905060006b033b2e3c9fd0803ce8000000905060005b600a805490508110156136e3578260016000600a848154811061349d5761349c6157d7565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061358b57508160026000600a8481548110613523576135226157d7565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156135ac576011546b033b2e3c9fd0803ce800000094509450505050613730565b61363c60016000600a84815481106135c7576135c66157d7565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461381790919063ffffffff16565b92506136ce60026000600a8481548110613659576136586157d7565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361381790919063ffffffff16565b915080806136db90615730565b915050613477565b506137056b033b2e3c9fd0803ce800000060115461202b90919063ffffffff16565b821015613727576011546b033b2e3c9fd0803ce8000000935093505050613730565b81819350935050505b9091565b60008060008061374385614775565b90506000613750866147b6565b905060006137798261376b858a61381790919063ffffffff16565b61381790919063ffffffff16565b90508083839550955095505050509193909250565b6000806000806137a7858961201590919063ffffffff16565b905060006137be868961201590919063ffffffff16565b905060006137d5878961201590919063ffffffff16565b905060006137fe826137f0858761381790919063ffffffff16565b61381790919063ffffffff16565b9050838184965096509650505050509450945094915050565b600081836138259190615650565b905092915050565b6000600267ffffffffffffffff81111561384a57613849615806565b5b6040519080825280602002602001820160405280156138785781602001602082028036833780820191505090505b50905030816000815181106138905761388f6157d7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561393257600080fd5b505afa158015613946573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061396a9190614b99565b8160018151811061397e5761397d6157d7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506139e530600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612049565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430613a3d61012c42612d8090919063ffffffff16565b6040518663ffffffff1660e01b8152600401613a5d9594939291906153f1565b600060405180830381600087803b158015613a7757600080fd5b505af1158015613a8b573d6000803e3d6000fd5b505050505050565b613ac030600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612049565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613b3c61012c42612d8090919063ffffffff16565b6040518863ffffffff1660e01b8152600401613b5d96959493929190615138565b6060604051808303818588803b158015613b7657600080fd5b505af1158015613b8a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613baf9190614d06565b5050505050565b6000601860069054906101000a900460ff1660ff16148015613bea57506000601860049054906101000a900460ff1660ff16145b8015613c0857506000601860009054906101000a900460ff1660ff16145b8015613c2657506000601860029054906101000a900460ff1660ff16145b15613c3057613d49565b601860069054906101000a900460ff16601860076101000a81548160ff021916908360ff160217905550601860049054906101000a900460ff16601860056101000a81548160ff021916908360ff160217905550601860009054906101000a900460ff16601860016101000a81548160ff021916908360ff160217905550601860029054906101000a900460ff16601860036101000a81548160ff021916908360ff1602179055506000601860066101000a81548160ff021916908360ff1602179055506000601860046101000a81548160ff021916908360ff1602179055506000601860006101000a81548160ff021916908360ff1602179055506000601860026101000a81548160ff021916908360ff1602179055505b565b600080600080600080613d5d87612d96565b955095509550955095509550613dbb87600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461381790919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e5086600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461381790919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ee585600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d8090919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f318161482b565b613f3b8483614ac9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613f9891906153d6565b60405180910390a3505050505050505050565b600080600080600080613fbd87612d96565b95509550955095509550955061401b86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461381790919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506140b083600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d8090919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061414585600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d8090919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506141918161482b565b61419b8483614ac9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516141f891906153d6565b60405180910390a3505050505050505050565b60008060008060008061421d87612d96565b95509550955095509550955061427b86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461381790919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061431085600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d8090919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061435c8161482b565b6143668483614ac9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516143c391906153d6565b60405180910390a3505050505050505050565b6000806000806000806143e887612d96565b95509550955095509550955061444687600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461381790919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506144db86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461381790919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061457083600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d8090919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061460585600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d8090919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506146518161482b565b61465b8483614ac9565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516146b891906153d6565b60405180910390a3505050505050505050565b601860079054906101000a900460ff16601860066101000a81548160ff021916908360ff160217905550601860059054906101000a900460ff16601860046101000a81548160ff021916908360ff160217905550601860019054906101000a900460ff16601860006101000a81548160ff021916908360ff160217905550601860039054906101000a900460ff16601860026101000a81548160ff021916908360ff160217905550565b60006147af60646147a1601860069054906101000a900460ff1660ff168561201590919063ffffffff16565b61202b90919063ffffffff16565b9050919050565b60006148246064614816601860049054906101000a900460ff16601860029054906101000a900460ff16601860009054906101000a900460ff166147fa9190615553565b6148049190615553565b60ff168561201590919063ffffffff16565b61202b90919063ffffffff16565b9050919050565b601860089054906101000a900460ff1660ff16601860009054906101000a900460ff1660ff168261485c91906155bb565b614866919061558a565b6016600082825461487791906154fd565b92505081905550601860089054906101000a900460ff1660ff16601860049054906101000a900460ff1660ff16826148af91906155bb565b6148b9919061558a565b601560008282546148ca91906154fd565b92505081905550601860089054906101000a900460ff1660ff16601860029054906101000a900460ff1660ff168261490291906155bb565b61490c919061558a565b6017600082825461491d91906154fd565b92505081905550600061492e612d55565b90506000614945828461201590919063ffffffff16565b905061499981600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d8090919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615614ac457614a8083600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d8090919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b614ade8260115461381790919063ffffffff16565b601181905550614af981601254612d8090919063ffffffff16565b6012819055505050565b600081359050614b1281615c34565b92915050565b600081519050614b2781615c34565b92915050565b600081359050614b3c81615c4b565b92915050565b600081359050614b5181615c62565b92915050565b600081519050614b6681615c62565b92915050565b600060208284031215614b8257614b81615835565b5b6000614b9084828501614b03565b91505092915050565b600060208284031215614baf57614bae615835565b5b6000614bbd84828501614b18565b91505092915050565b60008060408385031215614bdd57614bdc615835565b5b6000614beb85828601614b03565b9250506020614bfc85828601614b03565b9150509250929050565b600080600060608486031215614c1f57614c1e615835565b5b6000614c2d86828701614b03565b9350506020614c3e86828701614b03565b9250506040614c4f86828701614b42565b9150509250925092565b60008060408385031215614c7057614c6f615835565b5b6000614c7e85828601614b03565b9250506020614c8f85828601614b42565b9150509250929050565b600060208284031215614caf57614cae615835565b5b6000614cbd84828501614b42565b91505092915050565b60008060408385031215614cdd57614cdc615835565b5b6000614ceb85828601614b42565b9250506020614cfc85828601614b2d565b9150509250929050565b600080600060608486031215614d1f57614d1e615835565b5b6000614d2d86828701614b57565b9350506020614d3e86828701614b57565b9250506040614d4f86828701614b57565b9150509250925092565b6000614d658383614d80565b60208301905092915050565b614d7a81615696565b82525050565b614d8981615684565b82525050565b614d9881615684565b82525050565b6000614da9826154ad565b614db381856154d0565b9350614dbe8361549d565b8060005b83811015614def578151614dd68882614d59565b9750614de1836154c3565b925050600181019050614dc2565b5085935050505092915050565b614e05816156a8565b82525050565b614e14816156eb565b82525050565b6000614e25826154b8565b614e2f81856154ec565b9350614e3f8185602086016156fd565b614e488161583a565b840191505092915050565b6000614e60601e836154ec565b9150614e6b8261584b565b602082019050919050565b6000614e83601c836154ec565b9150614e8e82615874565b602082019050919050565b6000614ea6602f836154ec565b9150614eb18261589d565b604082019050919050565b6000614ec96021836154ec565b9150614ed4826158ec565b604082019050919050565b6000614eec6017836154ec565b9150614ef78261593b565b602082019050919050565b6000614f0f6014836154ec565b9150614f1a82615964565b602082019050919050565b6000614f32601f836154ec565b9150614f3d8261598d565b602082019050919050565b6000614f556027836154ec565b9150614f60826159b6565b604082019050919050565b6000614f786025836154ec565b9150614f8382615a05565b604082019050919050565b6000614f9b601e836154ec565b9150614fa682615a54565b602082019050919050565b6000614fbe6025836154ec565b9150614fc982615a7d565b604082019050919050565b6000614fe1602b836154ec565b9150614fec82615acc565b604082019050919050565b60006150046025836154ec565b915061500f82615b1b565b604082019050919050565b60006150276037836154ec565b915061503282615b6a565b604082019050919050565b600061504a6029836154ec565b915061505582615bb9565b604082019050919050565b600061506d6000836154e1565b915061507882615c08565b600082019050919050565b60006150906020836154ec565b915061509b82615c0b565b602082019050919050565b6150af816156d4565b82525050565b6150be816156de565b82525050565b60006150cf82615060565b9150819050919050565b60006020820190506150ee6000830184614d8f565b92915050565b60006020820190506151096000830184614d71565b92915050565b60006040820190506151246000830185614d8f565b6151316020830184614d8f565b9392505050565b600060c08201905061514d6000830189614d8f565b61515a60208301886150a6565b6151676040830187614e0b565b6151746060830186614e0b565b6151816080830185614d8f565b61518e60a08301846150a6565b979650505050505050565b60006020820190506151ae6000830184614dfc565b92915050565b600060208201905081810360008301526151ce8184614e1a565b905092915050565b600060208201905081810360008301526151ef81614e53565b9050919050565b6000602082019050818103600083015261520f81614e76565b9050919050565b6000602082019050818103600083015261522f81614e99565b9050919050565b6000602082019050818103600083015261524f81614ebc565b9050919050565b6000602082019050818103600083015261526f81614edf565b9050919050565b6000602082019050818103600083015261528f81614f02565b9050919050565b600060208201905081810360008301526152af81614f25565b9050919050565b600060208201905081810360008301526152cf81614f48565b9050919050565b600060208201905081810360008301526152ef81614f6b565b9050919050565b6000602082019050818103600083015261530f81614f8e565b9050919050565b6000602082019050818103600083015261532f81614fb1565b9050919050565b6000602082019050818103600083015261534f81614fd4565b9050919050565b6000602082019050818103600083015261536f81614ff7565b9050919050565b6000602082019050818103600083015261538f8161501a565b9050919050565b600060208201905081810360008301526153af8161503d565b9050919050565b600060208201905081810360008301526153cf81615083565b9050919050565b60006020820190506153eb60008301846150a6565b92915050565b600060a08201905061540660008301886150a6565b6154136020830187614e0b565b81810360408301526154258186614d9e565b90506154346060830185614d8f565b61544160808301846150a6565b9695505050505050565b600060608201905061546060008301866150a6565b61546d60208301856150a6565b61547a60408301846150a6565b949350505050565b600060208201905061549760008301846150b5565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000615508826156d4565b9150615513836156d4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561554857615547615779565b5b828201905092915050565b600061555e826156de565b9150615569836156de565b92508260ff0382111561557f5761557e615779565b5b828201905092915050565b6000615595826156d4565b91506155a0836156d4565b9250826155b0576155af6157a8565b5b828204905092915050565b60006155c6826156d4565b91506155d1836156d4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561560a57615609615779565b5b828202905092915050565b6000615620826156de565b915061562b836156de565b92508160ff048311821515161561564557615644615779565b5b828202905092915050565b600061565b826156d4565b9150615666836156d4565b92508282101561567957615678615779565b5b828203905092915050565b600061568f826156b4565b9050919050565b60006156a1826156b4565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006156f6826156d4565b9050919050565b60005b8381101561571b578082015181840152602081019050615700565b8381111561572a576000848401525b50505050565b600061573b826156d4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561576e5761576d615779565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a20617070726f766520746f207a65726f20616464726573730000600082015250565b7f416d74206d757374206265206c657373207468616e20737570706c7900000000600082015250565b7f4c696d6974732061726520696e20706c6163652c20706c65617365206c6f776560008201527f7220627579696e6720616d6f756e740000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f7573657220616c72656164792061646420617320626f74000000000000000000600082015250565b7f7573657220616c72656164792072656d6f766564000000000000000000000000600082015250565b7f45524332303a207472616e7366657220746f207a65726f206164647265737300600082015250565b7f4d617820616d6f756e74206f6620746f6b656e7320666f722077616c6c65742060008201527f7265616368656400000000000000000000000000000000000000000000000000602082015250565b7f5f6c69717569646974794164647265737320616464726573732063616e6e6f7460008201527f2062652030000000000000000000000000000000000000000000000000000000602082015250565b7f416d74206d757374206265206c657373207468616e20746f74207265666c0000600082015250565b7f5f6d61726b6574696e674164647265737320616464726573732063616e6e6f7460008201527f2062652030000000000000000000000000000000000000000000000000000000602082015250565b7f45524332304f776e61626c653a206e6577206f776e657220697320746865207a60008201527f65726f2061646472657373000000000000000000000000000000000000000000602082015250565b7f45524332304f776e61626c653a2063616c6c6572206973206e6f74207468652060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f536e69706572732063616e2774207472616e7366657220746f6b656e7320746f60008201527f2073656c6c206368656170657220444d2061204d6f642e000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d207a65726f2061646472657373600082015250565b615c3d81615684565b8114615c4857600080fd5b50565b615c54816156a8565b8114615c5f57600080fd5b50565b615c6b816156d4565b8114615c7657600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205a192311db1cf116b2fdae8a0dc12b1964c4cad9df8c1dcb45c009ad5958d61064736f6c63430008070033
Deployed Bytecode Sourcemap
13408:21696:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16663:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18068:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30160:273;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17625:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16968:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14594:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18235:329;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30818:79;;;;;;;;;;;;;:::i;:::-;;19695:241;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16871:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30439:177;;;;;;;;;;;;;:::i;:::-;;18570:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17387:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23419:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19245:444;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17508:111;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23536:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30903:80;;;;;;;;;;;;;:::i;:::-;;27139:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31079:86;;;;;;;;;;;;;:::i;:::-;;26988:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30719:93;;;;;;;;;;;;;:::i;:::-;;30622:91;;;;;;;;;;;;;:::i;:::-;;17069:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1261:148;;;;;;;;;;;;;:::i;:::-;;14032:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19119:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1033:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29756:398;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16769:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18794:319;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14182:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17746:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14228:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17919:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17273:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14550:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1417:249;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30989:84;;;;;;;;;;;;;:::i;:::-;;26766:219;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16663:100;16709:13;16742;;;;;;;;;;;;;;;;;16735:20;;16663:100;:::o;18068:161::-;18143:4;18160:39;18169:12;:10;:12::i;:::-;18183:7;18192:6;18160:8;:39::i;:::-;18217:4;18210:11;;18068:161;;;;:::o;30160:273::-;1179:12;:10;:12::i;:::-;1168:23;;:7;:5;:7::i;:::-;:23;;;1160:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;30275:1:::1;30248:29;;:15;:29;;;;30240:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;30355:15;30330:14;;:41;;;;;;;;;;;;;;;;;;30387:38;30409:15;30387:38;;;;;;:::i;:::-;;;;;;;;30160:273:::0;:::o;17625:115::-;17681:7;17708:24;;17701:31;;17625:115;:::o;16968:95::-;17021:7;14718:19;17041:14;;16968:95;:::o;14594:33::-;;;;:::o;18235:329::-;18331:4;18348:36;18358:6;18366:9;18377:6;18348:9;:36::i;:::-;18395:139;18404:6;18411:12;:10;:12::i;:::-;18434:89;18472:6;18434:89;;;;;;;;;;;;;;;;;:11;:19;18446:6;18434:19;;;;;;;;;;;;;;;:33;18454:12;:10;:12::i;:::-;18434:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;18395:8;:139::i;:::-;18552:4;18545:11;;18235:329;;;;;:::o;30818:79::-;1179:12;:10;:12::i;:::-;1168:23;;:7;:5;:7::i;:::-;:23;;;1160:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;30885:4:::1;30872:10;;:17;;;;;;;;;;;;;;;;;;30818:79::o:0;19695:241::-;19762:7;19801;;19790;:18;;19782:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;19854:19;19876:10;:8;:10::i;:::-;19854:32;;19904:24;19916:11;19904:7;:11;;:24;;;;:::i;:::-;19897:31;;;19695:241;;;:::o;16871:91::-;16921:5;13635:2;16939:15;;16871:91;:::o;30439:177::-;1179:12;:10;:12::i;:::-;1168:23;;:7;:5;:7::i;:::-;:23;;;1160:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;30514:4:::1;30495:16;;:23;;;;;;;;;;;;;;;;;;30439:177::o:0;18570:218::-;18658:4;18675:83;18684:12;:10;:12::i;:::-;18698:7;18707:50;18746:10;18707:11;:25;18719:12;:10;:12::i;:::-;18707:25;;;;;;;;;;;;;;;:34;18733:7;18707:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;18675:8;:83::i;:::-;18776:4;18769:11;;18570:218;;;;:::o;17387:115::-;17443:7;17470:24;;17463:31;;17387:115;:::o;23419:111::-;1179:12;:10;:12::i;:::-;1168:23;;:7;:5;:7::i;:::-;:23;;;1160:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;23518:4:::1;23488:18;:27;23507:7;23488:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;23419:111:::0;:::o;19245:444::-;19336:7;14718:19;19364:7;:18;;19356:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;19431:17;19426:256;;19466:15;19495:19;19506:7;19495:10;:19::i;:::-;19465:49;;;;;;;19536:7;19529:14;;;;;19426:256;19579:23;19614:19;19625:7;19614:10;:19::i;:::-;19576:57;;;;;;;19655:15;19648:22;;;19245:444;;;;;:::o;17508:111::-;17562:7;17589:22;;17582:29;;17508:111;:::o;23536:124::-;23601:4;23625:18;:27;23644:7;23625:27;;;;;;;;;;;;;;;;;;;;;;;;;23618:34;;23536:124;;;:::o;30903:80::-;1179:12;:10;:12::i;:::-;1168:23;;:7;:5;:7::i;:::-;:23;;;1160:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;30970:5:::1;30957:10;;:18;;;;;;;;;;;;;;;;;;30903:80::o:0;27139:148::-;1179:12;:10;:12::i;:::-;1168:23;;:7;:5;:7::i;:::-;:23;;;1160:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;27236:5:::1;27213:11;:20;27225:7;27213:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;27271:7;27257:22;;;;;;;;;;;;27139:148:::0;:::o;31079:86::-;1179:12;:10;:12::i;:::-;1168:23;;:7;:5;:7::i;:::-;:23;;;1160:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;31152:5:::1;31137:12;;:20;;;;;;;;;;;;;;;;;;31079:86::o:0;26988:148::-;1179:12;:10;:12::i;:::-;1168:23;;:7;:5;:7::i;:::-;:23;;;1160:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;27058:6:::1;:13;27065:5;27058:13;;;;;;;;;;;;;;;;;;;;;;;;;27050:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;27123:5;27107:6;:13;27114:5;27107:13;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;26988:148:::0;:::o;30719:93::-;1179:12;:10;:12::i;:::-;1168:23;;:7;:5;:7::i;:::-;:23;;;1160:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;30799:5:::1;30775:21;;:29;;;;;;;;;;;;;;;;;;30719:93::o:0;30622:91::-;1179:12;:10;:12::i;:::-;1168:23;;:7;:5;:7::i;:::-;:23;;;1160:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;30701:4:::1;30677:21;;:28;;;;;;;;;;;;;;;;;;30622:91::o:0;17069:198::-;17135:7;17159:11;:20;17171:7;17159:20;;;;;;;;;;;;;;;;;;;;;;;;;17155:49;;;17188:7;:16;17196:7;17188:16;;;;;;;;;;;;;;;;17181:23;;;;17155:49;17222:37;17242:7;:16;17250:7;17242:16;;;;;;;;;;;;;;;;17222:19;:37::i;:::-;17215:44;;17069:198;;;;:::o;1261:148::-;1179:12;:10;:12::i;:::-;1168:23;;:7;:5;:7::i;:::-;:23;;;1160:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1368:1:::1;1331:40;;1352:6;::::0;::::1;;;;;;;;1331:40;;;;;;;;;;;;1399:1;1382:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1261:148::o:0;14032:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;19119:120::-;19187:4;19211:11;:20;19223:7;19211:20;;;;;;;;;;;;;;;;;;;;;;;;;19204:27;;19119:120;;;:::o;1033:87::-;1079:7;1106:6;;;;;;;;;;;1099:13;;1033:87;:::o;29756:398::-;1179:12;:10;:12::i;:::-;1168:23;;:7;:5;:7::i;:::-;:23;;;1160:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;29879:1:::1;29850:31;;:17;:31;;;;29842:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;29973:5;29934:18;:36;29953:16;;;;;;;;;;;29934:36;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;30016:17;29989:16;;:45;;;;;;;;;;;;;;;;;;30084:4;30045:18;:36;30064:16;;;;;;;;;;;30045:36;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;30104:42;30128:17;30104:42;;;;;;:::i;:::-;;;;;;;;29756:398:::0;:::o;16769:96::-;16817:13;16850:7;;;;;;;;;;;;;;;;;16843:14;;16769:96;:::o;18794:319::-;18887:4;18904:179;18927:12;:10;:12::i;:::-;18954:7;18976:96;19015:15;18976:96;;;;;;;;;;;;;;;;;:11;:25;18988:12;:10;:12::i;:::-;18976:25;;;;;;;;;;;;;;;:34;19002:7;18976:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;18904:8;:179::i;:::-;19101:4;19094:11;;18794:319;;;;:::o;14182:39::-;;;;;;;;;;;;;:::o;17746:167::-;17824:4;17841:42;17851:12;:10;:12::i;:::-;17865:9;17876:6;17841:9;:42::i;:::-;17901:4;17894:11;;17746:167;;;;:::o;14228:37::-;;;;;;;;;;;;;:::o;17919:143::-;18000:7;18027:11;:18;18039:5;18027:18;;;;;;;;;;;;;;;:27;18046:7;18027:27;;;;;;;;;;;;;;;;18020:34;;17919:143;;;;:::o;17273:108::-;17327:7;17354:19;;17347:26;;17273:108;:::o;14550:37::-;;;;:::o;1417:249::-;1179:12;:10;:12::i;:::-;1168:23;;:7;:5;:7::i;:::-;:23;;;1160:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1526:1:::1;1506:22;;:8;:22;;;;1498:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;1621:8;1592:38;;1613:6;::::0;::::1;;;;;;;;1592:38;;;;;;;;;;;;1650:8;1641:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1417:249:::0;:::o;30989:84::-;1179:12;:10;:12::i;:::-;1168:23;;:7;:5;:7::i;:::-;:23;;;1160:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;31061:4:::1;31046:12;;:19;;;;;;;;;;;;;;;;;;30989:84::o:0;26766:219::-;1179:12;:10;:12::i;:::-;1168:23;;:7;:5;:7::i;:::-;:23;;;1160:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;26842:42:::1;26833:51;;:5;:51;;;;26825:60;;;::::0;::::1;;26905:6;:13;26912:5;26905:13;;;;;;;;;;;;;;;;;;;;;;;;;26904:14;26896:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;26973:4;26957:6;:13;26964:5;26957:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;26766:219:::0;:::o;3397:98::-;3455:7;3486:1;3482;:5;;;;:::i;:::-;3475:12;;3397:98;;;;:::o;3501:::-;3559:7;3590:1;3586;:5;;;;:::i;:::-;3579:12;;3501:98;;;;:::o;606:::-;659:7;686:10;679:17;;606:98;:::o;23666:325::-;23774:1;23757:19;;:5;:19;;;;23749:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23851:1;23832:21;;:7;:21;;;;23824:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;23929:6;23899:11;:18;23911:5;23899:18;;;;;;;;;;;;;;;:27;23918:7;23899:27;;;;;;;;;;;;;;;:36;;;;23967:7;23951:32;;23960:5;23951:32;;;23976:6;23951:32;;;;;;:::i;:::-;;;;;;;;23666:325;;;:::o;23997:2251::-;24099:1;24083:18;;:4;:18;;;;24075:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24172:1;24158:16;;:2;:16;;;;24150:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;24238:1;24229:6;:10;24221:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24299:6;:12;24306:4;24299:12;;;;;;;;;;;;;;;;;;;;;;;;;24298:13;24290:22;;;;;;24326:11;:17;24338:4;24326:17;;;;;;;;;;;;;;;;;;;;;;;;;24325:18;:59;;;;24369:15;24347:18;;:37;;24325:59;24317:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;24469:4;24453:20;;:12;;;;;;;;;;;:20;;;:49;;;;;24479:19;:23;24499:2;24479:23;;;;;;;;;;;;;;;;;;;;;;;;;24477:25;24453:49;24449:174;;;24553:14;;24543:6;24527:13;24537:2;24527:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;24519:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;24449:174;24651:4;24637:18;;:10;;;;;;;;;;;:18;;;:39;;;;;24667:9;;;;;;;;;;;24659:17;;:4;:17;;;24637:39;24633:144;;;24702:17;24692:6;:27;;24684:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;24633:144;24810:4;24790:24;;:16;;;;;;;;;;;:24;;;24787:643;;;24831:31;24884:42;24831:96;;24956:12;24942:11;;:26;;;;;;;;;;;;;;;;;;25013:12;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24995:49;;;25053:4;25060:12;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24995:85;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24983:9;;:97;;;;;;;;;;;;;;;;;;25116:12;25095:18;:33;;;;25182:7;25164:15;:25;;;;:::i;:::-;25143:18;:46;;;;25246:4;25204:19;:39;25232:9;;;;;;;;;;;25204:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;25309:4;25265:19;:41;25293:11;;;;;;;;;;;25265:41;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;25341:4;25328:10;;:17;;;;;;;;;;;;;;;;;;25375:4;25360:12;;:19;;;;;;;;;;;;;;;;;;25413:5;25394:16;;:24;;;;;;;;;;;;;;;;;;24816:614;24787:643;25445:7;:5;:7::i;:::-;25437:15;;:4;:15;;;;:34;;;;;25462:9;;;;;;;;;;;25456:15;;:2;:15;;;;25437:34;:72;;;;;25491:18;;25475:12;:34;25437:72;25434:145;;;25534:4;25516:11;:15;25528:2;25516:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;25570:2;25558:15;;;;;;;;;;;;25434:145;25589:28;25620:24;25638:4;25620:9;:24::i;:::-;25589:55;;25660:16;;;;;;;;;;;25659:17;:36;;;;;25686:9;;;;;;;;;;;25680:15;;:2;:15;;;25659:36;:61;;;;;25699:21;;;;;;;;;;;25659:61;25655:177;;;25765:19;;25741:20;:43;25737:84;;25793:12;:10;:12::i;:::-;25737:84;25655:177;25842:12;25857:4;25842:19;;25876:18;:24;25895:4;25876:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;25904:18;:22;25923:2;25904:22;;;;;;;;;;;;;;;;;;;;;;;;;25876:50;25872:98;;;25953:5;25943:15;;25872:98;25977:11;:17;25989:4;25977:17;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;;26019:15;25998:18;;:36;25977:57;25974:215;;;26078:1;26068:7;;;;;;;;;;;:11;;;;:::i;:::-;26058:7;;:21;;;;;;;;;;;;;;;;;;26122:1;26112:7;;;;;;;;;;;:11;;;;:::i;:::-;26102:7;;:21;;;;;;;;;;;;;;;;;;26168:1;26157:8;;;;;;;;;;;:12;;;;:::i;:::-;26146:8;;:23;;;;;;;;;;;;;;;;;;25974:215;26199:41;26214:4;26220:2;26224:6;26232:7;26199:14;:41::i;:::-;24064:2184;;23997:2251;;;:::o;3709:206::-;3795:7;3853:1;3848;:6;;3856:12;3840:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3895:1;3891;:5;3884:12;;3709:206;;;;;:::o;21278:164::-;21320:7;21341:15;21358;21377:19;:17;:19::i;:::-;21340:56;;;;21414:20;21426:7;21414;:11;;:20;;;;:::i;:::-;21407:27;;;;21278:164;:::o;3189:98::-;3247:7;3278:1;3274;:5;;;;:::i;:::-;3267:12;;3189:98;;;;:::o;20095:414::-;20154:7;20162;20170;20178;20186;20194;20215:23;20240:12;20254:18;20276:20;20288:7;20276:11;:20::i;:::-;20214:82;;;;;;20308:15;20325:23;20350:12;20366:50;20378:7;20387:4;20393:10;20405;:8;:10::i;:::-;20366:11;:50::i;:::-;20307:109;;;;;;20435:7;20444:15;20461:4;20467:15;20484:4;20490:10;20427:74;;;;;;;;;;;;;;;;;;20095:414;;;;;;;:::o;27290:1538::-;15956:4;15937:16;;:23;;;;;;;;;;;;;;;;;;27343::::1;27369:24;27387:4;27369:9;:24::i;:::-;27343:50;;27404:25;27486:22;;27459:24;;27432;;:51;;;;:::i;:::-;:76;;;;:::i;:::-;27404:104;;27519:26;27548:31;27577:1;27548:24;;:28;;:31;;;;:::i;:::-;27519:60;;27629:26;27658:39;27678:18;27658:15;:19;;:39;;;;:::i;:::-;27629:68;;27708:25;27736:21;27708:49;;27768:36;27785:18;27768:16;:36::i;:::-;27816:18;27837:44;27863:17;27837:21;:25;;:44;;;;:::i;:::-;27816:65;;27892:23;27918:63;27963:17;27918:40;27933:24;;27918:10;:14;;:40;;;;:::i;:::-;:44;;:63;;;;:::i;:::-;27892:89;;27992:21;28016:61;28059:17;28016:38;28031:22;;28016:10;:14;;:38;;;;:::i;:::-;:42;;:61;;;;:::i;:::-;27992:85;;28088:23;28114:50;28150:13;28114:31;28129:15;28114:10;:14;;:31;;;;:::i;:::-;:35;;:50;;;;:::i;:::-;28088:76;;28202:1;28175:24;:28;;;;28241:1;28214:24;:28;;;;28278:1;28253:22;:26;;;;28291:12;28316:16;;;;;;;;;;;28308:30;;28346:15;28308:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28290:76;;;28398:14;;;;;;;;;;;28390:28;;28426:13;28390:54;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28377:67;;;;;28455:49;28468:18;28488:15;28455:12;:49::i;:::-;28520:71;28535:18;28555:15;28572:18;28520:71;;;;;;;;:::i;:::-;;;;;;;;28706:10;28682:21;:34;28679:142;;;28753:16;;;;;;;;;;;28745:30;;28783:21;28745:64;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28732:77;;;;;28679:142;27332:1496;;;;;;;;;;16002:5:::0;15983:16;;:24;;;;;;;;;;;;;;;;;;27290:1538::o;31171:788::-;31281:7;31276:28;;31290:14;:12;:14::i;:::-;31276:28;31319:11;:19;31331:6;31319:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;31343:11;:22;31355:9;31343:22;;;;;;;;;;;;;;;;;;;;;;;;;31342:23;31319:46;31315:597;;;31382:48;31404:6;31412:9;31423:6;31382:21;:48::i;:::-;31315:597;;;31453:11;:19;31465:6;31453:19;;;;;;;;;;;;;;;;;;;;;;;;;31452:20;:46;;;;;31476:11;:22;31488:9;31476:22;;;;;;;;;;;;;;;;;;;;;;;;;31452:46;31448:464;;;31515:46;31535:6;31543:9;31554:6;31515:19;:46::i;:::-;31448:464;;;31584:11;:19;31596:6;31584:19;;;;;;;;;;;;;;;;;;;;;;;;;31583:20;:47;;;;;31608:11;:22;31620:9;31608:22;;;;;;;;;;;;;;;;;;;;;;;;;31607:23;31583:47;31579:333;;;31647:44;31665:6;31673:9;31684:6;31647:17;:44::i;:::-;31579:333;;;31713:11;:19;31725:6;31713:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;31736:11;:22;31748:9;31736:22;;;;;;;;;;;;;;;;;;;;;;;;;31713:45;31709:203;;;31775:48;31797:6;31805:9;31816:6;31775:21;:48::i;:::-;31709:203;;;31856:44;31874:6;31882:9;31893:6;31856:17;:44::i;:::-;31709:203;31579:333;31448:464;31315:597;31927:7;31922:29;;31936:15;:13;:15::i;:::-;31922:29;31171:788;;;;:::o;21448:556::-;21499:7;21508;21528:15;21546:7;;21528:25;;21564:15;14718:19;21564:25;;21605:9;21600:289;21624:9;:16;;;;21620:1;:20;21600:289;;;21690:7;21666;:21;21674:9;21684:1;21674:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21666:21;;;;;;;;;;;;;;;;:31;:66;;;;21725:7;21701;:21;21709:9;21719:1;21709:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21701:21;;;;;;;;;;;;;;;;:31;21666:66;21662:97;;;21742:7;;14718:19;21734:25;;;;;;;;;21662:97;21784:34;21796:7;:21;21804:9;21814:1;21804:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21796:21;;;;;;;;;;;;;;;;21784:7;:11;;:34;;;;:::i;:::-;21774:44;;21843:34;21855:7;:21;21863:9;21873:1;21863:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21855:21;;;;;;;;;;;;;;;;21843:7;:11;;:34;;;;:::i;:::-;21833:44;;21642:3;;;;;:::i;:::-;;;;21600:289;;;;21913:20;14718:19;21913:7;;:11;;:20;;;;:::i;:::-;21903:7;:30;21899:61;;;21943:7;;14718:19;21935:25;;;;;;;;21899:61;21979:7;21988;21971:25;;;;;;21448:556;;;:::o;20515:327::-;20574:7;20582;20590;20610:12;20625:24;20641:7;20625:15;:24::i;:::-;20610:39;;20660:18;20681:30;20703:7;20681:21;:30::i;:::-;20660:51;;20722:23;20748:33;20770:10;20748:17;20760:4;20748:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;20722:59;;20800:15;20817:4;20823:10;20792:42;;;;;;;;;20515:327;;;;;:::o;20848:424::-;20960:7;20968;20976;20996:15;21014:24;21026:11;21014:7;:11;;:24;;;;:::i;:::-;20996:42;;21049:12;21064:21;21073:11;21064:4;:8;;:21;;;;:::i;:::-;21049:36;;21096:18;21117:27;21132:11;21117:10;:14;;:27;;;;:::i;:::-;21096:48;;21155:23;21181:33;21203:10;21181:17;21193:4;21181:7;:11;;:17;;;;:::i;:::-;:21;;:33;;;;:::i;:::-;21155:59;;21233:7;21242:15;21259:4;21225:39;;;;;;;;;;20848:424;;;;;;;;:::o;3293:98::-;3351:7;3382:1;3378;:5;;;;:::i;:::-;3371:12;;3293:98;;;;:::o;28836:496::-;28902:21;28940:1;28926:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28902:40;;28971:4;28953;28958:1;28953:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;28997:11;;;;;;;;;;;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28987:4;28992:1;28987:7;;;;;;;;:::i;:::-;;;;;;;:28;;;;;;;;;;;29026:58;29043:4;29058:11;;;;;;;;;;;29072;29026:8;:58::i;:::-;29095:11;;;;;;;;;;;:62;;;29172:11;29198:1;29242:4;29269;29289:24;29309:3;29289:15;:19;;:24;;;;:::i;:::-;29095:229;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28891:441;28836:496;:::o;29338:412::-;29419:58;29436:4;29451:11;;;;;;;;;;;29465;29419:8;:58::i;:::-;29488:11;;;;;;;;;;;:27;;;29523:9;29556:4;29576:11;29602:1;29645;29688:4;;;;;;;;;;;29707:24;29727:3;29707:15;:19;;:24;;;;:::i;:::-;29488:254;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;29338:412;;:::o;22857:363::-;22915:1;22904:7;;;;;;;;;;;:12;;;:28;;;;;22931:1;22920:7;;;;;;;;;;;:12;;;22904:28;:44;;;;;22947:1;22936:7;;;;;;;;;;;:12;;;22904:44;:61;;;;;22964:1;22952:8;;;;;;;;;;;:13;;;22904:61;22900:74;;;22967:7;;22900:74;23004:7;;;;;;;;;;;22986:15;;:25;;;;;;;;;;;;;;;;;;23040:7;;;;;;;;;;;23022:15;;:25;;;;;;;;;;;;;;;;;;23076:7;;;;;;;;;;;23058:15;;:25;;;;;;;;;;;;;;;;;;23113:8;;;;;;;;;;;23094:16;;:27;;;;;;;;;;;;;;;;;;23144:1;23134:7;;:11;;;;;;;;;;;;;;;;;;23166:1;23156:7;;:11;;;;;;;;;;;;;;;;;;23188:1;23178:7;;:11;;;;;;;;;;;;;;;;;;23211:1;23200:8;;:12;;;;;;;;;;;;;;;;;;22857:363;:::o;33228:650::-;33343:15;33373:23;33411:12;33438:23;33476:12;33503:18;33535:19;33546:7;33535:10;:19::i;:::-;33328:226;;;;;;;;;;;;33583:28;33603:7;33583;:15;33591:6;33583:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;33565:7;:15;33573:6;33565:15;;;;;;;;;;;;;;;:46;;;;33640:28;33660:7;33640;:15;33648:6;33640:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;33622:7;:15;33630:6;33622:15;;;;;;;;;;;;;;;:46;;;;33700:39;33723:15;33700:7;:18;33708:9;33700:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;33679:7;:18;33687:9;33679:18;;;;;;;;;;;;;;;:60;;;;33750:26;33765:10;33750:14;:26::i;:::-;33787:23;33799:4;33805;33787:11;:23::i;:::-;33843:9;33826:44;;33835:6;33826:44;;;33854:15;33826:44;;;;;;:::i;:::-;;;;;;;;33317:561;;;;;;33228:650;;;:::o;32560:662::-;32673:15;32703:23;32741:12;32768:23;32806:12;32833:18;32865:19;32876:7;32865:10;:19::i;:::-;32658:226;;;;;;;;;;;;32913:28;32933:7;32913;:15;32921:6;32913:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;32895:7;:15;32903:6;32895:15;;;;;;;;;;;;;;;:46;;;;32973:39;32996:15;32973:7;:18;32981:9;32973:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;32952:7;:18;32960:9;32952:18;;;;;;;;;;;;;;;:60;;;;33044:39;33067:15;33044:7;:18;33052:9;33044:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;33023:7;:18;33031:9;33023:18;;;;;;;;;;;;;;;:60;;;;33094:26;33109:10;33094:14;:26::i;:::-;33131:23;33143:4;33149;33131:11;:23::i;:::-;33187:9;33170:44;;33179:6;33170:44;;;33198:15;33170:44;;;;;;:::i;:::-;;;;;;;;32647:575;;;;;;32560:662;;;:::o;31965:589::-;32076:15;32106:23;32144:12;32171:23;32209:12;32236:18;32268:19;32279:7;32268:10;:19::i;:::-;32061:226;;;;;;;;;;;;32316:28;32336:7;32316;:15;32324:6;32316:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;32298:7;:15;32306:6;32298:15;;;;;;;;;;;;;;;:46;;;;32376:39;32399:15;32376:7;:18;32384:9;32376:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;32355:7;:18;32363:9;32355:18;;;;;;;;;;;;;;;:60;;;;32426:26;32441:10;32426:14;:26::i;:::-;32463:23;32475:4;32481;32463:11;:23::i;:::-;32519:9;32502:44;;32511:6;32502:44;;;32530:15;32502:44;;;;;;:::i;:::-;;;;;;;;32050:504;;;;;;31965:589;;;:::o;33884:721::-;33999:15;34029:23;34067:12;34094:23;34132:12;34159:18;34191:19;34202:7;34191:10;:19::i;:::-;33984:226;;;;;;;;;;;;34239:28;34259:7;34239;:15;34247:6;34239:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;34221:7;:15;34229:6;34221:15;;;;;;;;;;;;;;;:46;;;;34296:28;34316:7;34296;:15;34304:6;34296:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;34278:7;:15;34286:6;34278:15;;;;;;;;;;;;;;;:46;;;;34356:39;34379:15;34356:7;:18;34364:9;34356:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;34335:7;:18;34343:9;34335:18;;;;;;;;;;;;;;;:60;;;;34427:39;34450:15;34427:7;:18;34435:9;34427:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;34406:7;:18;34414:9;34406:18;;;;;;;;;;;;;;;:60;;;;34477:26;34492:10;34477:14;:26::i;:::-;34514:23;34526:4;34532;34514:11;:23::i;:::-;34570:9;34553:44;;34562:6;34553:44;;;34581:15;34553:44;;;;;;:::i;:::-;;;;;;;;33973:632;;;;;;33884:721;;;:::o;23226:187::-;23280:15;;;;;;;;;;;23270:7;;:25;;;;;;;;;;;;;;;;;;23316:15;;;;;;;;;;;23306:7;;:25;;;;;;;;;;;;;;;;;;23352:15;;;;;;;;;;;23342:7;;:25;;;;;;;;;;;;;;;;;;23389:16;;;;;;;;;;;23378:8;;:27;;;;;;;;;;;;;;;;;;23226:187::o;22558:130::-;22622:7;22649:31;22674:5;22649:20;22661:7;;;;;;;;;;;22649:20;;:7;:11;;:20;;;;:::i;:::-;:24;;:31;;;;:::i;:::-;22642:38;;22558:130;;;:::o;22694:157::-;22764:7;22791:52;22837:5;22791:41;22824:7;;;;;;;;;;;22813:8;;;;;;;;;;;22803:7;;;;;;;;;;;:18;;;;:::i;:::-;:28;;;;:::i;:::-;22791:41;;:7;:11;;:41;;;;:::i;:::-;:45;;:52;;;;:::i;:::-;22784:59;;22694:157;;;:::o;22010:542::-;22124:7;;;;;;;;;;;22101:30;;22114:7;;;;;;;;;;;22101:20;;:10;:20;;;;:::i;:::-;:30;;;;:::i;:::-;22073:24;;:58;;;;;;;:::i;:::-;;;;;;;;22187:7;;;;;;;;;;;22164:30;;22177:7;;;;;;;;;;;22164:20;;:10;:20;;;;:::i;:::-;:30;;;;:::i;:::-;22136:24;;:58;;;;;;;:::i;:::-;;;;;;;;22255:7;;;;;;;;;;;22231:31;;22244:8;;;;;;;;;;;22231:21;;:10;:21;;;;:::i;:::-;:31;;;;:::i;:::-;22205:22;;:57;;;;;;;:::i;:::-;;;;;;;;22273:19;22295:10;:8;:10::i;:::-;22273:32;;22316:18;22337:27;22352:11;22337:10;:14;;:27;;;;:::i;:::-;22316:48;;22400:38;22427:10;22400:7;:22;22416:4;22400:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;22375:7;:22;22391:4;22375:22;;;;;;;;;;;;;;;:63;;;;22453:11;:26;22473:4;22453:26;;;;;;;;;;;;;;;;;;;;;;;;;22449:95;;;22506:38;22533:10;22506:7;:22;22522:4;22506:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;22481:7;:22;22497:4;22481:22;;;;;;;;;;;;;;;:63;;;;22449:95;22062:490;;22010:542;:::o;19942:147::-;20020:17;20032:4;20020:7;;:11;;:17;;;;:::i;:::-;20010:7;:27;;;;20061:20;20076:4;20061:10;;:14;;:20;;;;:::i;:::-;20048:10;:33;;;;19942:147;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:133::-;344:5;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;301:133;;;;:::o;440:139::-;486:5;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;440:139;;;;:::o;585:143::-;642:5;673:6;667:13;658:22;;689:33;716:5;689:33;:::i;:::-;585:143;;;;:::o;734:329::-;793:6;842:2;830:9;821:7;817:23;813:32;810:119;;;848:79;;:::i;:::-;810:119;968:1;993:53;1038:7;1029:6;1018:9;1014:22;993:53;:::i;:::-;983:63;;939:117;734:329;;;;:::o;1069:351::-;1139:6;1188:2;1176:9;1167:7;1163:23;1159:32;1156:119;;;1194:79;;:::i;:::-;1156:119;1314:1;1339:64;1395:7;1386:6;1375:9;1371:22;1339:64;:::i;:::-;1329:74;;1285:128;1069:351;;;;:::o;1426:474::-;1494:6;1502;1551:2;1539:9;1530:7;1526:23;1522:32;1519:119;;;1557:79;;:::i;:::-;1519:119;1677:1;1702:53;1747:7;1738:6;1727:9;1723:22;1702:53;:::i;:::-;1692:63;;1648:117;1804:2;1830:53;1875:7;1866:6;1855:9;1851:22;1830:53;:::i;:::-;1820:63;;1775:118;1426:474;;;;;:::o;1906:619::-;1983:6;1991;1999;2048:2;2036:9;2027:7;2023:23;2019:32;2016:119;;;2054:79;;:::i;:::-;2016:119;2174:1;2199:53;2244:7;2235:6;2224:9;2220:22;2199:53;:::i;:::-;2189:63;;2145:117;2301:2;2327:53;2372:7;2363:6;2352:9;2348:22;2327:53;:::i;:::-;2317:63;;2272:118;2429:2;2455:53;2500:7;2491:6;2480:9;2476:22;2455:53;:::i;:::-;2445:63;;2400:118;1906:619;;;;;:::o;2531:474::-;2599:6;2607;2656:2;2644:9;2635:7;2631:23;2627:32;2624:119;;;2662:79;;:::i;:::-;2624:119;2782:1;2807:53;2852:7;2843:6;2832:9;2828:22;2807:53;:::i;:::-;2797:63;;2753:117;2909:2;2935:53;2980:7;2971:6;2960:9;2956:22;2935:53;:::i;:::-;2925:63;;2880:118;2531:474;;;;;:::o;3011:329::-;3070:6;3119:2;3107:9;3098:7;3094:23;3090:32;3087:119;;;3125:79;;:::i;:::-;3087:119;3245:1;3270:53;3315:7;3306:6;3295:9;3291:22;3270:53;:::i;:::-;3260:63;;3216:117;3011:329;;;;:::o;3346:468::-;3411:6;3419;3468:2;3456:9;3447:7;3443:23;3439:32;3436:119;;;3474:79;;:::i;:::-;3436:119;3594:1;3619:53;3664:7;3655:6;3644:9;3640:22;3619:53;:::i;:::-;3609:63;;3565:117;3721:2;3747:50;3789:7;3780:6;3769:9;3765:22;3747:50;:::i;:::-;3737:60;;3692:115;3346:468;;;;;:::o;3820:663::-;3908:6;3916;3924;3973:2;3961:9;3952:7;3948:23;3944:32;3941:119;;;3979:79;;:::i;:::-;3941:119;4099:1;4124:64;4180:7;4171:6;4160:9;4156:22;4124:64;:::i;:::-;4114:74;;4070:128;4237:2;4263:64;4319:7;4310:6;4299:9;4295:22;4263:64;:::i;:::-;4253:74;;4208:129;4376:2;4402:64;4458:7;4449:6;4438:9;4434:22;4402:64;:::i;:::-;4392:74;;4347:129;3820:663;;;;;:::o;4489:179::-;4558:10;4579:46;4621:3;4613:6;4579:46;:::i;:::-;4657:4;4652:3;4648:14;4634:28;;4489:179;;;;:::o;4674:142::-;4777:32;4803:5;4777:32;:::i;:::-;4772:3;4765:45;4674:142;;:::o;4822:108::-;4899:24;4917:5;4899:24;:::i;:::-;4894:3;4887:37;4822:108;;:::o;4936:118::-;5023:24;5041:5;5023:24;:::i;:::-;5018:3;5011:37;4936:118;;:::o;5090:732::-;5209:3;5238:54;5286:5;5238:54;:::i;:::-;5308:86;5387:6;5382:3;5308:86;:::i;:::-;5301:93;;5418:56;5468:5;5418:56;:::i;:::-;5497:7;5528:1;5513:284;5538:6;5535:1;5532:13;5513:284;;;5614:6;5608:13;5641:63;5700:3;5685:13;5641:63;:::i;:::-;5634:70;;5727:60;5780:6;5727:60;:::i;:::-;5717:70;;5573:224;5560:1;5557;5553:9;5548:14;;5513:284;;;5517:14;5813:3;5806:10;;5214:608;;;5090:732;;;;:::o;5828:109::-;5909:21;5924:5;5909:21;:::i;:::-;5904:3;5897:34;5828:109;;:::o;5943:147::-;6038:45;6077:5;6038:45;:::i;:::-;6033:3;6026:58;5943:147;;:::o;6096:364::-;6184:3;6212:39;6245:5;6212:39;:::i;:::-;6267:71;6331:6;6326:3;6267:71;:::i;:::-;6260:78;;6347:52;6392:6;6387:3;6380:4;6373:5;6369:16;6347:52;:::i;:::-;6424:29;6446:6;6424:29;:::i;:::-;6419:3;6415:39;6408:46;;6188:272;6096:364;;;;:::o;6466:366::-;6608:3;6629:67;6693:2;6688:3;6629:67;:::i;:::-;6622:74;;6705:93;6794:3;6705:93;:::i;:::-;6823:2;6818:3;6814:12;6807:19;;6466:366;;;:::o;6838:::-;6980:3;7001:67;7065:2;7060:3;7001:67;:::i;:::-;6994:74;;7077:93;7166:3;7077:93;:::i;:::-;7195:2;7190:3;7186:12;7179:19;;6838:366;;;:::o;7210:::-;7352:3;7373:67;7437:2;7432:3;7373:67;:::i;:::-;7366:74;;7449:93;7538:3;7449:93;:::i;:::-;7567:2;7562:3;7558:12;7551:19;;7210:366;;;:::o;7582:::-;7724:3;7745:67;7809:2;7804:3;7745:67;:::i;:::-;7738:74;;7821:93;7910:3;7821:93;:::i;:::-;7939:2;7934:3;7930:12;7923:19;;7582:366;;;:::o;7954:::-;8096:3;8117:67;8181:2;8176:3;8117:67;:::i;:::-;8110:74;;8193:93;8282:3;8193:93;:::i;:::-;8311:2;8306:3;8302:12;8295:19;;7954:366;;;:::o;8326:::-;8468:3;8489:67;8553:2;8548:3;8489:67;:::i;:::-;8482:74;;8565:93;8654:3;8565:93;:::i;:::-;8683:2;8678:3;8674:12;8667:19;;8326:366;;;:::o;8698:::-;8840:3;8861:67;8925:2;8920:3;8861:67;:::i;:::-;8854:74;;8937:93;9026:3;8937:93;:::i;:::-;9055:2;9050:3;9046:12;9039:19;;8698:366;;;:::o;9070:::-;9212:3;9233:67;9297:2;9292:3;9233:67;:::i;:::-;9226:74;;9309:93;9398:3;9309:93;:::i;:::-;9427:2;9422:3;9418:12;9411:19;;9070:366;;;:::o;9442:::-;9584:3;9605:67;9669:2;9664:3;9605:67;:::i;:::-;9598:74;;9681:93;9770:3;9681:93;:::i;:::-;9799:2;9794:3;9790:12;9783:19;;9442:366;;;:::o;9814:::-;9956:3;9977:67;10041:2;10036:3;9977:67;:::i;:::-;9970:74;;10053:93;10142:3;10053:93;:::i;:::-;10171:2;10166:3;10162:12;10155:19;;9814:366;;;:::o;10186:::-;10328:3;10349:67;10413:2;10408:3;10349:67;:::i;:::-;10342:74;;10425:93;10514:3;10425:93;:::i;:::-;10543:2;10538:3;10534:12;10527:19;;10186:366;;;:::o;10558:::-;10700:3;10721:67;10785:2;10780:3;10721:67;:::i;:::-;10714:74;;10797:93;10886:3;10797:93;:::i;:::-;10915:2;10910:3;10906:12;10899:19;;10558:366;;;:::o;10930:::-;11072:3;11093:67;11157:2;11152:3;11093:67;:::i;:::-;11086:74;;11169:93;11258:3;11169:93;:::i;:::-;11287:2;11282:3;11278:12;11271:19;;10930:366;;;:::o;11302:::-;11444:3;11465:67;11529:2;11524:3;11465:67;:::i;:::-;11458:74;;11541:93;11630:3;11541:93;:::i;:::-;11659:2;11654:3;11650:12;11643:19;;11302:366;;;:::o;11674:::-;11816:3;11837:67;11901:2;11896:3;11837:67;:::i;:::-;11830:74;;11913:93;12002:3;11913:93;:::i;:::-;12031:2;12026:3;12022:12;12015:19;;11674:366;;;:::o;12046:398::-;12205:3;12226:83;12307:1;12302:3;12226:83;:::i;:::-;12219:90;;12318:93;12407:3;12318:93;:::i;:::-;12436:1;12431:3;12427:11;12420:18;;12046:398;;;:::o;12450:366::-;12592:3;12613:67;12677:2;12672:3;12613:67;:::i;:::-;12606:74;;12689:93;12778:3;12689:93;:::i;:::-;12807:2;12802:3;12798:12;12791:19;;12450:366;;;:::o;12822:118::-;12909:24;12927:5;12909:24;:::i;:::-;12904:3;12897:37;12822:118;;:::o;12946:112::-;13029:22;13045:5;13029:22;:::i;:::-;13024:3;13017:35;12946:112;;:::o;13064:379::-;13248:3;13270:147;13413:3;13270:147;:::i;:::-;13263:154;;13434:3;13427:10;;13064:379;;;:::o;13449:222::-;13542:4;13580:2;13569:9;13565:18;13557:26;;13593:71;13661:1;13650:9;13646:17;13637:6;13593:71;:::i;:::-;13449:222;;;;:::o;13677:254::-;13786:4;13824:2;13813:9;13809:18;13801:26;;13837:87;13921:1;13910:9;13906:17;13897:6;13837:87;:::i;:::-;13677:254;;;;:::o;13937:332::-;14058:4;14096:2;14085:9;14081:18;14073:26;;14109:71;14177:1;14166:9;14162:17;14153:6;14109:71;:::i;:::-;14190:72;14258:2;14247:9;14243:18;14234:6;14190:72;:::i;:::-;13937:332;;;;;:::o;14275:807::-;14524:4;14562:3;14551:9;14547:19;14539:27;;14576:71;14644:1;14633:9;14629:17;14620:6;14576:71;:::i;:::-;14657:72;14725:2;14714:9;14710:18;14701:6;14657:72;:::i;:::-;14739:80;14815:2;14804:9;14800:18;14791:6;14739:80;:::i;:::-;14829;14905:2;14894:9;14890:18;14881:6;14829:80;:::i;:::-;14919:73;14987:3;14976:9;14972:19;14963:6;14919:73;:::i;:::-;15002;15070:3;15059:9;15055:19;15046:6;15002:73;:::i;:::-;14275:807;;;;;;;;;:::o;15088:210::-;15175:4;15213:2;15202:9;15198:18;15190:26;;15226:65;15288:1;15277:9;15273:17;15264:6;15226:65;:::i;:::-;15088:210;;;;:::o;15304:313::-;15417:4;15455:2;15444:9;15440:18;15432:26;;15504:9;15498:4;15494:20;15490:1;15479:9;15475:17;15468:47;15532:78;15605:4;15596:6;15532:78;:::i;:::-;15524:86;;15304:313;;;;:::o;15623:419::-;15789:4;15827:2;15816:9;15812:18;15804:26;;15876:9;15870:4;15866:20;15862:1;15851:9;15847:17;15840:47;15904:131;16030:4;15904:131;:::i;:::-;15896:139;;15623:419;;;:::o;16048:::-;16214:4;16252:2;16241:9;16237:18;16229:26;;16301:9;16295:4;16291:20;16287:1;16276:9;16272:17;16265:47;16329:131;16455:4;16329:131;:::i;:::-;16321:139;;16048:419;;;:::o;16473:::-;16639:4;16677:2;16666:9;16662:18;16654:26;;16726:9;16720:4;16716:20;16712:1;16701:9;16697:17;16690:47;16754:131;16880:4;16754:131;:::i;:::-;16746:139;;16473:419;;;:::o;16898:::-;17064:4;17102:2;17091:9;17087:18;17079:26;;17151:9;17145:4;17141:20;17137:1;17126:9;17122:17;17115:47;17179:131;17305:4;17179:131;:::i;:::-;17171:139;;16898:419;;;:::o;17323:::-;17489:4;17527:2;17516:9;17512:18;17504:26;;17576:9;17570:4;17566:20;17562:1;17551:9;17547:17;17540:47;17604:131;17730:4;17604:131;:::i;:::-;17596:139;;17323:419;;;:::o;17748:::-;17914:4;17952:2;17941:9;17937:18;17929:26;;18001:9;17995:4;17991:20;17987:1;17976:9;17972:17;17965:47;18029:131;18155:4;18029:131;:::i;:::-;18021:139;;17748:419;;;:::o;18173:::-;18339:4;18377:2;18366:9;18362:18;18354:26;;18426:9;18420:4;18416:20;18412:1;18401:9;18397:17;18390:47;18454:131;18580:4;18454:131;:::i;:::-;18446:139;;18173:419;;;:::o;18598:::-;18764:4;18802:2;18791:9;18787:18;18779:26;;18851:9;18845:4;18841:20;18837:1;18826:9;18822:17;18815:47;18879:131;19005:4;18879:131;:::i;:::-;18871:139;;18598:419;;;:::o;19023:::-;19189:4;19227:2;19216:9;19212:18;19204:26;;19276:9;19270:4;19266:20;19262:1;19251:9;19247:17;19240:47;19304:131;19430:4;19304:131;:::i;:::-;19296:139;;19023:419;;;:::o;19448:::-;19614:4;19652:2;19641:9;19637:18;19629:26;;19701:9;19695:4;19691:20;19687:1;19676:9;19672:17;19665:47;19729:131;19855:4;19729:131;:::i;:::-;19721:139;;19448:419;;;:::o;19873:::-;20039:4;20077:2;20066:9;20062:18;20054:26;;20126:9;20120:4;20116:20;20112:1;20101:9;20097:17;20090:47;20154:131;20280:4;20154:131;:::i;:::-;20146:139;;19873:419;;;:::o;20298:::-;20464:4;20502:2;20491:9;20487:18;20479:26;;20551:9;20545:4;20541:20;20537:1;20526:9;20522:17;20515:47;20579:131;20705:4;20579:131;:::i;:::-;20571:139;;20298:419;;;:::o;20723:::-;20889:4;20927:2;20916:9;20912:18;20904:26;;20976:9;20970:4;20966:20;20962:1;20951:9;20947:17;20940:47;21004:131;21130:4;21004:131;:::i;:::-;20996:139;;20723:419;;;:::o;21148:::-;21314:4;21352:2;21341:9;21337:18;21329:26;;21401:9;21395:4;21391:20;21387:1;21376:9;21372:17;21365:47;21429:131;21555:4;21429:131;:::i;:::-;21421:139;;21148:419;;;:::o;21573:::-;21739:4;21777:2;21766:9;21762:18;21754:26;;21826:9;21820:4;21816:20;21812:1;21801:9;21797:17;21790:47;21854:131;21980:4;21854:131;:::i;:::-;21846:139;;21573:419;;;:::o;21998:::-;22164:4;22202:2;22191:9;22187:18;22179:26;;22251:9;22245:4;22241:20;22237:1;22226:9;22222:17;22215:47;22279:131;22405:4;22279:131;:::i;:::-;22271:139;;21998:419;;;:::o;22423:222::-;22516:4;22554:2;22543:9;22539:18;22531:26;;22567:71;22635:1;22624:9;22620:17;22611:6;22567:71;:::i;:::-;22423:222;;;;:::o;22651:831::-;22914:4;22952:3;22941:9;22937:19;22929:27;;22966:71;23034:1;23023:9;23019:17;23010:6;22966:71;:::i;:::-;23047:80;23123:2;23112:9;23108:18;23099:6;23047:80;:::i;:::-;23174:9;23168:4;23164:20;23159:2;23148:9;23144:18;23137:48;23202:108;23305:4;23296:6;23202:108;:::i;:::-;23194:116;;23320:72;23388:2;23377:9;23373:18;23364:6;23320:72;:::i;:::-;23402:73;23470:3;23459:9;23455:19;23446:6;23402:73;:::i;:::-;22651:831;;;;;;;;:::o;23488:442::-;23637:4;23675:2;23664:9;23660:18;23652:26;;23688:71;23756:1;23745:9;23741:17;23732:6;23688:71;:::i;:::-;23769:72;23837:2;23826:9;23822:18;23813:6;23769:72;:::i;:::-;23851;23919:2;23908:9;23904:18;23895:6;23851:72;:::i;:::-;23488:442;;;;;;:::o;23936:214::-;24025:4;24063:2;24052:9;24048:18;24040:26;;24076:67;24140:1;24129:9;24125:17;24116:6;24076:67;:::i;:::-;23936:214;;;;:::o;24237:132::-;24304:4;24327:3;24319:11;;24357:4;24352:3;24348:14;24340:22;;24237:132;;;:::o;24375:114::-;24442:6;24476:5;24470:12;24460:22;;24375:114;;;:::o;24495:99::-;24547:6;24581:5;24575:12;24565:22;;24495:99;;;:::o;24600:113::-;24670:4;24702;24697:3;24693:14;24685:22;;24600:113;;;:::o;24719:184::-;24818:11;24852:6;24847:3;24840:19;24892:4;24887:3;24883:14;24868:29;;24719:184;;;;:::o;24909:147::-;25010:11;25047:3;25032:18;;24909:147;;;;:::o;25062:169::-;25146:11;25180:6;25175:3;25168:19;25220:4;25215:3;25211:14;25196:29;;25062:169;;;;:::o;25237:305::-;25277:3;25296:20;25314:1;25296:20;:::i;:::-;25291:25;;25330:20;25348:1;25330:20;:::i;:::-;25325:25;;25484:1;25416:66;25412:74;25409:1;25406:81;25403:107;;;25490:18;;:::i;:::-;25403:107;25534:1;25531;25527:9;25520:16;;25237:305;;;;:::o;25548:237::-;25586:3;25605:18;25621:1;25605:18;:::i;:::-;25600:23;;25637:18;25653:1;25637:18;:::i;:::-;25632:23;;25727:1;25721:4;25717:12;25714:1;25711:19;25708:45;;;25733:18;;:::i;:::-;25708:45;25777:1;25774;25770:9;25763:16;;25548:237;;;;:::o;25791:185::-;25831:1;25848:20;25866:1;25848:20;:::i;:::-;25843:25;;25882:20;25900:1;25882:20;:::i;:::-;25877:25;;25921:1;25911:35;;25926:18;;:::i;:::-;25911:35;25968:1;25965;25961:9;25956:14;;25791:185;;;;:::o;25982:348::-;26022:7;26045:20;26063:1;26045:20;:::i;:::-;26040:25;;26079:20;26097:1;26079:20;:::i;:::-;26074:25;;26267:1;26199:66;26195:74;26192:1;26189:81;26184:1;26177:9;26170:17;26166:105;26163:131;;;26274:18;;:::i;:::-;26163:131;26322:1;26319;26315:9;26304:20;;25982:348;;;;:::o;26336:280::-;26374:7;26397:18;26413:1;26397:18;:::i;:::-;26392:23;;26429:18;26445:1;26429:18;:::i;:::-;26424:23;;26553:1;26547:4;26543:12;26540:1;26537:19;26532:1;26525:9;26518:17;26514:43;26511:69;;;26560:18;;:::i;:::-;26511:69;26608:1;26605;26601:9;26590:20;;26336:280;;;;:::o;26622:191::-;26662:4;26682:20;26700:1;26682:20;:::i;:::-;26677:25;;26716:20;26734:1;26716:20;:::i;:::-;26711:25;;26755:1;26752;26749:8;26746:34;;;26760:18;;:::i;:::-;26746:34;26805:1;26802;26798:9;26790:17;;26622:191;;;;:::o;26819:96::-;26856:7;26885:24;26903:5;26885:24;:::i;:::-;26874:35;;26819:96;;;:::o;26921:104::-;26966:7;26995:24;27013:5;26995:24;:::i;:::-;26984:35;;26921:104;;;:::o;27031:90::-;27065:7;27108:5;27101:13;27094:21;27083:32;;27031:90;;;:::o;27127:126::-;27164:7;27204:42;27197:5;27193:54;27182:65;;27127:126;;;:::o;27259:77::-;27296:7;27325:5;27314:16;;27259:77;;;:::o;27342:86::-;27377:7;27417:4;27410:5;27406:16;27395:27;;27342:86;;;:::o;27434:121::-;27492:9;27525:24;27543:5;27525:24;:::i;:::-;27512:37;;27434:121;;;:::o;27561:307::-;27629:1;27639:113;27653:6;27650:1;27647:13;27639:113;;;27738:1;27733:3;27729:11;27723:18;27719:1;27714:3;27710:11;27703:39;27675:2;27672:1;27668:10;27663:15;;27639:113;;;27770:6;27767:1;27764:13;27761:101;;;27850:1;27841:6;27836:3;27832:16;27825:27;27761:101;27610:258;27561:307;;;:::o;27874:233::-;27913:3;27936:24;27954:5;27936:24;:::i;:::-;27927:33;;27982:66;27975:5;27972:77;27969:103;;;28052:18;;:::i;:::-;27969:103;28099:1;28092:5;28088:13;28081:20;;27874:233;;;:::o;28113:180::-;28161:77;28158:1;28151:88;28258:4;28255:1;28248:15;28282:4;28279:1;28272:15;28299:180;28347:77;28344:1;28337:88;28444:4;28441:1;28434:15;28468:4;28465:1;28458:15;28485:180;28533:77;28530:1;28523:88;28630:4;28627:1;28620:15;28654:4;28651:1;28644:15;28671:180;28719:77;28716:1;28709:88;28816:4;28813:1;28806:15;28840:4;28837:1;28830:15;28980:117;29089:1;29086;29079:12;29103:102;29144:6;29195:2;29191:7;29186:2;29179:5;29175:14;29171:28;29161:38;;29103:102;;;:::o;29211:180::-;29351:32;29347:1;29339:6;29335:14;29328:56;29211:180;:::o;29397:178::-;29537:30;29533:1;29525:6;29521:14;29514:54;29397:178;:::o;29581:234::-;29721:34;29717:1;29709:6;29705:14;29698:58;29790:17;29785:2;29777:6;29773:15;29766:42;29581:234;:::o;29821:220::-;29961:34;29957:1;29949:6;29945:14;29938:58;30030:3;30025:2;30017:6;30013:15;30006:28;29821:220;:::o;30047:173::-;30187:25;30183:1;30175:6;30171:14;30164:49;30047:173;:::o;30226:170::-;30366:22;30362:1;30354:6;30350:14;30343:46;30226:170;:::o;30402:181::-;30542:33;30538:1;30530:6;30526:14;30519:57;30402:181;:::o;30589:226::-;30729:34;30725:1;30717:6;30713:14;30706:58;30798:9;30793:2;30785:6;30781:15;30774:34;30589:226;:::o;30821:224::-;30961:34;30957:1;30949:6;30945:14;30938:58;31030:7;31025:2;31017:6;31013:15;31006:32;30821:224;:::o;31051:180::-;31191:32;31187:1;31179:6;31175:14;31168:56;31051:180;:::o;31237:224::-;31377:34;31373:1;31365:6;31361:14;31354:58;31446:7;31441:2;31433:6;31429:15;31422:32;31237:224;:::o;31467:230::-;31607:34;31603:1;31595:6;31591:14;31584:58;31676:13;31671:2;31663:6;31659:15;31652:38;31467:230;:::o;31703:224::-;31843:34;31839:1;31831:6;31827:14;31820:58;31912:7;31907:2;31899:6;31895:15;31888:32;31703:224;:::o;31933:242::-;32073:34;32069:1;32061:6;32057:14;32050:58;32142:25;32137:2;32129:6;32125:15;32118:50;31933:242;:::o;32181:228::-;32321:34;32317:1;32309:6;32305:14;32298:58;32390:11;32385:2;32377:6;32373:15;32366:36;32181:228;:::o;32415:114::-;;:::o;32535:182::-;32675:34;32671:1;32663:6;32659:14;32652:58;32535:182;:::o;32723:122::-;32796:24;32814:5;32796:24;:::i;:::-;32789:5;32786:35;32776:63;;32835:1;32832;32825:12;32776:63;32723:122;:::o;32851:116::-;32921:21;32936:5;32921:21;:::i;:::-;32914:5;32911:32;32901:60;;32957:1;32954;32947:12;32901:60;32851:116;:::o;32973:122::-;33046:24;33064:5;33046:24;:::i;:::-;33039:5;33036:35;33026:63;;33085:1;33082;33075:12;33026:63;32973:122;:::o
Swarm Source
ipfs://5a192311db1cf116b2fdae8a0dc12b1964c4cad9df8c1dcb45c009ad5958d610
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.