ERC-20
Overview
Max Total Supply
1,000,000,000 REGU
Holders
122
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
2,390,092.717074019 REGUValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
REGUDEFI
Compiler Version
v0.8.11+commit.d7f03943
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-01-13 */ // SPDX-License-Identifier: MIT pragma solidity 0.8.11; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } 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; } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 9; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual 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 _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract Ownable 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 returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } 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 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract REGUDEFI is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; mapping (address => bool) public isSniper; bool private _swapping; uint256 private _launchTime; address public feeWallet; address public burnAddress = 0x000000000000000000000000000000000000dEaD; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public limitsInEffect = true; bool public dynamicFeesInEffect = false; bool public tradingActive = false; uint256 public fireSaleActive; uint256 public fireSaleTimer; uint256 public fireSaleAmt; uint256 public fireSaleRequirement; uint256 public resetRequirement; mapping (address => uint256) public userBurned; uint256 public buyFeeThreshold; uint256 public buyFeeRate; uint256 public buyTotalFees; uint256 private _buyMarketingFee; uint256 private _buyLiquidityFee; uint256 private _buyDevFee; uint256 public sellFeeThreshold; uint256 public sellFeeRate; uint256 public sellTotalFees; uint256 private _sellMarketingFee; uint256 private _sellLiquidityFee; uint256 private _sellDevFee; uint256 private _tokensForMarketing; uint256 private _tokensForLiquidity; uint256 private _tokensForDev; /******************/ // exlcude from fees and max transaction amount mapping (address => bool) public isExcludedFromFees; mapping (address => bool) public isExcludedMaxTransactionAmount; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping (address => bool) public automatedMarketMakerPairs; event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity); event Burn(uint256 burnAmount); event FeesReset(); event FireSaleBy(address user); event FireSale(); constructor() ERC20("Regulated DeFi", "REGU") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); isExcludedMaxTransactionAmount[address(_uniswapV2Router)] = true; uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); isExcludedMaxTransactionAmount[address(uniswapV2Pair)] = true; automatedMarketMakerPairs[address(uniswapV2Pair)] = true; uint256 totalSupply = 1e9 * 1e9; _buyMarketingFee = 6; _buyLiquidityFee = 2; _buyDevFee = 2; buyTotalFees = _buyMarketingFee + _buyLiquidityFee + _buyDevFee; _sellMarketingFee = 6; _sellLiquidityFee = 2; _sellDevFee = 2; sellTotalFees = _sellMarketingFee + _sellLiquidityFee + _sellDevFee; buyFeeRate = totalSupply * 5 / 1000; // 0.5% sellFeeRate = totalSupply * 25 / 10000; // 0.25% resetRequirement = totalSupply * 1 / 10000; // 0.01% fireSaleRequirement = totalSupply * 1 / 100; // 1% maxTransactionAmount = totalSupply * 1 / 100; // 1% maxWallet = totalSupply * 2 / 100; // 2% swapTokensAtAmount = totalSupply * 2 / 1000; // 0.2% feeWallet = address(owner()); // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(burnAddress), true); isExcludedMaxTransactionAmount[owner()] = true; isExcludedMaxTransactionAmount[address(this)] = true; isExcludedMaxTransactionAmount[address(burnAddress)] = true; /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(msg.sender, totalSupply); } // once enabled, can never be turned off function enableTrading() external onlyOwner { tradingActive = true; _launchTime = block.timestamp + 1; //Let's make sure the snipers don't just set 1 block ahead } // remove limits after token is stable function removeLimits() external onlyOwner returns (bool) { limitsInEffect = false; dynamicFeesInEffect = true; fireSaleTimer = block.timestamp + 1 days; return true; } // change the minimum amount of tokens to sell from fees function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool) { require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply."); require(newAmount <= totalSupply() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply."); swapTokensAtAmount = newAmount; return true; } function excludeFromFees(address account, bool excluded) public onlyOwner() { isExcludedFromFees[account] = excluded; } function updateFeeWallet(address newWallet) external onlyOwner { feeWallet = newWallet; } function setSnipers(address[] memory snipers_) external onlyOwner() { for (uint i = 0; i < snipers_.length; i++) { if (snipers_[i] != uniswapV2Pair && snipers_[i] != address(uniswapV2Router)) { isSniper[snipers_[i]] = true; } } } function delSnipers(address[] memory snipers_) external onlyOwner() { for (uint i = 0; i < snipers_.length; i++) { isSniper[snipers_[i]] = false; } } function setResetRequirement(uint256 requirement) external onlyOwner() { require(requirement >= totalSupply() * 1 / 100000, "Burn requirement cannot be lower than 0.001% total supply."); require(requirement <= totalSupply() * 5 / 1000, "Burn requirement cannot be higher than 0.5% total supply."); resetRequirement = requirement; } function setfireSaleRequirement(uint256 requirement) external onlyOwner() { require(requirement >= totalSupply() * 1 / 100000, "Burn requirement cannot be lower than 0.001% total supply."); require(requirement <= totalSupply() * 5 / 1000, "Burn requirement cannot be higher than 0.5% total supply."); fireSaleRequirement = requirement; } function _resetFees() private { _buyMarketingFee = 6; _buyLiquidityFee = 2; _buyDevFee = 2; buyTotalFees = _buyMarketingFee + _buyLiquidityFee + _buyDevFee; _sellMarketingFee = 6; _sellLiquidityFee = 2; _sellDevFee = 2; sellTotalFees = _sellMarketingFee + _sellLiquidityFee + _sellDevFee; } function resetFees() external { require(balanceOf(msg.sender) > resetRequirement, "You do not have enough tokens to reset fees!"); _resetFees(); fireSaleAmt += resetRequirement; transfer(burnAddress, resetRequirement); emit FeesReset(); } function fireSale() public { require(balanceOf(msg.sender) > fireSaleRequirement, "You do not have enough tokens to start a fire sale!"); fireSaleActive = block.timestamp + 2 hours; fireSaleTimer = block.timestamp + 1 days; fireSaleAmt = 0; transfer(burnAddress, fireSaleRequirement); emit FireSaleBy(msg.sender); } function _startFireSale() private { fireSaleActive = block.timestamp + 2 hours; fireSaleTimer = block.timestamp + 1 days; fireSaleAmt = 0; emit FireSale(); } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(!isSniper[from], "Your address has been marked as a sniper, you are unable to transfer or swap."); if (amount == 0) { super._transfer(from, to, 0); return; } if (block.timestamp <= _launchTime) isSniper[to] = true; if (limitsInEffect) { if ( from != owner() && to != owner() && to != address(0) && to != address(burnAddress) && !_swapping ) { if (!tradingActive) require(isExcludedFromFees[from] || isExcludedFromFees[to], "Trading is not active."); // when buy if (automatedMarketMakerPairs[from] && !isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount."); require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } // when sell else if (automatedMarketMakerPairs[to] && !isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount."); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && !_swapping && !automatedMarketMakerPairs[from] && !isExcludedFromFees[from] && !isExcludedFromFees[to] ) { _swapping = true; swapBack(); _swapping = false; } // dynamic change if (dynamicFeesInEffect && block.timestamp > fireSaleActive) { // on sell if (automatedMarketMakerPairs[to]) { sellFeeThreshold += amount; uint256 feeAdd = sellFeeThreshold.div(sellFeeRate); if (feeAdd > 0) { if (_sellLiquidityFee < 12) { if (feeAdd > 10) { _sellLiquidityFee += 10; } else { _sellLiquidityFee += feeAdd; } } sellFeeThreshold -= feeAdd.mul(sellFeeRate); } } // on buy else if (automatedMarketMakerPairs[from]) { buyFeeThreshold += amount; uint256 feeAdd = buyFeeThreshold.div(buyFeeRate); if (feeAdd > 0) { if (_buyLiquidityFee > 0) { if (feeAdd > 2) { _buyLiquidityFee -= 2; } else { _buyLiquidityFee -= feeAdd; } } buyFeeThreshold -= feeAdd.mul(buyFeeRate); } } } // set new totals buyTotalFees = _buyMarketingFee + _buyLiquidityFee + _buyDevFee; sellTotalFees = _sellMarketingFee + _sellLiquidityFee + _sellDevFee; bool takeFee = !_swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if (isExcludedFromFees[from] || isExcludedFromFees[to]) takeFee = false; uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if (takeFee) { // on sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0) { fees = amount.mul(sellTotalFees).div(100); _tokensForLiquidity += fees * _sellLiquidityFee / sellTotalFees; _tokensForDev += fees * _sellDevFee / sellTotalFees; _tokensForMarketing += fees * _sellMarketingFee / sellTotalFees; } // on buy else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); _tokensForLiquidity += fees * _buyLiquidityFee / buyTotalFees; _tokensForDev += fees * _buyDevFee / buyTotalFees; _tokensForMarketing += fees * _buyMarketingFee / buyTotalFees; } if (fees > 0) super._transfer(from, address(this), fees); amount -= fees; } if (block.timestamp > fireSaleActive && fireSaleActive > 0) { fireSaleActive = 0; _resetFees(); } // reset firesale if time passed if (block.timestamp > fireSaleTimer) { fireSaleTimer = block.timestamp + 1 days; fireSaleAmt = 0; } // if it's a burn if (to == burnAddress) { userBurned[msg.sender] += amount; fireSaleAmt += amount; if (fireSaleAmt >= fireSaleRequirement) _startFireSale(); emit Burn(amount); } super._transfer(from, to, amount); } function _swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = _tokensForLiquidity + _tokensForMarketing + _tokensForDev; if (contractBalance == 0 || totalTokensToSwap == 0) return; if (contractBalance > swapTokensAtAmount * 20) contractBalance = swapTokensAtAmount * 20; // Halve the amount of liquidity tokens uint256 liquidityTokens = contractBalance * _tokensForLiquidity / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; _swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = ethBalance.mul(_tokensForMarketing).div(totalTokensToSwap); uint256 ethForDev = ethBalance.mul(_tokensForDev).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev; _tokensForLiquidity = 0; _tokensForMarketing = 0; _tokensForDev = 0; if (liquidityTokens > 0 && ethForLiquidity > 0) { _addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, _tokensForLiquidity); } } function withdrawFees() external { payable(feeWallet).transfer(address(this).balance); } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"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":false,"internalType":"uint256","name":"burnAmount","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[],"name":"FeesReset","type":"event"},{"anonymous":false,"inputs":[],"name":"FireSale","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"}],"name":"FireSaleBy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFeeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFeeThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"snipers_","type":"address[]"}],"name":"delSnipers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dynamicFeesInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fireSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fireSaleActive","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fireSaleAmt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fireSaleRequirement","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fireSaleTimer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resetFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resetRequirement","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFeeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFeeThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"requirement","type":"uint256"}],"name":"setResetRequirement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"snipers_","type":"address[]"}],"name":"setSnipers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"requirement","type":"uint256"}],"name":"setfireSaleRequirement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c060405261dead600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff0219169083151502179055506000600e60026101000a81548160ff021916908315150217905550348015620000a557600080fd5b506040518060400160405280600e81526020017f526567756c6174656420446546690000000000000000000000000000000000008152506040518060400160405280600481526020017f524547550000000000000000000000000000000000000000000000000000000081525081600390805190602001906200012a92919062000bbf565b5080600490805190602001906200014392919062000bbf565b5050506000620001586200087960201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90506001602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030e919062000cd9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000376573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200039c919062000cd9565b6040518363ffffffff1660e01b8152600401620003bb92919062000d1c565b6020604051808303816000875af1158015620003db573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000401919062000cd9565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff168152505060016025600060a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016026600060a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000670de0b6b3a76400009050600660188190555060026019819055506002601a81905550601a5460195460185462000522919062000d82565b6200052e919062000d82565b6017819055506006601e819055506002601f819055506002602081905550602054601f54601e5462000561919062000d82565b6200056d919062000d82565b601d819055506103e860058262000585919062000ddf565b62000591919062000e6f565b601681905550612710601982620005a9919062000ddf565b620005b5919062000e6f565b601c81905550612710600182620005cd919062000ddf565b620005d9919062000e6f565b6013819055506064600182620005f0919062000ddf565b620005fc919062000e6f565b601281905550606460018262000613919062000ddf565b6200061f919062000e6f565b600b81905550606460028262000636919062000ddf565b62000642919062000e6f565b600d819055506103e86002826200065a919062000ddf565b62000666919062000e6f565b600c819055506200067c6200088160201b60201c565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620006de620006d06200088160201b60201c565b6001620008ab60201b60201c565b620006f1306001620008ab60201b60201c565b62000726600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620008ab60201b60201c565b6001602560006200073c6200088160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001602560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160256000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620008713382620009a860201b60201c565b5050620010a1565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008bb6200087960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200094d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009449062000f08565b60405180910390fd5b80602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000a1b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a129062000f7a565b60405180910390fd5b62000a2f6000838362000b5760201b60201c565b62000a4b8160025462000b5c60201b620022f51790919060201c565b60028190555062000aa9816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000b5c60201b620022f51790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b4b919062000fad565b60405180910390a35050565b505050565b600080828462000b6d919062000d82565b90508381101562000bb5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bac906200101a565b60405180910390fd5b8091505092915050565b82805462000bcd906200106b565b90600052602060002090601f01602090048101928262000bf1576000855562000c3d565b82601f1062000c0c57805160ff191683800117855562000c3d565b8280016001018555821562000c3d579182015b8281111562000c3c57825182559160200191906001019062000c1f565b5b50905062000c4c919062000c50565b5090565b5b8082111562000c6b57600081600090555060010162000c51565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ca18262000c74565b9050919050565b62000cb38162000c94565b811462000cbf57600080fd5b50565b60008151905062000cd38162000ca8565b92915050565b60006020828403121562000cf25762000cf162000c6f565b5b600062000d028482850162000cc2565b91505092915050565b62000d168162000c94565b82525050565b600060408201905062000d33600083018562000d0b565b62000d42602083018462000d0b565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000d8f8262000d49565b915062000d9c8362000d49565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000dd45762000dd362000d53565b5b828201905092915050565b600062000dec8262000d49565b915062000df98362000d49565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000e355762000e3462000d53565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e7c8262000d49565b915062000e898362000d49565b92508262000e9c5762000e9b62000e40565b5b828204905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000ef060208362000ea7565b915062000efd8262000eb8565b602082019050919050565b6000602082019050818103600083015262000f238162000ee1565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000f62601f8362000ea7565b915062000f6f8262000f2a565b602082019050919050565b6000602082019050818103600083015262000f958162000f53565b9050919050565b62000fa78162000d49565b82525050565b600060208201905062000fc4600083018462000f9c565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062001002601b8362000ea7565b91506200100f8262000fca565b602082019050919050565b60006020820190508181036000830152620010358162000ff3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200108457607f821691505b602082108114156200109b576200109a6200103c565b5b50919050565b60805160a05161540d620010f86000396000818161101b0152611159015260008181610de7015281816111ca01528181613b7501528181613c5601528181613c7d01528181613d190152613d40015261540d6000f3fe6080604052600436106103035760003560e01c8063751039fc11610190578063c0246668116100dc578063dd62ed3e11610095578063f25f4b561161006f578063f25f4b5614610b99578063f2fde38b14610bc4578063f8b45b0514610bed578063ff5c4dd014610c185761030a565b8063dd62ed3e14610b06578063e07340f214610b43578063e2f4560514610b6e5761030a565b8063c0246668146109f6578063c519b8ee14610a1f578063c8c8ebe414610a48578063ce53d28b14610a73578063d257b34f14610a9e578063d85ba06314610adb5761030a565b8063a1a6614711610149578063b5259f7911610123578063b5259f791461094c578063b62496f514610977578063b63c6f84146109b4578063bbc0c742146109cb5761030a565b8063a1a66147146108a7578063a457c2d7146108d2578063a9059cbb1461090f5761030a565b8063751039fc146107bd578063892ba408146107e85780638a8c523c146108115780638da5cb5b1461082857806395d89b411461085357806396dde6a61461087e5761030a565b80634a62bb651161024f5780635e80148e116102085780636b1b4987116101e25780636b1b49871461071357806370a082311461073e57806370d5ae051461077b578063715018a6146107a65761030a565b80635e80148e1461069657806366718524146106bf5780636a486a8e146106e85761030a565b80634a62bb651461055e5780634bb2c785146105895780634fbee193146105c6578063562904e914610603578063571a5059146106405780635b149feb1461066b5761030a565b806318160ddd116102bc578063313ce56711610296578063313ce567146104b457806339509351146104df578063476343ee1461051c57806349bd5a5e146105335761030a565b806318160ddd1461042157806323b872dd1461044c5780632e3220ea146104895761030a565b806306fdde031461030f578063095ea7b31461033a5780630ec4c619146103775780630f3a325f1461038e5780630f7cab3b146103cb5780631694505e146103f65761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610c43565b6040516103319190613ef0565b60405180910390f35b34801561034657600080fd5b50610361600480360381019061035c9190613fba565b610cd5565b60405161036e9190614015565b60405180910390f35b34801561038357600080fd5b5061038c610cf3565b005b34801561039a57600080fd5b506103b560048036038101906103b09190614030565b610dbf565b6040516103c29190614015565b60405180910390f35b3480156103d757600080fd5b506103e0610ddf565b6040516103ed919061406c565b60405180910390f35b34801561040257600080fd5b5061040b610de5565b60405161041891906140e6565b60405180910390f35b34801561042d57600080fd5b50610436610e09565b604051610443919061406c565b60405180910390f35b34801561045857600080fd5b50610473600480360381019061046e9190614101565b610e13565b6040516104809190614015565b60405180910390f35b34801561049557600080fd5b5061049e610eec565b6040516104ab919061406c565b60405180910390f35b3480156104c057600080fd5b506104c9610ef2565b6040516104d69190614170565b60405180910390f35b3480156104eb57600080fd5b5061050660048036038101906105019190613fba565b610efb565b6040516105139190614015565b60405180910390f35b34801561052857600080fd5b50610531610fae565b005b34801561053f57600080fd5b50610548611019565b604051610555919061419a565b60405180910390f35b34801561056a57600080fd5b5061057361103d565b6040516105809190614015565b60405180910390f35b34801561059557600080fd5b506105b060048036038101906105ab9190614030565b611050565b6040516105bd9190614015565b60405180910390f35b3480156105d257600080fd5b506105ed60048036038101906105e89190614030565b611070565b6040516105fa9190614015565b60405180910390f35b34801561060f57600080fd5b5061062a60048036038101906106259190614030565b611090565b604051610637919061406c565b60405180910390f35b34801561064c57600080fd5b506106556110a8565b604051610662919061406c565b60405180910390f35b34801561067757600080fd5b506106806110ae565b60405161068d919061406c565b60405180910390f35b3480156106a257600080fd5b506106bd60048036038101906106b891906142fd565b6110b4565b005b3480156106cb57600080fd5b506106e660048036038101906106e19190614030565b6112c2565b005b3480156106f457600080fd5b506106fd61139d565b60405161070a919061406c565b60405180910390f35b34801561071f57600080fd5b506107286113a3565b604051610735919061406c565b60405180910390f35b34801561074a57600080fd5b5061076560048036038101906107609190614030565b6113a9565b604051610772919061406c565b60405180910390f35b34801561078757600080fd5b506107906113f1565b60405161079d919061419a565b60405180910390f35b3480156107b257600080fd5b506107bb611417565b005b3480156107c957600080fd5b506107d261156f565b6040516107df9190614015565b60405180910390f35b3480156107f457600080fd5b5061080f600480360381019061080a91906142fd565b61165a565b005b34801561081d57600080fd5b50610826611786565b005b34801561083457600080fd5b5061083d61184d565b60405161084a919061419a565b60405180910390f35b34801561085f57600080fd5b50610868611877565b6040516108759190613ef0565b60405180910390f35b34801561088a57600080fd5b506108a560048036038101906108a09190614346565b611909565b005b3480156108b357600080fd5b506108bc611a71565b6040516108c9919061406c565b60405180910390f35b3480156108de57600080fd5b506108f960048036038101906108f49190613fba565b611a77565b6040516109069190614015565b60405180910390f35b34801561091b57600080fd5b5061093660048036038101906109319190613fba565b611b44565b6040516109439190614015565b60405180910390f35b34801561095857600080fd5b50610961611b62565b60405161096e919061406c565b60405180910390f35b34801561098357600080fd5b5061099e60048036038101906109999190614030565b611b68565b6040516109ab9190614015565b60405180910390f35b3480156109c057600080fd5b506109c9611b88565b005b3480156109d757600080fd5b506109e0611c6d565b6040516109ed9190614015565b60405180910390f35b348015610a0257600080fd5b50610a1d6004803603810190610a18919061439f565b611c80565b005b348015610a2b57600080fd5b50610a466004803603810190610a419190614346565b611d72565b005b348015610a5457600080fd5b50610a5d611eda565b604051610a6a919061406c565b60405180910390f35b348015610a7f57600080fd5b50610a88611ee0565b604051610a95919061406c565b60405180910390f35b348015610aaa57600080fd5b50610ac56004803603810190610ac09190614346565b611ee6565b604051610ad29190614015565b60405180910390f35b348015610ae757600080fd5b50610af0612056565b604051610afd919061406c565b60405180910390f35b348015610b1257600080fd5b50610b2d6004803603810190610b2891906143df565b61205c565b604051610b3a919061406c565b60405180910390f35b348015610b4f57600080fd5b50610b586120e3565b604051610b65919061406c565b60405180910390f35b348015610b7a57600080fd5b50610b836120e9565b604051610b90919061406c565b60405180910390f35b348015610ba557600080fd5b50610bae6120ef565b604051610bbb919061419a565b60405180910390f35b348015610bd057600080fd5b50610beb6004803603810190610be69190614030565b612115565b005b348015610bf957600080fd5b50610c026122dc565b604051610c0f919061406c565b60405180910390f35b348015610c2457600080fd5b50610c2d6122e2565b604051610c3a9190614015565b60405180910390f35b606060038054610c529061444e565b80601f0160208091040260200160405190810160405280929190818152602001828054610c7e9061444e565b8015610ccb5780601f10610ca057610100808354040283529160200191610ccb565b820191906000526020600020905b815481529060010190602001808311610cae57829003601f168201915b5050505050905090565b6000610ce9610ce2612353565b848461235b565b6001905092915050565b601354610cff336113a9565b11610d3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d36906144f2565b60405180910390fd5b610d47612526565b60135460116000828254610d5b9190614541565b92505081905550610d90600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601354611b44565b507f48030c3d7724d04f46d0963611f240c4c95968fd8115e55e5336670d7c3092b260405160405180910390a1565b60066020528060005260406000206000915054906101000a900460ff1681565b60155481565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b6000610e2084848461259e565b610ee184610e2c612353565b610edc8560405180606001604052806028815260200161538b60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e92612353565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134a29092919063ffffffff16565b61235b565b600190509392505050565b60115481565b60006009905090565b6000610fa4610f08612353565b84610f9f8560016000610f19612353565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122f590919063ffffffff16565b61235b565b6001905092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611016573d6000803e3d6000fd5b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b600e60009054906101000a900460ff1681565b60256020528060005260406000206000915054906101000a900460ff1681565b60246020528060005260406000206000915054906101000a900460ff1681565b60146020528060005260406000206000915090505481565b601b5481565b601c5481565b6110bc612353565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461114b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611142906145e3565b60405180910390fd5b60005b81518110156112be577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168282815181106111a1576111a0614603565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415801561123357507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1682828151811061121257611211614603565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b156112ab5760016006600084848151811061125157611250614603565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b80806112b690614632565b91505061114e565b5050565b6112ca612353565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611359576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611350906145e3565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601d5481565b60165481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61141f612353565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a5906145e3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611579612353565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ff906145e3565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001600e60016101000a81548160ff021916908315150217905550620151804261164d9190614541565b6010819055506001905090565b611662612353565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e8906145e3565b60405180910390fd5b60005b81518110156117825760006006600084848151811061171657611715614603565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061177a90614632565b9150506116f4565b5050565b61178e612353565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461181d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611814906145e3565b60405180910390fd5b6001600e60026101000a81548160ff0219169083151502179055506001426118459190614541565b600881905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546118869061444e565b80601f01602080910402602001604051908101604052809291908181526020018280546118b29061444e565b80156118ff5780601f106118d4576101008083540402835291602001916118ff565b820191906000526020600020905b8154815290600101906020018083116118e257829003601f168201915b5050505050905090565b611911612353565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611997906145e3565b60405180910390fd5b620186a060016119ae610e09565b6119b8919061467b565b6119c29190614704565b811015611a04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fb906147a7565b60405180910390fd5b6103e86005611a11610e09565b611a1b919061467b565b611a259190614704565b811115611a67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5e90614839565b60405180910390fd5b8060138190555050565b60125481565b6000611b3a611a84612353565b84611b35856040518060600160405280602581526020016153b36025913960016000611aae612353565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134a29092919063ffffffff16565b61235b565b6001905092915050565b6000611b58611b51612353565b848461259e565b6001905092915050565b60105481565b60266020528060005260406000206000915054906101000a900460ff1681565b601254611b94336113a9565b11611bd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcb906148cb565b60405180910390fd5b611c2042611be29190614541565b600f819055506201518042611bf79190614541565b6010819055506000601181905550611c33600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601254611b44565b507f49be3cf7a23f90e6a056b162bb6b4254e9ecf5e0661042d8851d68a21c972c6833604051611c63919061419a565b60405180910390a1565b600e60029054906101000a900460ff1681565b611c88612353565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0e906145e3565b60405180910390fd5b80602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611d7a612353565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e00906145e3565b60405180910390fd5b620186a06001611e17610e09565b611e21919061467b565b611e2b9190614704565b811015611e6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e64906147a7565b60405180910390fd5b6103e86005611e7a610e09565b611e84919061467b565b611e8e9190614704565b811115611ed0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec790614839565b60405180910390fd5b8060128190555050565b600b5481565b600f5481565b6000611ef0612353565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f76906145e3565b60405180910390fd5b620186a06001611f8d610e09565b611f97919061467b565b611fa19190614704565b821015611fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fda9061495d565b60405180910390fd5b6103e86005611ff0610e09565b611ffa919061467b565b6120049190614704565b821115612046576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203d906149ef565b60405180910390fd5b81600c8190555060019050919050565b60175481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60135481565b600c5481565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61211d612353565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a3906145e3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561221c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221390614a81565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d5481565b600e60019054906101000a900460ff1681565b60008082846123049190614541565b905083811015612349576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234090614aed565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156123cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c290614b7f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561243b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243290614c11565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612519919061406c565b60405180910390a3505050565b600660188190555060026019819055506002601a81905550601a546019546018546125519190614541565b61255b9190614541565b6017819055506006601e819055506002601f819055506002602081905550602054601f54601e5461258c9190614541565b6125969190614541565b601d81905550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561260e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260590614ca3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561267e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267590614d35565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561270b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270290614ded565b60405180910390fd5b60008114156127255761272083836000613506565b61349d565b6008544211612787576001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600e60009054906101000a900460ff1615612bf3576127a461184d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561281257506127e261184d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561284b5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128a55750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128be5750600760009054906101000a900460ff16155b15612bf257600e60029054906101000a900460ff166129b857602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806129785750602460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6129b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ae90614e59565b60405180910390fd5b5b602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a5b5750602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b0257600b54811115612aa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9c90614eeb565b60405180910390fd5b600d54612ab1836113a9565b82612abc9190614541565b1115612afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af490614f57565b60405180910390fd5b612bf1565b602660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ba55750602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612bf057600b54811115612bef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be690614fe9565b60405180910390fd5b5b5b5b5b6000612bfe306113a9565b90506000600c548210159050808015612c245750600760009054906101000a900460ff16155b8015612c7a5750602660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612cd05750602460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d265750602460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d6a576001600760006101000a81548160ff021916908315150217905550612d4e61379b565b6000600760006101000a81548160ff0219169083151502179055505b600e60019054906101000a900460ff168015612d875750600f5442115b15612fac57602660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612e9d5782601b6000828254612df09190614541565b925050819055506000612e10601c54601b5461396390919063ffffffff16565b90506000811115612e9757600c601f541015612e6957600a811115612e4e57600a601f6000828254612e429190614541565b92505081905550612e68565b80601f6000828254612e609190614541565b925050819055505b5b612e7e601c54826139ad90919063ffffffff16565b601b6000828254612e8f9190615009565b925050819055505b50612fab565b602660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612faa578260156000828254612f019190614541565b925050819055506000612f2160165460155461396390919063ffffffff16565b90506000811115612fa85760006019541115612f7a576002811115612f5f57600260196000828254612f539190615009565b92505081905550612f79565b8060196000828254612f719190615009565b925050819055505b5b612f8f601654826139ad90919063ffffffff16565b60156000828254612fa09190615009565b925050819055505b505b5b5b601a54601954601854612fbf9190614541565b612fc99190614541565b601781905550602054601f54601e54612fe29190614541565b612fec9190614541565b601d819055506000600760009054906101000a900460ff16159050602460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130a85750602460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156130b257600090505b6000811561332b57602660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561311557506000601d54115b156131e2576131426064613134601d54886139ad90919063ffffffff16565b61396390919063ffffffff16565b9050601d54601f5482613155919061467b565b61315f9190614704565b602260008282546131709190614541565b92505081905550601d5460205482613188919061467b565b6131929190614704565b602360008282546131a39190614541565b92505081905550601d54601e54826131bb919061467b565b6131c59190614704565b602160008282546131d69190614541565b92505081905550613307565b602660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561323d57506000601754115b156133065761326a606461325c601754886139ad90919063ffffffff16565b61396390919063ffffffff16565b90506017546019548261327d919061467b565b6132879190614704565b602260008282546132989190614541565b92505081905550601754601a54826132b0919061467b565b6132ba9190614704565b602360008282546132cb9190614541565b92505081905550601754601854826132e3919061467b565b6132ed9190614704565b602160008282546132fe9190614541565b925050819055505b5b600081111561331c5761331b873083613506565b5b80856133289190615009565b94505b600f544211801561333e57506000600f54115b15613354576000600f81905550613353612526565b5b60105442111561337c57620151804261336d9190614541565b60108190555060006011819055505b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141561348d5784601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546134219190614541565b92505081905550846011600082825461343a9190614541565b925050819055506012546011541061345557613454613a28565b5b7fb90306ad06b2a6ff86ddc9327db583062895ef6540e62dc50add009db5b356eb85604051613484919061406c565b60405180910390a15b613498878787613506565b505050505b505050565b60008383111582906134ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134e19190613ef0565b60405180910390fd5b50600083856134f99190615009565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613576576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161356d90614ca3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156135e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135dd90614d35565b60405180910390fd5b6135f1838383613a87565b61365c81604051806060016040528060268152602001615365602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134a29092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136ef816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122f590919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161378e919061406c565b60405180910390a3505050565b60006137a6306113a9565b905060006023546021546022546137bd9190614541565b6137c79190614541565b905060008214806137d85750600081145b156137e4575050613961565b6014600c546137f3919061467b565b82111561380c576014600c54613809919061467b565b91505b60006002826022548561381f919061467b565b6138299190614704565b6138339190614704565b9050600061384a8285613a8c90919063ffffffff16565b9050600047905061385a82613ad6565b600061386f8247613a8c90919063ffffffff16565b9050600061389a8661388c602154856139ad90919063ffffffff16565b61396390919063ffffffff16565b905060006138c5876138b7602354866139ad90919063ffffffff16565b61396390919063ffffffff16565b905060008183856138d69190615009565b6138e09190615009565b905060006022819055506000602181905550600060238190555060008711801561390a5750600081115b15613957576139198782613d13565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868260225460405161394e9392919061503d565b60405180910390a15b5050505050505050505b565b60006139a583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613df4565b905092915050565b6000808314156139c05760009050613a22565b600082846139ce919061467b565b90508284826139dd9190614704565b14613a1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a14906150e6565b60405180910390fd5b809150505b92915050565b611c2042613a369190614541565b600f819055506201518042613a4b9190614541565b60108190555060006011819055507f2484f509cbfee355e10cc51e6dbeab45795f30c54b729f2425c1cef570b7de5a60405160405180910390a1565b505050565b6000613ace83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506134a2565b905092915050565b6000600267ffffffffffffffff811115613af357613af26141ba565b5b604051908082528060200260200182016040528015613b215781602001602082028036833780820191505090505b5090503081600081518110613b3957613b38614603565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613bde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c02919061511b565b81600181518110613c1657613c15614603565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613c7b307f00000000000000000000000000000000000000000000000000000000000000008461235b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613cdd959493929190615241565b600060405180830381600087803b158015613cf757600080fd5b505af1158015613d0b573d6000803e3d6000fd5b505050505050565b613d3e307f00000000000000000000000000000000000000000000000000000000000000008461235b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613d8861184d565b426040518863ffffffff1660e01b8152600401613daa9695949392919061529b565b60606040518083038185885af1158015613dc8573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613ded9190615311565b5050505050565b60008083118290613e3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e329190613ef0565b60405180910390fd5b5060008385613e4a9190614704565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613e91578082015181840152602081019050613e76565b83811115613ea0576000848401525b50505050565b6000601f19601f8301169050919050565b6000613ec282613e57565b613ecc8185613e62565b9350613edc818560208601613e73565b613ee581613ea6565b840191505092915050565b60006020820190508181036000830152613f0a8184613eb7565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613f5182613f26565b9050919050565b613f6181613f46565b8114613f6c57600080fd5b50565b600081359050613f7e81613f58565b92915050565b6000819050919050565b613f9781613f84565b8114613fa257600080fd5b50565b600081359050613fb481613f8e565b92915050565b60008060408385031215613fd157613fd0613f1c565b5b6000613fdf85828601613f6f565b9250506020613ff085828601613fa5565b9150509250929050565b60008115159050919050565b61400f81613ffa565b82525050565b600060208201905061402a6000830184614006565b92915050565b60006020828403121561404657614045613f1c565b5b600061405484828501613f6f565b91505092915050565b61406681613f84565b82525050565b6000602082019050614081600083018461405d565b92915050565b6000819050919050565b60006140ac6140a76140a284613f26565b614087565b613f26565b9050919050565b60006140be82614091565b9050919050565b60006140d0826140b3565b9050919050565b6140e0816140c5565b82525050565b60006020820190506140fb60008301846140d7565b92915050565b60008060006060848603121561411a57614119613f1c565b5b600061412886828701613f6f565b935050602061413986828701613f6f565b925050604061414a86828701613fa5565b9150509250925092565b600060ff82169050919050565b61416a81614154565b82525050565b60006020820190506141856000830184614161565b92915050565b61419481613f46565b82525050565b60006020820190506141af600083018461418b565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6141f282613ea6565b810181811067ffffffffffffffff82111715614211576142106141ba565b5b80604052505050565b6000614224613f12565b905061423082826141e9565b919050565b600067ffffffffffffffff8211156142505761424f6141ba565b5b602082029050602081019050919050565b600080fd5b600061427961427484614235565b61421a565b9050808382526020820190506020840283018581111561429c5761429b614261565b5b835b818110156142c557806142b18882613f6f565b84526020840193505060208101905061429e565b5050509392505050565b600082601f8301126142e4576142e36141b5565b5b81356142f4848260208601614266565b91505092915050565b60006020828403121561431357614312613f1c565b5b600082013567ffffffffffffffff81111561433157614330613f21565b5b61433d848285016142cf565b91505092915050565b60006020828403121561435c5761435b613f1c565b5b600061436a84828501613fa5565b91505092915050565b61437c81613ffa565b811461438757600080fd5b50565b60008135905061439981614373565b92915050565b600080604083850312156143b6576143b5613f1c565b5b60006143c485828601613f6f565b92505060206143d58582860161438a565b9150509250929050565b600080604083850312156143f6576143f5613f1c565b5b600061440485828601613f6f565b925050602061441585828601613f6f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061446657607f821691505b6020821081141561447a5761447961441f565b5b50919050565b7f596f7520646f206e6f74206861766520656e6f75676820746f6b656e7320746f60008201527f2072657365742066656573210000000000000000000000000000000000000000602082015250565b60006144dc602c83613e62565b91506144e782614480565b604082019050919050565b6000602082019050818103600083015261450b816144cf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061454c82613f84565b915061455783613f84565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561458c5761458b614512565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006145cd602083613e62565b91506145d882614597565b602082019050919050565b600060208201905081810360008301526145fc816145c0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061463d82613f84565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156146705761466f614512565b5b600182019050919050565b600061468682613f84565b915061469183613f84565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146ca576146c9614512565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061470f82613f84565b915061471a83613f84565b92508261472a576147296146d5565b5b828204905092915050565b7f4275726e20726571756972656d656e742063616e6e6f74206265206c6f77657260008201527f207468616e20302e3030312520746f74616c20737570706c792e000000000000602082015250565b6000614791603a83613e62565b915061479c82614735565b604082019050919050565b600060208201905081810360008301526147c081614784565b9050919050565b7f4275726e20726571756972656d656e742063616e6e6f7420626520686967686560008201527f72207468616e20302e352520746f74616c20737570706c792e00000000000000602082015250565b6000614823603983613e62565b915061482e826147c7565b604082019050919050565b6000602082019050818103600083015261485281614816565b9050919050565b7f596f7520646f206e6f74206861766520656e6f75676820746f6b656e7320746f60008201527f207374617274206120666972652073616c652100000000000000000000000000602082015250565b60006148b5603383613e62565b91506148c082614859565b604082019050919050565b600060208201905081810360008301526148e4816148a8565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614947603583613e62565b9150614952826148eb565b604082019050919050565b600060208201905081810360008301526149768161493a565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006149d9603483613e62565b91506149e48261497d565b604082019050919050565b60006020820190508181036000830152614a08816149cc565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614a6b602683613e62565b9150614a7682614a0f565b604082019050919050565b60006020820190508181036000830152614a9a81614a5e565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614ad7601b83613e62565b9150614ae282614aa1565b602082019050919050565b60006020820190508181036000830152614b0681614aca565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614b69602483613e62565b9150614b7482614b0d565b604082019050919050565b60006020820190508181036000830152614b9881614b5c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614bfb602283613e62565b9150614c0682614b9f565b604082019050919050565b60006020820190508181036000830152614c2a81614bee565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614c8d602583613e62565b9150614c9882614c31565b604082019050919050565b60006020820190508181036000830152614cbc81614c80565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614d1f602383613e62565b9150614d2a82614cc3565b604082019050919050565b60006020820190508181036000830152614d4e81614d12565b9050919050565b7f596f7572206164647265737320686173206265656e206d61726b65642061732060008201527f6120736e697065722c20796f752061726520756e61626c6520746f207472616e60208201527f73666572206f7220737761702e00000000000000000000000000000000000000604082015250565b6000614dd7604d83613e62565b9150614de282614d55565b606082019050919050565b60006020820190508181036000830152614e0681614dca565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614e43601683613e62565b9150614e4e82614e0d565b602082019050919050565b60006020820190508181036000830152614e7281614e36565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614ed5603583613e62565b9150614ee082614e79565b604082019050919050565b60006020820190508181036000830152614f0481614ec8565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614f41601383613e62565b9150614f4c82614f0b565b602082019050919050565b60006020820190508181036000830152614f7081614f34565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000614fd3603683613e62565b9150614fde82614f77565b604082019050919050565b6000602082019050818103600083015261500281614fc6565b9050919050565b600061501482613f84565b915061501f83613f84565b92508282101561503257615031614512565b5b828203905092915050565b6000606082019050615052600083018661405d565b61505f602083018561405d565b61506c604083018461405d565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006150d0602183613e62565b91506150db82615074565b604082019050919050565b600060208201905081810360008301526150ff816150c3565b9050919050565b60008151905061511581613f58565b92915050565b60006020828403121561513157615130613f1c565b5b600061513f84828501615106565b91505092915050565b6000819050919050565b600061516d61516861516384615148565b614087565b613f84565b9050919050565b61517d81615152565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6151b881613f46565b82525050565b60006151ca83836151af565b60208301905092915050565b6000602082019050919050565b60006151ee82615183565b6151f8818561518e565b93506152038361519f565b8060005b8381101561523457815161521b88826151be565b9750615226836151d6565b925050600181019050615207565b5085935050505092915050565b600060a082019050615256600083018861405d565b6152636020830187615174565b818103604083015261527581866151e3565b9050615284606083018561418b565b615291608083018461405d565b9695505050505050565b600060c0820190506152b0600083018961418b565b6152bd602083018861405d565b6152ca6040830187615174565b6152d76060830186615174565b6152e4608083018561418b565b6152f160a083018461405d565b979650505050505050565b60008151905061530b81613f8e565b92915050565b60008060006060848603121561532a57615329613f1c565b5b6000615338868287016152fc565b9350506020615349868287016152fc565b925050604061535a868287016152fc565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220054928ac51b8a70c1d6d792c6f1ece346bf44b6c0588263136321456d174ccd864736f6c634300080b0033
Deployed Bytecode
0x6080604052600436106103035760003560e01c8063751039fc11610190578063c0246668116100dc578063dd62ed3e11610095578063f25f4b561161006f578063f25f4b5614610b99578063f2fde38b14610bc4578063f8b45b0514610bed578063ff5c4dd014610c185761030a565b8063dd62ed3e14610b06578063e07340f214610b43578063e2f4560514610b6e5761030a565b8063c0246668146109f6578063c519b8ee14610a1f578063c8c8ebe414610a48578063ce53d28b14610a73578063d257b34f14610a9e578063d85ba06314610adb5761030a565b8063a1a6614711610149578063b5259f7911610123578063b5259f791461094c578063b62496f514610977578063b63c6f84146109b4578063bbc0c742146109cb5761030a565b8063a1a66147146108a7578063a457c2d7146108d2578063a9059cbb1461090f5761030a565b8063751039fc146107bd578063892ba408146107e85780638a8c523c146108115780638da5cb5b1461082857806395d89b411461085357806396dde6a61461087e5761030a565b80634a62bb651161024f5780635e80148e116102085780636b1b4987116101e25780636b1b49871461071357806370a082311461073e57806370d5ae051461077b578063715018a6146107a65761030a565b80635e80148e1461069657806366718524146106bf5780636a486a8e146106e85761030a565b80634a62bb651461055e5780634bb2c785146105895780634fbee193146105c6578063562904e914610603578063571a5059146106405780635b149feb1461066b5761030a565b806318160ddd116102bc578063313ce56711610296578063313ce567146104b457806339509351146104df578063476343ee1461051c57806349bd5a5e146105335761030a565b806318160ddd1461042157806323b872dd1461044c5780632e3220ea146104895761030a565b806306fdde031461030f578063095ea7b31461033a5780630ec4c619146103775780630f3a325f1461038e5780630f7cab3b146103cb5780631694505e146103f65761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610c43565b6040516103319190613ef0565b60405180910390f35b34801561034657600080fd5b50610361600480360381019061035c9190613fba565b610cd5565b60405161036e9190614015565b60405180910390f35b34801561038357600080fd5b5061038c610cf3565b005b34801561039a57600080fd5b506103b560048036038101906103b09190614030565b610dbf565b6040516103c29190614015565b60405180910390f35b3480156103d757600080fd5b506103e0610ddf565b6040516103ed919061406c565b60405180910390f35b34801561040257600080fd5b5061040b610de5565b60405161041891906140e6565b60405180910390f35b34801561042d57600080fd5b50610436610e09565b604051610443919061406c565b60405180910390f35b34801561045857600080fd5b50610473600480360381019061046e9190614101565b610e13565b6040516104809190614015565b60405180910390f35b34801561049557600080fd5b5061049e610eec565b6040516104ab919061406c565b60405180910390f35b3480156104c057600080fd5b506104c9610ef2565b6040516104d69190614170565b60405180910390f35b3480156104eb57600080fd5b5061050660048036038101906105019190613fba565b610efb565b6040516105139190614015565b60405180910390f35b34801561052857600080fd5b50610531610fae565b005b34801561053f57600080fd5b50610548611019565b604051610555919061419a565b60405180910390f35b34801561056a57600080fd5b5061057361103d565b6040516105809190614015565b60405180910390f35b34801561059557600080fd5b506105b060048036038101906105ab9190614030565b611050565b6040516105bd9190614015565b60405180910390f35b3480156105d257600080fd5b506105ed60048036038101906105e89190614030565b611070565b6040516105fa9190614015565b60405180910390f35b34801561060f57600080fd5b5061062a60048036038101906106259190614030565b611090565b604051610637919061406c565b60405180910390f35b34801561064c57600080fd5b506106556110a8565b604051610662919061406c565b60405180910390f35b34801561067757600080fd5b506106806110ae565b60405161068d919061406c565b60405180910390f35b3480156106a257600080fd5b506106bd60048036038101906106b891906142fd565b6110b4565b005b3480156106cb57600080fd5b506106e660048036038101906106e19190614030565b6112c2565b005b3480156106f457600080fd5b506106fd61139d565b60405161070a919061406c565b60405180910390f35b34801561071f57600080fd5b506107286113a3565b604051610735919061406c565b60405180910390f35b34801561074a57600080fd5b5061076560048036038101906107609190614030565b6113a9565b604051610772919061406c565b60405180910390f35b34801561078757600080fd5b506107906113f1565b60405161079d919061419a565b60405180910390f35b3480156107b257600080fd5b506107bb611417565b005b3480156107c957600080fd5b506107d261156f565b6040516107df9190614015565b60405180910390f35b3480156107f457600080fd5b5061080f600480360381019061080a91906142fd565b61165a565b005b34801561081d57600080fd5b50610826611786565b005b34801561083457600080fd5b5061083d61184d565b60405161084a919061419a565b60405180910390f35b34801561085f57600080fd5b50610868611877565b6040516108759190613ef0565b60405180910390f35b34801561088a57600080fd5b506108a560048036038101906108a09190614346565b611909565b005b3480156108b357600080fd5b506108bc611a71565b6040516108c9919061406c565b60405180910390f35b3480156108de57600080fd5b506108f960048036038101906108f49190613fba565b611a77565b6040516109069190614015565b60405180910390f35b34801561091b57600080fd5b5061093660048036038101906109319190613fba565b611b44565b6040516109439190614015565b60405180910390f35b34801561095857600080fd5b50610961611b62565b60405161096e919061406c565b60405180910390f35b34801561098357600080fd5b5061099e60048036038101906109999190614030565b611b68565b6040516109ab9190614015565b60405180910390f35b3480156109c057600080fd5b506109c9611b88565b005b3480156109d757600080fd5b506109e0611c6d565b6040516109ed9190614015565b60405180910390f35b348015610a0257600080fd5b50610a1d6004803603810190610a18919061439f565b611c80565b005b348015610a2b57600080fd5b50610a466004803603810190610a419190614346565b611d72565b005b348015610a5457600080fd5b50610a5d611eda565b604051610a6a919061406c565b60405180910390f35b348015610a7f57600080fd5b50610a88611ee0565b604051610a95919061406c565b60405180910390f35b348015610aaa57600080fd5b50610ac56004803603810190610ac09190614346565b611ee6565b604051610ad29190614015565b60405180910390f35b348015610ae757600080fd5b50610af0612056565b604051610afd919061406c565b60405180910390f35b348015610b1257600080fd5b50610b2d6004803603810190610b2891906143df565b61205c565b604051610b3a919061406c565b60405180910390f35b348015610b4f57600080fd5b50610b586120e3565b604051610b65919061406c565b60405180910390f35b348015610b7a57600080fd5b50610b836120e9565b604051610b90919061406c565b60405180910390f35b348015610ba557600080fd5b50610bae6120ef565b604051610bbb919061419a565b60405180910390f35b348015610bd057600080fd5b50610beb6004803603810190610be69190614030565b612115565b005b348015610bf957600080fd5b50610c026122dc565b604051610c0f919061406c565b60405180910390f35b348015610c2457600080fd5b50610c2d6122e2565b604051610c3a9190614015565b60405180910390f35b606060038054610c529061444e565b80601f0160208091040260200160405190810160405280929190818152602001828054610c7e9061444e565b8015610ccb5780601f10610ca057610100808354040283529160200191610ccb565b820191906000526020600020905b815481529060010190602001808311610cae57829003601f168201915b5050505050905090565b6000610ce9610ce2612353565b848461235b565b6001905092915050565b601354610cff336113a9565b11610d3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d36906144f2565b60405180910390fd5b610d47612526565b60135460116000828254610d5b9190614541565b92505081905550610d90600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601354611b44565b507f48030c3d7724d04f46d0963611f240c4c95968fd8115e55e5336670d7c3092b260405160405180910390a1565b60066020528060005260406000206000915054906101000a900460ff1681565b60155481565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b6000610e2084848461259e565b610ee184610e2c612353565b610edc8560405180606001604052806028815260200161538b60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e92612353565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134a29092919063ffffffff16565b61235b565b600190509392505050565b60115481565b60006009905090565b6000610fa4610f08612353565b84610f9f8560016000610f19612353565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122f590919063ffffffff16565b61235b565b6001905092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611016573d6000803e3d6000fd5b50565b7f0000000000000000000000007ca796702cb01eb46ff284627a971764e333ec2581565b600e60009054906101000a900460ff1681565b60256020528060005260406000206000915054906101000a900460ff1681565b60246020528060005260406000206000915054906101000a900460ff1681565b60146020528060005260406000206000915090505481565b601b5481565b601c5481565b6110bc612353565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461114b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611142906145e3565b60405180910390fd5b60005b81518110156112be577f0000000000000000000000007ca796702cb01eb46ff284627a971764e333ec2573ffffffffffffffffffffffffffffffffffffffff168282815181106111a1576111a0614603565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff161415801561123357507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1682828151811061121257611211614603565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b156112ab5760016006600084848151811061125157611250614603565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b80806112b690614632565b91505061114e565b5050565b6112ca612353565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611359576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611350906145e3565b60405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601d5481565b60165481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61141f612353565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a5906145e3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611579612353565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ff906145e3565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001600e60016101000a81548160ff021916908315150217905550620151804261164d9190614541565b6010819055506001905090565b611662612353565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e8906145e3565b60405180910390fd5b60005b81518110156117825760006006600084848151811061171657611715614603565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061177a90614632565b9150506116f4565b5050565b61178e612353565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461181d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611814906145e3565b60405180910390fd5b6001600e60026101000a81548160ff0219169083151502179055506001426118459190614541565b600881905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546118869061444e565b80601f01602080910402602001604051908101604052809291908181526020018280546118b29061444e565b80156118ff5780601f106118d4576101008083540402835291602001916118ff565b820191906000526020600020905b8154815290600101906020018083116118e257829003601f168201915b5050505050905090565b611911612353565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611997906145e3565b60405180910390fd5b620186a060016119ae610e09565b6119b8919061467b565b6119c29190614704565b811015611a04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fb906147a7565b60405180910390fd5b6103e86005611a11610e09565b611a1b919061467b565b611a259190614704565b811115611a67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5e90614839565b60405180910390fd5b8060138190555050565b60125481565b6000611b3a611a84612353565b84611b35856040518060600160405280602581526020016153b36025913960016000611aae612353565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134a29092919063ffffffff16565b61235b565b6001905092915050565b6000611b58611b51612353565b848461259e565b6001905092915050565b60105481565b60266020528060005260406000206000915054906101000a900460ff1681565b601254611b94336113a9565b11611bd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcb906148cb565b60405180910390fd5b611c2042611be29190614541565b600f819055506201518042611bf79190614541565b6010819055506000601181905550611c33600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601254611b44565b507f49be3cf7a23f90e6a056b162bb6b4254e9ecf5e0661042d8851d68a21c972c6833604051611c63919061419a565b60405180910390a1565b600e60029054906101000a900460ff1681565b611c88612353565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0e906145e3565b60405180910390fd5b80602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611d7a612353565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e00906145e3565b60405180910390fd5b620186a06001611e17610e09565b611e21919061467b565b611e2b9190614704565b811015611e6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e64906147a7565b60405180910390fd5b6103e86005611e7a610e09565b611e84919061467b565b611e8e9190614704565b811115611ed0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec790614839565b60405180910390fd5b8060128190555050565b600b5481565b600f5481565b6000611ef0612353565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f76906145e3565b60405180910390fd5b620186a06001611f8d610e09565b611f97919061467b565b611fa19190614704565b821015611fe3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fda9061495d565b60405180910390fd5b6103e86005611ff0610e09565b611ffa919061467b565b6120049190614704565b821115612046576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203d906149ef565b60405180910390fd5b81600c8190555060019050919050565b60175481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60135481565b600c5481565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61211d612353565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a3906145e3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561221c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221390614a81565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d5481565b600e60019054906101000a900460ff1681565b60008082846123049190614541565b905083811015612349576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234090614aed565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156123cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c290614b7f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561243b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243290614c11565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612519919061406c565b60405180910390a3505050565b600660188190555060026019819055506002601a81905550601a546019546018546125519190614541565b61255b9190614541565b6017819055506006601e819055506002601f819055506002602081905550602054601f54601e5461258c9190614541565b6125969190614541565b601d81905550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561260e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260590614ca3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561267e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267590614d35565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561270b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270290614ded565b60405180910390fd5b60008114156127255761272083836000613506565b61349d565b6008544211612787576001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600e60009054906101000a900460ff1615612bf3576127a461184d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561281257506127e261184d565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561284b5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128a55750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128be5750600760009054906101000a900460ff16155b15612bf257600e60029054906101000a900460ff166129b857602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806129785750602460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6129b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ae90614e59565b60405180910390fd5b5b602660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a5b5750602560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612b0257600b54811115612aa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9c90614eeb565b60405180910390fd5b600d54612ab1836113a9565b82612abc9190614541565b1115612afd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af490614f57565b60405180910390fd5b612bf1565b602660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612ba55750602560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612bf057600b54811115612bef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be690614fe9565b60405180910390fd5b5b5b5b5b6000612bfe306113a9565b90506000600c548210159050808015612c245750600760009054906101000a900460ff16155b8015612c7a5750602660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612cd05750602460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d265750602460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612d6a576001600760006101000a81548160ff021916908315150217905550612d4e61379b565b6000600760006101000a81548160ff0219169083151502179055505b600e60019054906101000a900460ff168015612d875750600f5442115b15612fac57602660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612e9d5782601b6000828254612df09190614541565b925050819055506000612e10601c54601b5461396390919063ffffffff16565b90506000811115612e9757600c601f541015612e6957600a811115612e4e57600a601f6000828254612e429190614541565b92505081905550612e68565b80601f6000828254612e609190614541565b925050819055505b5b612e7e601c54826139ad90919063ffffffff16565b601b6000828254612e8f9190615009565b925050819055505b50612fab565b602660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612faa578260156000828254612f019190614541565b925050819055506000612f2160165460155461396390919063ffffffff16565b90506000811115612fa85760006019541115612f7a576002811115612f5f57600260196000828254612f539190615009565b92505081905550612f79565b8060196000828254612f719190615009565b925050819055505b5b612f8f601654826139ad90919063ffffffff16565b60156000828254612fa09190615009565b925050819055505b505b5b5b601a54601954601854612fbf9190614541565b612fc99190614541565b601781905550602054601f54601e54612fe29190614541565b612fec9190614541565b601d819055506000600760009054906101000a900460ff16159050602460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806130a85750602460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156130b257600090505b6000811561332b57602660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561311557506000601d54115b156131e2576131426064613134601d54886139ad90919063ffffffff16565b61396390919063ffffffff16565b9050601d54601f5482613155919061467b565b61315f9190614704565b602260008282546131709190614541565b92505081905550601d5460205482613188919061467b565b6131929190614704565b602360008282546131a39190614541565b92505081905550601d54601e54826131bb919061467b565b6131c59190614704565b602160008282546131d69190614541565b92505081905550613307565b602660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561323d57506000601754115b156133065761326a606461325c601754886139ad90919063ffffffff16565b61396390919063ffffffff16565b90506017546019548261327d919061467b565b6132879190614704565b602260008282546132989190614541565b92505081905550601754601a54826132b0919061467b565b6132ba9190614704565b602360008282546132cb9190614541565b92505081905550601754601854826132e3919061467b565b6132ed9190614704565b602160008282546132fe9190614541565b925050819055505b5b600081111561331c5761331b873083613506565b5b80856133289190615009565b94505b600f544211801561333e57506000600f54115b15613354576000600f81905550613353612526565b5b60105442111561337c57620151804261336d9190614541565b60108190555060006011819055505b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141561348d5784601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546134219190614541565b92505081905550846011600082825461343a9190614541565b925050819055506012546011541061345557613454613a28565b5b7fb90306ad06b2a6ff86ddc9327db583062895ef6540e62dc50add009db5b356eb85604051613484919061406c565b60405180910390a15b613498878787613506565b505050505b505050565b60008383111582906134ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134e19190613ef0565b60405180910390fd5b50600083856134f99190615009565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613576576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161356d90614ca3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156135e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135dd90614d35565b60405180910390fd5b6135f1838383613a87565b61365c81604051806060016040528060268152602001615365602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134a29092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506136ef816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122f590919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161378e919061406c565b60405180910390a3505050565b60006137a6306113a9565b905060006023546021546022546137bd9190614541565b6137c79190614541565b905060008214806137d85750600081145b156137e4575050613961565b6014600c546137f3919061467b565b82111561380c576014600c54613809919061467b565b91505b60006002826022548561381f919061467b565b6138299190614704565b6138339190614704565b9050600061384a8285613a8c90919063ffffffff16565b9050600047905061385a82613ad6565b600061386f8247613a8c90919063ffffffff16565b9050600061389a8661388c602154856139ad90919063ffffffff16565b61396390919063ffffffff16565b905060006138c5876138b7602354866139ad90919063ffffffff16565b61396390919063ffffffff16565b905060008183856138d69190615009565b6138e09190615009565b905060006022819055506000602181905550600060238190555060008711801561390a5750600081115b15613957576139198782613d13565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868260225460405161394e9392919061503d565b60405180910390a15b5050505050505050505b565b60006139a583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613df4565b905092915050565b6000808314156139c05760009050613a22565b600082846139ce919061467b565b90508284826139dd9190614704565b14613a1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a14906150e6565b60405180910390fd5b809150505b92915050565b611c2042613a369190614541565b600f819055506201518042613a4b9190614541565b60108190555060006011819055507f2484f509cbfee355e10cc51e6dbeab45795f30c54b729f2425c1cef570b7de5a60405160405180910390a1565b505050565b6000613ace83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506134a2565b905092915050565b6000600267ffffffffffffffff811115613af357613af26141ba565b5b604051908082528060200260200182016040528015613b215781602001602082028036833780820191505090505b5090503081600081518110613b3957613b38614603565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613bde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c02919061511b565b81600181518110613c1657613c15614603565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613c7b307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461235b565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613cdd959493929190615241565b600060405180830381600087803b158015613cf757600080fd5b505af1158015613d0b573d6000803e3d6000fd5b505050505050565b613d3e307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461235b565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613d8861184d565b426040518863ffffffff1660e01b8152600401613daa9695949392919061529b565b60606040518083038185885af1158015613dc8573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613ded9190615311565b5050505050565b60008083118290613e3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e329190613ef0565b60405180910390fd5b5060008385613e4a9190614704565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613e91578082015181840152602081019050613e76565b83811115613ea0576000848401525b50505050565b6000601f19601f8301169050919050565b6000613ec282613e57565b613ecc8185613e62565b9350613edc818560208601613e73565b613ee581613ea6565b840191505092915050565b60006020820190508181036000830152613f0a8184613eb7565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613f5182613f26565b9050919050565b613f6181613f46565b8114613f6c57600080fd5b50565b600081359050613f7e81613f58565b92915050565b6000819050919050565b613f9781613f84565b8114613fa257600080fd5b50565b600081359050613fb481613f8e565b92915050565b60008060408385031215613fd157613fd0613f1c565b5b6000613fdf85828601613f6f565b9250506020613ff085828601613fa5565b9150509250929050565b60008115159050919050565b61400f81613ffa565b82525050565b600060208201905061402a6000830184614006565b92915050565b60006020828403121561404657614045613f1c565b5b600061405484828501613f6f565b91505092915050565b61406681613f84565b82525050565b6000602082019050614081600083018461405d565b92915050565b6000819050919050565b60006140ac6140a76140a284613f26565b614087565b613f26565b9050919050565b60006140be82614091565b9050919050565b60006140d0826140b3565b9050919050565b6140e0816140c5565b82525050565b60006020820190506140fb60008301846140d7565b92915050565b60008060006060848603121561411a57614119613f1c565b5b600061412886828701613f6f565b935050602061413986828701613f6f565b925050604061414a86828701613fa5565b9150509250925092565b600060ff82169050919050565b61416a81614154565b82525050565b60006020820190506141856000830184614161565b92915050565b61419481613f46565b82525050565b60006020820190506141af600083018461418b565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6141f282613ea6565b810181811067ffffffffffffffff82111715614211576142106141ba565b5b80604052505050565b6000614224613f12565b905061423082826141e9565b919050565b600067ffffffffffffffff8211156142505761424f6141ba565b5b602082029050602081019050919050565b600080fd5b600061427961427484614235565b61421a565b9050808382526020820190506020840283018581111561429c5761429b614261565b5b835b818110156142c557806142b18882613f6f565b84526020840193505060208101905061429e565b5050509392505050565b600082601f8301126142e4576142e36141b5565b5b81356142f4848260208601614266565b91505092915050565b60006020828403121561431357614312613f1c565b5b600082013567ffffffffffffffff81111561433157614330613f21565b5b61433d848285016142cf565b91505092915050565b60006020828403121561435c5761435b613f1c565b5b600061436a84828501613fa5565b91505092915050565b61437c81613ffa565b811461438757600080fd5b50565b60008135905061439981614373565b92915050565b600080604083850312156143b6576143b5613f1c565b5b60006143c485828601613f6f565b92505060206143d58582860161438a565b9150509250929050565b600080604083850312156143f6576143f5613f1c565b5b600061440485828601613f6f565b925050602061441585828601613f6f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061446657607f821691505b6020821081141561447a5761447961441f565b5b50919050565b7f596f7520646f206e6f74206861766520656e6f75676820746f6b656e7320746f60008201527f2072657365742066656573210000000000000000000000000000000000000000602082015250565b60006144dc602c83613e62565b91506144e782614480565b604082019050919050565b6000602082019050818103600083015261450b816144cf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061454c82613f84565b915061455783613f84565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561458c5761458b614512565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006145cd602083613e62565b91506145d882614597565b602082019050919050565b600060208201905081810360008301526145fc816145c0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061463d82613f84565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156146705761466f614512565b5b600182019050919050565b600061468682613f84565b915061469183613f84565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146ca576146c9614512565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061470f82613f84565b915061471a83613f84565b92508261472a576147296146d5565b5b828204905092915050565b7f4275726e20726571756972656d656e742063616e6e6f74206265206c6f77657260008201527f207468616e20302e3030312520746f74616c20737570706c792e000000000000602082015250565b6000614791603a83613e62565b915061479c82614735565b604082019050919050565b600060208201905081810360008301526147c081614784565b9050919050565b7f4275726e20726571756972656d656e742063616e6e6f7420626520686967686560008201527f72207468616e20302e352520746f74616c20737570706c792e00000000000000602082015250565b6000614823603983613e62565b915061482e826147c7565b604082019050919050565b6000602082019050818103600083015261485281614816565b9050919050565b7f596f7520646f206e6f74206861766520656e6f75676820746f6b656e7320746f60008201527f207374617274206120666972652073616c652100000000000000000000000000602082015250565b60006148b5603383613e62565b91506148c082614859565b604082019050919050565b600060208201905081810360008301526148e4816148a8565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614947603583613e62565b9150614952826148eb565b604082019050919050565b600060208201905081810360008301526149768161493a565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006149d9603483613e62565b91506149e48261497d565b604082019050919050565b60006020820190508181036000830152614a08816149cc565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614a6b602683613e62565b9150614a7682614a0f565b604082019050919050565b60006020820190508181036000830152614a9a81614a5e565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614ad7601b83613e62565b9150614ae282614aa1565b602082019050919050565b60006020820190508181036000830152614b0681614aca565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614b69602483613e62565b9150614b7482614b0d565b604082019050919050565b60006020820190508181036000830152614b9881614b5c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614bfb602283613e62565b9150614c0682614b9f565b604082019050919050565b60006020820190508181036000830152614c2a81614bee565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614c8d602583613e62565b9150614c9882614c31565b604082019050919050565b60006020820190508181036000830152614cbc81614c80565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614d1f602383613e62565b9150614d2a82614cc3565b604082019050919050565b60006020820190508181036000830152614d4e81614d12565b9050919050565b7f596f7572206164647265737320686173206265656e206d61726b65642061732060008201527f6120736e697065722c20796f752061726520756e61626c6520746f207472616e60208201527f73666572206f7220737761702e00000000000000000000000000000000000000604082015250565b6000614dd7604d83613e62565b9150614de282614d55565b606082019050919050565b60006020820190508181036000830152614e0681614dca565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614e43601683613e62565b9150614e4e82614e0d565b602082019050919050565b60006020820190508181036000830152614e7281614e36565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b6000614ed5603583613e62565b9150614ee082614e79565b604082019050919050565b60006020820190508181036000830152614f0481614ec8565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614f41601383613e62565b9150614f4c82614f0b565b602082019050919050565b60006020820190508181036000830152614f7081614f34565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000614fd3603683613e62565b9150614fde82614f77565b604082019050919050565b6000602082019050818103600083015261500281614fc6565b9050919050565b600061501482613f84565b915061501f83613f84565b92508282101561503257615031614512565b5b828203905092915050565b6000606082019050615052600083018661405d565b61505f602083018561405d565b61506c604083018461405d565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006150d0602183613e62565b91506150db82615074565b604082019050919050565b600060208201905081810360008301526150ff816150c3565b9050919050565b60008151905061511581613f58565b92915050565b60006020828403121561513157615130613f1c565b5b600061513f84828501615106565b91505092915050565b6000819050919050565b600061516d61516861516384615148565b614087565b613f84565b9050919050565b61517d81615152565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6151b881613f46565b82525050565b60006151ca83836151af565b60208301905092915050565b6000602082019050919050565b60006151ee82615183565b6151f8818561518e565b93506152038361519f565b8060005b8381101561523457815161521b88826151be565b9750615226836151d6565b925050600181019050615207565b5085935050505092915050565b600060a082019050615256600083018861405d565b6152636020830187615174565b818103604083015261527581866151e3565b9050615284606083018561418b565b615291608083018461405d565b9695505050505050565b600060c0820190506152b0600083018961418b565b6152bd602083018861405d565b6152ca6040830187615174565b6152d76060830186615174565b6152e4608083018561418b565b6152f160a083018461405d565b979650505050505050565b60008151905061530b81613f8e565b92915050565b60008060006060848603121561532a57615329613f1c565b5b6000615338868287016152fc565b9350506020615349868287016152fc565b925050604061535a868287016152fc565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220054928ac51b8a70c1d6d792c6f1ece346bf44b6c0588263136321456d174ccd864736f6c634300080b0033
Deployed Bytecode Sourcemap
16147:16227:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4926:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5839:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23180:294;;;;;;;;;;;;;:::i;:::-;;16330:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17049:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16225:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5246:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6016:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16880:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5146:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6379:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32232:102;;;;;;;;;;;;;:::i;:::-;;16283:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16681:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17760:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17702:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16994:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17269:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17307:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21547:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21432:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17340:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17086:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5362:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16474:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10881:148;;;;;;;;;;;;;:::i;:::-;;20609:209;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21854:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20367:186;;;;;;;;;;;;;:::i;:::-;;10667:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5034:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22051:361;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16913:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6605:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5497:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16845:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17981:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23482:376;;;;;;;;;;;;;:::i;:::-;;16767:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21287:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22420:367;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16558:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16809:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20893:382;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17118:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5680:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16956:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16600:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16443:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11037:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16640:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16721:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4926:100;4980:13;5013:5;5006:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4926:100;:::o;5839:169::-;5922:4;5939:39;5948:12;:10;:12::i;:::-;5962:7;5971:6;5939:8;:39::i;:::-;5996:4;5989:11;;5839:169;;;;:::o;23180:294::-;23253:16;;23229:21;23239:10;23229:9;:21::i;:::-;:40;23221:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;23331:12;:10;:12::i;:::-;23371:16;;23356:11;;:31;;;;;;;:::i;:::-;;;;;;;;23400:39;23409:11;;;;;;;;;;;23422:16;;23400:8;:39::i;:::-;;23455:11;;;;;;;;;;23180:294::o;16330:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;17049:30::-;;;;:::o;16225:51::-;;;:::o;5246:108::-;5307:7;5334:12;;5327:19;;5246:108;:::o;6016:355::-;6156:4;6173:36;6183:6;6191:9;6202:6;6173:9;:36::i;:::-;6220:121;6229:6;6237:12;:10;:12::i;:::-;6251:89;6289:6;6251:89;;;;;;;;;;;;;;;;;:11;:19;6263:6;6251:19;;;;;;;;;;;;;;;:33;6271:12;:10;:12::i;:::-;6251:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6220:8;:121::i;:::-;6359:4;6352:11;;6016:355;;;;;:::o;16880:26::-;;;;:::o;5146:92::-;5204:5;5229:1;5222:8;;5146:92;:::o;6379:218::-;6467:4;6484:83;6493:12;:10;:12::i;:::-;6507:7;6516:50;6555:10;6516:11;:25;6528:12;:10;:12::i;:::-;6516:25;;;;;;;;;;;;;;;:34;6542:7;6516:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;6484:8;:83::i;:::-;6585:4;6578:11;;6379:218;;;;:::o;32232:102::-;32284:9;;;;;;;;;;;32276:27;;:50;32304:21;32276:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32232:102::o;16283:38::-;;;:::o;16681:33::-;;;;;;;;;;;;;:::o;17760:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;17702:51::-;;;;;;;;;;;;;;;;;;;;;;:::o;16994:46::-;;;;;;;;;;;;;;;;;:::o;17269:31::-;;;;:::o;17307:26::-;;;;:::o;21547:295::-;10804:12;:10;:12::i;:::-;10794:22;;:6;;;;;;;;;;;:22;;;10786:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21631:6:::1;21626:209;21647:8;:15;21643:1;:19;21626:209;;;21703:13;21688:28;;:8;21697:1;21688:11;;;;;;;;:::i;:::-;;;;;;;;:28;;;;:71;;;;;21743:15;21720:39;;:8;21729:1;21720:11;;;;;;;;:::i;:::-;;;;;;;;:39;;;;21688:71;21684:140;;;21804:4;21780:8;:21;21789:8;21798:1;21789:11;;;;;;;;:::i;:::-;;;;;;;;21780:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;21684:140;21664:3;;;;;:::i;:::-;;;;21626:209;;;;21547:295:::0;:::o;21432:103::-;10804:12;:10;:12::i;:::-;10794:22;;:6;;;;;;;;;;;:22;;;10786:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21518:9:::1;21506;;:21;;;;;;;;;;;;;;;;;;21432:103:::0;:::o;17340:28::-;;;;:::o;17086:25::-;;;;:::o;5362:127::-;5436:7;5463:9;:18;5473:7;5463:18;;;;;;;;;;;;;;;;5456:25;;5362:127;;;:::o;16474:71::-;;;;;;;;;;;;;:::o;10881:148::-;10804:12;:10;:12::i;:::-;10794:22;;:6;;;;;;;;;;;:22;;;10786:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10988:1:::1;10951:40;;10972:6;;;;;;;;;;;10951:40;;;;;;;;;;;;11019:1;11002:6;;:19;;;;;;;;;;;;;;;;;;10881:148::o:0;20609:209::-;20661:4;10804:12;:10;:12::i;:::-;10794:22;;:6;;;;;;;;;;;:22;;;10786:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20695:5:::1;20678:14;;:22;;;;;;;;;;;;;;;;;;20733:4;20711:19;;:26;;;;;;;;;;;;;;;;;;20782:6;20764:15;:24;;;;:::i;:::-;20748:13;:40;;;;20806:4;20799:11;;20609:209:::0;:::o;21854:185::-;10804:12;:10;:12::i;:::-;10794:22;;:6;;;;;;;;;;;:22;;;10786:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21938:6:::1;21933:99;21954:8;:15;21950:1;:19;21933:99;;;22015:5;21991:8;:21;22000:8;22009:1;22000:11;;;;;;;;:::i;:::-;;;;;;;;21991:21;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;21971:3;;;;;:::i;:::-;;;;21933:99;;;;21854:185:::0;:::o;20367:186::-;10804:12;:10;:12::i;:::-;10794:22;;:6;;;;;;;;;;;:22;;;10786:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20438:4:::1;20422:13;;:20;;;;;;;;;;;;;;;;;;20485:1;20467:15;:19;;;;:::i;:::-;20453:11;:33;;;;20367:186::o:0;10667:79::-;10705:7;10732:6;;;;;;;;;;;10725:13;;10667:79;:::o;5034:104::-;5090:13;5123:7;5116:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5034:104;:::o;22051:361::-;10804:12;:10;:12::i;:::-;10794:22;;:6;;;;;;;;;;;:22;;;10786:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22176:6:::1;22172:1;22156:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;22141:11;:41;;22133:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;22298:4;22294:1;22278:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;22263:11;:39;;22255:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;22393:11;22374:16;:30;;;;22051:361:::0;:::o;16913:34::-;;;;:::o;6605:269::-;6698:4;6715:129;6724:12;:10;:12::i;:::-;6738:7;6747:96;6786:15;6747:96;;;;;;;;;;;;;;;;;:11;:25;6759:12;:10;:12::i;:::-;6747:25;;;;;;;;;;;;;;;:34;6773:7;6747:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;6715:8;:129::i;:::-;6862:4;6855:11;;6605:269;;;;:::o;5497:175::-;5583:4;5600:42;5610:12;:10;:12::i;:::-;5624:9;5635:6;5600:9;:42::i;:::-;5660:4;5653:11;;5497:175;;;;:::o;16845:28::-;;;;:::o;17981:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;23482:376::-;23552:19;;23528:21;23538:10;23528:9;:21::i;:::-;:43;23520:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;23673:7;23655:15;:25;;;;:::i;:::-;23638:14;:42;;;;23725:6;23707:15;:24;;;;:::i;:::-;23691:13;:40;;;;23756:1;23742:11;:15;;;;23770:42;23779:11;;;;;;;;;;;23792:19;;23770:8;:42::i;:::-;;23828:22;23839:10;23828:22;;;;;;:::i;:::-;;;;;;;;23482:376::o;16767:33::-;;;;;;;;;;;;;:::o;21287:133::-;10804:12;:10;:12::i;:::-;10794:22;;:6;;;;;;;;;;;:22;;;10786:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21404:8:::1;21374:18;:27;21393:7;21374:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;21287:133:::0;;:::o;22420:367::-;10804:12;:10;:12::i;:::-;10794:22;;:6;;;;;;;;;;;:22;;;10786:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22548:6:::1;22544:1;22528:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;22513:11;:41;;22505:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;22670:4;22666:1;22650:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;22635:11;:39;;22627:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;22768:11;22746:19;:33;;;;22420:367:::0;:::o;16558:35::-;;;;:::o;16809:29::-;;;;:::o;20893:382::-;20974:4;10804:12;:10;:12::i;:::-;10794:22;;:6;;;;;;;;;;;:22;;;10786:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21031:6:::1;21027:1;21011:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;20998:9;:39;;20990:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;21146:4;21142:1;21126:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;21113:9;:37;;21105:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;21238:9;21217:18;:30;;;;21264:4;21257:11;;20893:382:::0;;;:::o;17118:27::-;;;;:::o;5680:151::-;5769:7;5796:11;:18;5808:5;5796:18;;;;;;;;;;;;;;;:27;5815:7;5796:27;;;;;;;;;;;;;;;;5789:34;;5680:151;;;;:::o;16956:31::-;;;;:::o;16600:33::-;;;;:::o;16443:24::-;;;;;;;;;;;;;:::o;11037:244::-;10804:12;:10;:12::i;:::-;10794:22;;:6;;;;;;;;;;;:22;;;10786:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11146:1:::1;11126:22;;:8;:22;;;;11118:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;11236:8;11207:38;;11228:6;;;;;;;;;;;11207:38;;;;;;;;;;;;11265:8;11256:6;;:17;;;;;;;;;;;;;;;;;;11037:244:::0;:::o;16640:24::-;;;;:::o;16721:39::-;;;;;;;;;;;;;:::o;8819:181::-;8877:7;8897:9;8913:1;8909;:5;;;;:::i;:::-;8897:17;;8938:1;8933;:6;;8925:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;8991:1;8984:8;;;8819:181;;;;:::o;95:98::-;148:7;175:10;168:17;;95:98;:::o;8275:380::-;8428:1;8411:19;;:5;:19;;;;8403:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8509:1;8490:21;;:7;:21;;;;8482:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8593:6;8563:11;:18;8575:5;8563:18;;;;;;;;;;;;;;;:27;8582:7;8563:27;;;;;;;;;;;;;;;:36;;;;8631:7;8615:32;;8624:5;8615:32;;;8640:6;8615:32;;;;;;:::i;:::-;;;;;;;;8275:380;;;:::o;22795:377::-;22855:1;22836:16;:20;;;;22886:1;22867:16;:20;;;;22911:1;22898:10;:14;;;;22976:10;;22957:16;;22938;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;22923:12;:63;;;;23027:1;23007:17;:21;;;;23059:1;23039:17;:21;;;;23085:1;23071:11;:15;;;;23153:11;;23133:17;;23113;;:37;;;;:::i;:::-;:51;;;;:::i;:::-;23097:13;:67;;;;22795:377::o;24082:5586::-;24230:1;24214:18;;:4;:18;;;;24206:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24307:1;24293:16;;:2;:16;;;;24285:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;24369:8;:14;24378:4;24369:14;;;;;;;;;;;;;;;;;;;;;;;;;24368:15;24360:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;24501:1;24491:6;:11;24487:93;;;24519:28;24535:4;24541:2;24545:1;24519:15;:28::i;:::-;24562:7;;24487:93;24623:11;;24604:15;:30;24600:55;;24651:4;24636:8;:12;24645:2;24636:12;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;24600:55;24680:14;;;;;;;;;;;24676:1046;;;24741:7;:5;:7::i;:::-;24733:15;;:4;:15;;;;:49;;;;;24775:7;:5;:7::i;:::-;24769:13;;:2;:13;;;;24733:49;:86;;;;;24817:1;24803:16;;:2;:16;;;;24733:86;:133;;;;;24854:11;;;;;;;;;;;24840:26;;:2;:26;;;;24733:133;:164;;;;;24888:9;;;;;;;;;;;24887:10;24733:164;24711:1000;;;24937:13;;;;;;;;;;;24932:105;;24960:18;:24;24979:4;24960:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;24988:18;:22;25007:2;24988:22;;;;;;;;;;;;;;;;;;;;;;;;;24960:50;24952:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;24932:105;25108:25;:31;25134:4;25108:31;;;;;;;;;;;;;;;;;;;;;;;;;:70;;;;;25144:30;:34;25175:2;25144:34;;;;;;;;;;;;;;;;;;;;;;;;;25143:35;25108:70;25104:592;;;25221:20;;25211:6;:30;;25203:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;25356:9;;25339:13;25349:2;25339:9;:13::i;:::-;25330:6;:22;;;;:::i;:::-;:35;;25322:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25104:592;;;25484:25;:29;25510:2;25484:29;;;;;;;;;;;;;;;;;;;;;;;;;:70;;;;;25518:30;:36;25549:4;25518:36;;;;;;;;;;;;;;;;;;;;;;;;;25517:37;25484:70;25480:216;;;25597:20;;25587:6;:30;;25579:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;25480:216;25104:592;24711:1000;24676:1046;25736:28;25767:24;25785:4;25767:9;:24::i;:::-;25736:55;;25802:12;25841:18;;25817:20;:42;;25802:57;;25888:7;:34;;;;;25913:9;;;;;;;;;;;25912:10;25888:34;:83;;;;;25940:25;:31;25966:4;25940:31;;;;;;;;;;;;;;;;;;;;;;;;;25939:32;25888:83;:125;;;;;25989:18;:24;26008:4;25989:24;;;;;;;;;;;;;;;;;;;;;;;;;25988:25;25888:125;:165;;;;;26031:18;:22;26050:2;26031:22;;;;;;;;;;;;;;;;;;;;;;;;;26030:23;25888:165;25870:295;;;26092:4;26080:9;;:16;;;;;;;;;;;;;;;;;;26111:10;:8;:10::i;:::-;26148:5;26136:9;;:17;;;;;;;;;;;;;;;;;;25870:295;26218:19;;;;;;;;;;;:55;;;;;26259:14;;26241:15;:32;26218:55;26214:1337;;;26318:25;:29;26344:2;26318:29;;;;;;;;;;;;;;;;;;;;;;;;;26314:1226;;;26388:6;26368:16;;:26;;;;;;;:::i;:::-;;;;;;;;26431:14;26448:33;26469:11;;26448:16;;:20;;:33;;;;:::i;:::-;26431:50;;26513:1;26504:6;:10;26500:395;;;26563:2;26543:17;;:22;26539:269;;;26607:2;26598:6;:11;26594:191;;;26663:2;26642:17;;:23;;;;;;;:::i;:::-;;;;;;;;26594:191;;;26751:6;26730:17;;:27;;;;;;;:::i;:::-;;;;;;;;26594:191;26539:269;26852:23;26863:11;;26852:6;:10;;:23;;;;:::i;:::-;26832:16;;:43;;;;;;;:::i;:::-;;;;;;;;26500:395;26349:561;26314:1226;;;26957:25;:31;26983:4;26957:31;;;;;;;;;;;;;;;;;;;;;;;;;26953:587;;;27028:6;27009:15;;:25;;;;;;;:::i;:::-;;;;;;;;27071:14;27088:31;27108:10;;27088:15;;:19;;:31;;;;:::i;:::-;27071:48;;27151:1;27142:6;:10;27138:387;;;27200:1;27181:16;;:20;27177:263;;;27243:1;27234:6;:10;27230:187;;;27297:1;27277:16;;:21;;;;;;;:::i;:::-;;;;;;;;27230:187;;;27383:6;27363:16;;:26;;;;;;;:::i;:::-;;;;;;;;27230:187;27177:263;27483:22;27494:10;;27483:6;:10;;:22;;;;:::i;:::-;27464:15;;:41;;;;;;;:::i;:::-;;;;;;;;27138:387;26990:550;26953:587;26314:1226;26214:1337;27643:10;;27624:16;;27605;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;27590:12;:63;;;;27720:11;;27700:17;;27680;;:37;;;;:::i;:::-;:51;;;;:::i;:::-;27664:13;:67;;;;27744:12;27760:9;;;;;;;;;;;27759:10;27744:25;;27871:18;:24;27890:4;27871:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;27899:18;:22;27918:2;27899:22;;;;;;;;;;;;;;;;;;;;;;;;;27871:50;27867:71;;;27933:5;27923:15;;27867:71;27959:12;28064:7;28060:947;;;28116:25;:29;28142:2;28116:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;28165:1;28149:13;;:17;28116:50;28112:762;;;28194:34;28224:3;28194:25;28205:13;;28194:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;28187:41;;28297:13;;28277:17;;28270:4;:24;;;;:::i;:::-;:40;;;;:::i;:::-;28247:19;;:63;;;;;;;:::i;:::-;;;;;;;;28367:13;;28353:11;;28346:4;:18;;;;:::i;:::-;:34;;;;:::i;:::-;28329:13;;:51;;;;;;;:::i;:::-;;;;;;;;28449:13;;28429:17;;28422:4;:24;;;;:::i;:::-;:40;;;;:::i;:::-;28399:19;;:63;;;;;;;:::i;:::-;;;;;;;;28112:762;;;28524:25;:31;28550:4;28524:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;28574:1;28559:12;;:16;28524:51;28520:354;;;28600:33;28629:3;28600:24;28611:12;;28600:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;28593:40;;28698:12;;28679:16;;28672:4;:23;;;;:::i;:::-;:38;;;;:::i;:::-;28649:19;;:61;;;;;;;:::i;:::-;;;;;;;;28766:12;;28753:10;;28746:4;:17;;;;:::i;:::-;:32;;;;:::i;:::-;28729:13;;:49;;;;;;;:::i;:::-;;;;;;;;28846:12;;28827:16;;28820:4;:23;;;;:::i;:::-;:38;;;;:::i;:::-;28797:19;;:61;;;;;;;:::i;:::-;;;;;;;;28520:354;28112:762;28913:1;28906:4;:8;28902:56;;;28916:42;28932:4;28946;28953;28916:15;:42::i;:::-;28902:56;28991:4;28981:14;;;;;:::i;:::-;;;28060:947;29041:14;;29023:15;:32;:54;;;;;29076:1;29059:14;;:18;29023:54;29019:132;;;29111:1;29094:14;:18;;;;29127:12;:10;:12::i;:::-;29019:132;29227:13;;29209:15;:31;29205:134;;;29291:6;29273:15;:24;;;;:::i;:::-;29257:13;:40;;;;29326:1;29312:11;:15;;;;29205:134;29388:11;;;;;;;;;;;29382:17;;:2;:17;;;29378:237;;;29442:6;29416:10;:22;29427:10;29416:22;;;;;;;;;;;;;;;;:32;;;;;;;:::i;:::-;;;;;;;;29478:6;29463:11;;:21;;;;;;;:::i;:::-;;;;;;;;29520:19;;29505:11;;:34;29501:56;;29541:16;:14;:16::i;:::-;29501:56;29591:12;29596:6;29591:12;;;;;;:::i;:::-;;;;;;;;29378:237;29627:33;29643:4;29649:2;29653:6;29627:15;:33::i;:::-;24195:5473;;;;24082:5586;;;;:::o;9152:192::-;9238:7;9271:1;9266;:6;;9274:12;9258:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9298:9;9314:1;9310;:5;;;;:::i;:::-;9298:17;;9335:1;9328:8;;;9152:192;;;;;:::o;6882:573::-;7040:1;7022:20;;:6;:20;;;;7014:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7124:1;7103:23;;:9;:23;;;;7095:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7179:47;7200:6;7208:9;7219:6;7179:20;:47::i;:::-;7259:71;7281:6;7259:71;;;;;;;;;;;;;;;;;:9;:17;7269:6;7259:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;7239:9;:17;7249:6;7239:17;;;;;;;;;;;;;;;:91;;;;7364:32;7389:6;7364:9;:20;7374:9;7364:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7341:9;:20;7351:9;7341:20;;;;;;;;;;;;;;;:55;;;;7429:9;7412:35;;7421:6;7412:35;;;7440:6;7412:35;;;;;;:::i;:::-;;;;;;;;6882:573;;;:::o;30800:1424::-;30839:23;30865:24;30883:4;30865:9;:24::i;:::-;30839:50;;30900:25;30972:13;;30950:19;;30928;;:41;;;;:::i;:::-;:57;;;;:::i;:::-;30900:85;;31029:1;31010:15;:20;:46;;;;31055:1;31034:17;:22;31010:46;31006:59;;;31058:7;;;;31006:59;31118:2;31097:18;;:23;;;;:::i;:::-;31079:15;:41;31075:88;;;31161:2;31140:18;;:23;;;;:::i;:::-;31122:41;;31075:88;31243:23;31329:1;31309:17;31287:19;;31269:15;:37;;;;:::i;:::-;:57;;;;:::i;:::-;:61;;;;:::i;:::-;31243:87;;31341:26;31370:36;31390:15;31370;:19;;:36;;;;:::i;:::-;31341:65;;31427:25;31455:21;31427:49;;31489:37;31507:18;31489:17;:37::i;:::-;31548:18;31569:44;31595:17;31569:21;:25;;:44;;;;:::i;:::-;31548:65;;31624:23;31650:58;31690:17;31650:35;31665:19;;31650:10;:14;;:35;;;;:::i;:::-;:39;;:58;;;;:::i;:::-;31624:84;;31719:17;31739:52;31773:17;31739:29;31754:13;;31739:10;:14;;:29;;;;:::i;:::-;:33;;:52;;;;:::i;:::-;31719:72;;31802:23;31859:9;31841:15;31828:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;31802:66;;31911:1;31889:19;:23;;;;31945:1;31923:19;:23;;;;31973:1;31957:13;:17;;;;32025:1;32007:15;:19;:42;;;;;32048:1;32030:15;:19;32007:42;32003:214;;;32066:47;32080:15;32097;32066:13;:47::i;:::-;32133:72;32148:18;32168:15;32185:19;;32133:72;;;;;;;;:::i;:::-;;;;;;;;32003:214;30828:1396;;;;;;;;;30800:1424;:::o;9610:132::-;9668:7;9695:39;9699:1;9702;9695:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;9688:46;;9610:132;;;;:::o;9352:250::-;9410:7;9439:1;9434;:6;9430:47;;;9464:1;9457:8;;;;9430:47;9489:9;9505:1;9501;:5;;;;:::i;:::-;9489:17;;9534:1;9529;9525;:5;;;;:::i;:::-;:10;9517:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;9593:1;9586:8;;;9352:250;;;;;:::o;23866:208::-;23946:7;23928:15;:25;;;;:::i;:::-;23911:14;:42;;;;23998:6;23980:15;:24;;;;:::i;:::-;23964:13;:40;;;;24029:1;24015:11;:15;;;;24056:10;;;;;;;;;;23866:208::o;8663:125::-;;;;:::o;9008:136::-;9066:7;9093:43;9097:1;9100;9093:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;9086:50;;9008:136;;;;:::o;29676:590::-;29803:21;29841:1;29827:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29803:40;;29872:4;29854;29859:1;29854:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;29898:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29888:4;29893:1;29888:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;29933:62;29950:4;29965:15;29983:11;29933:8;:62::i;:::-;30034:15;:66;;;30115:11;30141:1;30185:4;30212;30232:15;30034:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29732:534;29676:590;:::o;30278:514::-;30427:62;30444:4;30459:15;30477:11;30427:8;:62::i;:::-;30532:15;:31;;;30571:9;30604:4;30624:11;30650:1;30693;30736:7;:5;:7::i;:::-;30758:15;30532:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;30278:514;;:::o;9750:278::-;9836:7;9868:1;9864;:5;9871:12;9856:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;9895:9;9911:1;9907;:5;;;;:::i;:::-;9895:17;;10019:1;10012:8;;;9750:278;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:118::-;3916:24;3934:5;3916:24;:::i;:::-;3911:3;3904:37;3829:118;;:::o;3953:222::-;4046:4;4084:2;4073:9;4069:18;4061:26;;4097:71;4165:1;4154:9;4150:17;4141:6;4097:71;:::i;:::-;3953:222;;;;:::o;4181:60::-;4209:3;4230:5;4223:12;;4181:60;;;:::o;4247:142::-;4297:9;4330:53;4348:34;4357:24;4375:5;4357:24;:::i;:::-;4348:34;:::i;:::-;4330:53;:::i;:::-;4317:66;;4247:142;;;:::o;4395:126::-;4445:9;4478:37;4509:5;4478:37;:::i;:::-;4465:50;;4395:126;;;:::o;4527:153::-;4604:9;4637:37;4668:5;4637:37;:::i;:::-;4624:50;;4527:153;;;:::o;4686:185::-;4800:64;4858:5;4800:64;:::i;:::-;4795:3;4788:77;4686:185;;:::o;4877:276::-;4997:4;5035:2;5024:9;5020:18;5012:26;;5048:98;5143:1;5132:9;5128:17;5119:6;5048:98;:::i;:::-;4877:276;;;;:::o;5159:619::-;5236:6;5244;5252;5301:2;5289:9;5280:7;5276:23;5272:32;5269:119;;;5307:79;;:::i;:::-;5269:119;5427:1;5452:53;5497:7;5488:6;5477:9;5473:22;5452:53;:::i;:::-;5442:63;;5398:117;5554:2;5580:53;5625:7;5616:6;5605:9;5601:22;5580:53;:::i;:::-;5570:63;;5525:118;5682:2;5708:53;5753:7;5744:6;5733:9;5729:22;5708:53;:::i;:::-;5698:63;;5653:118;5159:619;;;;;:::o;5784:86::-;5819:7;5859:4;5852:5;5848:16;5837:27;;5784:86;;;:::o;5876:112::-;5959:22;5975:5;5959:22;:::i;:::-;5954:3;5947:35;5876:112;;:::o;5994:214::-;6083:4;6121:2;6110:9;6106:18;6098:26;;6134:67;6198:1;6187:9;6183:17;6174:6;6134:67;:::i;:::-;5994:214;;;;:::o;6214:118::-;6301:24;6319:5;6301:24;:::i;:::-;6296:3;6289:37;6214:118;;:::o;6338:222::-;6431:4;6469:2;6458:9;6454:18;6446:26;;6482:71;6550:1;6539:9;6535:17;6526:6;6482:71;:::i;:::-;6338:222;;;;:::o;6566:117::-;6675:1;6672;6665:12;6689:180;6737:77;6734:1;6727:88;6834:4;6831:1;6824:15;6858:4;6855:1;6848:15;6875:281;6958:27;6980:4;6958:27;:::i;:::-;6950:6;6946:40;7088:6;7076:10;7073:22;7052:18;7040:10;7037:34;7034:62;7031:88;;;7099:18;;:::i;:::-;7031:88;7139:10;7135:2;7128:22;6918:238;6875:281;;:::o;7162:129::-;7196:6;7223:20;;:::i;:::-;7213:30;;7252:33;7280:4;7272:6;7252:33;:::i;:::-;7162:129;;;:::o;7297:311::-;7374:4;7464:18;7456:6;7453:30;7450:56;;;7486:18;;:::i;:::-;7450:56;7536:4;7528:6;7524:17;7516:25;;7596:4;7590;7586:15;7578:23;;7297:311;;;:::o;7614:117::-;7723:1;7720;7713:12;7754:710;7850:5;7875:81;7891:64;7948:6;7891:64;:::i;:::-;7875:81;:::i;:::-;7866:90;;7976:5;8005:6;7998:5;7991:21;8039:4;8032:5;8028:16;8021:23;;8092:4;8084:6;8080:17;8072:6;8068:30;8121:3;8113:6;8110:15;8107:122;;;8140:79;;:::i;:::-;8107:122;8255:6;8238:220;8272:6;8267:3;8264:15;8238:220;;;8347:3;8376:37;8409:3;8397:10;8376:37;:::i;:::-;8371:3;8364:50;8443:4;8438:3;8434:14;8427:21;;8314:144;8298:4;8293:3;8289:14;8282:21;;8238:220;;;8242:21;7856:608;;7754:710;;;;;:::o;8487:370::-;8558:5;8607:3;8600:4;8592:6;8588:17;8584:27;8574:122;;8615:79;;:::i;:::-;8574:122;8732:6;8719:20;8757:94;8847:3;8839:6;8832:4;8824:6;8820:17;8757:94;:::i;:::-;8748:103;;8564:293;8487:370;;;;:::o;8863:539::-;8947:6;8996:2;8984:9;8975:7;8971:23;8967:32;8964:119;;;9002:79;;:::i;:::-;8964:119;9150:1;9139:9;9135:17;9122:31;9180:18;9172:6;9169:30;9166:117;;;9202:79;;:::i;:::-;9166:117;9307:78;9377:7;9368:6;9357:9;9353:22;9307:78;:::i;:::-;9297:88;;9093:302;8863:539;;;;:::o;9408:329::-;9467:6;9516:2;9504:9;9495:7;9491:23;9487:32;9484:119;;;9522:79;;:::i;:::-;9484:119;9642:1;9667:53;9712:7;9703:6;9692:9;9688:22;9667:53;:::i;:::-;9657:63;;9613:117;9408:329;;;;:::o;9743:116::-;9813:21;9828:5;9813:21;:::i;:::-;9806:5;9803:32;9793:60;;9849:1;9846;9839:12;9793:60;9743:116;:::o;9865:133::-;9908:5;9946:6;9933:20;9924:29;;9962:30;9986:5;9962:30;:::i;:::-;9865:133;;;;:::o;10004:468::-;10069:6;10077;10126:2;10114:9;10105:7;10101:23;10097:32;10094:119;;;10132:79;;:::i;:::-;10094:119;10252:1;10277:53;10322:7;10313:6;10302:9;10298:22;10277:53;:::i;:::-;10267:63;;10223:117;10379:2;10405:50;10447:7;10438:6;10427:9;10423:22;10405:50;:::i;:::-;10395:60;;10350:115;10004:468;;;;;:::o;10478:474::-;10546:6;10554;10603:2;10591:9;10582:7;10578:23;10574:32;10571:119;;;10609:79;;:::i;:::-;10571:119;10729:1;10754:53;10799:7;10790:6;10779:9;10775:22;10754:53;:::i;:::-;10744:63;;10700:117;10856:2;10882:53;10927:7;10918:6;10907:9;10903:22;10882:53;:::i;:::-;10872:63;;10827:118;10478:474;;;;;:::o;10958:180::-;11006:77;11003:1;10996:88;11103:4;11100:1;11093:15;11127:4;11124:1;11117:15;11144:320;11188:6;11225:1;11219:4;11215:12;11205:22;;11272:1;11266:4;11262:12;11293:18;11283:81;;11349:4;11341:6;11337:17;11327:27;;11283:81;11411:2;11403:6;11400:14;11380:18;11377:38;11374:84;;;11430:18;;:::i;:::-;11374:84;11195:269;11144:320;;;:::o;11470:231::-;11610:34;11606:1;11598:6;11594:14;11587:58;11679:14;11674:2;11666:6;11662:15;11655:39;11470:231;:::o;11707:366::-;11849:3;11870:67;11934:2;11929:3;11870:67;:::i;:::-;11863:74;;11946:93;12035:3;11946:93;:::i;:::-;12064:2;12059:3;12055:12;12048:19;;11707:366;;;:::o;12079:419::-;12245:4;12283:2;12272:9;12268:18;12260:26;;12332:9;12326:4;12322:20;12318:1;12307:9;12303:17;12296:47;12360:131;12486:4;12360:131;:::i;:::-;12352:139;;12079:419;;;:::o;12504:180::-;12552:77;12549:1;12542:88;12649:4;12646:1;12639:15;12673:4;12670:1;12663:15;12690:305;12730:3;12749:20;12767:1;12749:20;:::i;:::-;12744:25;;12783:20;12801:1;12783:20;:::i;:::-;12778:25;;12937:1;12869:66;12865:74;12862:1;12859:81;12856:107;;;12943:18;;:::i;:::-;12856:107;12987:1;12984;12980:9;12973:16;;12690:305;;;;:::o;13001:182::-;13141:34;13137:1;13129:6;13125:14;13118:58;13001:182;:::o;13189:366::-;13331:3;13352:67;13416:2;13411:3;13352:67;:::i;:::-;13345:74;;13428:93;13517:3;13428:93;:::i;:::-;13546:2;13541:3;13537:12;13530:19;;13189:366;;;:::o;13561:419::-;13727:4;13765:2;13754:9;13750:18;13742:26;;13814:9;13808:4;13804:20;13800:1;13789:9;13785:17;13778:47;13842:131;13968:4;13842:131;:::i;:::-;13834:139;;13561:419;;;:::o;13986:180::-;14034:77;14031:1;14024:88;14131:4;14128:1;14121:15;14155:4;14152:1;14145:15;14172:233;14211:3;14234:24;14252:5;14234:24;:::i;:::-;14225:33;;14280:66;14273:5;14270:77;14267:103;;;14350:18;;:::i;:::-;14267:103;14397:1;14390:5;14386:13;14379:20;;14172:233;;;:::o;14411:348::-;14451:7;14474:20;14492:1;14474:20;:::i;:::-;14469:25;;14508:20;14526:1;14508:20;:::i;:::-;14503:25;;14696:1;14628:66;14624:74;14621:1;14618:81;14613:1;14606:9;14599:17;14595:105;14592:131;;;14703:18;;:::i;:::-;14592:131;14751:1;14748;14744:9;14733:20;;14411:348;;;;:::o;14765:180::-;14813:77;14810:1;14803:88;14910:4;14907:1;14900:15;14934:4;14931:1;14924:15;14951:185;14991:1;15008:20;15026:1;15008:20;:::i;:::-;15003:25;;15042:20;15060:1;15042:20;:::i;:::-;15037:25;;15081:1;15071:35;;15086:18;;:::i;:::-;15071:35;15128:1;15125;15121:9;15116:14;;14951:185;;;;:::o;15142:245::-;15282:34;15278:1;15270:6;15266:14;15259:58;15351:28;15346:2;15338:6;15334:15;15327:53;15142:245;:::o;15393:366::-;15535:3;15556:67;15620:2;15615:3;15556:67;:::i;:::-;15549:74;;15632:93;15721:3;15632:93;:::i;:::-;15750:2;15745:3;15741:12;15734:19;;15393:366;;;:::o;15765:419::-;15931:4;15969:2;15958:9;15954:18;15946:26;;16018:9;16012:4;16008:20;16004:1;15993:9;15989:17;15982:47;16046:131;16172:4;16046:131;:::i;:::-;16038:139;;15765:419;;;:::o;16190:244::-;16330:34;16326:1;16318:6;16314:14;16307:58;16399:27;16394:2;16386:6;16382:15;16375:52;16190:244;:::o;16440:366::-;16582:3;16603:67;16667:2;16662:3;16603:67;:::i;:::-;16596:74;;16679:93;16768:3;16679:93;:::i;:::-;16797:2;16792:3;16788:12;16781:19;;16440:366;;;:::o;16812:419::-;16978:4;17016:2;17005:9;17001:18;16993:26;;17065:9;17059:4;17055:20;17051:1;17040:9;17036:17;17029:47;17093:131;17219:4;17093:131;:::i;:::-;17085:139;;16812:419;;;:::o;17237:238::-;17377:34;17373:1;17365:6;17361:14;17354:58;17446:21;17441:2;17433:6;17429:15;17422:46;17237:238;:::o;17481:366::-;17623:3;17644:67;17708:2;17703:3;17644:67;:::i;:::-;17637:74;;17720:93;17809:3;17720:93;:::i;:::-;17838:2;17833:3;17829:12;17822:19;;17481:366;;;:::o;17853:419::-;18019:4;18057:2;18046:9;18042:18;18034:26;;18106:9;18100:4;18096:20;18092:1;18081:9;18077:17;18070:47;18134:131;18260:4;18134:131;:::i;:::-;18126:139;;17853:419;;;:::o;18278:240::-;18418:34;18414:1;18406:6;18402:14;18395:58;18487:23;18482:2;18474:6;18470:15;18463:48;18278:240;:::o;18524:366::-;18666:3;18687:67;18751:2;18746:3;18687:67;:::i;:::-;18680:74;;18763:93;18852:3;18763:93;:::i;:::-;18881:2;18876:3;18872:12;18865:19;;18524:366;;;:::o;18896:419::-;19062:4;19100:2;19089:9;19085:18;19077:26;;19149:9;19143:4;19139:20;19135:1;19124:9;19120:17;19113:47;19177:131;19303:4;19177:131;:::i;:::-;19169:139;;18896:419;;;:::o;19321:239::-;19461:34;19457:1;19449:6;19445:14;19438:58;19530:22;19525:2;19517:6;19513:15;19506:47;19321:239;:::o;19566:366::-;19708:3;19729:67;19793:2;19788:3;19729:67;:::i;:::-;19722:74;;19805:93;19894:3;19805:93;:::i;:::-;19923:2;19918:3;19914:12;19907:19;;19566:366;;;:::o;19938:419::-;20104:4;20142:2;20131:9;20127:18;20119:26;;20191:9;20185:4;20181:20;20177:1;20166:9;20162:17;20155:47;20219:131;20345:4;20219:131;:::i;:::-;20211:139;;19938:419;;;:::o;20363:225::-;20503:34;20499:1;20491:6;20487:14;20480:58;20572:8;20567:2;20559:6;20555:15;20548:33;20363:225;:::o;20594:366::-;20736:3;20757:67;20821:2;20816:3;20757:67;:::i;:::-;20750:74;;20833:93;20922:3;20833:93;:::i;:::-;20951:2;20946:3;20942:12;20935:19;;20594:366;;;:::o;20966:419::-;21132:4;21170:2;21159:9;21155:18;21147:26;;21219:9;21213:4;21209:20;21205:1;21194:9;21190:17;21183:47;21247:131;21373:4;21247:131;:::i;:::-;21239:139;;20966:419;;;:::o;21391:177::-;21531:29;21527:1;21519:6;21515:14;21508:53;21391:177;:::o;21574:366::-;21716:3;21737:67;21801:2;21796:3;21737:67;:::i;:::-;21730:74;;21813:93;21902:3;21813:93;:::i;:::-;21931:2;21926:3;21922:12;21915:19;;21574:366;;;:::o;21946:419::-;22112:4;22150:2;22139:9;22135:18;22127:26;;22199:9;22193:4;22189:20;22185:1;22174:9;22170:17;22163:47;22227:131;22353:4;22227:131;:::i;:::-;22219:139;;21946:419;;;:::o;22371:223::-;22511:34;22507:1;22499:6;22495:14;22488:58;22580:6;22575:2;22567:6;22563:15;22556:31;22371:223;:::o;22600:366::-;22742:3;22763:67;22827:2;22822:3;22763:67;:::i;:::-;22756:74;;22839:93;22928:3;22839:93;:::i;:::-;22957:2;22952:3;22948:12;22941:19;;22600:366;;;:::o;22972:419::-;23138:4;23176:2;23165:9;23161:18;23153:26;;23225:9;23219:4;23215:20;23211:1;23200:9;23196:17;23189:47;23253:131;23379:4;23253:131;:::i;:::-;23245:139;;22972:419;;;:::o;23397:221::-;23537:34;23533:1;23525:6;23521:14;23514:58;23606:4;23601:2;23593:6;23589:15;23582:29;23397:221;:::o;23624:366::-;23766:3;23787:67;23851:2;23846:3;23787:67;:::i;:::-;23780:74;;23863:93;23952:3;23863:93;:::i;:::-;23981:2;23976:3;23972:12;23965:19;;23624:366;;;:::o;23996:419::-;24162:4;24200:2;24189:9;24185:18;24177:26;;24249:9;24243:4;24239:20;24235:1;24224:9;24220:17;24213:47;24277:131;24403:4;24277:131;:::i;:::-;24269:139;;23996:419;;;:::o;24421:224::-;24561:34;24557:1;24549:6;24545:14;24538:58;24630:7;24625:2;24617:6;24613:15;24606:32;24421:224;:::o;24651:366::-;24793:3;24814:67;24878:2;24873:3;24814:67;:::i;:::-;24807:74;;24890:93;24979:3;24890:93;:::i;:::-;25008:2;25003:3;24999:12;24992:19;;24651:366;;;:::o;25023:419::-;25189:4;25227:2;25216:9;25212:18;25204:26;;25276:9;25270:4;25266:20;25262:1;25251:9;25247:17;25240:47;25304:131;25430:4;25304:131;:::i;:::-;25296:139;;25023:419;;;:::o;25448:222::-;25588:34;25584:1;25576:6;25572:14;25565:58;25657:5;25652:2;25644:6;25640:15;25633:30;25448:222;:::o;25676:366::-;25818:3;25839:67;25903:2;25898:3;25839:67;:::i;:::-;25832:74;;25915:93;26004:3;25915:93;:::i;:::-;26033:2;26028:3;26024:12;26017:19;;25676:366;;;:::o;26048:419::-;26214:4;26252:2;26241:9;26237:18;26229:26;;26301:9;26295:4;26291:20;26287:1;26276:9;26272:17;26265:47;26329:131;26455:4;26329:131;:::i;:::-;26321:139;;26048:419;;;:::o;26473:301::-;26613:34;26609:1;26601:6;26597:14;26590:58;26682:34;26677:2;26669:6;26665:15;26658:59;26751:15;26746:2;26738:6;26734:15;26727:40;26473:301;:::o;26780:366::-;26922:3;26943:67;27007:2;27002:3;26943:67;:::i;:::-;26936:74;;27019:93;27108:3;27019:93;:::i;:::-;27137:2;27132:3;27128:12;27121:19;;26780:366;;;:::o;27152:419::-;27318:4;27356:2;27345:9;27341:18;27333:26;;27405:9;27399:4;27395:20;27391:1;27380:9;27376:17;27369:47;27433:131;27559:4;27433:131;:::i;:::-;27425:139;;27152:419;;;:::o;27577:172::-;27717:24;27713:1;27705:6;27701:14;27694:48;27577:172;:::o;27755:366::-;27897:3;27918:67;27982:2;27977:3;27918:67;:::i;:::-;27911:74;;27994:93;28083:3;27994:93;:::i;:::-;28112:2;28107:3;28103:12;28096:19;;27755:366;;;:::o;28127:419::-;28293:4;28331:2;28320:9;28316:18;28308:26;;28380:9;28374:4;28370:20;28366:1;28355:9;28351:17;28344:47;28408:131;28534:4;28408:131;:::i;:::-;28400:139;;28127:419;;;:::o;28552:240::-;28692:34;28688:1;28680:6;28676:14;28669:58;28761:23;28756:2;28748:6;28744:15;28737:48;28552:240;:::o;28798:366::-;28940:3;28961:67;29025:2;29020:3;28961:67;:::i;:::-;28954:74;;29037:93;29126:3;29037:93;:::i;:::-;29155:2;29150:3;29146:12;29139:19;;28798:366;;;:::o;29170:419::-;29336:4;29374:2;29363:9;29359:18;29351:26;;29423:9;29417:4;29413:20;29409:1;29398:9;29394:17;29387:47;29451:131;29577:4;29451:131;:::i;:::-;29443:139;;29170:419;;;:::o;29595:169::-;29735:21;29731:1;29723:6;29719:14;29712:45;29595:169;:::o;29770:366::-;29912:3;29933:67;29997:2;29992:3;29933:67;:::i;:::-;29926:74;;30009:93;30098:3;30009:93;:::i;:::-;30127:2;30122:3;30118:12;30111:19;;29770:366;;;:::o;30142:419::-;30308:4;30346:2;30335:9;30331:18;30323:26;;30395:9;30389:4;30385:20;30381:1;30370:9;30366:17;30359:47;30423:131;30549:4;30423:131;:::i;:::-;30415:139;;30142:419;;;:::o;30567:241::-;30707:34;30703:1;30695:6;30691:14;30684:58;30776:24;30771:2;30763:6;30759:15;30752:49;30567:241;:::o;30814:366::-;30956:3;30977:67;31041:2;31036:3;30977:67;:::i;:::-;30970:74;;31053:93;31142:3;31053:93;:::i;:::-;31171:2;31166:3;31162:12;31155:19;;30814:366;;;:::o;31186:419::-;31352:4;31390:2;31379:9;31375:18;31367:26;;31439:9;31433:4;31429:20;31425:1;31414:9;31410:17;31403:47;31467:131;31593:4;31467:131;:::i;:::-;31459:139;;31186:419;;;:::o;31611:191::-;31651:4;31671:20;31689:1;31671:20;:::i;:::-;31666:25;;31705:20;31723:1;31705:20;:::i;:::-;31700:25;;31744:1;31741;31738:8;31735:34;;;31749:18;;:::i;:::-;31735:34;31794:1;31791;31787:9;31779:17;;31611:191;;;;:::o;31808:442::-;31957:4;31995:2;31984:9;31980:18;31972:26;;32008:71;32076:1;32065:9;32061:17;32052:6;32008:71;:::i;:::-;32089:72;32157:2;32146:9;32142:18;32133:6;32089:72;:::i;:::-;32171;32239:2;32228:9;32224:18;32215:6;32171:72;:::i;:::-;31808:442;;;;;;:::o;32256:220::-;32396:34;32392:1;32384:6;32380:14;32373:58;32465:3;32460:2;32452:6;32448:15;32441:28;32256:220;:::o;32482:366::-;32624:3;32645:67;32709:2;32704:3;32645:67;:::i;:::-;32638:74;;32721:93;32810:3;32721:93;:::i;:::-;32839:2;32834:3;32830:12;32823:19;;32482:366;;;:::o;32854:419::-;33020:4;33058:2;33047:9;33043:18;33035:26;;33107:9;33101:4;33097:20;33093:1;33082:9;33078:17;33071:47;33135:131;33261:4;33135:131;:::i;:::-;33127:139;;32854:419;;;:::o;33279:143::-;33336:5;33367:6;33361:13;33352:22;;33383:33;33410:5;33383:33;:::i;:::-;33279:143;;;;:::o;33428:351::-;33498:6;33547:2;33535:9;33526:7;33522:23;33518:32;33515:119;;;33553:79;;:::i;:::-;33515:119;33673:1;33698:64;33754:7;33745:6;33734:9;33730:22;33698:64;:::i;:::-;33688:74;;33644:128;33428:351;;;;:::o;33785:85::-;33830:7;33859:5;33848:16;;33785:85;;;:::o;33876:158::-;33934:9;33967:61;33985:42;33994:32;34020:5;33994:32;:::i;:::-;33985:42;:::i;:::-;33967:61;:::i;:::-;33954:74;;33876:158;;;:::o;34040:147::-;34135:45;34174:5;34135:45;:::i;:::-;34130:3;34123:58;34040:147;;:::o;34193:114::-;34260:6;34294:5;34288:12;34278:22;;34193:114;;;:::o;34313:184::-;34412:11;34446:6;34441:3;34434:19;34486:4;34481:3;34477:14;34462:29;;34313:184;;;;:::o;34503:132::-;34570:4;34593:3;34585:11;;34623:4;34618:3;34614:14;34606:22;;34503:132;;;:::o;34641:108::-;34718:24;34736:5;34718:24;:::i;:::-;34713:3;34706:37;34641:108;;:::o;34755:179::-;34824:10;34845:46;34887:3;34879:6;34845:46;:::i;:::-;34923:4;34918:3;34914:14;34900:28;;34755:179;;;;:::o;34940:113::-;35010:4;35042;35037:3;35033:14;35025:22;;34940:113;;;:::o;35089:732::-;35208:3;35237:54;35285:5;35237:54;:::i;:::-;35307:86;35386:6;35381:3;35307:86;:::i;:::-;35300:93;;35417:56;35467:5;35417:56;:::i;:::-;35496:7;35527:1;35512:284;35537:6;35534:1;35531:13;35512:284;;;35613:6;35607:13;35640:63;35699:3;35684:13;35640:63;:::i;:::-;35633:70;;35726:60;35779:6;35726:60;:::i;:::-;35716:70;;35572:224;35559:1;35556;35552:9;35547:14;;35512:284;;;35516:14;35812:3;35805:10;;35213:608;;;35089:732;;;;:::o;35827:831::-;36090:4;36128:3;36117:9;36113:19;36105:27;;36142:71;36210:1;36199:9;36195:17;36186:6;36142:71;:::i;:::-;36223:80;36299:2;36288:9;36284:18;36275:6;36223:80;:::i;:::-;36350:9;36344:4;36340:20;36335:2;36324:9;36320:18;36313:48;36378:108;36481:4;36472:6;36378:108;:::i;:::-;36370:116;;36496:72;36564:2;36553:9;36549:18;36540:6;36496:72;:::i;:::-;36578:73;36646:3;36635:9;36631:19;36622:6;36578:73;:::i;:::-;35827:831;;;;;;;;:::o;36664:807::-;36913:4;36951:3;36940:9;36936:19;36928:27;;36965:71;37033:1;37022:9;37018:17;37009:6;36965:71;:::i;:::-;37046:72;37114:2;37103:9;37099:18;37090:6;37046:72;:::i;:::-;37128:80;37204:2;37193:9;37189:18;37180:6;37128:80;:::i;:::-;37218;37294:2;37283:9;37279:18;37270:6;37218:80;:::i;:::-;37308:73;37376:3;37365:9;37361:19;37352:6;37308:73;:::i;:::-;37391;37459:3;37448:9;37444:19;37435:6;37391:73;:::i;:::-;36664:807;;;;;;;;;:::o;37477:143::-;37534:5;37565:6;37559:13;37550:22;;37581:33;37608:5;37581:33;:::i;:::-;37477:143;;;;:::o;37626:663::-;37714:6;37722;37730;37779:2;37767:9;37758:7;37754:23;37750:32;37747:119;;;37785:79;;:::i;:::-;37747:119;37905:1;37930:64;37986:7;37977:6;37966:9;37962:22;37930:64;:::i;:::-;37920:74;;37876:128;38043:2;38069:64;38125:7;38116:6;38105:9;38101:22;38069:64;:::i;:::-;38059:74;;38014:129;38182:2;38208:64;38264:7;38255:6;38244:9;38240:22;38208:64;:::i;:::-;38198:74;;38153:129;37626:663;;;;;:::o
Swarm Source
ipfs://054928ac51b8a70c1d6d792c6f1ece346bf44b6c0588263136321456d174ccd8
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.