Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
100,000,000 NANOai
Holders
163
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
610,175.456319603456632337 NANOaiValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
NanoAI
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-02-03 */ /** Telegram: https://t.me/NanoAIportal Twitter: https://twitter.com/nanoaiboterc Medium: https://nanoaibot.medium.com/ **/ // SPDX-License-Identifier: MIT pragma solidity 0.8.17; pragma experimental ABIEncoderV2; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _transferOwnership(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } 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 { 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 18; } 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); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } 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); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(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 += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(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); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(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 {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 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 (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 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 (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); 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 (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } contract NanoAI is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; address public constant deadAddress = address(0xdead); //old testnet - 0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3 // pcs testnet - 0xD99D1c33F9fC3444f8101754aBC46c52416550D1 //mainnet - 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D address public routerCA = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D uniswap bool private swapping; address public mktngWallet; address public devWallet; address public liqWallet; address public opsWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; // Anti-bot and anti-whale mappings and variables mapping(address => uint256) private _holderLastTransferTimestamp; bool public transferDelayEnabled = true; uint256 private launchBlock; uint256 private deadBlocks; mapping(address => bool) public blocked; uint256 public buyTotalFees; uint256 public buyMktngFee; uint256 public buyLiquidityFee; uint256 public buyDevFee; uint256 public buyOpsFee; uint256 public sellTotalFees; uint256 public sellMktngFee; uint256 public sellLiquidityFee; uint256 public sellDevFee; uint256 public sellOpsFee; uint256 public tokensForMarketing; uint256 public tokensForLiquidity; uint256 public tokensForDev; uint256 public tokensForOps; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedMaxTransactionAmount; mapping(address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router( address indexed newAddress, address indexed oldAddress ); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event mktngWalletUpdated( address indexed newWallet, address indexed oldWallet ); event devWalletUpdated( address indexed newWallet, address indexed oldWallet ); event liqWalletUpdated( address indexed newWallet, address indexed oldWallet ); event opsWalletUpdated( address indexed newWallet, address indexed oldWallet ); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); constructor() ERC20("Nano AI", "NANOai") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(routerCA); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); // launch buy fees uint256 _buyMktngFee = 1; uint256 _buyLiquidityFee = 1; uint256 _buyDevFee = 4; uint256 _buyOpsFee = 4; // launch sell fees uint256 _sellMktngFee = 0; uint256 _sellLiquidityFee = 0; uint256 _sellDevFee = 30; uint256 _sellOpsFee = 30; uint256 totalSupply = 100_000_000 * 1e18; maxTransactionAmount = 2_000_000 * 1e18; // 3% max txn at launch maxWallet = 2_000_000 * 1e18; // 3% max wallet at launch swapTokensAtAmount = (totalSupply * 5) / 10000; // 0.05% swap wallet buyMktngFee = _buyMktngFee; buyLiquidityFee = _buyLiquidityFee; buyDevFee = _buyDevFee; buyOpsFee = _buyOpsFee; buyTotalFees = buyMktngFee + buyLiquidityFee + buyDevFee + buyOpsFee; sellMktngFee = _sellMktngFee; sellLiquidityFee = _sellLiquidityFee; sellDevFee = _sellDevFee; sellOpsFee = _sellOpsFee; sellTotalFees = sellMktngFee + sellLiquidityFee + sellDevFee + sellOpsFee; mktngWallet = address(0xa1a5116cA5C191037eebFACe49219347d51E5719); devWallet = address(0x029372B5b502912f3D28468Aa288cC914D2df978); liqWallet = address(0x029372B5b502912f3D28468Aa288cC914D2df978); opsWallet = address(0x66D8f73e32469d90fD72d351fD828864734C7115); // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); _mint(msg.sender, totalSupply); } function initialLp() external onlyOwner() { require(!tradingActive,"Token launched"); addLiquidity(balanceOf(address(this)), address(this).balance); } receive() external payable {} function enableTrading(uint256 _deadBlocks) external onlyOwner { require(!tradingActive, "Token launched"); tradingActive = true; launchBlock = block.number; swapEnabled = true; deadBlocks = _deadBlocks; } // remove limits after token is stable function removeLimits() external onlyOwner returns (bool) { limitsInEffect = false; return true; } // disable Transfer delay - cannot be reenabled function disableTransferDelay() external onlyOwner returns (bool) { transferDelayEnabled = false; 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 updateMaxTransaction(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set maxTransactionAmount lower than 0.1%" ); maxTransactionAmount = newNum * (10**18); } function updateMaxWallet(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 5) / 1000) / 1e18, "Cannot set maxWallet lower than 0.5%" ); maxWallet = newNum * (10**18); } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner { swapEnabled = enabled; } function updateBuyFees( uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee, uint256 _opsFee ) external onlyOwner { buyMktngFee = _marketingFee; buyLiquidityFee = _liquidityFee; buyDevFee = _devFee; buyOpsFee = _opsFee; buyTotalFees = buyMktngFee + buyLiquidityFee + buyDevFee + buyOpsFee; require(buyTotalFees <= 99); } function updateSellFees( uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee, uint256 _opsFee ) external onlyOwner { sellMktngFee = _marketingFee; sellLiquidityFee = _liquidityFee; sellDevFee = _devFee; sellOpsFee = _opsFee; sellTotalFees = sellMktngFee + sellLiquidityFee + sellDevFee + sellOpsFee; require(sellTotalFees <= 99); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require( pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs" ); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updatemktngWallet(address newmktngWallet) external onlyOwner { emit mktngWalletUpdated(newmktngWallet, mktngWallet); mktngWallet = newmktngWallet; } function updateDevWallet(address newWallet) external onlyOwner { emit devWalletUpdated(newWallet, devWallet); devWallet = newWallet; } function updateopsWallet(address newWallet) external onlyOwner{ emit opsWalletUpdated(newWallet, opsWallet); opsWallet = newWallet; } function updateLiqWallet(address newLiqWallet) external onlyOwner { emit liqWalletUpdated(newLiqWallet, liqWallet); liqWallet = newLiqWallet; } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } event BoughtEarly(address indexed sniper); 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(!blocked[from], "Sniper blocked"); if (amount == 0) { super._transfer(from, to, 0); return; } if (limitsInEffect) { if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ) { if (!tradingActive) { require( _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active." ); } if(block.number <= launchBlock + deadBlocks && from == address(uniswapV2Pair) && to != routerCA && to != address(this) && to != address(uniswapV2Pair)){ blocked[to] = true; emit BoughtEarly(to); } // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. if (transferDelayEnabled) { if ( to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair) ) { require( _holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed." ); _holderLastTransferTimestamp[tx.origin] = block.number; } } //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." ); } else if (!_isExcludedMaxTransactionAmount[to]) { require( amount + balanceOf(to) <= maxWallet, "Max wallet exceeded" ); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } 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 * sellMktngFee) / sellTotalFees; tokensForOps += (fees * sellOpsFee) / 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 * buyMktngFee) / buyTotalFees; tokensForOps += (fees * buyOpsFee) / buyTotalFees; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } 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 rekSnipers(address[] calldata blockees, bool shouldBlock) external onlyOwner { for(uint256 i = 0;i<blockees.length;i++){ address blockee = blockees[i]; if(blockee != address(this) && blockee != routerCA && blockee != address(uniswapV2Pair)) blocked[blockee] = shouldBlock; } } 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 liqWallet, block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev + tokensForOps; bool success; 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 ethForOps = ethBalance.mul(tokensForOps).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev - ethForOps; tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDev = 0; tokensForOps = 0; (success, ) = address(devWallet).call{value: ethForDev}(""); if (liquidityTokens > 0 && ethForLiquidity > 0) { addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify( amountToSwapForETH, ethForLiquidity, tokensForLiquidity ); } (success, ) = address(opsWallet).call{value: ethForOps}(""); (success, ) = address(mktngWallet).call{value: address(this).balance}(""); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sniper","type":"address"}],"name":"BoughtEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"liqWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"mktngWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"opsWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","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":[{"internalType":"address","name":"","type":"address"}],"name":"blocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMktngFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyOpsFee","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":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadBlocks","type":"uint256"}],"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":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialLp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","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":"liqWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"mktngWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"opsWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"blockees","type":"address[]"},{"internalType":"bool","name":"shouldBlock","type":"bool"}],"name":"rekSnipers","outputs":[],"stateMutability":"nonpayable","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":"routerCA","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMktngFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellOpsFee","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":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForOps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_opsFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLiqWallet","type":"address"}],"name":"updateLiqWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_opsFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","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":"newmktngWallet","type":"address"}],"name":"updatemktngWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateopsWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c0604052737a250d5630b4cf539739df2c5dacb4c659f2488d600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff0219169083151502179055506000600e60026101000a81548160ff0219169083151502179055506001601060006101000a81548160ff021916908315150217905550348015620000d257600080fd5b506040518060400160405280600781526020017f4e616e6f204149000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f4e414e4f61690000000000000000000000000000000000000000000000000000815250816003908162000150919062000e9b565b50806004908162000162919062000e9b565b5050506200018562000179620006e260201b60201c565b620006ea60201b60201c565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050620001bf816001620007b060201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200023f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000265919062000fec565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002cd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f3919062000fec565b6040518363ffffffff1660e01b8152600401620003129291906200102f565b6020604051808303816000875af115801562000332573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000358919062000fec565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620003a060a0516001620007b060201b60201c565b620003b560a05160016200089a60201b60201c565b6000600190506000600190506000600490506000600490506000806000601e90506000601e905060006a52b7d2dcc80cd2e400000090506a01a784379d99db42000000600b819055506a01a784379d99db42000000600d819055506127106005826200042291906200108b565b6200042e919062001105565b600c81905550886015819055508760168190555086601781905550856018819055506018546017546016546015546200046891906200113d565b6200047491906200113d565b6200048091906200113d565b60148190555084601a8190555083601b8190555082601c8190555081601d81905550601d54601c54601b54601a54620004ba91906200113d565b620004c691906200113d565b620004d291906200113d565b60198190555073a1a5116ca5c191037eebface49219347d51e5719600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073029372b5b502912f3d28468aa288cc914d2df978600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073029372b5b502912f3d28468aa288cc914d2df978600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507366d8f73e32469d90fd72d351fd828864734c7115600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200064e620006406200093b60201b60201c565b60016200096560201b60201c565b620006613060016200096560201b60201c565b6200067661dead60016200096560201b60201c565b620006986200068a6200093b60201b60201c565b6001620007b060201b60201c565b620006ab306001620007b060201b60201c565b620006c061dead6001620007b060201b60201c565b620006d2338262000a9f60201b60201c565b50505050505050505050620012d5565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620007c0620006e260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007e66200093b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200083f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200083690620011d9565b60405180910390fd5b80602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000975620006e260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200099b6200093b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620009f4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009eb90620011d9565b60405180910390fd5b80602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000a93919062001218565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000b11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b089062001285565b60405180910390fd5b62000b256000838362000c1760201b60201c565b806002600082825462000b3991906200113d565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000b9091906200113d565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000bf79190620012b8565b60405180910390a362000c136000838362000c1c60201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000ca357607f821691505b60208210810362000cb95762000cb862000c5b565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000d237fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000ce4565b62000d2f868362000ce4565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000d7c62000d7662000d708462000d47565b62000d51565b62000d47565b9050919050565b6000819050919050565b62000d988362000d5b565b62000db062000da78262000d83565b84845462000cf1565b825550505050565b600090565b62000dc762000db8565b62000dd481848462000d8d565b505050565b5b8181101562000dfc5762000df060008262000dbd565b60018101905062000dda565b5050565b601f82111562000e4b5762000e158162000cbf565b62000e208462000cd4565b8101602085101562000e30578190505b62000e4862000e3f8562000cd4565b83018262000dd9565b50505b505050565b600082821c905092915050565b600062000e706000198460080262000e50565b1980831691505092915050565b600062000e8b838362000e5d565b9150826002028217905092915050565b62000ea68262000c21565b67ffffffffffffffff81111562000ec25762000ec162000c2c565b5b62000ece825462000c8a565b62000edb82828562000e00565b600060209050601f83116001811462000f13576000841562000efe578287015190505b62000f0a858262000e7d565b86555062000f7a565b601f19841662000f238662000cbf565b60005b8281101562000f4d5784890151825560018201915060208501945060208101905062000f26565b8683101562000f6d578489015162000f69601f89168262000e5d565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000fb48262000f87565b9050919050565b62000fc68162000fa7565b811462000fd257600080fd5b50565b60008151905062000fe68162000fbb565b92915050565b60006020828403121562001005576200100462000f82565b5b6000620010158482850162000fd5565b91505092915050565b620010298162000fa7565b82525050565b60006040820190506200104660008301856200101e565b6200105560208301846200101e565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620010988262000d47565b9150620010a58362000d47565b9250828202620010b58162000d47565b91508282048414831517620010cf57620010ce6200105c565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620011128262000d47565b91506200111f8362000d47565b925082620011325762001131620010d6565b5b828204905092915050565b60006200114a8262000d47565b9150620011578362000d47565b92508282019050808211156200117257620011716200105c565b5b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620011c160208362001178565b9150620011ce8262001189565b602082019050919050565b60006020820190508181036000830152620011f481620011b2565b9050919050565b60008115159050919050565b6200121281620011fb565b82525050565b60006020820190506200122f600083018462001207565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200126d601f8362001178565b91506200127a8262001235565b602082019050919050565b60006020820190508181036000830152620012a0816200125e565b9050919050565b620012b28162000d47565b82525050565b6000602082019050620012cf6000830184620012a7565b92915050565b60805160a051615e02620013486000396000818161187a01528181611ceb01528181612376015281816130d9015281816131c2015261335f01526000818161127e0152818161330701528181613cad01528181613cd40152818161463501528181614716015261473d0152615e026000f3fe6080604052600436106103d25760003560e01c8063751039fc116101fd578063b99d357511610118578063dd62ed3e116100ab578063e884f2601161007a578063e884f26014610e86578063f11a24d314610eb1578063f2fde38b14610edc578063f637434214610f05578063f8b45b0514610f30576103d9565b8063dd62ed3e14610db8578063e2f4560514610df5578063e596219514610e20578063e7ad9fcd14610e5d576103d9565b8063c8c8ebe4116100e7578063c8c8ebe414610cfa578063d257b34f14610d25578063d5dd9b1714610d62578063d85ba06314610d8d576103d9565b8063b99d357514610c50578063bbc0c74214610c7b578063c024666814610ca6578063c876d0b914610ccf576103d9565b806395d89b4111610190578063a0d82dc51161015f578063a0d82dc514610b6e578063a457c2d714610b99578063a9059cbb14610bd6578063b62496f514610c13576103d9565b806395d89b4114610ac45780639a7a23d614610aef5780639c3b4fdc14610b185780639fccce3214610b43576103d9565b80638da5cb5b116101cc5780638da5cb5b14610a1c5780638ea5220f14610a47578063924de9b714610a7257806394e05c6d14610a9b576103d9565b8063751039fc146109745780637571336a1461099f57806378dd7d41146109c857806382aa7c68146109f3576103d9565b806339509351116102ed578063659ffb9c1161028057806370a082311161024f57806370a08231146108ce578063715018a61461090b57806373dd858c14610922578063742b74af1461094b576103d9565b8063659ffb9c1461082257806368db925a1461084d5780636a486a8e146108785780636ddd1713146108a3576103d9565b80634a62bb65116102bc5780634a62bb65146107645780634ec39ba91461078f5780634fbee193146107ba578063534c0906146107f7576103d9565b806339509351146106ba57806340c5f4b3146106f757806345c06d481461072257806349bd5a5e14610739576103d9565b80631816467f1161036557806323b872dd1161033457806323b872dd146105fe57806327c8f8351461063b5780632e6ed7ef14610666578063313ce5671461068f576103d9565b80631816467f146105565780631a8145bb1461057f5780631c499ab0146105aa5780631f3fed8f146105d3576103d9565b8063095ea7b3116103a1578063095ea7b31461048657806310d5de53146104c35780631694505e1461050057806318160ddd1461052b576103d9565b80630517d13d146103de57806306fdde031461040757806307facf8a1461043257806308cd33e11461045b576103d9565b366103d957005b600080fd5b3480156103ea57600080fd5b5061040560048036038101906104009190614813565b610f5b565b005b34801561041357600080fd5b5061041c61106a565b60405161042991906148d0565b60405180910390f35b34801561043e57600080fd5b5061045960048036038101906104549190614950565b6110fc565b005b34801561046757600080fd5b50610470611238565b60405161047d919061498c565b60405180910390f35b34801561049257600080fd5b506104ad60048036038101906104a891906149a7565b61123e565b6040516104ba9190614a02565b60405180910390f35b3480156104cf57600080fd5b506104ea60048036038101906104e59190614950565b61125c565b6040516104f79190614a02565b60405180910390f35b34801561050c57600080fd5b5061051561127c565b6040516105229190614a7c565b60405180910390f35b34801561053757600080fd5b506105406112a0565b60405161054d919061498c565b60405180910390f35b34801561056257600080fd5b5061057d60048036038101906105789190614950565b6112aa565b005b34801561058b57600080fd5b506105946113e6565b6040516105a1919061498c565b60405180910390f35b3480156105b657600080fd5b506105d160048036038101906105cc9190614813565b6113ec565b005b3480156105df57600080fd5b506105e86114fb565b6040516105f5919061498c565b60405180910390f35b34801561060a57600080fd5b5061062560048036038101906106209190614a97565b611501565b6040516106329190614a02565b60405180910390f35b34801561064757600080fd5b506106506115f9565b60405161065d9190614af9565b60405180910390f35b34801561067257600080fd5b5061068d60048036038101906106889190614b14565b6115ff565b005b34801561069b57600080fd5b506106a46116dd565b6040516106b19190614b97565b60405180910390f35b3480156106c657600080fd5b506106e160048036038101906106dc91906149a7565b6116e6565b6040516106ee9190614a02565b60405180910390f35b34801561070357600080fd5b5061070c611792565b604051610719919061498c565b60405180910390f35b34801561072e57600080fd5b50610737611798565b005b34801561074557600080fd5b5061074e611878565b60405161075b9190614af9565b60405180910390f35b34801561077057600080fd5b5061077961189c565b6040516107869190614a02565b60405180910390f35b34801561079b57600080fd5b506107a46118af565b6040516107b19190614af9565b60405180910390f35b3480156107c657600080fd5b506107e160048036038101906107dc9190614950565b6118d5565b6040516107ee9190614a02565b60405180910390f35b34801561080357600080fd5b5061080c61192b565b6040516108199190614af9565b60405180910390f35b34801561082e57600080fd5b50610837611951565b604051610844919061498c565b60405180910390f35b34801561085957600080fd5b50610862611957565b60405161086f9190614af9565b60405180910390f35b34801561088457600080fd5b5061088d61197d565b60405161089a919061498c565b60405180910390f35b3480156108af57600080fd5b506108b8611983565b6040516108c59190614a02565b60405180910390f35b3480156108da57600080fd5b506108f560048036038101906108f09190614950565b611996565b604051610902919061498c565b60405180910390f35b34801561091757600080fd5b506109206119de565b005b34801561092e57600080fd5b5061094960048036038101906109449190614950565b611a66565b005b34801561095757600080fd5b50610972600480360381019061096d9190614c43565b611ba2565b005b34801561098057600080fd5b50610989611db1565b6040516109969190614a02565b60405180910390f35b3480156109ab57600080fd5b506109c660048036038101906109c19190614ca3565b611e51565b005b3480156109d457600080fd5b506109dd611f28565b6040516109ea919061498c565b60405180910390f35b3480156109ff57600080fd5b50610a1a6004803603810190610a159190614813565b611f2e565b005b348015610a2857600080fd5b50610a31612041565b604051610a3e9190614af9565b60405180910390f35b348015610a5357600080fd5b50610a5c61206b565b604051610a699190614af9565b60405180910390f35b348015610a7e57600080fd5b50610a996004803603810190610a949190614ce3565b612091565b005b348015610aa757600080fd5b50610ac26004803603810190610abd9190614950565b61212a565b005b348015610ad057600080fd5b50610ad9612266565b604051610ae691906148d0565b60405180910390f35b348015610afb57600080fd5b50610b166004803603810190610b119190614ca3565b6122f8565b005b348015610b2457600080fd5b50610b2d612410565b604051610b3a919061498c565b60405180910390f35b348015610b4f57600080fd5b50610b58612416565b604051610b65919061498c565b60405180910390f35b348015610b7a57600080fd5b50610b8361241c565b604051610b90919061498c565b60405180910390f35b348015610ba557600080fd5b50610bc06004803603810190610bbb91906149a7565b612422565b604051610bcd9190614a02565b60405180910390f35b348015610be257600080fd5b50610bfd6004803603810190610bf891906149a7565b61250d565b604051610c0a9190614a02565b60405180910390f35b348015610c1f57600080fd5b50610c3a6004803603810190610c359190614950565b61252b565b604051610c479190614a02565b60405180910390f35b348015610c5c57600080fd5b50610c6561254b565b604051610c729190614af9565b60405180910390f35b348015610c8757600080fd5b50610c90612571565b604051610c9d9190614a02565b60405180910390f35b348015610cb257600080fd5b50610ccd6004803603810190610cc89190614ca3565b612584565b005b348015610cdb57600080fd5b50610ce46126a9565b604051610cf19190614a02565b60405180910390f35b348015610d0657600080fd5b50610d0f6126bc565b604051610d1c919061498c565b60405180910390f35b348015610d3157600080fd5b50610d4c6004803603810190610d479190614813565b6126c2565b604051610d599190614a02565b60405180910390f35b348015610d6e57600080fd5b50610d77612817565b604051610d84919061498c565b60405180910390f35b348015610d9957600080fd5b50610da261281d565b604051610daf919061498c565b60405180910390f35b348015610dc457600080fd5b50610ddf6004803603810190610dda9190614d10565b612823565b604051610dec919061498c565b60405180910390f35b348015610e0157600080fd5b50610e0a6128aa565b604051610e17919061498c565b60405180910390f35b348015610e2c57600080fd5b50610e476004803603810190610e429190614950565b6128b0565b604051610e549190614a02565b60405180910390f35b348015610e6957600080fd5b50610e846004803603810190610e7f9190614b14565b6128d0565b005b348015610e9257600080fd5b50610e9b6129ae565b604051610ea89190614a02565b60405180910390f35b348015610ebd57600080fd5b50610ec6612a4e565b604051610ed3919061498c565b60405180910390f35b348015610ee857600080fd5b50610f036004803603810190610efe9190614950565b612a54565b005b348015610f1157600080fd5b50610f1a612b4b565b604051610f27919061498c565b60405180910390f35b348015610f3c57600080fd5b50610f45612b51565b604051610f52919061498c565b60405180910390f35b610f63612b57565b73ffffffffffffffffffffffffffffffffffffffff16610f81612041565b73ffffffffffffffffffffffffffffffffffffffff1614610fd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fce90614d9c565b60405180910390fd5b670de0b6b3a76400006103e86001610fed6112a0565b610ff79190614deb565b6110019190614e5c565b61100b9190614e5c565b81101561104d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104490614eff565b60405180910390fd5b670de0b6b3a7640000816110619190614deb565b600b8190555050565b60606003805461107990614f4e565b80601f01602080910402602001604051908101604052809291908181526020018280546110a590614f4e565b80156110f25780601f106110c7576101008083540402835291602001916110f2565b820191906000526020600020905b8154815290600101906020018083116110d557829003601f168201915b5050505050905090565b611104612b57565b73ffffffffffffffffffffffffffffffffffffffff16611122612041565b73ffffffffffffffffffffffffffffffffffffffff1614611178576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116f90614d9c565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fba8a74f87db3edea870277fd7964be772c6d9340ec078b2304f38ae1b9f0e5d260405160405180910390a380600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a5481565b600061125261124b612b57565b8484612b5f565b6001905092915050565b60236020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b6112b2612b57565b73ffffffffffffffffffffffffffffffffffffffff166112d0612041565b73ffffffffffffffffffffffffffffffffffffffff1614611326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131d90614d9c565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601f5481565b6113f4612b57565b73ffffffffffffffffffffffffffffffffffffffff16611412612041565b73ffffffffffffffffffffffffffffffffffffffff1614611468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145f90614d9c565b60405180910390fd5b670de0b6b3a76400006103e8600561147e6112a0565b6114889190614deb565b6114929190614e5c565b61149c9190614e5c565b8110156114de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d590614ff1565b60405180910390fd5b670de0b6b3a7640000816114f29190614deb565b600d8190555050565b601e5481565b600061150e848484612d28565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611559612b57565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156115d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d090615083565b60405180910390fd5b6115ed856115e5612b57565b858403612b5f565b60019150509392505050565b61dead81565b611607612b57565b73ffffffffffffffffffffffffffffffffffffffff16611625612041565b73ffffffffffffffffffffffffffffffffffffffff161461167b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167290614d9c565b60405180910390fd5b836015819055508260168190555081601781905550806018819055506018546017546016546015546116ad91906150a3565b6116b791906150a3565b6116c191906150a3565b601481905550606360145411156116d757600080fd5b50505050565b60006012905090565b60006117886116f3612b57565b848460016000611701612b57565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461178391906150a3565b612b5f565b6001905092915050565b60155481565b6117a0612b57565b73ffffffffffffffffffffffffffffffffffffffff166117be612041565b73ffffffffffffffffffffffffffffffffffffffff1614611814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180b90614d9c565b60405180910390fd5b600e60019054906101000a900460ff1615611864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185b90615123565b60405180910390fd5b61187661187030611996565b47613ca7565b565b7f000000000000000000000000000000000000000000000000000000000000000081565b600e60009054906101000a900460ff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000602260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d5481565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b600e60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6119e6612b57565b73ffffffffffffffffffffffffffffffffffffffff16611a04612041565b73ffffffffffffffffffffffffffffffffffffffff1614611a5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5190614d9c565b60405180910390fd5b611a646000613da3565b565b611a6e612b57565b73ffffffffffffffffffffffffffffffffffffffff16611a8c612041565b73ffffffffffffffffffffffffffffffffffffffff1614611ae2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad990614d9c565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f0308c4544315dbf7c7c2fdbcdf1dd8a57df22fddf234ee3c941eefec5c2287ba60405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611baa612b57565b73ffffffffffffffffffffffffffffffffffffffff16611bc8612041565b73ffffffffffffffffffffffffffffffffffffffff1614611c1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1590614d9c565b60405180910390fd5b60005b83839050811015611dab576000848483818110611c4157611c40615143565b5b9050602002016020810190611c569190614950565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015611ce25750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611d3a57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15611d975782601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b508080611da390615172565b915050611c21565b50505050565b6000611dbb612b57565b73ffffffffffffffffffffffffffffffffffffffff16611dd9612041565b73ffffffffffffffffffffffffffffffffffffffff1614611e2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2690614d9c565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b611e59612b57565b73ffffffffffffffffffffffffffffffffffffffff16611e77612041565b73ffffffffffffffffffffffffffffffffffffffff1614611ecd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec490614d9c565b60405180910390fd5b80602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60185481565b611f36612b57565b73ffffffffffffffffffffffffffffffffffffffff16611f54612041565b73ffffffffffffffffffffffffffffffffffffffff1614611faa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa190614d9c565b60405180910390fd5b600e60019054906101000a900460ff1615611ffa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff190615123565b60405180910390fd5b6001600e60016101000a81548160ff021916908315150217905550436011819055506001600e60026101000a81548160ff0219169083151502179055508060128190555050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612099612b57565b73ffffffffffffffffffffffffffffffffffffffff166120b7612041565b73ffffffffffffffffffffffffffffffffffffffff161461210d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210490614d9c565b60405180910390fd5b80600e60026101000a81548160ff02191690831515021790555050565b612132612b57565b73ffffffffffffffffffffffffffffffffffffffff16612150612041565b73ffffffffffffffffffffffffffffffffffffffff16146121a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219d90614d9c565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fec7cda7e686602e5a5a3692a0e69c4dab0898191024ca21d04f2372c14dfa85e60405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606004805461227590614f4e565b80601f01602080910402602001604051908101604052809291908181526020018280546122a190614f4e565b80156122ee5780601f106122c3576101008083540402835291602001916122ee565b820191906000526020600020905b8154815290600101906020018083116122d157829003601f168201915b5050505050905090565b612300612b57565b73ffffffffffffffffffffffffffffffffffffffff1661231e612041565b73ffffffffffffffffffffffffffffffffffffffff1614612374576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236b90614d9c565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612402576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f99061522c565b60405180910390fd5b61240c8282613e69565b5050565b60175481565b60205481565b601c5481565b60008060016000612431612b57565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156124ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e5906152be565b60405180910390fd5b6125026124f9612b57565b85858403612b5f565b600191505092915050565b600061252161251a612b57565b8484612d28565b6001905092915050565b60246020528060005260406000206000915054906101000a900460ff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e60019054906101000a900460ff1681565b61258c612b57565b73ffffffffffffffffffffffffffffffffffffffff166125aa612041565b73ffffffffffffffffffffffffffffffffffffffff1614612600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f790614d9c565b60405180910390fd5b80602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161269d9190614a02565b60405180910390a25050565b601060009054906101000a900460ff1681565b600b5481565b60006126cc612b57565b73ffffffffffffffffffffffffffffffffffffffff166126ea612041565b73ffffffffffffffffffffffffffffffffffffffff1614612740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273790614d9c565b60405180910390fd5b620186a0600161274e6112a0565b6127589190614deb565b6127629190614e5c565b8210156127a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279b90615350565b60405180910390fd5b6103e860056127b16112a0565b6127bb9190614deb565b6127c59190614e5c565b821115612807576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127fe906153e2565b60405180910390fd5b81600c8190555060019050919050565b60215481565b60145481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600c5481565b60136020528060005260406000206000915054906101000a900460ff1681565b6128d8612b57565b73ffffffffffffffffffffffffffffffffffffffff166128f6612041565b73ffffffffffffffffffffffffffffffffffffffff161461294c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294390614d9c565b60405180910390fd5b83601a8190555082601b8190555081601c8190555080601d81905550601d54601c54601b54601a5461297e91906150a3565b61298891906150a3565b61299291906150a3565b601981905550606360195411156129a857600080fd5b50505050565b60006129b8612b57565b73ffffffffffffffffffffffffffffffffffffffff166129d6612041565b73ffffffffffffffffffffffffffffffffffffffff1614612a2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2390614d9c565b60405180910390fd5b6000601060006101000a81548160ff0219169083151502179055506001905090565b60165481565b612a5c612b57565b73ffffffffffffffffffffffffffffffffffffffff16612a7a612041565b73ffffffffffffffffffffffffffffffffffffffff1614612ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac790614d9c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3690615474565b60405180910390fd5b612b4881613da3565b50565b601b5481565b600d5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc590615506565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3490615598565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612d1b919061498c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8e9061562a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dfd906156bc565b60405180910390fd5b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e8a90615728565b60405180910390fd5b60008103612eac57612ea783836000613f0a565b613ca2565b600e60009054906101000a900460ff161561376457612ec9612041565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612f375750612f07612041565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612f705750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612faa575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612fc35750600660149054906101000a900460ff16155b1561376357600e60019054906101000a900460ff166130bd57602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061307d5750602260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6130bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130b390615794565b60405180910390fd5b5b6012546011546130cd91906150a3565b431115801561312757507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80156131815750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156131b957503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561321157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156132b2576001601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fb90badc1cf1c52268f4fa9afb5276aebf640bcca3300cdfc9cf37db17daa13e260405160405180910390a25b601060009054906101000a900460ff161561347a576132cf612041565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561335657507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156133ae57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156134795743600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410613434576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161342b9061584c565b60405180910390fd5b43600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561351d5750602360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156135c457600b54811115613567576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161355e906158de565b60405180910390fd5b600d5461357383611996565b8261357e91906150a3565b11156135bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135b69061594a565b60405180910390fd5b613762565b602460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156136675750602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156136b657600b548111156136b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136a8906159dc565b60405180910390fd5b613761565b602360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661376057600d5461371383611996565b8261371e91906150a3565b111561375f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137569061594a565b60405180910390fd5b5b5b5b5b5b600061376f30611996565b90506000600c5482101590508080156137945750600e60029054906101000a900460ff165b80156137ad5750600660149054906101000a900460ff16155b80156138035750602460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138595750602260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138af5750602260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156138f3576001600660146101000a81548160ff0219169083151502179055506138d7614189565b6000600660146101000a81548160ff0219169083151502179055505b6000600660149054906101000a900460ff16159050602260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139a95750602260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156139b357600090505b60008115613c9257602460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613a1657506000601954115b15613b1657613a436064613a356019548861454a90919063ffffffff16565b61456090919063ffffffff16565b9050601954601b5482613a569190614deb565b613a609190614e5c565b601f6000828254613a7191906150a3565b92505081905550601954601c5482613a899190614deb565b613a939190614e5c565b60206000828254613aa491906150a3565b92505081905550601954601a5482613abc9190614deb565b613ac69190614e5c565b601e6000828254613ad791906150a3565b92505081905550601954601d5482613aef9190614deb565b613af99190614e5c565b60216000828254613b0a91906150a3565b92505081905550613c6e565b602460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613b7157506000601454115b15613c6d57613b9e6064613b906014548861454a90919063ffffffff16565b61456090919063ffffffff16565b905060145460165482613bb19190614deb565b613bbb9190614e5c565b601f6000828254613bcc91906150a3565b9250508190555060145460175482613be49190614deb565b613bee9190614e5c565b60206000828254613bff91906150a3565b9250508190555060145460155482613c179190614deb565b613c219190614e5c565b601e6000828254613c3291906150a3565b9250508190555060145460185482613c4a9190614deb565b613c549190614e5c565b60216000828254613c6591906150a3565b925050819055505b5b6000811115613c8357613c82873083613f0a565b5b8085613c8f91906159fc565b94505b613c9d878787613f0a565b505050505b505050565b613cd2307f000000000000000000000000000000000000000000000000000000000000000084612b5f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613d5996959493929190615a6b565b60606040518083038185885af1158015613d77573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613d9c9190615ae1565b5050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613f79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f709061562a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613fe8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613fdf906156bc565b60405180910390fd5b613ff3838383614576565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015614079576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161407090615ba6565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461410c91906150a3565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051614170919061498c565b60405180910390a361418384848461457b565b50505050565b600061419430611996565b90506000602154602054601e54601f546141ae91906150a3565b6141b891906150a3565b6141c291906150a3565b90506000808314806141d45750600082145b156141e157505050614548565b6014600c546141f09190614deb565b831115614209576014600c546142069190614deb565b92505b6000600283601f548661421c9190614deb565b6142269190614e5c565b6142309190614e5c565b90506000614247828661458090919063ffffffff16565b9050600047905061425782614596565b600061426c824761458090919063ffffffff16565b9050600061429787614289601e548561454a90919063ffffffff16565b61456090919063ffffffff16565b905060006142c2886142b46020548661454a90919063ffffffff16565b61456090919063ffffffff16565b905060006142ed896142df6021548761454a90919063ffffffff16565b61456090919063ffffffff16565b90506000818385876142ff91906159fc565b61430991906159fc565b61431391906159fc565b90506000601f819055506000601e8190555060006020819055506000602181905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161437b90615bf7565b60006040518083038185875af1925050503d80600081146143b8576040519150601f19603f3d011682016040523d82523d6000602084013e6143bd565b606091505b5050809950506000881180156143d35750600081115b15614420576143e28882613ca7565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618782601f5460405161441793929190615c0c565b60405180910390a15b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161446690615bf7565b60006040518083038185875af1925050503d80600081146144a3576040519150601f19603f3d011682016040523d82523d6000602084013e6144a8565b606091505b505080995050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516144f490615bf7565b60006040518083038185875af1925050503d8060008114614531576040519150601f19603f3d011682016040523d82523d6000602084013e614536565b606091505b50508099505050505050505050505050505b565b600081836145589190614deb565b905092915050565b6000818361456e9190614e5c565b905092915050565b505050565b505050565b6000818361458e91906159fc565b905092915050565b6000600267ffffffffffffffff8111156145b3576145b2615c43565b5b6040519080825280602002602001820160405280156145e15781602001602082028036833780820191505090505b50905030816000815181106145f9576145f8615143565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561469e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146c29190615c87565b816001815181106146d6576146d5615143565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061473b307f000000000000000000000000000000000000000000000000000000000000000084612b5f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161479d959493929190615d72565b600060405180830381600087803b1580156147b757600080fd5b505af11580156147cb573d6000803e3d6000fd5b505050505050565b600080fd5b600080fd5b6000819050919050565b6147f0816147dd565b81146147fb57600080fd5b50565b60008135905061480d816147e7565b92915050565b600060208284031215614829576148286147d3565b5b6000614837848285016147fe565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561487a57808201518184015260208101905061485f565b60008484015250505050565b6000601f19601f8301169050919050565b60006148a282614840565b6148ac818561484b565b93506148bc81856020860161485c565b6148c581614886565b840191505092915050565b600060208201905081810360008301526148ea8184614897565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061491d826148f2565b9050919050565b61492d81614912565b811461493857600080fd5b50565b60008135905061494a81614924565b92915050565b600060208284031215614966576149656147d3565b5b60006149748482850161493b565b91505092915050565b614986816147dd565b82525050565b60006020820190506149a1600083018461497d565b92915050565b600080604083850312156149be576149bd6147d3565b5b60006149cc8582860161493b565b92505060206149dd858286016147fe565b9150509250929050565b60008115159050919050565b6149fc816149e7565b82525050565b6000602082019050614a1760008301846149f3565b92915050565b6000819050919050565b6000614a42614a3d614a38846148f2565b614a1d565b6148f2565b9050919050565b6000614a5482614a27565b9050919050565b6000614a6682614a49565b9050919050565b614a7681614a5b565b82525050565b6000602082019050614a916000830184614a6d565b92915050565b600080600060608486031215614ab057614aaf6147d3565b5b6000614abe8682870161493b565b9350506020614acf8682870161493b565b9250506040614ae0868287016147fe565b9150509250925092565b614af381614912565b82525050565b6000602082019050614b0e6000830184614aea565b92915050565b60008060008060808587031215614b2e57614b2d6147d3565b5b6000614b3c878288016147fe565b9450506020614b4d878288016147fe565b9350506040614b5e878288016147fe565b9250506060614b6f878288016147fe565b91505092959194509250565b600060ff82169050919050565b614b9181614b7b565b82525050565b6000602082019050614bac6000830184614b88565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112614bd757614bd6614bb2565b5b8235905067ffffffffffffffff811115614bf457614bf3614bb7565b5b602083019150836020820283011115614c1057614c0f614bbc565b5b9250929050565b614c20816149e7565b8114614c2b57600080fd5b50565b600081359050614c3d81614c17565b92915050565b600080600060408486031215614c5c57614c5b6147d3565b5b600084013567ffffffffffffffff811115614c7a57614c796147d8565b5b614c8686828701614bc1565b93509350506020614c9986828701614c2e565b9150509250925092565b60008060408385031215614cba57614cb96147d3565b5b6000614cc88582860161493b565b9250506020614cd985828601614c2e565b9150509250929050565b600060208284031215614cf957614cf86147d3565b5b6000614d0784828501614c2e565b91505092915050565b60008060408385031215614d2757614d266147d3565b5b6000614d358582860161493b565b9250506020614d468582860161493b565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614d8660208361484b565b9150614d9182614d50565b602082019050919050565b60006020820190508181036000830152614db581614d79565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614df6826147dd565b9150614e01836147dd565b9250828202614e0f816147dd565b91508282048414831517614e2657614e25614dbc565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614e67826147dd565b9150614e72836147dd565b925082614e8257614e81614e2d565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614ee9602f8361484b565b9150614ef482614e8d565b604082019050919050565b60006020820190508181036000830152614f1881614edc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614f6657607f821691505b602082108103614f7957614f78614f1f565b5b50919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614fdb60248361484b565b9150614fe682614f7f565b604082019050919050565b6000602082019050818103600083015261500a81614fce565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061506d60288361484b565b915061507882615011565b604082019050919050565b6000602082019050818103600083015261509c81615060565b9050919050565b60006150ae826147dd565b91506150b9836147dd565b92508282019050808211156150d1576150d0614dbc565b5b92915050565b7f546f6b656e206c61756e63686564000000000000000000000000000000000000600082015250565b600061510d600e8361484b565b9150615118826150d7565b602082019050919050565b6000602082019050818103600083015261513c81615100565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061517d826147dd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036151af576151ae614dbc565b5b600182019050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061521660398361484b565b9150615221826151ba565b604082019050919050565b6000602082019050818103600083015261524581615209565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006152a860258361484b565b91506152b38261524c565b604082019050919050565b600060208201905081810360008301526152d78161529b565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061533a60358361484b565b9150615345826152de565b604082019050919050565b600060208201905081810360008301526153698161532d565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006153cc60348361484b565b91506153d782615370565b604082019050919050565b600060208201905081810360008301526153fb816153bf565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061545e60268361484b565b915061546982615402565b604082019050919050565b6000602082019050818103600083015261548d81615451565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006154f060248361484b565b91506154fb82615494565b604082019050919050565b6000602082019050818103600083015261551f816154e3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061558260228361484b565b915061558d82615526565b604082019050919050565b600060208201905081810360008301526155b181615575565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061561460258361484b565b915061561f826155b8565b604082019050919050565b6000602082019050818103600083015261564381615607565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006156a660238361484b565b91506156b18261564a565b604082019050919050565b600060208201905081810360008301526156d581615699565b9050919050565b7f536e6970657220626c6f636b6564000000000000000000000000000000000000600082015250565b6000615712600e8361484b565b915061571d826156dc565b602082019050919050565b6000602082019050818103600083015261574181615705565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061577e60168361484b565b915061578982615748565b602082019050919050565b600060208201905081810360008301526157ad81615771565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061583660498361484b565b9150615841826157b4565b606082019050919050565b6000602082019050818103600083015261586581615829565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006158c860358361484b565b91506158d38261586c565b604082019050919050565b600060208201905081810360008301526158f7816158bb565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061593460138361484b565b915061593f826158fe565b602082019050919050565b6000602082019050818103600083015261596381615927565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006159c660368361484b565b91506159d18261596a565b604082019050919050565b600060208201905081810360008301526159f5816159b9565b9050919050565b6000615a07826147dd565b9150615a12836147dd565b9250828203905081811115615a2a57615a29614dbc565b5b92915050565b6000819050919050565b6000615a55615a50615a4b84615a30565b614a1d565b6147dd565b9050919050565b615a6581615a3a565b82525050565b600060c082019050615a806000830189614aea565b615a8d602083018861497d565b615a9a6040830187615a5c565b615aa76060830186615a5c565b615ab46080830185614aea565b615ac160a083018461497d565b979650505050505050565b600081519050615adb816147e7565b92915050565b600080600060608486031215615afa57615af96147d3565b5b6000615b0886828701615acc565b9350506020615b1986828701615acc565b9250506040615b2a86828701615acc565b9150509250925092565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615b9060268361484b565b9150615b9b82615b34565b604082019050919050565b60006020820190508181036000830152615bbf81615b83565b9050919050565b600081905092915050565b50565b6000615be1600083615bc6565b9150615bec82615bd1565b600082019050919050565b6000615c0282615bd4565b9150819050919050565b6000606082019050615c21600083018661497d565b615c2e602083018561497d565b615c3b604083018461497d565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050615c8181614924565b92915050565b600060208284031215615c9d57615c9c6147d3565b5b6000615cab84828501615c72565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615ce981614912565b82525050565b6000615cfb8383615ce0565b60208301905092915050565b6000602082019050919050565b6000615d1f82615cb4565b615d298185615cbf565b9350615d3483615cd0565b8060005b83811015615d65578151615d4c8882615cef565b9750615d5783615d07565b925050600181019050615d38565b5085935050505092915050565b600060a082019050615d87600083018861497d565b615d946020830187615a5c565b8181036040830152615da68186615d14565b9050615db56060830185614aea565b615dc2608083018461497d565b969550505050505056fea2646970667358221220081535c3e1c18b31080f09522a3abef2d9b2a606348918597dd5589999ef5d7f64736f6c63430008110033
Deployed Bytecode
0x6080604052600436106103d25760003560e01c8063751039fc116101fd578063b99d357511610118578063dd62ed3e116100ab578063e884f2601161007a578063e884f26014610e86578063f11a24d314610eb1578063f2fde38b14610edc578063f637434214610f05578063f8b45b0514610f30576103d9565b8063dd62ed3e14610db8578063e2f4560514610df5578063e596219514610e20578063e7ad9fcd14610e5d576103d9565b8063c8c8ebe4116100e7578063c8c8ebe414610cfa578063d257b34f14610d25578063d5dd9b1714610d62578063d85ba06314610d8d576103d9565b8063b99d357514610c50578063bbc0c74214610c7b578063c024666814610ca6578063c876d0b914610ccf576103d9565b806395d89b4111610190578063a0d82dc51161015f578063a0d82dc514610b6e578063a457c2d714610b99578063a9059cbb14610bd6578063b62496f514610c13576103d9565b806395d89b4114610ac45780639a7a23d614610aef5780639c3b4fdc14610b185780639fccce3214610b43576103d9565b80638da5cb5b116101cc5780638da5cb5b14610a1c5780638ea5220f14610a47578063924de9b714610a7257806394e05c6d14610a9b576103d9565b8063751039fc146109745780637571336a1461099f57806378dd7d41146109c857806382aa7c68146109f3576103d9565b806339509351116102ed578063659ffb9c1161028057806370a082311161024f57806370a08231146108ce578063715018a61461090b57806373dd858c14610922578063742b74af1461094b576103d9565b8063659ffb9c1461082257806368db925a1461084d5780636a486a8e146108785780636ddd1713146108a3576103d9565b80634a62bb65116102bc5780634a62bb65146107645780634ec39ba91461078f5780634fbee193146107ba578063534c0906146107f7576103d9565b806339509351146106ba57806340c5f4b3146106f757806345c06d481461072257806349bd5a5e14610739576103d9565b80631816467f1161036557806323b872dd1161033457806323b872dd146105fe57806327c8f8351461063b5780632e6ed7ef14610666578063313ce5671461068f576103d9565b80631816467f146105565780631a8145bb1461057f5780631c499ab0146105aa5780631f3fed8f146105d3576103d9565b8063095ea7b3116103a1578063095ea7b31461048657806310d5de53146104c35780631694505e1461050057806318160ddd1461052b576103d9565b80630517d13d146103de57806306fdde031461040757806307facf8a1461043257806308cd33e11461045b576103d9565b366103d957005b600080fd5b3480156103ea57600080fd5b5061040560048036038101906104009190614813565b610f5b565b005b34801561041357600080fd5b5061041c61106a565b60405161042991906148d0565b60405180910390f35b34801561043e57600080fd5b5061045960048036038101906104549190614950565b6110fc565b005b34801561046757600080fd5b50610470611238565b60405161047d919061498c565b60405180910390f35b34801561049257600080fd5b506104ad60048036038101906104a891906149a7565b61123e565b6040516104ba9190614a02565b60405180910390f35b3480156104cf57600080fd5b506104ea60048036038101906104e59190614950565b61125c565b6040516104f79190614a02565b60405180910390f35b34801561050c57600080fd5b5061051561127c565b6040516105229190614a7c565b60405180910390f35b34801561053757600080fd5b506105406112a0565b60405161054d919061498c565b60405180910390f35b34801561056257600080fd5b5061057d60048036038101906105789190614950565b6112aa565b005b34801561058b57600080fd5b506105946113e6565b6040516105a1919061498c565b60405180910390f35b3480156105b657600080fd5b506105d160048036038101906105cc9190614813565b6113ec565b005b3480156105df57600080fd5b506105e86114fb565b6040516105f5919061498c565b60405180910390f35b34801561060a57600080fd5b5061062560048036038101906106209190614a97565b611501565b6040516106329190614a02565b60405180910390f35b34801561064757600080fd5b506106506115f9565b60405161065d9190614af9565b60405180910390f35b34801561067257600080fd5b5061068d60048036038101906106889190614b14565b6115ff565b005b34801561069b57600080fd5b506106a46116dd565b6040516106b19190614b97565b60405180910390f35b3480156106c657600080fd5b506106e160048036038101906106dc91906149a7565b6116e6565b6040516106ee9190614a02565b60405180910390f35b34801561070357600080fd5b5061070c611792565b604051610719919061498c565b60405180910390f35b34801561072e57600080fd5b50610737611798565b005b34801561074557600080fd5b5061074e611878565b60405161075b9190614af9565b60405180910390f35b34801561077057600080fd5b5061077961189c565b6040516107869190614a02565b60405180910390f35b34801561079b57600080fd5b506107a46118af565b6040516107b19190614af9565b60405180910390f35b3480156107c657600080fd5b506107e160048036038101906107dc9190614950565b6118d5565b6040516107ee9190614a02565b60405180910390f35b34801561080357600080fd5b5061080c61192b565b6040516108199190614af9565b60405180910390f35b34801561082e57600080fd5b50610837611951565b604051610844919061498c565b60405180910390f35b34801561085957600080fd5b50610862611957565b60405161086f9190614af9565b60405180910390f35b34801561088457600080fd5b5061088d61197d565b60405161089a919061498c565b60405180910390f35b3480156108af57600080fd5b506108b8611983565b6040516108c59190614a02565b60405180910390f35b3480156108da57600080fd5b506108f560048036038101906108f09190614950565b611996565b604051610902919061498c565b60405180910390f35b34801561091757600080fd5b506109206119de565b005b34801561092e57600080fd5b5061094960048036038101906109449190614950565b611a66565b005b34801561095757600080fd5b50610972600480360381019061096d9190614c43565b611ba2565b005b34801561098057600080fd5b50610989611db1565b6040516109969190614a02565b60405180910390f35b3480156109ab57600080fd5b506109c660048036038101906109c19190614ca3565b611e51565b005b3480156109d457600080fd5b506109dd611f28565b6040516109ea919061498c565b60405180910390f35b3480156109ff57600080fd5b50610a1a6004803603810190610a159190614813565b611f2e565b005b348015610a2857600080fd5b50610a31612041565b604051610a3e9190614af9565b60405180910390f35b348015610a5357600080fd5b50610a5c61206b565b604051610a699190614af9565b60405180910390f35b348015610a7e57600080fd5b50610a996004803603810190610a949190614ce3565b612091565b005b348015610aa757600080fd5b50610ac26004803603810190610abd9190614950565b61212a565b005b348015610ad057600080fd5b50610ad9612266565b604051610ae691906148d0565b60405180910390f35b348015610afb57600080fd5b50610b166004803603810190610b119190614ca3565b6122f8565b005b348015610b2457600080fd5b50610b2d612410565b604051610b3a919061498c565b60405180910390f35b348015610b4f57600080fd5b50610b58612416565b604051610b65919061498c565b60405180910390f35b348015610b7a57600080fd5b50610b8361241c565b604051610b90919061498c565b60405180910390f35b348015610ba557600080fd5b50610bc06004803603810190610bbb91906149a7565b612422565b604051610bcd9190614a02565b60405180910390f35b348015610be257600080fd5b50610bfd6004803603810190610bf891906149a7565b61250d565b604051610c0a9190614a02565b60405180910390f35b348015610c1f57600080fd5b50610c3a6004803603810190610c359190614950565b61252b565b604051610c479190614a02565b60405180910390f35b348015610c5c57600080fd5b50610c6561254b565b604051610c729190614af9565b60405180910390f35b348015610c8757600080fd5b50610c90612571565b604051610c9d9190614a02565b60405180910390f35b348015610cb257600080fd5b50610ccd6004803603810190610cc89190614ca3565b612584565b005b348015610cdb57600080fd5b50610ce46126a9565b604051610cf19190614a02565b60405180910390f35b348015610d0657600080fd5b50610d0f6126bc565b604051610d1c919061498c565b60405180910390f35b348015610d3157600080fd5b50610d4c6004803603810190610d479190614813565b6126c2565b604051610d599190614a02565b60405180910390f35b348015610d6e57600080fd5b50610d77612817565b604051610d84919061498c565b60405180910390f35b348015610d9957600080fd5b50610da261281d565b604051610daf919061498c565b60405180910390f35b348015610dc457600080fd5b50610ddf6004803603810190610dda9190614d10565b612823565b604051610dec919061498c565b60405180910390f35b348015610e0157600080fd5b50610e0a6128aa565b604051610e17919061498c565b60405180910390f35b348015610e2c57600080fd5b50610e476004803603810190610e429190614950565b6128b0565b604051610e549190614a02565b60405180910390f35b348015610e6957600080fd5b50610e846004803603810190610e7f9190614b14565b6128d0565b005b348015610e9257600080fd5b50610e9b6129ae565b604051610ea89190614a02565b60405180910390f35b348015610ebd57600080fd5b50610ec6612a4e565b604051610ed3919061498c565b60405180910390f35b348015610ee857600080fd5b50610f036004803603810190610efe9190614950565b612a54565b005b348015610f1157600080fd5b50610f1a612b4b565b604051610f27919061498c565b60405180910390f35b348015610f3c57600080fd5b50610f45612b51565b604051610f52919061498c565b60405180910390f35b610f63612b57565b73ffffffffffffffffffffffffffffffffffffffff16610f81612041565b73ffffffffffffffffffffffffffffffffffffffff1614610fd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fce90614d9c565b60405180910390fd5b670de0b6b3a76400006103e86001610fed6112a0565b610ff79190614deb565b6110019190614e5c565b61100b9190614e5c565b81101561104d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104490614eff565b60405180910390fd5b670de0b6b3a7640000816110619190614deb565b600b8190555050565b60606003805461107990614f4e565b80601f01602080910402602001604051908101604052809291908181526020018280546110a590614f4e565b80156110f25780601f106110c7576101008083540402835291602001916110f2565b820191906000526020600020905b8154815290600101906020018083116110d557829003601f168201915b5050505050905090565b611104612b57565b73ffffffffffffffffffffffffffffffffffffffff16611122612041565b73ffffffffffffffffffffffffffffffffffffffff1614611178576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116f90614d9c565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fba8a74f87db3edea870277fd7964be772c6d9340ec078b2304f38ae1b9f0e5d260405160405180910390a380600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601a5481565b600061125261124b612b57565b8484612b5f565b6001905092915050565b60236020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b6112b2612b57565b73ffffffffffffffffffffffffffffffffffffffff166112d0612041565b73ffffffffffffffffffffffffffffffffffffffff1614611326576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131d90614d9c565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601f5481565b6113f4612b57565b73ffffffffffffffffffffffffffffffffffffffff16611412612041565b73ffffffffffffffffffffffffffffffffffffffff1614611468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145f90614d9c565b60405180910390fd5b670de0b6b3a76400006103e8600561147e6112a0565b6114889190614deb565b6114929190614e5c565b61149c9190614e5c565b8110156114de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d590614ff1565b60405180910390fd5b670de0b6b3a7640000816114f29190614deb565b600d8190555050565b601e5481565b600061150e848484612d28565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611559612b57565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156115d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d090615083565b60405180910390fd5b6115ed856115e5612b57565b858403612b5f565b60019150509392505050565b61dead81565b611607612b57565b73ffffffffffffffffffffffffffffffffffffffff16611625612041565b73ffffffffffffffffffffffffffffffffffffffff161461167b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167290614d9c565b60405180910390fd5b836015819055508260168190555081601781905550806018819055506018546017546016546015546116ad91906150a3565b6116b791906150a3565b6116c191906150a3565b601481905550606360145411156116d757600080fd5b50505050565b60006012905090565b60006117886116f3612b57565b848460016000611701612b57565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461178391906150a3565b612b5f565b6001905092915050565b60155481565b6117a0612b57565b73ffffffffffffffffffffffffffffffffffffffff166117be612041565b73ffffffffffffffffffffffffffffffffffffffff1614611814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180b90614d9c565b60405180910390fd5b600e60019054906101000a900460ff1615611864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185b90615123565b60405180910390fd5b61187661187030611996565b47613ca7565b565b7f000000000000000000000000b96bcf64f38ca2af402ed2343ce923b4c303de3681565b600e60009054906101000a900460ff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000602260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d5481565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b600e60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6119e6612b57565b73ffffffffffffffffffffffffffffffffffffffff16611a04612041565b73ffffffffffffffffffffffffffffffffffffffff1614611a5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5190614d9c565b60405180910390fd5b611a646000613da3565b565b611a6e612b57565b73ffffffffffffffffffffffffffffffffffffffff16611a8c612041565b73ffffffffffffffffffffffffffffffffffffffff1614611ae2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad990614d9c565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f0308c4544315dbf7c7c2fdbcdf1dd8a57df22fddf234ee3c941eefec5c2287ba60405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611baa612b57565b73ffffffffffffffffffffffffffffffffffffffff16611bc8612041565b73ffffffffffffffffffffffffffffffffffffffff1614611c1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1590614d9c565b60405180910390fd5b60005b83839050811015611dab576000848483818110611c4157611c40615143565b5b9050602002016020810190611c569190614950565b90503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015611ce25750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611d3a57507f000000000000000000000000b96bcf64f38ca2af402ed2343ce923b4c303de3673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15611d975782601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b508080611da390615172565b915050611c21565b50505050565b6000611dbb612b57565b73ffffffffffffffffffffffffffffffffffffffff16611dd9612041565b73ffffffffffffffffffffffffffffffffffffffff1614611e2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2690614d9c565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b611e59612b57565b73ffffffffffffffffffffffffffffffffffffffff16611e77612041565b73ffffffffffffffffffffffffffffffffffffffff1614611ecd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec490614d9c565b60405180910390fd5b80602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60185481565b611f36612b57565b73ffffffffffffffffffffffffffffffffffffffff16611f54612041565b73ffffffffffffffffffffffffffffffffffffffff1614611faa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa190614d9c565b60405180910390fd5b600e60019054906101000a900460ff1615611ffa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff190615123565b60405180910390fd5b6001600e60016101000a81548160ff021916908315150217905550436011819055506001600e60026101000a81548160ff0219169083151502179055508060128190555050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612099612b57565b73ffffffffffffffffffffffffffffffffffffffff166120b7612041565b73ffffffffffffffffffffffffffffffffffffffff161461210d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210490614d9c565b60405180910390fd5b80600e60026101000a81548160ff02191690831515021790555050565b612132612b57565b73ffffffffffffffffffffffffffffffffffffffff16612150612041565b73ffffffffffffffffffffffffffffffffffffffff16146121a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219d90614d9c565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fec7cda7e686602e5a5a3692a0e69c4dab0898191024ca21d04f2372c14dfa85e60405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606004805461227590614f4e565b80601f01602080910402602001604051908101604052809291908181526020018280546122a190614f4e565b80156122ee5780601f106122c3576101008083540402835291602001916122ee565b820191906000526020600020905b8154815290600101906020018083116122d157829003601f168201915b5050505050905090565b612300612b57565b73ffffffffffffffffffffffffffffffffffffffff1661231e612041565b73ffffffffffffffffffffffffffffffffffffffff1614612374576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236b90614d9c565b60405180910390fd5b7f000000000000000000000000b96bcf64f38ca2af402ed2343ce923b4c303de3673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612402576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f99061522c565b60405180910390fd5b61240c8282613e69565b5050565b60175481565b60205481565b601c5481565b60008060016000612431612b57565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156124ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e5906152be565b60405180910390fd5b6125026124f9612b57565b85858403612b5f565b600191505092915050565b600061252161251a612b57565b8484612d28565b6001905092915050565b60246020528060005260406000206000915054906101000a900460ff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e60019054906101000a900460ff1681565b61258c612b57565b73ffffffffffffffffffffffffffffffffffffffff166125aa612041565b73ffffffffffffffffffffffffffffffffffffffff1614612600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f790614d9c565b60405180910390fd5b80602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161269d9190614a02565b60405180910390a25050565b601060009054906101000a900460ff1681565b600b5481565b60006126cc612b57565b73ffffffffffffffffffffffffffffffffffffffff166126ea612041565b73ffffffffffffffffffffffffffffffffffffffff1614612740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273790614d9c565b60405180910390fd5b620186a0600161274e6112a0565b6127589190614deb565b6127629190614e5c565b8210156127a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279b90615350565b60405180910390fd5b6103e860056127b16112a0565b6127bb9190614deb565b6127c59190614e5c565b821115612807576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127fe906153e2565b60405180910390fd5b81600c8190555060019050919050565b60215481565b60145481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600c5481565b60136020528060005260406000206000915054906101000a900460ff1681565b6128d8612b57565b73ffffffffffffffffffffffffffffffffffffffff166128f6612041565b73ffffffffffffffffffffffffffffffffffffffff161461294c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294390614d9c565b60405180910390fd5b83601a8190555082601b8190555081601c8190555080601d81905550601d54601c54601b54601a5461297e91906150a3565b61298891906150a3565b61299291906150a3565b601981905550606360195411156129a857600080fd5b50505050565b60006129b8612b57565b73ffffffffffffffffffffffffffffffffffffffff166129d6612041565b73ffffffffffffffffffffffffffffffffffffffff1614612a2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2390614d9c565b60405180910390fd5b6000601060006101000a81548160ff0219169083151502179055506001905090565b60165481565b612a5c612b57565b73ffffffffffffffffffffffffffffffffffffffff16612a7a612041565b73ffffffffffffffffffffffffffffffffffffffff1614612ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac790614d9c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3690615474565b60405180910390fd5b612b4881613da3565b50565b601b5481565b600d5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc590615506565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3490615598565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612d1b919061498c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d8e9061562a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dfd906156bc565b60405180910390fd5b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e8a90615728565b60405180910390fd5b60008103612eac57612ea783836000613f0a565b613ca2565b600e60009054906101000a900460ff161561376457612ec9612041565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612f375750612f07612041565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612f705750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612faa575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612fc35750600660149054906101000a900460ff16155b1561376357600e60019054906101000a900460ff166130bd57602260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061307d5750602260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6130bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130b390615794565b60405180910390fd5b5b6012546011546130cd91906150a3565b431115801561312757507f000000000000000000000000b96bcf64f38ca2af402ed2343ce923b4c303de3673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80156131815750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156131b957503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561321157507f000000000000000000000000b96bcf64f38ca2af402ed2343ce923b4c303de3673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156132b2576001601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fb90badc1cf1c52268f4fa9afb5276aebf640bcca3300cdfc9cf37db17daa13e260405160405180910390a25b601060009054906101000a900460ff161561347a576132cf612041565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561335657507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156133ae57507f000000000000000000000000b96bcf64f38ca2af402ed2343ce923b4c303de3673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156134795743600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410613434576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161342b9061584c565b60405180910390fd5b43600f60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561351d5750602360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156135c457600b54811115613567576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161355e906158de565b60405180910390fd5b600d5461357383611996565b8261357e91906150a3565b11156135bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135b69061594a565b60405180910390fd5b613762565b602460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156136675750602360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156136b657600b548111156136b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136a8906159dc565b60405180910390fd5b613761565b602360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661376057600d5461371383611996565b8261371e91906150a3565b111561375f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137569061594a565b60405180910390fd5b5b5b5b5b5b600061376f30611996565b90506000600c5482101590508080156137945750600e60029054906101000a900460ff165b80156137ad5750600660149054906101000a900460ff16155b80156138035750602460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138595750602260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138af5750602260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156138f3576001600660146101000a81548160ff0219169083151502179055506138d7614189565b6000600660146101000a81548160ff0219169083151502179055505b6000600660149054906101000a900460ff16159050602260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139a95750602260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156139b357600090505b60008115613c9257602460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613a1657506000601954115b15613b1657613a436064613a356019548861454a90919063ffffffff16565b61456090919063ffffffff16565b9050601954601b5482613a569190614deb565b613a609190614e5c565b601f6000828254613a7191906150a3565b92505081905550601954601c5482613a899190614deb565b613a939190614e5c565b60206000828254613aa491906150a3565b92505081905550601954601a5482613abc9190614deb565b613ac69190614e5c565b601e6000828254613ad791906150a3565b92505081905550601954601d5482613aef9190614deb565b613af99190614e5c565b60216000828254613b0a91906150a3565b92505081905550613c6e565b602460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613b7157506000601454115b15613c6d57613b9e6064613b906014548861454a90919063ffffffff16565b61456090919063ffffffff16565b905060145460165482613bb19190614deb565b613bbb9190614e5c565b601f6000828254613bcc91906150a3565b9250508190555060145460175482613be49190614deb565b613bee9190614e5c565b60206000828254613bff91906150a3565b9250508190555060145460155482613c179190614deb565b613c219190614e5c565b601e6000828254613c3291906150a3565b9250508190555060145460185482613c4a9190614deb565b613c549190614e5c565b60216000828254613c6591906150a3565b925050819055505b5b6000811115613c8357613c82873083613f0a565b5b8085613c8f91906159fc565b94505b613c9d878787613f0a565b505050505b505050565b613cd2307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612b5f565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613d5996959493929190615a6b565b60606040518083038185885af1158015613d77573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613d9c9190615ae1565b5050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80602460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613f79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f709061562a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613fe8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613fdf906156bc565b60405180910390fd5b613ff3838383614576565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015614079576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161407090615ba6565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461410c91906150a3565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051614170919061498c565b60405180910390a361418384848461457b565b50505050565b600061419430611996565b90506000602154602054601e54601f546141ae91906150a3565b6141b891906150a3565b6141c291906150a3565b90506000808314806141d45750600082145b156141e157505050614548565b6014600c546141f09190614deb565b831115614209576014600c546142069190614deb565b92505b6000600283601f548661421c9190614deb565b6142269190614e5c565b6142309190614e5c565b90506000614247828661458090919063ffffffff16565b9050600047905061425782614596565b600061426c824761458090919063ffffffff16565b9050600061429787614289601e548561454a90919063ffffffff16565b61456090919063ffffffff16565b905060006142c2886142b46020548661454a90919063ffffffff16565b61456090919063ffffffff16565b905060006142ed896142df6021548761454a90919063ffffffff16565b61456090919063ffffffff16565b90506000818385876142ff91906159fc565b61430991906159fc565b61431391906159fc565b90506000601f819055506000601e8190555060006020819055506000602181905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161437b90615bf7565b60006040518083038185875af1925050503d80600081146143b8576040519150601f19603f3d011682016040523d82523d6000602084013e6143bd565b606091505b5050809950506000881180156143d35750600081115b15614420576143e28882613ca7565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618782601f5460405161441793929190615c0c565b60405180910390a15b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161446690615bf7565b60006040518083038185875af1925050503d80600081146144a3576040519150601f19603f3d011682016040523d82523d6000602084013e6144a8565b606091505b505080995050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516144f490615bf7565b60006040518083038185875af1925050503d8060008114614531576040519150601f19603f3d011682016040523d82523d6000602084013e614536565b606091505b50508099505050505050505050505050505b565b600081836145589190614deb565b905092915050565b6000818361456e9190614e5c565b905092915050565b505050565b505050565b6000818361458e91906159fc565b905092915050565b6000600267ffffffffffffffff8111156145b3576145b2615c43565b5b6040519080825280602002602001820160405280156145e15781602001602082028036833780820191505090505b50905030816000815181106145f9576145f8615143565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561469e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146c29190615c87565b816001815181106146d6576146d5615143565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061473b307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612b5f565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161479d959493929190615d72565b600060405180830381600087803b1580156147b757600080fd5b505af11580156147cb573d6000803e3d6000fd5b505050505050565b600080fd5b600080fd5b6000819050919050565b6147f0816147dd565b81146147fb57600080fd5b50565b60008135905061480d816147e7565b92915050565b600060208284031215614829576148286147d3565b5b6000614837848285016147fe565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561487a57808201518184015260208101905061485f565b60008484015250505050565b6000601f19601f8301169050919050565b60006148a282614840565b6148ac818561484b565b93506148bc81856020860161485c565b6148c581614886565b840191505092915050565b600060208201905081810360008301526148ea8184614897565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061491d826148f2565b9050919050565b61492d81614912565b811461493857600080fd5b50565b60008135905061494a81614924565b92915050565b600060208284031215614966576149656147d3565b5b60006149748482850161493b565b91505092915050565b614986816147dd565b82525050565b60006020820190506149a1600083018461497d565b92915050565b600080604083850312156149be576149bd6147d3565b5b60006149cc8582860161493b565b92505060206149dd858286016147fe565b9150509250929050565b60008115159050919050565b6149fc816149e7565b82525050565b6000602082019050614a1760008301846149f3565b92915050565b6000819050919050565b6000614a42614a3d614a38846148f2565b614a1d565b6148f2565b9050919050565b6000614a5482614a27565b9050919050565b6000614a6682614a49565b9050919050565b614a7681614a5b565b82525050565b6000602082019050614a916000830184614a6d565b92915050565b600080600060608486031215614ab057614aaf6147d3565b5b6000614abe8682870161493b565b9350506020614acf8682870161493b565b9250506040614ae0868287016147fe565b9150509250925092565b614af381614912565b82525050565b6000602082019050614b0e6000830184614aea565b92915050565b60008060008060808587031215614b2e57614b2d6147d3565b5b6000614b3c878288016147fe565b9450506020614b4d878288016147fe565b9350506040614b5e878288016147fe565b9250506060614b6f878288016147fe565b91505092959194509250565b600060ff82169050919050565b614b9181614b7b565b82525050565b6000602082019050614bac6000830184614b88565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112614bd757614bd6614bb2565b5b8235905067ffffffffffffffff811115614bf457614bf3614bb7565b5b602083019150836020820283011115614c1057614c0f614bbc565b5b9250929050565b614c20816149e7565b8114614c2b57600080fd5b50565b600081359050614c3d81614c17565b92915050565b600080600060408486031215614c5c57614c5b6147d3565b5b600084013567ffffffffffffffff811115614c7a57614c796147d8565b5b614c8686828701614bc1565b93509350506020614c9986828701614c2e565b9150509250925092565b60008060408385031215614cba57614cb96147d3565b5b6000614cc88582860161493b565b9250506020614cd985828601614c2e565b9150509250929050565b600060208284031215614cf957614cf86147d3565b5b6000614d0784828501614c2e565b91505092915050565b60008060408385031215614d2757614d266147d3565b5b6000614d358582860161493b565b9250506020614d468582860161493b565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614d8660208361484b565b9150614d9182614d50565b602082019050919050565b60006020820190508181036000830152614db581614d79565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614df6826147dd565b9150614e01836147dd565b9250828202614e0f816147dd565b91508282048414831517614e2657614e25614dbc565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614e67826147dd565b9150614e72836147dd565b925082614e8257614e81614e2d565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b6000614ee9602f8361484b565b9150614ef482614e8d565b604082019050919050565b60006020820190508181036000830152614f1881614edc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614f6657607f821691505b602082108103614f7957614f78614f1f565b5b50919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000614fdb60248361484b565b9150614fe682614f7f565b604082019050919050565b6000602082019050818103600083015261500a81614fce565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061506d60288361484b565b915061507882615011565b604082019050919050565b6000602082019050818103600083015261509c81615060565b9050919050565b60006150ae826147dd565b91506150b9836147dd565b92508282019050808211156150d1576150d0614dbc565b5b92915050565b7f546f6b656e206c61756e63686564000000000000000000000000000000000000600082015250565b600061510d600e8361484b565b9150615118826150d7565b602082019050919050565b6000602082019050818103600083015261513c81615100565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061517d826147dd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036151af576151ae614dbc565b5b600182019050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061521660398361484b565b9150615221826151ba565b604082019050919050565b6000602082019050818103600083015261524581615209565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006152a860258361484b565b91506152b38261524c565b604082019050919050565b600060208201905081810360008301526152d78161529b565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b600061533a60358361484b565b9150615345826152de565b604082019050919050565b600060208201905081810360008301526153698161532d565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006153cc60348361484b565b91506153d782615370565b604082019050919050565b600060208201905081810360008301526153fb816153bf565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061545e60268361484b565b915061546982615402565b604082019050919050565b6000602082019050818103600083015261548d81615451565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006154f060248361484b565b91506154fb82615494565b604082019050919050565b6000602082019050818103600083015261551f816154e3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061558260228361484b565b915061558d82615526565b604082019050919050565b600060208201905081810360008301526155b181615575565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061561460258361484b565b915061561f826155b8565b604082019050919050565b6000602082019050818103600083015261564381615607565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006156a660238361484b565b91506156b18261564a565b604082019050919050565b600060208201905081810360008301526156d581615699565b9050919050565b7f536e6970657220626c6f636b6564000000000000000000000000000000000000600082015250565b6000615712600e8361484b565b915061571d826156dc565b602082019050919050565b6000602082019050818103600083015261574181615705565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061577e60168361484b565b915061578982615748565b602082019050919050565b600060208201905081810360008301526157ad81615771565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061583660498361484b565b9150615841826157b4565b606082019050919050565b6000602082019050818103600083015261586581615829565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006158c860358361484b565b91506158d38261586c565b604082019050919050565b600060208201905081810360008301526158f7816158bb565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061593460138361484b565b915061593f826158fe565b602082019050919050565b6000602082019050818103600083015261596381615927565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b60006159c660368361484b565b91506159d18261596a565b604082019050919050565b600060208201905081810360008301526159f5816159b9565b9050919050565b6000615a07826147dd565b9150615a12836147dd565b9250828203905081811115615a2a57615a29614dbc565b5b92915050565b6000819050919050565b6000615a55615a50615a4b84615a30565b614a1d565b6147dd565b9050919050565b615a6581615a3a565b82525050565b600060c082019050615a806000830189614aea565b615a8d602083018861497d565b615a9a6040830187615a5c565b615aa76060830186615a5c565b615ab46080830185614aea565b615ac160a083018461497d565b979650505050505050565b600081519050615adb816147e7565b92915050565b600080600060608486031215615afa57615af96147d3565b5b6000615b0886828701615acc565b9350506020615b1986828701615acc565b9250506040615b2a86828701615acc565b9150509250925092565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000615b9060268361484b565b9150615b9b82615b34565b604082019050919050565b60006020820190508181036000830152615bbf81615b83565b9050919050565b600081905092915050565b50565b6000615be1600083615bc6565b9150615bec82615bd1565b600082019050919050565b6000615c0282615bd4565b9150819050919050565b6000606082019050615c21600083018661497d565b615c2e602083018561497d565b615c3b604083018461497d565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050615c8181614924565b92915050565b600060208284031215615c9d57615c9c6147d3565b5b6000615cab84828501615c72565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615ce981614912565b82525050565b6000615cfb8383615ce0565b60208301905092915050565b6000602082019050919050565b6000615d1f82615cb4565b615d298185615cbf565b9350615d3483615cd0565b8060005b83811015615d65578151615d4c8882615cef565b9750615d5783615d07565b925050600181019050615d38565b5085935050505092915050565b600060a082019050615d87600083018861497d565b615d946020830187615a5c565b8181036040830152615da68186615d14565b9050615db56060830185614aea565b615dc2608083018461497d565b969550505050505056fea2646970667358221220081535c3e1c18b31080f09522a3abef2d9b2a606348918597dd5589999ef5d7f64736f6c63430008110033
Deployed Bytecode Sourcemap
15132:18530:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21675:277;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2821:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24528:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16574:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3735:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16921:63;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15208:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3142:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24363:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16752:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21960:250;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16712:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3912:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15311:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22589:430;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3041:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4412:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16405:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20258:173;;;;;;;;;;;;;:::i;:::-;;15266:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15964:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15785:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24866:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15560:68;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16678:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15816:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16539:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16044:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3258:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;943:103;;;;;;;;;;;;;:::i;:::-;;24692:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30848:385;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20783:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22218:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16506:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20476:255;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;720:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15754:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22481:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24175:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2929:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23667:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16475:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16792:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16646:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4635:415;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3393:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16993:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15721:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16004:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23477:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16210:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15849:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21170:497;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16826:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16371;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3576:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15891:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16323:39;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23027:442;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20965:135;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16438:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1054:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16608:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15931:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21675:277;866:12;:10;:12::i;:::-;855:23;;:7;:5;:7::i;:::-;:23;;;847:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21814:4:::1;21806;21801:1;21785:13;:11;:13::i;:::-;:17;;;;:::i;:::-;21784:26;;;;:::i;:::-;21783:35;;;;:::i;:::-;21773:6;:45;;21751:142;;;;;;;;;;;;:::i;:::-;;;;;;;;;21937:6;21927;:17;;;;:::i;:::-;21904:20;:40;;;;21675:277:::0;:::o;2821:100::-;2875:13;2908:5;2901:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2821:100;:::o;24528:156::-;866:12;:10;:12::i;:::-;855:23;;:7;:5;:7::i;:::-;:23;;;847:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24634:9:::1;;;;;;;;;;;24606:38;;24623:9;24606:38;;;;;;;;;;;;24667:9;24655;;:21;;;;;;;;;;;;;;;;;;24528:156:::0;:::o;16574:27::-;;;;:::o;3735:169::-;3818:4;3835:39;3844:12;:10;:12::i;:::-;3858:7;3867:6;3835:8;:39::i;:::-;3892:4;3885:11;;3735:169;;;;:::o;16921:63::-;;;;;;;;;;;;;;;;;;;;;;:::o;15208:51::-;;;:::o;3142:108::-;3203:7;3230:12;;3223:19;;3142:108;:::o;24363:157::-;866:12;:10;:12::i;:::-;855:23;;:7;:5;:7::i;:::-;:23;;;847:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24470:9:::1;;;;;;;;;;;24442:38;;24459:9;24442:38;;;;;;;;;;;;24503:9;24491;;:21;;;;;;;;;;;;;;;;;;24363:157:::0;:::o;16752:33::-;;;;:::o;21960:250::-;866:12;:10;:12::i;:::-;855:23;;:7;:5;:7::i;:::-;:23;;;847:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22094:4:::1;22086;22081:1;22065:13;:11;:13::i;:::-;:17;;;;:::i;:::-;22064:26;;;;:::i;:::-;22063:35;;;;:::i;:::-;22053:6;:45;;22031:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;22195:6;22185;:17;;;;:::i;:::-;22173:9;:29;;;;21960:250:::0;:::o;16712:33::-;;;;:::o;3912:492::-;4052:4;4069:36;4079:6;4087:9;4098:6;4069:9;:36::i;:::-;4118:24;4145:11;:19;4157:6;4145:19;;;;;;;;;;;;;;;:33;4165:12;:10;:12::i;:::-;4145:33;;;;;;;;;;;;;;;;4118:60;;4217:6;4197:16;:26;;4189:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4304:57;4313:6;4321:12;:10;:12::i;:::-;4354:6;4335:16;:25;4304:8;:57::i;:::-;4392:4;4385:11;;;3912:492;;;;;:::o;15311:53::-;15357:6;15311:53;:::o;22589:430::-;866:12;:10;:12::i;:::-;855:23;;:7;:5;:7::i;:::-;:23;;;847:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22779:13:::1;22765:11;:27;;;;22821:13;22803:15;:31;;;;22857:7;22845:9;:19;;;;22887:7;22875:9;:19;;;;22964:9;;22952;;22934:15;;22920:11;;:29;;;;:::i;:::-;:41;;;;:::i;:::-;:53;;;;:::i;:::-;22905:12;:68;;;;23008:2;22992:12;;:18;;22984:27;;;::::0;::::1;;22589:430:::0;;;;:::o;3041:93::-;3099:5;3124:2;3117:9;;3041:93;:::o;4412:215::-;4500:4;4517:80;4526:12;:10;:12::i;:::-;4540:7;4586:10;4549:11;:25;4561:12;:10;:12::i;:::-;4549:25;;;;;;;;;;;;;;;:34;4575:7;4549:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4517:8;:80::i;:::-;4615:4;4608:11;;4412:215;;;;:::o;16405:26::-;;;;:::o;20258:173::-;866:12;:10;:12::i;:::-;855:23;;:7;:5;:7::i;:::-;:23;;;847:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20320:13:::1;;;;;;;;;;;20319:14;20311:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;20362:61;20375:24;20393:4;20375:9;:24::i;:::-;20401:21;20362:12;:61::i;:::-;20258:173::o:0;15266:38::-;;;:::o;15964:33::-;;;;;;;;;;;;;:::o;15785:24::-;;;;;;;;;;;;;:::o;24866:126::-;24932:4;24956:19;:28;24976:7;24956:28;;;;;;;;;;;;;;;;;;;;;;;;;24949:35;;24866:126;;;:::o;15560:68::-;;;;;;;;;;;;;:::o;16678:25::-;;;;:::o;15816:24::-;;;;;;;;;;;;;:::o;16539:28::-;;;;:::o;16044:31::-;;;;;;;;;;;;;:::o;3258:127::-;3332:7;3359:9;:18;3369:7;3359:18;;;;;;;;;;;;;;;;3352:25;;3258:127;;;:::o;943:103::-;866:12;:10;:12::i;:::-;855:23;;:7;:5;:7::i;:::-;:23;;;847:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1008:30:::1;1035:1;1008:18;:30::i;:::-;943:103::o:0;24692:166::-;866:12;:10;:12::i;:::-;855:23;;:7;:5;:7::i;:::-;:23;;;847:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24805:9:::1;;;;;;;;;;;24774:41;;24791:12;24774:41;;;;;;;;;;;;24838:12;24826:9;;:24;;;;;;;;;;;;;;;;;;24692:166:::0;:::o;30848:385::-;866:12;:10;:12::i;:::-;855:23;;:7;:5;:7::i;:::-;:23;;;847:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30949:9:::1;30945:281;30965:8;;:15;;30963:1;:17;30945:281;;;31000:15;31018:8;;31027:1;31018:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;31000:29;;31066:4;31047:24;;:7;:24;;;;:64;;;;;31103:8;;;;;;;;;;;31092:19;;:7;:19;;;;31047:64;:118;;;;;31151:13;31132:33;;:7;:33;;;;31047:118;31044:170;;;31203:11;31184:7;:16;31192:7;31184:16;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;31044:170;30985:241;30981:3;;;;;:::i;:::-;;;;30945:281;;;;30848:385:::0;;;:::o;20783:121::-;20835:4;866:12;:10;:12::i;:::-;855:23;;:7;:5;:7::i;:::-;:23;;;847:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20869:5:::1;20852:14;;:22;;;;;;;;;;;;;;;;;;20892:4;20885:11;;20783:121:::0;:::o;22218:167::-;866:12;:10;:12::i;:::-;855:23;;:7;:5;:7::i;:::-;:23;;;847:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22373:4:::1;22331:31;:39;22363:6;22331:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;22218:167:::0;;:::o;16506:24::-;;;;:::o;20476:255::-;866:12;:10;:12::i;:::-;855:23;;:7;:5;:7::i;:::-;:23;;;847:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20559:13:::1;;;;;;;;;;;20558:14;20550:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;20618:4;20602:13;;:20;;;;;;;;;;;;;;;;;;20647:12;20633:11;:26;;;;20684:4;20670:11;;:18;;;;;;;;;;;;;;;;;;20712:11;20699:10;:24;;;;20476:255:::0;:::o;720:87::-;766:7;793:6;;;;;;;;;;;786:13;;720:87;:::o;15754:24::-;;;;;;;;;;;;;:::o;22481:100::-;866:12;:10;:12::i;:::-;855:23;;:7;:5;:7::i;:::-;:23;;;847:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22566:7:::1;22552:11;;:21;;;;;;;;;;;;;;;;;;22481:100:::0;:::o;24175:180::-;866:12;:10;:12::i;:::-;855:23;;:7;:5;:7::i;:::-;:23;;;847:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24296:11:::1;;;;;;;;;;;24261:47;;24280:14;24261:47;;;;;;;;;;;;24333:14;24319:11;;:28;;;;;;;;;;;;;;;;;;24175:180:::0;:::o;2929:104::-;2985:13;3018:7;3011:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2929:104;:::o;23667:304::-;866:12;:10;:12::i;:::-;855:23;;:7;:5;:7::i;:::-;:23;;;847:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23811:13:::1;23803:21;;:4;:21;;::::0;23781:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;23922:41;23951:4;23957:5;23922:28;:41::i;:::-;23667:304:::0;;:::o;16475:24::-;;;;:::o;16792:27::-;;;;:::o;16646:25::-;;;;:::o;4635:415::-;4728:4;4747:24;4774:11;:25;4786:12;:10;:12::i;:::-;4774:25;;;;;;;;;;;;;;;:34;4800:7;4774:34;;;;;;;;;;;;;;;;4747:61;;4847:15;4827:16;:35;;4819:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;4940:67;4949:12;:10;:12::i;:::-;4963:7;4991:15;4972:16;:34;4940:8;:67::i;:::-;5038:4;5031:11;;;4635:415;;;;:::o;3393:175::-;3479:4;3496:42;3506:12;:10;:12::i;:::-;3520:9;3531:6;3496:9;:42::i;:::-;3556:4;3549:11;;3393:175;;;;:::o;16993:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;15721:26::-;;;;;;;;;;;;;:::o;16004:33::-;;;;;;;;;;;;;:::o;23477:182::-;866:12;:10;:12::i;:::-;855:23;;:7;:5;:7::i;:::-;:23;;;847:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23593:8:::1;23562:19;:28;23582:7;23562:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;23633:7;23617:34;;;23642:8;23617:34;;;;;;:::i;:::-;;;;;;;;23477:182:::0;;:::o;16210:39::-;;;;;;;;;;;;;:::o;15849:35::-;;;;:::o;21170:497::-;21278:4;866:12;:10;:12::i;:::-;855:23;;:7;:5;:7::i;:::-;:23;;;847:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21357:6:::1;21352:1;21336:13;:11;:13::i;:::-;:17;;;;:::i;:::-;21335:28;;;;:::i;:::-;21322:9;:41;;21300:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;21512:4;21507:1;21491:13;:11;:13::i;:::-;:17;;;;:::i;:::-;21490:26;;;;:::i;:::-;21477:9;:39;;21455:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;21628:9;21607:18;:30;;;;21655:4;21648:11;;21170:497:::0;;;:::o;16826:27::-;;;;:::o;16371:::-;;;;:::o;3576:151::-;3665:7;3692:11;:18;3704:5;3692:18;;;;;;;;;;;;;;;:27;3711:7;3692:27;;;;;;;;;;;;;;;;3685:34;;3576:151;;;;:::o;15891:33::-;;;;:::o;16323:39::-;;;;;;;;;;;;;;;;;;;;;;:::o;23027:442::-;866:12;:10;:12::i;:::-;855:23;;:7;:5;:7::i;:::-;:23;;;847:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23219:13:::1;23204:12;:28;;;;23262:13;23243:16;:32;;;;23299:7;23286:10;:20;;;;23330:7;23317:10;:20;;;;23411:10;;23398;;23379:16;;23364:12;;:31;;;;:::i;:::-;:44;;;;:::i;:::-;:57;;;;:::i;:::-;23348:13;:73;;;;23457:2;23440:13;;:19;;23432:28;;;::::0;::::1;;23027:442:::0;;;;:::o;20965:135::-;21025:4;866:12;:10;:12::i;:::-;855:23;;:7;:5;:7::i;:::-;:23;;;847:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21065:5:::1;21042:20;;:28;;;;;;;;;;;;;;;;;;21088:4;21081:11;;20965:135:::0;:::o;16438:30::-;;;;:::o;1054:201::-;866:12;:10;:12::i;:::-;855:23;;:7;:5;:7::i;:::-;:23;;;847:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1163:1:::1;1143:22;;:8;:22;;::::0;1135:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1219:28;1238:8;1219:18;:28::i;:::-;1054:201:::0;:::o;16608:31::-;;;;:::o;15931:24::-;;;;:::o;266:98::-;319:7;346:10;339:17;;266:98;:::o;6811:380::-;6964:1;6947:19;;:5;:19;;;6939:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7045:1;7026:21;;:7;:21;;;7018:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7129:6;7099:11;:18;7111:5;7099:18;;;;;;;;;;;;;;;:27;7118:7;7099:27;;;;;;;;;;;;;;;:36;;;;7167:7;7151:32;;7160:5;7151:32;;;7176:6;7151:32;;;;;;:::i;:::-;;;;;;;;6811:380;;;:::o;25050:5193::-;25198:1;25182:18;;:4;:18;;;25174:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25275:1;25261:16;;:2;:16;;;25253:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;25337:7;:13;25345:4;25337:13;;;;;;;;;;;;;;;;;;;;;;;;;25336:14;25328:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;25396:1;25386:6;:11;25382:93;;25414:28;25430:4;25436:2;25440:1;25414:15;:28::i;:::-;25457:7;;25382:93;25491:14;;;;;;;;;;;25487:2781;;;25552:7;:5;:7::i;:::-;25544:15;;:4;:15;;;;:49;;;;;25586:7;:5;:7::i;:::-;25580:13;;:2;:13;;;;25544:49;:86;;;;;25628:1;25614:16;;:2;:16;;;;25544:86;:128;;;;;25665:6;25651:21;;:2;:21;;;;25544:128;:158;;;;;25694:8;;;;;;;;;;;25693:9;25544:158;25522:2735;;;25742:13;;;;;;;;;;;25737:223;;25814:19;:25;25834:4;25814:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;25843:19;:23;25863:2;25843:23;;;;;;;;;;;;;;;;;;;;;;;;;25814:52;25780:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;25737:223;26013:10;;25999:11;;:24;;;;:::i;:::-;25983:12;:40;;:74;;;;;26043:13;26027:30;;:4;:30;;;25983:74;:111;;;;;26086:8;;;;;;;;;;;26080:14;;:2;:14;;;;25983:111;:134;;;;;26112:4;26098:19;;:2;:19;;;;25983:134;:166;;;;;26135:13;26121:28;;:2;:28;;;;25983:166;25980:274;;;26187:4;26173:7;:11;26181:2;26173:11;;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;26231:2;26219:15;;;;;;;;;;;;25980:274;26410:20;;;;;;;;;;;26406:641;;;26491:7;:5;:7::i;:::-;26485:13;;:2;:13;;;;:72;;;;;26541:15;26527:30;;:2;:30;;;;26485:72;:129;;;;;26600:13;26586:28;;:2;:28;;;;26485:129;26455:573;;;26778:12;26703:28;:39;26732:9;26703:39;;;;;;;;;;;;;;;;:87;26665:258;;;;;;;;;;;;:::i;:::-;;;;;;;;;26992:12;26950:28;:39;26979:9;26950:39;;;;;;;;;;;;;;;:54;;;;26455:573;26406:641;27121:25;:31;27147:4;27121:31;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;27178:31;:35;27210:2;27178:35;;;;;;;;;;;;;;;;;;;;;;;;;27177:36;27121:92;27095:1147;;;27300:20;;27290:6;:30;;27256:169;;;;;;;;;;;;:::i;:::-;;;;;;;;;27508:9;;27491:13;27501:2;27491:9;:13::i;:::-;27482:6;:22;;;;:::i;:::-;:35;;27448:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;27095:1147;;;27686:25;:29;27712:2;27686:29;;;;;;;;;;;;;;;;;;;;;;;;;:92;;;;;27741:31;:37;27773:4;27741:37;;;;;;;;;;;;;;;;;;;;;;;;;27740:38;27686:92;27660:582;;;27865:20;;27855:6;:30;;27821:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;27660:582;;;28022:31;:35;28054:2;28022:35;;;;;;;;;;;;;;;;;;;;;;;;;28017:225;;28142:9;;28125:13;28135:2;28125:9;:13::i;:::-;28116:6;:22;;;;:::i;:::-;:35;;28082:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;28017:225;27660:582;27095:1147;25522:2735;25487:2781;28280:28;28311:24;28329:4;28311:9;:24::i;:::-;28280:55;;28348:12;28387:18;;28363:20;:42;;28348:57;;28436:7;:35;;;;;28460:11;;;;;;;;;;;28436:35;:61;;;;;28489:8;;;;;;;;;;;28488:9;28436:61;:110;;;;;28515:25;:31;28541:4;28515:31;;;;;;;;;;;;;;;;;;;;;;;;;28514:32;28436:110;:153;;;;;28564:19;:25;28584:4;28564:25;;;;;;;;;;;;;;;;;;;;;;;;;28563:26;28436:153;:194;;;;;28607:19;:23;28627:2;28607:23;;;;;;;;;;;;;;;;;;;;;;;;;28606:24;28436:194;28418:326;;;28668:4;28657:8;;:15;;;;;;;;;;;;;;;;;;28689:10;:8;:10::i;:::-;28727:5;28716:8;;:16;;;;;;;;;;;;;;;;;;28418:326;28756:12;28772:8;;;;;;;;;;;28771:9;28756:24;;28882:19;:25;28902:4;28882:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;28911:19;:23;28931:2;28911:23;;;;;;;;;;;;;;;;;;;;;;;;;28882:52;28878:100;;;28961:5;28951:15;;28878:100;28990:12;29095:7;29091:1099;;;29147:25;:29;29173:2;29147:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;29196:1;29180:13;;:17;29147:50;29143:898;;;29225:34;29255:3;29225:25;29236:13;;29225:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;29218:41;;29328:13;;29308:16;;29301:4;:23;;;;:::i;:::-;29300:41;;;;:::i;:::-;29278:18;;:63;;;;;;;:::i;:::-;;;;;;;;29398:13;;29384:10;;29377:4;:17;;;;:::i;:::-;29376:35;;;;:::i;:::-;29360:12;;:51;;;;;;;:::i;:::-;;;;;;;;29476:13;;29460:12;;29453:4;:19;;;;:::i;:::-;29452:37;;;;:::i;:::-;29430:18;;:59;;;;;;;:::i;:::-;;;;;;;;29546:13;;29532:10;;29525:4;:17;;;;:::i;:::-;29524:35;;;;:::i;:::-;29508:12;;:51;;;;;;;:::i;:::-;;;;;;;;29143:898;;;29621:25;:31;29647:4;29621:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;29671:1;29656:12;;:16;29621:51;29617:424;;;29700:33;29729:3;29700:24;29711:12;;29700:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;29693:40;;29801:12;;29782:15;;29775:4;:22;;;;:::i;:::-;29774:39;;;;:::i;:::-;29752:18;;:61;;;;;;;:::i;:::-;;;;;;;;29869:12;;29856:9;;29849:4;:16;;;;:::i;:::-;29848:33;;;;:::i;:::-;29832:12;;:49;;;;;;;:::i;:::-;;;;;;;;29945:12;;29930:11;;29923:4;:18;;;;:::i;:::-;29922:35;;;;:::i;:::-;29900:18;;:57;;;;;;;:::i;:::-;;;;;;;;30013:12;;30000:9;;29993:4;:16;;;;:::i;:::-;29992:33;;;;:::i;:::-;29976:12;;:49;;;;;;;:::i;:::-;;;;;;;;29617:424;29143:898;30068:1;30061:4;:8;30057:91;;;30090:42;30106:4;30120;30127;30090:15;:42::i;:::-;30057:91;30174:4;30164:14;;;;;:::i;:::-;;;29091:1099;30202:33;30218:4;30224:2;30228:6;30202:15;:33::i;:::-;25163:5080;;;;25050:5193;;;;:::o;31241:515::-;31389:62;31406:4;31421:15;31439:11;31389:8;:62::i;:::-;31494:15;:31;;;31533:9;31566:4;31586:11;31612:1;31655;31698:9;;;;;;;;;;;31722:15;31494:254;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;31241:515;;:::o;1263:191::-;1337:16;1356:6;;;;;;;;;;;1337:25;;1382:8;1373:6;;:17;;;;;;;;;;;;;;;;;;1437:8;1406:40;;1427:8;1406:40;;;;;;;;;;;;1326:128;1263:191;:::o;23979:188::-;24096:5;24062:25;:31;24088:4;24062:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;24153:5;24119:40;;24147:4;24119:40;;;;;;;;;;;;23979:188;;:::o;5064:733::-;5222:1;5204:20;;:6;:20;;;5196:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5306:1;5285:23;;:9;:23;;;5277:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5361:47;5382:6;5390:9;5401:6;5361:20;:47::i;:::-;5421:21;5445:9;:17;5455:6;5445:17;;;;;;;;;;;;;;;;5421:41;;5498:6;5481:13;:23;;5473:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5619:6;5603:13;:22;5583:9;:17;5593:6;5583:17;;;;;;;;;;;;;;;:42;;;;5671:6;5647:9;:20;5657:9;5647:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5712:9;5695:35;;5704:6;5695:35;;;5723:6;5695:35;;;;;;:::i;:::-;;;;;;;;5743:46;5763:6;5771:9;5782:6;5743:19;:46::i;:::-;5185:612;5064:733;;;:::o;31764:1895::-;31803:23;31829:24;31847:4;31829:9;:24::i;:::-;31803:50;;31864:25;31988:12;;31960;;31926:18;;31892;;:52;;;;:::i;:::-;:80;;;;:::i;:::-;:108;;;;:::i;:::-;31864:136;;32011:12;32059:1;32040:15;:20;:46;;;;32085:1;32064:17;:22;32040:46;32036:85;;;32103:7;;;;;32036:85;32176:2;32155:18;;:23;;;;:::i;:::-;32137:15;:41;32133:115;;;32234:2;32213:18;;:23;;;;:::i;:::-;32195:41;;32133:115;32309:23;32396:1;32376:17;32354:18;;32336:15;:36;;;;:::i;:::-;32335:58;;;;:::i;:::-;:62;;;;:::i;:::-;32309:88;;32408:26;32437:36;32457:15;32437;:19;;:36;;;;:::i;:::-;32408:65;;32486:25;32514:21;32486:49;;32548:36;32565:18;32548:16;:36::i;:::-;32597:18;32618:44;32644:17;32618:21;:25;;:44;;;;:::i;:::-;32597:65;;32675:23;32701:57;32740:17;32701:34;32716:18;;32701:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;32675:83;;32769:17;32789:51;32822:17;32789:28;32804:12;;32789:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;32769:71;;32851:17;32871:51;32904:17;32871:28;32886:12;;32871:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;32851:71;;32935:23;33004:9;32992;32974:15;32961:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;:52;;;;:::i;:::-;32935:78;;33047:1;33026:18;:22;;;;33080:1;33059:18;:22;;;;33107:1;33092:12;:16;;;;33134:1;33119:12;:16;;;;33170:9;;;;;;;;;;;33162:23;;33193:9;33162:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33148:59;;;;;33242:1;33224:15;:19;:42;;;;;33265:1;33247:15;:19;33224:42;33220:278;;;33283:46;33296:15;33313;33283:12;:46::i;:::-;33349:137;33382:18;33419:15;33453:18;;33349:137;;;;;;;;:::i;:::-;;;;;;;;33220:278;33530:9;;;;;;;;;;;33522:23;;33553:9;33522:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33508:59;;;;;33600:11;;;;;;;;;;;33592:25;;33625:21;33592:59;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33578:73;;;;;31792:1867;;;;;;;;;;;31764:1895;:::o;8817:98::-;8875:7;8906:1;8902;:5;;;;:::i;:::-;8895:12;;8817:98;;;;:::o;8923:::-;8981:7;9012:1;9008;:5;;;;:::i;:::-;9001:12;;8923:98;;;;:::o;7199:125::-;;;;:::o;7332:124::-;;;;:::o;8711:98::-;8769:7;8800:1;8796;:5;;;;:::i;:::-;8789:12;;8711:98;;;;:::o;30251:589::-;30377:21;30415:1;30401:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30377:40;;30446:4;30428;30433:1;30428:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;30472:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30462:4;30467:1;30462:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;30507:62;30524:4;30539:15;30557:11;30507:8;:62::i;:::-;30608:15;:66;;;30689:11;30715:1;30759:4;30786;30806:15;30608:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30306:534;30251:589;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:99::-;1077:6;1111:5;1105:12;1095:22;;1025:99;;;:::o;1130:169::-;1214:11;1248:6;1243:3;1236:19;1288:4;1283:3;1279:14;1264:29;;1130:169;;;;:::o;1305:246::-;1386:1;1396:113;1410:6;1407:1;1404:13;1396:113;;;1495:1;1490:3;1486:11;1480:18;1476:1;1471:3;1467:11;1460:39;1432:2;1429:1;1425:10;1420:15;;1396:113;;;1543:1;1534:6;1529:3;1525:16;1518:27;1367:184;1305:246;;;:::o;1557:102::-;1598:6;1649:2;1645:7;1640:2;1633:5;1629:14;1625:28;1615:38;;1557:102;;;:::o;1665:377::-;1753:3;1781:39;1814:5;1781:39;:::i;:::-;1836:71;1900:6;1895:3;1836:71;:::i;:::-;1829:78;;1916:65;1974:6;1969:3;1962:4;1955:5;1951:16;1916:65;:::i;:::-;2006:29;2028:6;2006:29;:::i;:::-;2001:3;1997:39;1990:46;;1757:285;1665:377;;;;:::o;2048:313::-;2161:4;2199:2;2188:9;2184:18;2176:26;;2248:9;2242:4;2238:20;2234:1;2223:9;2219:17;2212:47;2276:78;2349:4;2340:6;2276:78;:::i;:::-;2268:86;;2048:313;;;;:::o;2367:126::-;2404:7;2444:42;2437:5;2433:54;2422:65;;2367:126;;;:::o;2499:96::-;2536:7;2565:24;2583:5;2565:24;:::i;:::-;2554:35;;2499:96;;;:::o;2601:122::-;2674:24;2692:5;2674:24;:::i;:::-;2667:5;2664:35;2654:63;;2713:1;2710;2703:12;2654:63;2601:122;:::o;2729:139::-;2775:5;2813:6;2800:20;2791:29;;2829:33;2856:5;2829:33;:::i;:::-;2729:139;;;;:::o;2874:329::-;2933:6;2982:2;2970:9;2961:7;2957:23;2953:32;2950:119;;;2988:79;;:::i;:::-;2950:119;3108:1;3133:53;3178:7;3169:6;3158:9;3154:22;3133:53;:::i;:::-;3123:63;;3079:117;2874:329;;;;:::o;3209:118::-;3296:24;3314:5;3296:24;:::i;:::-;3291:3;3284:37;3209:118;;:::o;3333:222::-;3426:4;3464:2;3453:9;3449:18;3441:26;;3477:71;3545:1;3534:9;3530:17;3521:6;3477:71;:::i;:::-;3333:222;;;;:::o;3561:474::-;3629:6;3637;3686:2;3674:9;3665:7;3661:23;3657:32;3654:119;;;3692:79;;:::i;:::-;3654:119;3812:1;3837:53;3882:7;3873:6;3862:9;3858:22;3837:53;:::i;:::-;3827:63;;3783:117;3939:2;3965:53;4010:7;4001:6;3990:9;3986:22;3965:53;:::i;:::-;3955:63;;3910:118;3561:474;;;;;:::o;4041:90::-;4075:7;4118:5;4111:13;4104:21;4093:32;;4041:90;;;:::o;4137:109::-;4218:21;4233:5;4218:21;:::i;:::-;4213:3;4206:34;4137:109;;:::o;4252:210::-;4339:4;4377:2;4366:9;4362:18;4354:26;;4390:65;4452:1;4441:9;4437:17;4428:6;4390:65;:::i;:::-;4252:210;;;;:::o;4468:60::-;4496:3;4517:5;4510:12;;4468:60;;;:::o;4534:142::-;4584:9;4617:53;4635:34;4644:24;4662:5;4644:24;:::i;:::-;4635:34;:::i;:::-;4617:53;:::i;:::-;4604:66;;4534:142;;;:::o;4682:126::-;4732:9;4765:37;4796:5;4765:37;:::i;:::-;4752:50;;4682:126;;;:::o;4814:153::-;4891:9;4924:37;4955:5;4924:37;:::i;:::-;4911:50;;4814:153;;;:::o;4973:185::-;5087:64;5145:5;5087:64;:::i;:::-;5082:3;5075:77;4973:185;;:::o;5164:276::-;5284:4;5322:2;5311:9;5307:18;5299:26;;5335:98;5430:1;5419:9;5415:17;5406:6;5335:98;:::i;:::-;5164:276;;;;:::o;5446:619::-;5523:6;5531;5539;5588:2;5576:9;5567:7;5563:23;5559:32;5556:119;;;5594:79;;:::i;:::-;5556:119;5714:1;5739:53;5784:7;5775:6;5764:9;5760:22;5739:53;:::i;:::-;5729:63;;5685:117;5841:2;5867:53;5912:7;5903:6;5892:9;5888:22;5867:53;:::i;:::-;5857:63;;5812:118;5969:2;5995:53;6040:7;6031:6;6020:9;6016:22;5995:53;:::i;:::-;5985:63;;5940:118;5446:619;;;;;:::o;6071:118::-;6158:24;6176:5;6158:24;:::i;:::-;6153:3;6146:37;6071:118;;:::o;6195:222::-;6288:4;6326:2;6315:9;6311:18;6303:26;;6339:71;6407:1;6396:9;6392:17;6383:6;6339:71;:::i;:::-;6195:222;;;;:::o;6423:765::-;6509:6;6517;6525;6533;6582:3;6570:9;6561:7;6557:23;6553:33;6550:120;;;6589:79;;:::i;:::-;6550:120;6709:1;6734:53;6779:7;6770:6;6759:9;6755:22;6734:53;:::i;:::-;6724:63;;6680:117;6836:2;6862:53;6907:7;6898:6;6887:9;6883:22;6862:53;:::i;:::-;6852:63;;6807:118;6964:2;6990:53;7035:7;7026:6;7015:9;7011:22;6990:53;:::i;:::-;6980:63;;6935:118;7092:2;7118:53;7163:7;7154:6;7143:9;7139:22;7118:53;:::i;:::-;7108:63;;7063:118;6423:765;;;;;;;:::o;7194:86::-;7229:7;7269:4;7262:5;7258:16;7247:27;;7194:86;;;:::o;7286:112::-;7369:22;7385:5;7369:22;:::i;:::-;7364:3;7357:35;7286:112;;:::o;7404:214::-;7493:4;7531:2;7520:9;7516:18;7508:26;;7544:67;7608:1;7597:9;7593:17;7584:6;7544:67;:::i;:::-;7404:214;;;;:::o;7624:117::-;7733:1;7730;7723:12;7747:117;7856:1;7853;7846:12;7870:117;7979:1;7976;7969:12;8010:568;8083:8;8093:6;8143:3;8136:4;8128:6;8124:17;8120:27;8110:122;;8151:79;;:::i;:::-;8110:122;8264:6;8251:20;8241:30;;8294:18;8286:6;8283:30;8280:117;;;8316:79;;:::i;:::-;8280:117;8430:4;8422:6;8418:17;8406:29;;8484:3;8476:4;8468:6;8464:17;8454:8;8450:32;8447:41;8444:128;;;8491:79;;:::i;:::-;8444:128;8010:568;;;;;:::o;8584:116::-;8654:21;8669:5;8654:21;:::i;:::-;8647:5;8644:32;8634:60;;8690:1;8687;8680:12;8634:60;8584:116;:::o;8706:133::-;8749:5;8787:6;8774:20;8765:29;;8803:30;8827:5;8803:30;:::i;:::-;8706:133;;;;:::o;8845:698::-;8937:6;8945;8953;9002:2;8990:9;8981:7;8977:23;8973:32;8970:119;;;9008:79;;:::i;:::-;8970:119;9156:1;9145:9;9141:17;9128:31;9186:18;9178:6;9175:30;9172:117;;;9208:79;;:::i;:::-;9172:117;9321:80;9393:7;9384:6;9373:9;9369:22;9321:80;:::i;:::-;9303:98;;;;9099:312;9450:2;9476:50;9518:7;9509:6;9498:9;9494:22;9476:50;:::i;:::-;9466:60;;9421:115;8845:698;;;;;:::o;9549:468::-;9614:6;9622;9671:2;9659:9;9650:7;9646:23;9642:32;9639:119;;;9677:79;;:::i;:::-;9639:119;9797:1;9822:53;9867:7;9858:6;9847:9;9843:22;9822:53;:::i;:::-;9812:63;;9768:117;9924:2;9950:50;9992:7;9983:6;9972:9;9968:22;9950:50;:::i;:::-;9940:60;;9895:115;9549:468;;;;;:::o;10023:323::-;10079:6;10128:2;10116:9;10107:7;10103:23;10099:32;10096:119;;;10134:79;;:::i;:::-;10096:119;10254:1;10279:50;10321:7;10312:6;10301:9;10297:22;10279:50;:::i;:::-;10269:60;;10225:114;10023:323;;;;:::o;10352:474::-;10420:6;10428;10477:2;10465:9;10456:7;10452:23;10448:32;10445:119;;;10483:79;;:::i;:::-;10445:119;10603:1;10628:53;10673:7;10664:6;10653:9;10649:22;10628:53;:::i;:::-;10618:63;;10574:117;10730:2;10756:53;10801:7;10792:6;10781:9;10777:22;10756:53;:::i;:::-;10746:63;;10701:118;10352:474;;;;;:::o;10832:182::-;10972:34;10968:1;10960:6;10956:14;10949:58;10832:182;:::o;11020:366::-;11162:3;11183:67;11247:2;11242:3;11183:67;:::i;:::-;11176:74;;11259:93;11348:3;11259:93;:::i;:::-;11377:2;11372:3;11368:12;11361:19;;11020:366;;;:::o;11392:419::-;11558:4;11596:2;11585:9;11581:18;11573:26;;11645:9;11639:4;11635:20;11631:1;11620:9;11616:17;11609:47;11673:131;11799:4;11673:131;:::i;:::-;11665:139;;11392:419;;;:::o;11817:180::-;11865:77;11862:1;11855:88;11962:4;11959:1;11952:15;11986:4;11983:1;11976:15;12003:410;12043:7;12066:20;12084:1;12066:20;:::i;:::-;12061:25;;12100:20;12118:1;12100:20;:::i;:::-;12095:25;;12155:1;12152;12148:9;12177:30;12195:11;12177:30;:::i;:::-;12166:41;;12356:1;12347:7;12343:15;12340:1;12337:22;12317:1;12310:9;12290:83;12267:139;;12386:18;;:::i;:::-;12267:139;12051:362;12003:410;;;;:::o;12419:180::-;12467:77;12464:1;12457:88;12564:4;12561:1;12554:15;12588:4;12585:1;12578:15;12605:185;12645:1;12662:20;12680:1;12662:20;:::i;:::-;12657:25;;12696:20;12714:1;12696:20;:::i;:::-;12691:25;;12735:1;12725:35;;12740:18;;:::i;:::-;12725:35;12782:1;12779;12775:9;12770:14;;12605:185;;;;:::o;12796:234::-;12936:34;12932:1;12924:6;12920:14;12913:58;13005:17;13000:2;12992:6;12988:15;12981:42;12796:234;:::o;13036:366::-;13178:3;13199:67;13263:2;13258:3;13199:67;:::i;:::-;13192:74;;13275:93;13364:3;13275:93;:::i;:::-;13393:2;13388:3;13384:12;13377:19;;13036:366;;;:::o;13408:419::-;13574:4;13612:2;13601:9;13597:18;13589:26;;13661:9;13655:4;13651:20;13647:1;13636:9;13632:17;13625:47;13689:131;13815:4;13689:131;:::i;:::-;13681:139;;13408:419;;;:::o;13833:180::-;13881:77;13878:1;13871:88;13978:4;13975:1;13968:15;14002:4;13999:1;13992:15;14019:320;14063:6;14100:1;14094:4;14090:12;14080:22;;14147:1;14141:4;14137:12;14168:18;14158:81;;14224:4;14216:6;14212:17;14202:27;;14158:81;14286:2;14278:6;14275:14;14255:18;14252:38;14249:84;;14305:18;;:::i;:::-;14249:84;14070:269;14019:320;;;:::o;14345:223::-;14485:34;14481:1;14473:6;14469:14;14462:58;14554:6;14549:2;14541:6;14537:15;14530:31;14345:223;:::o;14574:366::-;14716:3;14737:67;14801:2;14796:3;14737:67;:::i;:::-;14730:74;;14813:93;14902:3;14813:93;:::i;:::-;14931:2;14926:3;14922:12;14915:19;;14574:366;;;:::o;14946:419::-;15112:4;15150:2;15139:9;15135:18;15127:26;;15199:9;15193:4;15189:20;15185:1;15174:9;15170:17;15163:47;15227:131;15353:4;15227:131;:::i;:::-;15219:139;;14946:419;;;:::o;15371:227::-;15511:34;15507:1;15499:6;15495:14;15488:58;15580:10;15575:2;15567:6;15563:15;15556:35;15371:227;:::o;15604:366::-;15746:3;15767:67;15831:2;15826:3;15767:67;:::i;:::-;15760:74;;15843:93;15932:3;15843:93;:::i;:::-;15961:2;15956:3;15952:12;15945:19;;15604:366;;;:::o;15976:419::-;16142:4;16180:2;16169:9;16165:18;16157:26;;16229:9;16223:4;16219:20;16215:1;16204:9;16200:17;16193:47;16257:131;16383:4;16257:131;:::i;:::-;16249:139;;15976:419;;;:::o;16401:191::-;16441:3;16460:20;16478:1;16460:20;:::i;:::-;16455:25;;16494:20;16512:1;16494:20;:::i;:::-;16489:25;;16537:1;16534;16530:9;16523:16;;16558:3;16555:1;16552:10;16549:36;;;16565:18;;:::i;:::-;16549:36;16401:191;;;;:::o;16598:164::-;16738:16;16734:1;16726:6;16722:14;16715:40;16598:164;:::o;16768:366::-;16910:3;16931:67;16995:2;16990:3;16931:67;:::i;:::-;16924:74;;17007:93;17096:3;17007:93;:::i;:::-;17125:2;17120:3;17116:12;17109:19;;16768:366;;;:::o;17140:419::-;17306:4;17344:2;17333:9;17329:18;17321:26;;17393:9;17387:4;17383:20;17379:1;17368:9;17364:17;17357:47;17421:131;17547:4;17421:131;:::i;:::-;17413:139;;17140:419;;;:::o;17565:180::-;17613:77;17610:1;17603:88;17710:4;17707:1;17700:15;17734:4;17731:1;17724:15;17751:233;17790:3;17813:24;17831:5;17813:24;:::i;:::-;17804:33;;17859:66;17852:5;17849:77;17846:103;;17929:18;;:::i;:::-;17846:103;17976:1;17969:5;17965:13;17958:20;;17751:233;;;:::o;17990:244::-;18130:34;18126:1;18118:6;18114:14;18107:58;18199:27;18194:2;18186:6;18182:15;18175:52;17990:244;:::o;18240:366::-;18382:3;18403:67;18467:2;18462:3;18403:67;:::i;:::-;18396:74;;18479:93;18568:3;18479:93;:::i;:::-;18597:2;18592:3;18588:12;18581:19;;18240:366;;;:::o;18612:419::-;18778:4;18816:2;18805:9;18801:18;18793:26;;18865:9;18859:4;18855:20;18851:1;18840:9;18836:17;18829:47;18893:131;19019:4;18893:131;:::i;:::-;18885:139;;18612:419;;;:::o;19037:224::-;19177:34;19173:1;19165:6;19161:14;19154:58;19246:7;19241:2;19233:6;19229:15;19222:32;19037:224;:::o;19267:366::-;19409:3;19430:67;19494:2;19489:3;19430:67;:::i;:::-;19423:74;;19506:93;19595:3;19506:93;:::i;:::-;19624:2;19619:3;19615:12;19608:19;;19267:366;;;:::o;19639:419::-;19805:4;19843:2;19832:9;19828:18;19820:26;;19892:9;19886:4;19882:20;19878:1;19867:9;19863:17;19856:47;19920:131;20046:4;19920:131;:::i;:::-;19912:139;;19639:419;;;:::o;20064:240::-;20204:34;20200:1;20192:6;20188:14;20181:58;20273:23;20268:2;20260:6;20256:15;20249:48;20064:240;:::o;20310:366::-;20452:3;20473:67;20537:2;20532:3;20473:67;:::i;:::-;20466:74;;20549:93;20638:3;20549:93;:::i;:::-;20667:2;20662:3;20658:12;20651:19;;20310:366;;;:::o;20682:419::-;20848:4;20886:2;20875:9;20871:18;20863:26;;20935:9;20929:4;20925:20;20921:1;20910:9;20906:17;20899:47;20963:131;21089:4;20963:131;:::i;:::-;20955:139;;20682:419;;;:::o;21107:239::-;21247:34;21243:1;21235:6;21231:14;21224:58;21316:22;21311:2;21303:6;21299:15;21292:47;21107:239;:::o;21352:366::-;21494:3;21515:67;21579:2;21574:3;21515:67;:::i;:::-;21508:74;;21591:93;21680:3;21591:93;:::i;:::-;21709:2;21704:3;21700:12;21693:19;;21352:366;;;:::o;21724:419::-;21890:4;21928:2;21917:9;21913:18;21905:26;;21977:9;21971:4;21967:20;21963:1;21952:9;21948:17;21941:47;22005:131;22131:4;22005:131;:::i;:::-;21997:139;;21724:419;;;:::o;22149:225::-;22289:34;22285:1;22277:6;22273:14;22266:58;22358:8;22353:2;22345:6;22341:15;22334:33;22149:225;:::o;22380:366::-;22522:3;22543:67;22607:2;22602:3;22543:67;:::i;:::-;22536:74;;22619:93;22708:3;22619:93;:::i;:::-;22737:2;22732:3;22728:12;22721:19;;22380:366;;;:::o;22752:419::-;22918:4;22956:2;22945:9;22941:18;22933:26;;23005:9;22999:4;22995:20;22991:1;22980:9;22976:17;22969:47;23033:131;23159:4;23033:131;:::i;:::-;23025:139;;22752:419;;;:::o;23177:223::-;23317:34;23313:1;23305:6;23301:14;23294:58;23386:6;23381:2;23373:6;23369:15;23362:31;23177:223;:::o;23406:366::-;23548:3;23569:67;23633:2;23628:3;23569:67;:::i;:::-;23562:74;;23645:93;23734:3;23645:93;:::i;:::-;23763:2;23758:3;23754:12;23747:19;;23406:366;;;:::o;23778:419::-;23944:4;23982:2;23971:9;23967:18;23959:26;;24031:9;24025:4;24021:20;24017:1;24006:9;24002:17;23995:47;24059:131;24185:4;24059:131;:::i;:::-;24051:139;;23778:419;;;:::o;24203:221::-;24343:34;24339:1;24331:6;24327:14;24320:58;24412:4;24407:2;24399:6;24395:15;24388:29;24203:221;:::o;24430:366::-;24572:3;24593:67;24657:2;24652:3;24593:67;:::i;:::-;24586:74;;24669:93;24758:3;24669:93;:::i;:::-;24787:2;24782:3;24778:12;24771:19;;24430:366;;;:::o;24802:419::-;24968:4;25006:2;24995:9;24991:18;24983:26;;25055:9;25049:4;25045:20;25041:1;25030:9;25026:17;25019:47;25083:131;25209:4;25083:131;:::i;:::-;25075:139;;24802:419;;;:::o;25227:224::-;25367:34;25363:1;25355:6;25351:14;25344:58;25436:7;25431:2;25423:6;25419:15;25412:32;25227:224;:::o;25457:366::-;25599:3;25620:67;25684:2;25679:3;25620:67;:::i;:::-;25613:74;;25696:93;25785:3;25696:93;:::i;:::-;25814:2;25809:3;25805:12;25798:19;;25457:366;;;:::o;25829:419::-;25995:4;26033:2;26022:9;26018:18;26010:26;;26082:9;26076:4;26072:20;26068:1;26057:9;26053:17;26046:47;26110:131;26236:4;26110:131;:::i;:::-;26102:139;;25829:419;;;:::o;26254:222::-;26394:34;26390:1;26382:6;26378:14;26371:58;26463:5;26458:2;26450:6;26446:15;26439:30;26254:222;:::o;26482:366::-;26624:3;26645:67;26709:2;26704:3;26645:67;:::i;:::-;26638:74;;26721:93;26810:3;26721:93;:::i;:::-;26839:2;26834:3;26830:12;26823:19;;26482:366;;;:::o;26854:419::-;27020:4;27058:2;27047:9;27043:18;27035:26;;27107:9;27101:4;27097:20;27093:1;27082:9;27078:17;27071:47;27135:131;27261:4;27135:131;:::i;:::-;27127:139;;26854:419;;;:::o;27279:164::-;27419:16;27415:1;27407:6;27403:14;27396:40;27279:164;:::o;27449:366::-;27591:3;27612:67;27676:2;27671:3;27612:67;:::i;:::-;27605:74;;27688:93;27777:3;27688:93;:::i;:::-;27806:2;27801:3;27797:12;27790:19;;27449:366;;;:::o;27821:419::-;27987:4;28025:2;28014:9;28010:18;28002:26;;28074:9;28068:4;28064:20;28060:1;28049:9;28045:17;28038:47;28102:131;28228:4;28102:131;:::i;:::-;28094:139;;27821:419;;;:::o;28246:172::-;28386:24;28382:1;28374:6;28370:14;28363:48;28246:172;:::o;28424:366::-;28566:3;28587:67;28651:2;28646:3;28587:67;:::i;:::-;28580:74;;28663:93;28752:3;28663:93;:::i;:::-;28781:2;28776:3;28772:12;28765:19;;28424:366;;;:::o;28796:419::-;28962:4;29000:2;28989:9;28985:18;28977:26;;29049:9;29043:4;29039:20;29035:1;29024:9;29020:17;29013:47;29077:131;29203:4;29077:131;:::i;:::-;29069:139;;28796:419;;;:::o;29221:297::-;29361:34;29357:1;29349:6;29345:14;29338:58;29430:34;29425:2;29417:6;29413:15;29406:59;29499:11;29494:2;29486:6;29482:15;29475:36;29221:297;:::o;29524:366::-;29666:3;29687:67;29751:2;29746:3;29687:67;:::i;:::-;29680:74;;29763:93;29852:3;29763:93;:::i;:::-;29881:2;29876:3;29872:12;29865:19;;29524:366;;;:::o;29896:419::-;30062:4;30100:2;30089:9;30085:18;30077:26;;30149:9;30143:4;30139:20;30135:1;30124:9;30120:17;30113:47;30177:131;30303:4;30177:131;:::i;:::-;30169:139;;29896:419;;;:::o;30321:240::-;30461:34;30457:1;30449:6;30445:14;30438:58;30530:23;30525:2;30517:6;30513:15;30506:48;30321:240;:::o;30567:366::-;30709:3;30730:67;30794:2;30789:3;30730:67;:::i;:::-;30723:74;;30806:93;30895:3;30806:93;:::i;:::-;30924:2;30919:3;30915:12;30908:19;;30567:366;;;:::o;30939:419::-;31105:4;31143:2;31132:9;31128:18;31120:26;;31192:9;31186:4;31182:20;31178:1;31167:9;31163:17;31156:47;31220:131;31346:4;31220:131;:::i;:::-;31212:139;;30939:419;;;:::o;31364:169::-;31504:21;31500:1;31492:6;31488:14;31481:45;31364:169;:::o;31539:366::-;31681:3;31702:67;31766:2;31761:3;31702:67;:::i;:::-;31695:74;;31778:93;31867:3;31778:93;:::i;:::-;31896:2;31891:3;31887:12;31880:19;;31539:366;;;:::o;31911:419::-;32077:4;32115:2;32104:9;32100:18;32092:26;;32164:9;32158:4;32154:20;32150:1;32139:9;32135:17;32128:47;32192:131;32318:4;32192:131;:::i;:::-;32184:139;;31911:419;;;:::o;32336:241::-;32476:34;32472:1;32464:6;32460:14;32453:58;32545:24;32540:2;32532:6;32528:15;32521:49;32336:241;:::o;32583:366::-;32725:3;32746:67;32810:2;32805:3;32746:67;:::i;:::-;32739:74;;32822:93;32911:3;32822:93;:::i;:::-;32940:2;32935:3;32931:12;32924:19;;32583:366;;;:::o;32955:419::-;33121:4;33159:2;33148:9;33144:18;33136:26;;33208:9;33202:4;33198:20;33194:1;33183:9;33179:17;33172:47;33236:131;33362:4;33236:131;:::i;:::-;33228:139;;32955:419;;;:::o;33380:194::-;33420:4;33440:20;33458:1;33440:20;:::i;:::-;33435:25;;33474:20;33492:1;33474:20;:::i;:::-;33469:25;;33518:1;33515;33511:9;33503:17;;33542:1;33536:4;33533:11;33530:37;;;33547:18;;:::i;:::-;33530:37;33380:194;;;;:::o;33580:85::-;33625:7;33654:5;33643:16;;33580:85;;;:::o;33671:158::-;33729:9;33762:61;33780:42;33789:32;33815:5;33789:32;:::i;:::-;33780:42;:::i;:::-;33762:61;:::i;:::-;33749:74;;33671:158;;;:::o;33835:147::-;33930:45;33969:5;33930:45;:::i;:::-;33925:3;33918:58;33835:147;;:::o;33988:807::-;34237:4;34275:3;34264:9;34260:19;34252:27;;34289:71;34357:1;34346:9;34342:17;34333:6;34289:71;:::i;:::-;34370:72;34438:2;34427:9;34423:18;34414:6;34370:72;:::i;:::-;34452:80;34528:2;34517:9;34513:18;34504:6;34452:80;:::i;:::-;34542;34618:2;34607:9;34603:18;34594:6;34542:80;:::i;:::-;34632:73;34700:3;34689:9;34685:19;34676:6;34632:73;:::i;:::-;34715;34783:3;34772:9;34768:19;34759:6;34715:73;:::i;:::-;33988:807;;;;;;;;;:::o;34801:143::-;34858:5;34889:6;34883:13;34874:22;;34905:33;34932:5;34905:33;:::i;:::-;34801:143;;;;:::o;34950:663::-;35038:6;35046;35054;35103:2;35091:9;35082:7;35078:23;35074:32;35071:119;;;35109:79;;:::i;:::-;35071:119;35229:1;35254:64;35310:7;35301:6;35290:9;35286:22;35254:64;:::i;:::-;35244:74;;35200:128;35367:2;35393:64;35449:7;35440:6;35429:9;35425:22;35393:64;:::i;:::-;35383:74;;35338:129;35506:2;35532:64;35588:7;35579:6;35568:9;35564:22;35532:64;:::i;:::-;35522:74;;35477:129;34950:663;;;;;:::o;35619:225::-;35759:34;35755:1;35747:6;35743:14;35736:58;35828:8;35823:2;35815:6;35811:15;35804:33;35619:225;:::o;35850:366::-;35992:3;36013:67;36077:2;36072:3;36013:67;:::i;:::-;36006:74;;36089:93;36178:3;36089:93;:::i;:::-;36207:2;36202:3;36198:12;36191:19;;35850:366;;;:::o;36222:419::-;36388:4;36426:2;36415:9;36411:18;36403:26;;36475:9;36469:4;36465:20;36461:1;36450:9;36446:17;36439:47;36503:131;36629:4;36503:131;:::i;:::-;36495:139;;36222:419;;;:::o;36647:147::-;36748:11;36785:3;36770:18;;36647:147;;;;:::o;36800:114::-;;:::o;36920:398::-;37079:3;37100:83;37181:1;37176:3;37100:83;:::i;:::-;37093:90;;37192:93;37281:3;37192:93;:::i;:::-;37310:1;37305:3;37301:11;37294:18;;36920:398;;;:::o;37324:379::-;37508:3;37530:147;37673:3;37530:147;:::i;:::-;37523:154;;37694:3;37687:10;;37324:379;;;:::o;37709:442::-;37858:4;37896:2;37885:9;37881:18;37873:26;;37909:71;37977:1;37966:9;37962:17;37953:6;37909:71;:::i;:::-;37990:72;38058:2;38047:9;38043:18;38034:6;37990:72;:::i;:::-;38072;38140:2;38129:9;38125:18;38116:6;38072:72;:::i;:::-;37709:442;;;;;;:::o;38157:180::-;38205:77;38202:1;38195:88;38302:4;38299:1;38292:15;38326:4;38323:1;38316:15;38343:143;38400:5;38431:6;38425:13;38416:22;;38447:33;38474:5;38447:33;:::i;:::-;38343:143;;;;:::o;38492:351::-;38562:6;38611:2;38599:9;38590:7;38586:23;38582:32;38579:119;;;38617:79;;:::i;:::-;38579:119;38737:1;38762:64;38818:7;38809:6;38798:9;38794:22;38762:64;:::i;:::-;38752:74;;38708:128;38492:351;;;;:::o;38849:114::-;38916:6;38950:5;38944:12;38934:22;;38849:114;;;:::o;38969:184::-;39068:11;39102:6;39097:3;39090:19;39142:4;39137:3;39133:14;39118:29;;38969:184;;;;:::o;39159:132::-;39226:4;39249:3;39241:11;;39279:4;39274:3;39270:14;39262:22;;39159:132;;;:::o;39297:108::-;39374:24;39392:5;39374:24;:::i;:::-;39369:3;39362:37;39297:108;;:::o;39411:179::-;39480:10;39501:46;39543:3;39535:6;39501:46;:::i;:::-;39579:4;39574:3;39570:14;39556:28;;39411:179;;;;:::o;39596:113::-;39666:4;39698;39693:3;39689:14;39681:22;;39596:113;;;:::o;39745:732::-;39864:3;39893:54;39941:5;39893:54;:::i;:::-;39963:86;40042:6;40037:3;39963:86;:::i;:::-;39956:93;;40073:56;40123:5;40073:56;:::i;:::-;40152:7;40183:1;40168:284;40193:6;40190:1;40187:13;40168:284;;;40269:6;40263:13;40296:63;40355:3;40340:13;40296:63;:::i;:::-;40289:70;;40382:60;40435:6;40382:60;:::i;:::-;40372:70;;40228:224;40215:1;40212;40208:9;40203:14;;40168:284;;;40172:14;40468:3;40461:10;;39869:608;;;39745:732;;;;:::o;40483:831::-;40746:4;40784:3;40773:9;40769:19;40761:27;;40798:71;40866:1;40855:9;40851:17;40842:6;40798:71;:::i;:::-;40879:80;40955:2;40944:9;40940:18;40931:6;40879:80;:::i;:::-;41006:9;41000:4;40996:20;40991:2;40980:9;40976:18;40969:48;41034:108;41137:4;41128:6;41034:108;:::i;:::-;41026:116;;41152:72;41220:2;41209:9;41205:18;41196:6;41152:72;:::i;:::-;41234:73;41302:3;41291:9;41287:19;41278:6;41234:73;:::i;:::-;40483:831;;;;;;;;:::o
Swarm Source
ipfs://081535c3e1c18b31080f09522a3abef2d9b2a606348918597dd5589999ef5d7f
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.