Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
50,000 AI 2.0
Holders
124
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
2,375 AI 2.0Value
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
ProofofAI
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-02-05 */ //SPDX-License-Identifier: MIT /* Proof of AI DEX coming soon. If there is no proof, it does not exist. Visit out Socials & join our Community Chat https://t.me/proof_of_ai https://proofofai.org https://twitter.com/proof_of_ai */ pragma solidity 0.8.17; 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); } abstract contract Auth { address internal _owner; constructor(address creatorOwner) { _owner = creatorOwner; } modifier onlyOwner() { require(msg.sender == _owner, "Only contract _owner can call this function"); _; } function transferOwnership(address payable newOwner) external onlyOwner { _owner = newOwner; emit OwnershipTransferred(newOwner); } event OwnershipTransferred(address _owner); } 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); } contract ProofofAI is IERC20, Auth { uint8 private constant _decimals = 9; uint256 private constant _totalSupply = 50_000 * (10**_decimals); string private constant _name = "Proof of AI"; string private constant _symbol = "AI 2.0"; uint8 private _buyTaxRate = 5; uint8 private _sellTaxRate = 5; uint16 private _taxSharesMarketing = 8; uint16 private _taxSharesDevelopment = 2; uint16 private _taxSharesBurn = 0; uint16 private _taxSharesLP = 0; uint16 private _totalTaxShares = _taxSharesMarketing + _taxSharesDevelopment + _taxSharesBurn + _taxSharesLP; address payable private _walletMarketing = payable(0xe434E3D7157267d03F8FeABBcC928b342E0c6C2E); address payable private _walletDevelopment = payable(0x46B1298A620718d7Fc30C03cB8b093996399C599); uint256 private _maxTxAmount = _totalSupply; uint256 private _maxWalletAmount = _totalSupply; uint256 private _taxSwapMin = _totalSupply * 10 / 100000; uint256 private _taxSwapMax = _totalSupply * 75 / 100000; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _noFees; mapping (address => bool) private _noLimits; address constant private _burnWallet = address(0); address private _lpOwner; address private constant _swapRouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //uniswap v2 router 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 TokensAirdropped(uint256 totalWallets, uint256 totalTokens); event TokensBurned(address indexed burnedByWallet, uint256 tokenAmount); constructor() Auth(msg.sender) { _lpOwner = msg.sender; _balances[address(this)] = 50_000 * (10 ** _decimals); emit Transfer(address(0), address(this), _balances[address(this)]); _balances[_owner] = _totalSupply - _balances[address(this)]; emit Transfer(address(0), _owner, _balances[_owner]); _noFees[_owner] = true; _noFees[address(this)] = true; _noFees[_swapRouterAddress] = true; _noFees[_walletMarketing] = true; _noFees[_walletDevelopment] = true; _noFees[_burnWallet] = true; _noLimits[_owner] = true; _noLimits[address(this)] = true; _noLimits[_swapRouterAddress] = true; _noLimits[_walletMarketing] = true; _noLimits[_walletDevelopment] = true; _noLimits[_burnWallet] = 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 openTrading() external onlyOwner { require(!_tradingOpen, "trading already open"); _openTrading(); } 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 addInitialLiquidity() external onlyOwner lockTaxSwap { require(_primaryLP == address(0), "LP exists"); require(address(this).balance>0, "No ETH in contract"); 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); _isLP[_primaryLP] = true; } 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; } 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 ( 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; if ( _taxAmount > 0 ) { _balances[address(this)] = _balances[address(this)] + _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] ) { taxAmount = amount * _buyTaxRate / 100; } else if ( _isLP[recipient] ) { taxAmount = amount * _sellTaxRate / 100; } return taxAmount; } function getExemptions(address wallet) external view returns (bool noFees, bool noLimits) { return ( _noFees[wallet], _noLimits[wallet] ); } function setExemptions(address wallet, bool noFees, bool noLimits) external onlyOwner { if (noLimits || noFees) { require(!_isLP[wallet], "Cannot exempt LP"); } _noFees[ wallet ] = noFees; _noLimits[ wallet ] = noLimits; } function setExtraLP(address lpContractAddress, bool isLiquidityPool) external onlyOwner { require(lpContractAddress != _primaryLP, "Cannot change the primary LP"); _isLP[lpContractAddress] = isLiquidityPool; if (isLiquidityPool) { _noFees[lpContractAddress] = false; _noLimits[lpContractAddress] = false; } } function isLP(address wallet) external view returns (bool) { return _isLP[wallet]; } function getTaxInfo() external view returns (uint8 buyTax, uint8 sellTax, uint16 sharesMarketing, uint16 sharesDevelopment, uint16 sharesLP, uint16 sharesTokenBurn ) { return ( _buyTaxRate, _sellTaxRate, _taxSharesMarketing, _taxSharesDevelopment, _taxSharesLP, _taxSharesBurn); } function setTaxRates(uint8 newBuyTax, uint8 newSellTax) external onlyOwner { require(newBuyTax + newSellTax <= 99, "Roundtrip too high"); _buyTaxRate = newBuyTax; _sellTaxRate = newSellTax; } function setTaxDistribution(uint16 sharesTokenBurn, uint16 sharesAutoLP, uint16 sharesMarketing, uint16 sharesDevelopment) external onlyOwner { _taxSharesLP = sharesAutoLP; _taxSharesMarketing = sharesMarketing; _taxSharesDevelopment = sharesDevelopment; _totalTaxShares = sharesTokenBurn + sharesAutoLP + sharesMarketing + sharesDevelopment; } function getAddresses() external view returns (address owner, address primaryLP, address marketing, address development, address LPowner ) { return ( _owner, _primaryLP, _walletMarketing, _walletDevelopment, _lpOwner); } function setTaxWallets(address newMarketing, address newDevelopment, address newLpOwner) external onlyOwner { require(!_isLP[newMarketing] && !_isLP[newDevelopment] && !_isLP[newLpOwner], "LP cannot be tax wallet"); _walletMarketing = payable(newMarketing); _walletDevelopment = payable(newDevelopment); _lpOwner = newLpOwner; _noFees[newMarketing] = true; _noFees[newDevelopment] = true; _noLimits[newMarketing] = true; _noLimits[newDevelopment] = true; } function getLimitsInfo() external view returns (uint256 maxTX, uint256 maxWallet, uint256 taxSwapMin, uint256 taxSwapMax ) { return ( _maxTxAmount, _maxWalletAmount, _taxSwapMin, _taxSwapMax); } function increaseLimits(uint16 maxTxAmtPermile, uint16 maxWalletAmtPermile) external onlyOwner { uint256 newTxAmt = _totalSupply * maxTxAmtPermile / 1000 + 1; require(newTxAmt >= _maxTxAmount, "tx limit too low"); _maxTxAmount = newTxAmt; uint256 newWalletAmt = _totalSupply * maxWalletAmtPermile / 1000 + 1; require(newWalletAmt >= _maxWalletAmount, "wallet limit too low"); _maxWalletAmount = newWalletAmt; } function setTaxSwapLimits(uint32 minValue, uint32 minDivider, uint32 maxValue, uint32 maxDivider) external onlyOwner { _taxSwapMin = _totalSupply * minValue / minDivider; _taxSwapMax = _totalSupply * maxValue / maxDivider; require(_taxSwapMax>=_taxSwapMin, "MinMax error"); require(_taxSwapMax>_totalSupply / 100000, "Upper threshold too low"); require(_taxSwapMax<_totalSupply / 100, "Upper threshold too high"); } function _burnTokens(address fromWallet, uint256 amount) private { if ( amount > 0 ) { _balances[fromWallet] -= amount; _balances[_burnWallet] += amount; emit Transfer(fromWallet, _burnWallet, amount); } } function _swapTaxAndLiquify() private lockTaxSwap { uint256 _taxTokensAvailable = balanceOf(address(this)); if ( _taxTokensAvailable >= _taxSwapMin && _tradingOpen ) { if ( _taxTokensAvailable >= _taxSwapMax ) { _taxTokensAvailable = _taxSwapMax; } uint256 _tokensForLP = _taxTokensAvailable * _taxSharesLP / _totalTaxShares / 2; uint256 _tokensToBurn = _taxTokensAvailable * _taxSharesBurn / _totalTaxShares; _burnTokens(address(this), _tokensToBurn); uint256 _tokensToSwap = _taxTokensAvailable - _tokensForLP - _tokensToBurn; if( _tokensToSwap > 10**_decimals ) { uint256 _ethPreSwap = address(this).balance; _swapTaxTokensForEth(_tokensToSwap); 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 { uint16 _taxShareTotal = _taxSharesMarketing + _taxSharesDevelopment; if (_taxShareTotal > 0) { uint256 marketingAmount = amount * _taxSharesMarketing / _taxShareTotal; uint256 developmentAmount = amount * _taxSharesDevelopment / _taxShareTotal; if ( marketingAmount > 0 ) { _walletMarketing.transfer(marketingAmount); } if ( developmentAmount > 0 ) { _walletDevelopment.transfer(developmentAmount); } } } function manualTaxSwapAndSend(bool swapTokens, bool sendEth) external onlyOwner { if (swapTokens) { uint256 taxTokenBalance = balanceOf(address(this)); require(taxTokenBalance > 0, "No tokens"); _swapTaxTokensForEth(taxTokenBalance); } if (sendEth) { uint256 ethBalance = address(this).balance; require(ethBalance > 0, "No tokens"); _distributeTaxEth(address(this).balance); } } function burnTokens(uint256 amount) external { uint256 _tokensAvailable = balanceOf(msg.sender); require(amount <= _tokensAvailable, "Token balance too low"); _burnTokens(msg.sender, amount); emit TokensBurned(msg.sender, amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"totalWallets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalTokens","type":"uint256"}],"name":"TokensAirdropped","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":"addInitialLiquidity","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getAddresses","outputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"primaryLP","type":"address"},{"internalType":"address","name":"marketing","type":"address"},{"internalType":"address","name":"development","type":"address"},{"internalType":"address","name":"LPowner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"getExemptions","outputs":[{"internalType":"bool","name":"noFees","type":"bool"},{"internalType":"bool","name":"noLimits","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLimitsInfo","outputs":[{"internalType":"uint256","name":"maxTX","type":"uint256"},{"internalType":"uint256","name":"maxWallet","type":"uint256"},{"internalType":"uint256","name":"taxSwapMin","type":"uint256"},{"internalType":"uint256","name":"taxSwapMax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTaxInfo","outputs":[{"internalType":"uint8","name":"buyTax","type":"uint8"},{"internalType":"uint8","name":"sellTax","type":"uint8"},{"internalType":"uint16","name":"sharesMarketing","type":"uint16"},{"internalType":"uint16","name":"sharesDevelopment","type":"uint16"},{"internalType":"uint16","name":"sharesLP","type":"uint16"},{"internalType":"uint16","name":"sharesTokenBurn","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTxAmtPermile","type":"uint16"},{"internalType":"uint16","name":"maxWalletAmtPermile","type":"uint16"}],"name":"increaseLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"isLP","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"swapTokens","type":"bool"},{"internalType":"bool","name":"sendEth","type":"bool"}],"name":"manualTaxSwapAndSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"noFees","type":"bool"},{"internalType":"bool","name":"noLimits","type":"bool"}],"name":"setExemptions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"lpContractAddress","type":"address"},{"internalType":"bool","name":"isLiquidityPool","type":"bool"}],"name":"setExtraLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"sharesTokenBurn","type":"uint16"},{"internalType":"uint16","name":"sharesAutoLP","type":"uint16"},{"internalType":"uint16","name":"sharesMarketing","type":"uint16"},{"internalType":"uint16","name":"sharesDevelopment","type":"uint16"}],"name":"setTaxDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newBuyTax","type":"uint8"},{"internalType":"uint8","name":"newSellTax","type":"uint8"}],"name":"setTaxRates","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":"setTaxSwapLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketing","type":"address"},{"internalType":"address","name":"newDevelopment","type":"address"},{"internalType":"address","name":"newLpOwner","type":"address"}],"name":"setTaxWallets","outputs":[],"stateMutability":"nonpayable","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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526005600060146101000a81548160ff021916908360ff1602179055506005600060156101000a81548160ff021916908360ff1602179055506008600060166101000a81548161ffff021916908361ffff1602179055506002600060186101000a81548161ffff021916908361ffff160217905550600080601a6101000a81548161ffff021916908361ffff160217905550600080601c6101000a81548161ffff021916908361ffff1602179055506000601c9054906101000a900461ffff166000601a9054906101000a900461ffff16600060189054906101000a900461ffff16600060169054906101000a900461ffff1662000102919062000bba565b6200010e919062000bba565b6200011a919062000bba565b6000601e6101000a81548161ffff021916908361ffff16021790555073e434e3d7157267d03f8feabbcc928b342e0c6c2e600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507346b1298a620718d7fc30c03cb8b093996399c599600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620001f0919062000d62565b61c350620001ff919062000db3565b6003556009600a62000212919062000d62565b61c35062000221919062000db3565b600455620186a0600a6009600a6200023a919062000d62565b61c35062000249919062000db3565b62000255919062000db3565b62000261919062000e2d565b600555620186a0604b6009600a6200027a919062000d62565b61c35062000289919062000db3565b62000295919062000db3565b620002a1919062000e2d565b600655737a250d5630b4cf539739df2c5dacb4c659f2488d600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600f60016101000a81548160ff0219169083151502179055503480156200032157600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505033600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620003b5919062000d62565b61c350620003c4919062000db3565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051620004a6919062000e76565b60405180910390a3600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546009600a620004fe919062000d62565b61c3506200050d919062000db3565b62000519919062000e93565b600760008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600760008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040516200065d919062000e76565b60405180910390a36001600960008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000ece565b600061ffff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000bc78262000b7d565b915062000bd48362000b7d565b9250828201905061ffff81111562000bf15762000bf062000b8b565b5b92915050565b60008160011c9050919050565b6000808291508390505b600185111562000c565780860481111562000c2e5762000c2d62000b8b565b5b600185161562000c3e5780820291505b808102905062000c4e8562000bf7565b945062000c0e565b94509492505050565b60008262000c71576001905062000d44565b8162000c81576000905062000d44565b816001811462000c9a576002811462000ca55762000cdb565b600191505062000d44565b60ff84111562000cba5762000cb962000b8b565b5b8360020a91508482111562000cd45762000cd362000b8b565b5b5062000d44565b5060208310610133831016604e8410600b841016171562000d155782820a90508381111562000d0f5762000d0e62000b8b565b5b62000d44565b62000d24848484600162000c04565b9250905081840481111562000d3e5762000d3d62000b8b565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000d6f8262000d4b565b915062000d7c8362000d55565b925062000dab7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c5f565b905092915050565b600062000dc08262000d4b565b915062000dcd8362000d4b565b925082820262000ddd8162000d4b565b9150828204841483151762000df75762000df662000b8b565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e3a8262000d4b565b915062000e478362000d4b565b92508262000e5a5762000e5962000dfe565b5b828204905092915050565b62000e708162000d4b565b82525050565b600060208201905062000e8d600083018462000e65565b92915050565b600062000ea08262000d4b565b915062000ead8362000d4b565b925082820390508181111562000ec85762000ec762000b8b565b5b92915050565b614ec98062000ede6000396000f3fe6080604052600436106101855760003560e01c8063931b68ea116100d1578063c9567bf91161008a578063e4dbc45b11610064578063e4dbc45b1461059a578063f2fde38b146105c3578063f9fdeae3146105ec578063fd965024146106155761018c565b8063c9567bf91461051d578063d6f155ad14610534578063dd62ed3e1461055d5761018c565b8063931b68ea146103f657806395d89b41146104345780639fda05811461045f578063a39fac1214610488578063a9059cbb146104b7578063b1421803146104f45761018c565b806322a62e1e1161013e5780636d1b229d116101185780636d1b229d146103255780636f013db91461034e57806370a082311461037c5780637df0f767146103b95761018c565b806322a62e1e1461028d57806323b872dd146102bd578063313ce567146102fa5761018c565b80630210a83d1461019157806306fdde03146101a8578063095ea7b3146101d357806318160ddd1461021057806318839bc31461023b57806321c42e11146102645761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a661063e565b005b3480156101b457600080fd5b506101bd610afd565b6040516101ca919061387c565b60405180910390f35b3480156101df57600080fd5b506101fa60048036038101906101f59190613937565b610b3a565b6040516102079190613992565b60405180910390f35b34801561021c57600080fd5b50610225610c2c565b60405161023291906139bc565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d9190613a03565b610c4e565b005b34801561027057600080fd5b5061028b60048036038101906102869190613a56565b610e2b565b005b34801561029957600080fd5b506102a261105b565b6040516102b496959493929190613acf565b60405180910390f35b3480156102c957600080fd5b506102e460048036038101906102df9190613b30565b6110dc565b6040516102f19190613992565b60405180910390f35b34801561030657600080fd5b5061030f6112e6565b60405161031c9190613b83565b60405180910390f35b34801561033157600080fd5b5061034c60048036038101906103479190613b9e565b6112ef565b005b34801561035a57600080fd5b5061036361139b565b6040516103739493929190613bcb565b60405180910390f35b34801561038857600080fd5b506103a3600480360381019061039e9190613c10565b6113bb565b6040516103b091906139bc565b60405180910390f35b3480156103c557600080fd5b506103e060048036038101906103db9190613c10565b611404565b6040516103ed9190613992565b60405180910390f35b34801561040257600080fd5b5061041d60048036038101906104189190613c10565b61145a565b60405161042b929190613c3d565b60405180910390f35b34801561044057600080fd5b50610449611500565b604051610456919061387c565b60405180910390f35b34801561046b57600080fd5b5061048660048036038101906104819190613c66565b61153d565b005b34801561049457600080fd5b5061049d61192c565b6040516104ae959493929190613cc8565b60405180910390f35b3480156104c357600080fd5b506104de60048036038101906104d99190613937565b6119f3565b6040516104eb9190613992565b60405180910390f35b34801561050057600080fd5b5061051b60048036038101906105169190613d47565b611a50565b005b34801561052957600080fd5b50610532611c0a565b005b34801561054057600080fd5b5061055b60048036038101906105569190613d87565b611cf2565b005b34801561056957600080fd5b50610584600480360381019061057f9190613dc7565b611e3e565b60405161059191906139bc565b60405180910390f35b3480156105a657600080fd5b506105c160048036038101906105bc9190613e43565b611ec5565b005b3480156105cf57600080fd5b506105ea60048036038101906105e59190613ee8565b6120fc565b005b3480156105f857600080fd5b50610613600480360381019061060e9190613f15565b612204565b005b34801561062157600080fd5b5061063c60048036038101906106379190613fa8565b61232d565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c39061405a565b60405180910390fd5b6001600f60016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076f906140c6565b60405180910390fd5b600047116107bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b290614132565b60405180910390fd5b6000600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161083d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108349061419e565b60405180910390fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ce91906141d3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610957573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097b91906141d3565b6040518363ffffffff1660e01b8152600401610998929190614200565b6020604051808303816000875af11580156109b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109db91906141d3565b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610a66600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054476000612447565b6001600e6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600f60016101000a81548160ff021916908315150217905550565b60606040518060400160405280600b81526020017f50726f6f66206f66204149000000000000000000000000000000000000000000815250905090565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c1a91906139bc565b60405180910390a36001905092915050565b60006009600a610c3c919061438b565b61c350610c4991906143d6565b905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd39061405a565b60405180910390fd5b8080610ce55750815b15610d7857600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610d77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6e90614464565b60405180910390fd5b5b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610eb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb09061405a565b60405180910390fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f40906144d0565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015611057576000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b600080600080600080600060149054906101000a900460ff16600060159054906101000a900460ff16600060169054906101000a900461ffff16600060189054906101000a900461ffff166000601c9054906101000a900461ffff166000601a9054906101000a900461ffff16955095509550955095509550909192939495565b60006110e784612535565b611126576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111d9061453c565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146112d25781600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611251919061455c565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6112dd848484612610565b90509392505050565b60006009905090565b60006112fa336113bb565b90508082111561133f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611336906145dc565b60405180910390fd5b6113493383612b3f565b3373ffffffffffffffffffffffffffffffffffffffff167ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb68360405161138f91906139bc565b60405180910390a25050565b600080600080600354600454600554600654935093509350935090919293565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691509150915091565b60606040518060400160405280600681526020017f414920322e300000000000000000000000000000000000000000000000000000815250905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c29061405a565b60405180910390fd5b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561166f5750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156116c55750600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fb90614648565b60405180910390fd5b82600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60008060008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094509450945094509091929394565b60006119fe33612535565b611a3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a349061453c565b60405180910390fd5b611a48338484612610565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ade576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad59061405a565b60405180910390fd5b600060016103e88461ffff166009600a611af8919061438b565b61c350611b0591906143d6565b611b0f91906143d6565b611b199190614697565b611b2391906146c8565b9050600354811015611b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6190614748565b60405180910390fd5b80600381905550600060016103e88461ffff166009600a611b8b919061438b565b61c350611b9891906143d6565b611ba291906143d6565b611bac9190614697565b611bb691906146c8565b9050600454811015611bfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf4906147b4565b60405180910390fd5b8060048190555050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8f9061405a565b60405180910390fd5b600f60009054906101000a900460ff1615611ce8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cdf90614820565b60405180910390fd5b611cf0612c5f565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d779061405a565b60405180910390fd5b8115611de1576000611d91306113bb565b905060008111611dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcd9061488c565b60405180910390fd5b611ddf81612cee565b505b8015611e3a57600047905060008111611e2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e269061488c565b60405180910390fd5b611e3847612f0d565b505b5050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4a9061405a565b60405180910390fd5b8263ffffffff168463ffffffff166009600a611f6f919061438b565b61c350611f7c91906143d6565b611f8691906143d6565b611f909190614697565b6005819055508063ffffffff168263ffffffff166009600a611fb2919061438b565b61c350611fbf91906143d6565b611fc991906143d6565b611fd39190614697565b6006819055506005546006541015612020576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612017906148f8565b60405180910390fd5b620186a06009600a612032919061438b565b61c35061203f91906143d6565b6120499190614697565b6006541161208c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208390614964565b60405180910390fd5b60646009600a61209c919061438b565b61c3506120a991906143d6565b6120b39190614697565b600654106120f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ed906149d0565b60405180910390fd5b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461218a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121819061405a565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516121f99190614a4f565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612292576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122899061405a565b60405180910390fd5b826000601c6101000a81548161ffff021916908361ffff16021790555081600060166101000a81548161ffff021916908361ffff16021790555080600060186101000a81548161ffff021916908361ffff160217905550808284866122f79190614a6a565b6123019190614a6a565b61230b9190614a6a565b6000601e6101000a81548161ffff021916908361ffff16021790555050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146123bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b29061405a565b60405180910390fd5b606381836123c99190614aa0565b60ff16111561240d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240490614b21565b60405180910390fd5b81600060146101000a81548160ff021916908360ff16021790555080600060156101000a81548160ff021916908360ff1602179055505050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050811561247957600090505b6124828461309c565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b81526004016124e996959493929190614b7c565b60606040518083038185885af1158015612507573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061252c9190614bf2565b50505050505050565b60008060009050600f60009054906101000a900460ff161561255a5760019050612607565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156125fc5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561260657600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612680576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267790614c91565b60405180910390fd5b600f60009054906101000a900460ff1661277657600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127365750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276c9061453c565b60405180910390fd5b5b600f60019054906101000a900460ff161580156127dc5750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156127ea576127e9613286565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561285257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156128aa575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156128fa576128ba84848461347c565b6128f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f090614cfd565b60405180910390fd5b5b6000612907858585613613565b905060008184612917919061455c565b905083600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612964919061455c565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000821115612a3f5781600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129fb91906146c8565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a8a91906146c8565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612b2a91906139bc565b60405180910390a36001925050509392505050565b6000811115612c5b5780600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b97919061455c565b9250508190555080600760008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612bed91906146c8565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c5291906139bc565b60405180910390a35b5050565b606460016009600a612c71919061438b565b61c350612c7e91906143d6565b612c8891906143d6565b612c929190614697565b600381905550606460016009600a612caa919061438b565b61c350612cb791906143d6565b612cc191906143d6565b612ccb9190614697565b6004819055506001600f60006101000a81548160ff021916908315150217905550565b612cf78161309c565b6000600267ffffffffffffffff811115612d1457612d13614d1d565b5b604051908082528060200260200182016040528015612d425781602001602082028036833780820191505090505b5090503081600081518110612d5a57612d59614d4c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e2591906141d3565b81600181518110612e3957612e38614d4c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612ed7959493929190614e39565b600060405180830381600087803b158015612ef157600080fd5b505af1158015612f05573d6000803e3d6000fd5b505050505050565b60008060189054906101000a900461ffff16600060169054906101000a900461ffff16612f3a9190614a6a565b905060008161ffff1611156130985760008161ffff16600060169054906101000a900461ffff1661ffff1684612f7091906143d6565b612f7a9190614697565b905060008261ffff16600060189054906101000a900461ffff1661ffff1685612fa391906143d6565b612fad9190614697565b9050600082111561302257600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613020573d6000803e3d6000fd5b505b600081111561309557600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613093573d6000803e3d6000fd5b505b50505b5050565b80600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015613283577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405161327a91906139bc565b60405180910390a35b50565b6001600f60016101000a81548160ff02191690831515021790555060006132ac306113bb565b905060055481101580156132cc5750600f60009054906101000a900460ff165b1561345e5760065481106132e05760065490505b600060026000601e9054906101000a900461ffff1661ffff166000601c9054906101000a900461ffff1661ffff168461331991906143d6565b6133239190614697565b61332d9190614697565b9050600080601e9054906101000a900461ffff1661ffff166000601a9054906101000a900461ffff1661ffff168461336591906143d6565b61336f9190614697565b905061337b3082612b3f565b600081838561338a919061455c565b613394919061455c565b90506009600a6133a4919061438b565b8111156134415760004790506133b982612cee565b600081476133c7919061455c565b9050600080601c9054906101000a900461ffff1661ffff16111561343e57600080601e9054906101000a900461ffff1661ffff166000601c9054906101000a900461ffff1661ffff168361341b91906143d6565b6134259190614697565b90506134308661309c565b61343c86826000612447565b505b50505b600047905060008111156134595761345881612f0d565b5b505050505b506000600f60016101000a81548160ff021916908315150217905550565b60008060019050600f60009054906101000a900460ff1680156134e95750600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561353f5750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613608576003548311156135575760009050613607565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156135fc575060045483600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135fa91906146c8565b115b1561360657600090505b5b5b809150509392505050565b600080600f60009054906101000a900460ff16158061367b5750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806136cf5750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156136dd57600090506137e1565b600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613760576064600060149054906101000a900460ff1660ff168461374f91906143d6565b6137599190614697565b90506137e0565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156137df576064600060159054906101000a900460ff1660ff16846137d291906143d6565b6137dc9190614697565b90505b5b5b809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561382657808201518184015260208101905061380b565b60008484015250505050565b6000601f19601f8301169050919050565b600061384e826137ec565b61385881856137f7565b9350613868818560208601613808565b61387181613832565b840191505092915050565b600060208201905081810360008301526138968184613843565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006138ce826138a3565b9050919050565b6138de816138c3565b81146138e957600080fd5b50565b6000813590506138fb816138d5565b92915050565b6000819050919050565b61391481613901565b811461391f57600080fd5b50565b6000813590506139318161390b565b92915050565b6000806040838503121561394e5761394d61389e565b5b600061395c858286016138ec565b925050602061396d85828601613922565b9150509250929050565b60008115159050919050565b61398c81613977565b82525050565b60006020820190506139a76000830184613983565b92915050565b6139b681613901565b82525050565b60006020820190506139d160008301846139ad565b92915050565b6139e081613977565b81146139eb57600080fd5b50565b6000813590506139fd816139d7565b92915050565b600080600060608486031215613a1c57613a1b61389e565b5b6000613a2a868287016138ec565b9350506020613a3b868287016139ee565b9250506040613a4c868287016139ee565b9150509250925092565b60008060408385031215613a6d57613a6c61389e565b5b6000613a7b858286016138ec565b9250506020613a8c858286016139ee565b9150509250929050565b600060ff82169050919050565b613aac81613a96565b82525050565b600061ffff82169050919050565b613ac981613ab2565b82525050565b600060c082019050613ae46000830189613aa3565b613af16020830188613aa3565b613afe6040830187613ac0565b613b0b6060830186613ac0565b613b186080830185613ac0565b613b2560a0830184613ac0565b979650505050505050565b600080600060608486031215613b4957613b4861389e565b5b6000613b57868287016138ec565b9350506020613b68868287016138ec565b9250506040613b7986828701613922565b9150509250925092565b6000602082019050613b986000830184613aa3565b92915050565b600060208284031215613bb457613bb361389e565b5b6000613bc284828501613922565b91505092915050565b6000608082019050613be060008301876139ad565b613bed60208301866139ad565b613bfa60408301856139ad565b613c0760608301846139ad565b95945050505050565b600060208284031215613c2657613c2561389e565b5b6000613c34848285016138ec565b91505092915050565b6000604082019050613c526000830185613983565b613c5f6020830184613983565b9392505050565b600080600060608486031215613c7f57613c7e61389e565b5b6000613c8d868287016138ec565b9350506020613c9e868287016138ec565b9250506040613caf868287016138ec565b9150509250925092565b613cc2816138c3565b82525050565b600060a082019050613cdd6000830188613cb9565b613cea6020830187613cb9565b613cf76040830186613cb9565b613d046060830185613cb9565b613d116080830184613cb9565b9695505050505050565b613d2481613ab2565b8114613d2f57600080fd5b50565b600081359050613d4181613d1b565b92915050565b60008060408385031215613d5e57613d5d61389e565b5b6000613d6c85828601613d32565b9250506020613d7d85828601613d32565b9150509250929050565b60008060408385031215613d9e57613d9d61389e565b5b6000613dac858286016139ee565b9250506020613dbd858286016139ee565b9150509250929050565b60008060408385031215613dde57613ddd61389e565b5b6000613dec858286016138ec565b9250506020613dfd858286016138ec565b9150509250929050565b600063ffffffff82169050919050565b613e2081613e07565b8114613e2b57600080fd5b50565b600081359050613e3d81613e17565b92915050565b60008060008060808587031215613e5d57613e5c61389e565b5b6000613e6b87828801613e2e565b9450506020613e7c87828801613e2e565b9350506040613e8d87828801613e2e565b9250506060613e9e87828801613e2e565b91505092959194509250565b6000613eb5826138a3565b9050919050565b613ec581613eaa565b8114613ed057600080fd5b50565b600081359050613ee281613ebc565b92915050565b600060208284031215613efe57613efd61389e565b5b6000613f0c84828501613ed3565b91505092915050565b60008060008060808587031215613f2f57613f2e61389e565b5b6000613f3d87828801613d32565b9450506020613f4e87828801613d32565b9350506040613f5f87828801613d32565b9250506060613f7087828801613d32565b91505092959194509250565b613f8581613a96565b8114613f9057600080fd5b50565b600081359050613fa281613f7c565b92915050565b60008060408385031215613fbf57613fbe61389e565b5b6000613fcd85828601613f93565b9250506020613fde85828601613f93565b9150509250929050565b7f4f6e6c7920636f6e7472616374205f6f776e65722063616e2063616c6c20746860008201527f69732066756e6374696f6e000000000000000000000000000000000000000000602082015250565b6000614044602b836137f7565b915061404f82613fe8565b604082019050919050565b6000602082019050818103600083015261407381614037565b9050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b60006140b06009836137f7565b91506140bb8261407a565b602082019050919050565b600060208201905081810360008301526140df816140a3565b9050919050565b7f4e6f2045544820696e20636f6e74726163740000000000000000000000000000600082015250565b600061411c6012836137f7565b9150614127826140e6565b602082019050919050565b6000602082019050818103600083015261414b8161410f565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e74726163740000000000000000000000600082015250565b60006141886015836137f7565b915061419382614152565b602082019050919050565b600060208201905081810360008301526141b78161417b565b9050919050565b6000815190506141cd816138d5565b92915050565b6000602082840312156141e9576141e861389e565b5b60006141f7848285016141be565b91505092915050565b60006040820190506142156000830185613cb9565b6142226020830184613cb9565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156142af5780860481111561428b5761428a614229565b5b600185161561429a5780820291505b80810290506142a885614258565b945061426f565b94509492505050565b6000826142c85760019050614384565b816142d65760009050614384565b81600181146142ec57600281146142f657614325565b6001915050614384565b60ff84111561430857614307614229565b5b8360020a91508482111561431f5761431e614229565b5b50614384565b5060208310610133831016604e8410600b841016171561435a5782820a90508381111561435557614354614229565b5b614384565b6143678484846001614265565b9250905081840481111561437e5761437d614229565b5b81810290505b9392505050565b600061439682613901565b91506143a183613a96565b92506143ce7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846142b8565b905092915050565b60006143e182613901565b91506143ec83613901565b92508282026143fa81613901565b9150828204841483151761441157614410614229565b5b5092915050565b7f43616e6e6f74206578656d7074204c5000000000000000000000000000000000600082015250565b600061444e6010836137f7565b915061445982614418565b602082019050919050565b6000602082019050818103600083015261447d81614441565b9050919050565b7f43616e6e6f74206368616e676520746865207072696d617279204c5000000000600082015250565b60006144ba601c836137f7565b91506144c582614484565b602082019050919050565b600060208201905081810360008301526144e9816144ad565b9050919050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b60006145266010836137f7565b9150614531826144f0565b602082019050919050565b6000602082019050818103600083015261455581614519565b9050919050565b600061456782613901565b915061457283613901565b925082820390508181111561458a57614589614229565b5b92915050565b7f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000600082015250565b60006145c66015836137f7565b91506145d182614590565b602082019050919050565b600060208201905081810360008301526145f5816145b9565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c6574000000000000000000600082015250565b60006146326017836137f7565b915061463d826145fc565b602082019050919050565b6000602082019050818103600083015261466181614625565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006146a282613901565b91506146ad83613901565b9250826146bd576146bc614668565b5b828204905092915050565b60006146d382613901565b91506146de83613901565b92508282019050808211156146f6576146f5614229565b5b92915050565b7f7478206c696d697420746f6f206c6f7700000000000000000000000000000000600082015250565b60006147326010836137f7565b915061473d826146fc565b602082019050919050565b6000602082019050818103600083015261476181614725565b9050919050565b7f77616c6c6574206c696d697420746f6f206c6f77000000000000000000000000600082015250565b600061479e6014836137f7565b91506147a982614768565b602082019050919050565b600060208201905081810360008301526147cd81614791565b9050919050565b7f74726164696e6720616c7265616479206f70656e000000000000000000000000600082015250565b600061480a6014836137f7565b9150614815826147d4565b602082019050919050565b60006020820190508181036000830152614839816147fd565b9050919050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b60006148766009836137f7565b915061488182614840565b602082019050919050565b600060208201905081810360008301526148a581614869565b9050919050565b7f4d696e4d6178206572726f720000000000000000000000000000000000000000600082015250565b60006148e2600c836137f7565b91506148ed826148ac565b602082019050919050565b60006020820190508181036000830152614911816148d5565b9050919050565b7f5570706572207468726573686f6c6420746f6f206c6f77000000000000000000600082015250565b600061494e6017836137f7565b915061495982614918565b602082019050919050565b6000602082019050818103600083015261497d81614941565b9050919050565b7f5570706572207468726573686f6c6420746f6f20686967680000000000000000600082015250565b60006149ba6018836137f7565b91506149c582614984565b602082019050919050565b600060208201905081810360008301526149e9816149ad565b9050919050565b6000819050919050565b6000614a15614a10614a0b846138a3565b6149f0565b6138a3565b9050919050565b6000614a27826149fa565b9050919050565b6000614a3982614a1c565b9050919050565b614a4981614a2e565b82525050565b6000602082019050614a646000830184614a40565b92915050565b6000614a7582613ab2565b9150614a8083613ab2565b9250828201905061ffff811115614a9a57614a99614229565b5b92915050565b6000614aab82613a96565b9150614ab683613a96565b9250828201905060ff811115614acf57614ace614229565b5b92915050565b7f526f756e647472697020746f6f20686967680000000000000000000000000000600082015250565b6000614b0b6012836137f7565b9150614b1682614ad5565b602082019050919050565b60006020820190508181036000830152614b3a81614afe565b9050919050565b6000819050919050565b6000614b66614b61614b5c84614b41565b6149f0565b613901565b9050919050565b614b7681614b4b565b82525050565b600060c082019050614b916000830189613cb9565b614b9e60208301886139ad565b614bab6040830187614b6d565b614bb86060830186614b6d565b614bc56080830185613cb9565b614bd260a08301846139ad565b979650505050505050565b600081519050614bec8161390b565b92915050565b600080600060608486031215614c0b57614c0a61389e565b5b6000614c1986828701614bdd565b9350506020614c2a86828701614bdd565b9250506040614c3b86828701614bdd565b9150509250925092565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000614c7b601d836137f7565b9150614c8682614c45565b602082019050919050565b60006020820190508181036000830152614caa81614c6e565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b6000614ce76011836137f7565b9150614cf282614cb1565b602082019050919050565b60006020820190508181036000830152614d1681614cda565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614db0816138c3565b82525050565b6000614dc28383614da7565b60208301905092915050565b6000602082019050919050565b6000614de682614d7b565b614df08185614d86565b9350614dfb83614d97565b8060005b83811015614e2c578151614e138882614db6565b9750614e1e83614dce565b925050600181019050614dff565b5085935050505092915050565b600060a082019050614e4e60008301886139ad565b614e5b6020830187614b6d565b8181036040830152614e6d8186614ddb565b9050614e7c6060830185613cb9565b614e8960808301846139ad565b969550505050505056fea264697066735822122099325e950c6d343d8dc2fd650ddb362c80f62db3b3390c567e46153a2fefa50a64736f6c63430008110033
Deployed Bytecode
0x6080604052600436106101855760003560e01c8063931b68ea116100d1578063c9567bf91161008a578063e4dbc45b11610064578063e4dbc45b1461059a578063f2fde38b146105c3578063f9fdeae3146105ec578063fd965024146106155761018c565b8063c9567bf91461051d578063d6f155ad14610534578063dd62ed3e1461055d5761018c565b8063931b68ea146103f657806395d89b41146104345780639fda05811461045f578063a39fac1214610488578063a9059cbb146104b7578063b1421803146104f45761018c565b806322a62e1e1161013e5780636d1b229d116101185780636d1b229d146103255780636f013db91461034e57806370a082311461037c5780637df0f767146103b95761018c565b806322a62e1e1461028d57806323b872dd146102bd578063313ce567146102fa5761018c565b80630210a83d1461019157806306fdde03146101a8578063095ea7b3146101d357806318160ddd1461021057806318839bc31461023b57806321c42e11146102645761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a661063e565b005b3480156101b457600080fd5b506101bd610afd565b6040516101ca919061387c565b60405180910390f35b3480156101df57600080fd5b506101fa60048036038101906101f59190613937565b610b3a565b6040516102079190613992565b60405180910390f35b34801561021c57600080fd5b50610225610c2c565b60405161023291906139bc565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d9190613a03565b610c4e565b005b34801561027057600080fd5b5061028b60048036038101906102869190613a56565b610e2b565b005b34801561029957600080fd5b506102a261105b565b6040516102b496959493929190613acf565b60405180910390f35b3480156102c957600080fd5b506102e460048036038101906102df9190613b30565b6110dc565b6040516102f19190613992565b60405180910390f35b34801561030657600080fd5b5061030f6112e6565b60405161031c9190613b83565b60405180910390f35b34801561033157600080fd5b5061034c60048036038101906103479190613b9e565b6112ef565b005b34801561035a57600080fd5b5061036361139b565b6040516103739493929190613bcb565b60405180910390f35b34801561038857600080fd5b506103a3600480360381019061039e9190613c10565b6113bb565b6040516103b091906139bc565b60405180910390f35b3480156103c557600080fd5b506103e060048036038101906103db9190613c10565b611404565b6040516103ed9190613992565b60405180910390f35b34801561040257600080fd5b5061041d60048036038101906104189190613c10565b61145a565b60405161042b929190613c3d565b60405180910390f35b34801561044057600080fd5b50610449611500565b604051610456919061387c565b60405180910390f35b34801561046b57600080fd5b5061048660048036038101906104819190613c66565b61153d565b005b34801561049457600080fd5b5061049d61192c565b6040516104ae959493929190613cc8565b60405180910390f35b3480156104c357600080fd5b506104de60048036038101906104d99190613937565b6119f3565b6040516104eb9190613992565b60405180910390f35b34801561050057600080fd5b5061051b60048036038101906105169190613d47565b611a50565b005b34801561052957600080fd5b50610532611c0a565b005b34801561054057600080fd5b5061055b60048036038101906105569190613d87565b611cf2565b005b34801561056957600080fd5b50610584600480360381019061057f9190613dc7565b611e3e565b60405161059191906139bc565b60405180910390f35b3480156105a657600080fd5b506105c160048036038101906105bc9190613e43565b611ec5565b005b3480156105cf57600080fd5b506105ea60048036038101906105e59190613ee8565b6120fc565b005b3480156105f857600080fd5b50610613600480360381019061060e9190613f15565b612204565b005b34801561062157600080fd5b5061063c60048036038101906106379190613fa8565b61232d565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c39061405a565b60405180910390fd5b6001600f60016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076f906140c6565b60405180910390fd5b600047116107bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b290614132565b60405180910390fd5b6000600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161083d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108349061419e565b60405180910390fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ce91906141d3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610957573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097b91906141d3565b6040518363ffffffff1660e01b8152600401610998929190614200565b6020604051808303816000875af11580156109b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109db91906141d3565b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610a66600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054476000612447565b6001600e6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600f60016101000a81548160ff021916908315150217905550565b60606040518060400160405280600b81526020017f50726f6f66206f66204149000000000000000000000000000000000000000000815250905090565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c1a91906139bc565b60405180910390a36001905092915050565b60006009600a610c3c919061438b565b61c350610c4991906143d6565b905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd39061405a565b60405180910390fd5b8080610ce55750815b15610d7857600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610d77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6e90614464565b60405180910390fd5b5b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610eb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb09061405a565b60405180910390fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f40906144d0565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015611057576000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b600080600080600080600060149054906101000a900460ff16600060159054906101000a900460ff16600060169054906101000a900461ffff16600060189054906101000a900461ffff166000601c9054906101000a900461ffff166000601a9054906101000a900461ffff16955095509550955095509550909192939495565b60006110e784612535565b611126576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111d9061453c565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146112d25781600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611251919061455c565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6112dd848484612610565b90509392505050565b60006009905090565b60006112fa336113bb565b90508082111561133f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611336906145dc565b60405180910390fd5b6113493383612b3f565b3373ffffffffffffffffffffffffffffffffffffffff167ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb68360405161138f91906139bc565b60405180910390a25050565b600080600080600354600454600554600654935093509350935090919293565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691509150915091565b60606040518060400160405280600681526020017f414920322e300000000000000000000000000000000000000000000000000000815250905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c29061405a565b60405180910390fd5b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561166f5750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156116c55750600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fb90614648565b60405180910390fd5b82600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60008060008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094509450945094509091929394565b60006119fe33612535565b611a3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a349061453c565b60405180910390fd5b611a48338484612610565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ade576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad59061405a565b60405180910390fd5b600060016103e88461ffff166009600a611af8919061438b565b61c350611b0591906143d6565b611b0f91906143d6565b611b199190614697565b611b2391906146c8565b9050600354811015611b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6190614748565b60405180910390fd5b80600381905550600060016103e88461ffff166009600a611b8b919061438b565b61c350611b9891906143d6565b611ba291906143d6565b611bac9190614697565b611bb691906146c8565b9050600454811015611bfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf4906147b4565b60405180910390fd5b8060048190555050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8f9061405a565b60405180910390fd5b600f60009054906101000a900460ff1615611ce8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cdf90614820565b60405180910390fd5b611cf0612c5f565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d779061405a565b60405180910390fd5b8115611de1576000611d91306113bb565b905060008111611dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcd9061488c565b60405180910390fd5b611ddf81612cee565b505b8015611e3a57600047905060008111611e2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e269061488c565b60405180910390fd5b611e3847612f0d565b505b5050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4a9061405a565b60405180910390fd5b8263ffffffff168463ffffffff166009600a611f6f919061438b565b61c350611f7c91906143d6565b611f8691906143d6565b611f909190614697565b6005819055508063ffffffff168263ffffffff166009600a611fb2919061438b565b61c350611fbf91906143d6565b611fc991906143d6565b611fd39190614697565b6006819055506005546006541015612020576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612017906148f8565b60405180910390fd5b620186a06009600a612032919061438b565b61c35061203f91906143d6565b6120499190614697565b6006541161208c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208390614964565b60405180910390fd5b60646009600a61209c919061438b565b61c3506120a991906143d6565b6120b39190614697565b600654106120f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ed906149d0565b60405180910390fd5b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461218a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121819061405a565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516121f99190614a4f565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612292576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122899061405a565b60405180910390fd5b826000601c6101000a81548161ffff021916908361ffff16021790555081600060166101000a81548161ffff021916908361ffff16021790555080600060186101000a81548161ffff021916908361ffff160217905550808284866122f79190614a6a565b6123019190614a6a565b61230b9190614a6a565b6000601e6101000a81548161ffff021916908361ffff16021790555050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146123bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b29061405a565b60405180910390fd5b606381836123c99190614aa0565b60ff16111561240d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161240490614b21565b60405180910390fd5b81600060146101000a81548160ff021916908360ff16021790555080600060156101000a81548160ff021916908360ff1602179055505050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050811561247957600090505b6124828461309c565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b81526004016124e996959493929190614b7c565b60606040518083038185885af1158015612507573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061252c9190614bf2565b50505050505050565b60008060009050600f60009054906101000a900460ff161561255a5760019050612607565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156125fc5750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561260657600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612680576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267790614c91565b60405180910390fd5b600f60009054906101000a900460ff1661277657600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156127365750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276c9061453c565b60405180910390fd5b5b600f60019054906101000a900460ff161580156127dc5750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156127ea576127e9613286565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561285257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156128aa575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156128fa576128ba84848461347c565b6128f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f090614cfd565b60405180910390fd5b5b6000612907858585613613565b905060008184612917919061455c565b905083600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612964919061455c565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000821115612a3f5781600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129fb91906146c8565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a8a91906146c8565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612b2a91906139bc565b60405180910390a36001925050509392505050565b6000811115612c5b5780600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b97919061455c565b9250508190555080600760008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612bed91906146c8565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c5291906139bc565b60405180910390a35b5050565b606460016009600a612c71919061438b565b61c350612c7e91906143d6565b612c8891906143d6565b612c929190614697565b600381905550606460016009600a612caa919061438b565b61c350612cb791906143d6565b612cc191906143d6565b612ccb9190614697565b6004819055506001600f60006101000a81548160ff021916908315150217905550565b612cf78161309c565b6000600267ffffffffffffffff811115612d1457612d13614d1d565b5b604051908082528060200260200182016040528015612d425781602001602082028036833780820191505090505b5090503081600081518110612d5a57612d59614d4c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e2591906141d3565b81600181518110612e3957612e38614d4c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612ed7959493929190614e39565b600060405180830381600087803b158015612ef157600080fd5b505af1158015612f05573d6000803e3d6000fd5b505050505050565b60008060189054906101000a900461ffff16600060169054906101000a900461ffff16612f3a9190614a6a565b905060008161ffff1611156130985760008161ffff16600060169054906101000a900461ffff1661ffff1684612f7091906143d6565b612f7a9190614697565b905060008261ffff16600060189054906101000a900461ffff1661ffff1685612fa391906143d6565b612fad9190614697565b9050600082111561302257600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613020573d6000803e3d6000fd5b505b600081111561309557600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613093573d6000803e3d6000fd5b505b50505b5050565b80600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015613283577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405161327a91906139bc565b60405180910390a35b50565b6001600f60016101000a81548160ff02191690831515021790555060006132ac306113bb565b905060055481101580156132cc5750600f60009054906101000a900460ff165b1561345e5760065481106132e05760065490505b600060026000601e9054906101000a900461ffff1661ffff166000601c9054906101000a900461ffff1661ffff168461331991906143d6565b6133239190614697565b61332d9190614697565b9050600080601e9054906101000a900461ffff1661ffff166000601a9054906101000a900461ffff1661ffff168461336591906143d6565b61336f9190614697565b905061337b3082612b3f565b600081838561338a919061455c565b613394919061455c565b90506009600a6133a4919061438b565b8111156134415760004790506133b982612cee565b600081476133c7919061455c565b9050600080601c9054906101000a900461ffff1661ffff16111561343e57600080601e9054906101000a900461ffff1661ffff166000601c9054906101000a900461ffff1661ffff168361341b91906143d6565b6134259190614697565b90506134308661309c565b61343c86826000612447565b505b50505b600047905060008111156134595761345881612f0d565b5b505050505b506000600f60016101000a81548160ff021916908315150217905550565b60008060019050600f60009054906101000a900460ff1680156134e95750600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561353f5750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613608576003548311156135575760009050613607565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156135fc575060045483600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135fa91906146c8565b115b1561360657600090505b5b5b809150509392505050565b600080600f60009054906101000a900460ff16158061367b5750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806136cf5750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156136dd57600090506137e1565b600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613760576064600060149054906101000a900460ff1660ff168461374f91906143d6565b6137599190614697565b90506137e0565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156137df576064600060159054906101000a900460ff1660ff16846137d291906143d6565b6137dc9190614697565b90505b5b5b809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561382657808201518184015260208101905061380b565b60008484015250505050565b6000601f19601f8301169050919050565b600061384e826137ec565b61385881856137f7565b9350613868818560208601613808565b61387181613832565b840191505092915050565b600060208201905081810360008301526138968184613843565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006138ce826138a3565b9050919050565b6138de816138c3565b81146138e957600080fd5b50565b6000813590506138fb816138d5565b92915050565b6000819050919050565b61391481613901565b811461391f57600080fd5b50565b6000813590506139318161390b565b92915050565b6000806040838503121561394e5761394d61389e565b5b600061395c858286016138ec565b925050602061396d85828601613922565b9150509250929050565b60008115159050919050565b61398c81613977565b82525050565b60006020820190506139a76000830184613983565b92915050565b6139b681613901565b82525050565b60006020820190506139d160008301846139ad565b92915050565b6139e081613977565b81146139eb57600080fd5b50565b6000813590506139fd816139d7565b92915050565b600080600060608486031215613a1c57613a1b61389e565b5b6000613a2a868287016138ec565b9350506020613a3b868287016139ee565b9250506040613a4c868287016139ee565b9150509250925092565b60008060408385031215613a6d57613a6c61389e565b5b6000613a7b858286016138ec565b9250506020613a8c858286016139ee565b9150509250929050565b600060ff82169050919050565b613aac81613a96565b82525050565b600061ffff82169050919050565b613ac981613ab2565b82525050565b600060c082019050613ae46000830189613aa3565b613af16020830188613aa3565b613afe6040830187613ac0565b613b0b6060830186613ac0565b613b186080830185613ac0565b613b2560a0830184613ac0565b979650505050505050565b600080600060608486031215613b4957613b4861389e565b5b6000613b57868287016138ec565b9350506020613b68868287016138ec565b9250506040613b7986828701613922565b9150509250925092565b6000602082019050613b986000830184613aa3565b92915050565b600060208284031215613bb457613bb361389e565b5b6000613bc284828501613922565b91505092915050565b6000608082019050613be060008301876139ad565b613bed60208301866139ad565b613bfa60408301856139ad565b613c0760608301846139ad565b95945050505050565b600060208284031215613c2657613c2561389e565b5b6000613c34848285016138ec565b91505092915050565b6000604082019050613c526000830185613983565b613c5f6020830184613983565b9392505050565b600080600060608486031215613c7f57613c7e61389e565b5b6000613c8d868287016138ec565b9350506020613c9e868287016138ec565b9250506040613caf868287016138ec565b9150509250925092565b613cc2816138c3565b82525050565b600060a082019050613cdd6000830188613cb9565b613cea6020830187613cb9565b613cf76040830186613cb9565b613d046060830185613cb9565b613d116080830184613cb9565b9695505050505050565b613d2481613ab2565b8114613d2f57600080fd5b50565b600081359050613d4181613d1b565b92915050565b60008060408385031215613d5e57613d5d61389e565b5b6000613d6c85828601613d32565b9250506020613d7d85828601613d32565b9150509250929050565b60008060408385031215613d9e57613d9d61389e565b5b6000613dac858286016139ee565b9250506020613dbd858286016139ee565b9150509250929050565b60008060408385031215613dde57613ddd61389e565b5b6000613dec858286016138ec565b9250506020613dfd858286016138ec565b9150509250929050565b600063ffffffff82169050919050565b613e2081613e07565b8114613e2b57600080fd5b50565b600081359050613e3d81613e17565b92915050565b60008060008060808587031215613e5d57613e5c61389e565b5b6000613e6b87828801613e2e565b9450506020613e7c87828801613e2e565b9350506040613e8d87828801613e2e565b9250506060613e9e87828801613e2e565b91505092959194509250565b6000613eb5826138a3565b9050919050565b613ec581613eaa565b8114613ed057600080fd5b50565b600081359050613ee281613ebc565b92915050565b600060208284031215613efe57613efd61389e565b5b6000613f0c84828501613ed3565b91505092915050565b60008060008060808587031215613f2f57613f2e61389e565b5b6000613f3d87828801613d32565b9450506020613f4e87828801613d32565b9350506040613f5f87828801613d32565b9250506060613f7087828801613d32565b91505092959194509250565b613f8581613a96565b8114613f9057600080fd5b50565b600081359050613fa281613f7c565b92915050565b60008060408385031215613fbf57613fbe61389e565b5b6000613fcd85828601613f93565b9250506020613fde85828601613f93565b9150509250929050565b7f4f6e6c7920636f6e7472616374205f6f776e65722063616e2063616c6c20746860008201527f69732066756e6374696f6e000000000000000000000000000000000000000000602082015250565b6000614044602b836137f7565b915061404f82613fe8565b604082019050919050565b6000602082019050818103600083015261407381614037565b9050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b60006140b06009836137f7565b91506140bb8261407a565b602082019050919050565b600060208201905081810360008301526140df816140a3565b9050919050565b7f4e6f2045544820696e20636f6e74726163740000000000000000000000000000600082015250565b600061411c6012836137f7565b9150614127826140e6565b602082019050919050565b6000602082019050818103600083015261414b8161410f565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e74726163740000000000000000000000600082015250565b60006141886015836137f7565b915061419382614152565b602082019050919050565b600060208201905081810360008301526141b78161417b565b9050919050565b6000815190506141cd816138d5565b92915050565b6000602082840312156141e9576141e861389e565b5b60006141f7848285016141be565b91505092915050565b60006040820190506142156000830185613cb9565b6142226020830184613cb9565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156142af5780860481111561428b5761428a614229565b5b600185161561429a5780820291505b80810290506142a885614258565b945061426f565b94509492505050565b6000826142c85760019050614384565b816142d65760009050614384565b81600181146142ec57600281146142f657614325565b6001915050614384565b60ff84111561430857614307614229565b5b8360020a91508482111561431f5761431e614229565b5b50614384565b5060208310610133831016604e8410600b841016171561435a5782820a90508381111561435557614354614229565b5b614384565b6143678484846001614265565b9250905081840481111561437e5761437d614229565b5b81810290505b9392505050565b600061439682613901565b91506143a183613a96565b92506143ce7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846142b8565b905092915050565b60006143e182613901565b91506143ec83613901565b92508282026143fa81613901565b9150828204841483151761441157614410614229565b5b5092915050565b7f43616e6e6f74206578656d7074204c5000000000000000000000000000000000600082015250565b600061444e6010836137f7565b915061445982614418565b602082019050919050565b6000602082019050818103600083015261447d81614441565b9050919050565b7f43616e6e6f74206368616e676520746865207072696d617279204c5000000000600082015250565b60006144ba601c836137f7565b91506144c582614484565b602082019050919050565b600060208201905081810360008301526144e9816144ad565b9050919050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b60006145266010836137f7565b9150614531826144f0565b602082019050919050565b6000602082019050818103600083015261455581614519565b9050919050565b600061456782613901565b915061457283613901565b925082820390508181111561458a57614589614229565b5b92915050565b7f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000600082015250565b60006145c66015836137f7565b91506145d182614590565b602082019050919050565b600060208201905081810360008301526145f5816145b9565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c6574000000000000000000600082015250565b60006146326017836137f7565b915061463d826145fc565b602082019050919050565b6000602082019050818103600083015261466181614625565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006146a282613901565b91506146ad83613901565b9250826146bd576146bc614668565b5b828204905092915050565b60006146d382613901565b91506146de83613901565b92508282019050808211156146f6576146f5614229565b5b92915050565b7f7478206c696d697420746f6f206c6f7700000000000000000000000000000000600082015250565b60006147326010836137f7565b915061473d826146fc565b602082019050919050565b6000602082019050818103600083015261476181614725565b9050919050565b7f77616c6c6574206c696d697420746f6f206c6f77000000000000000000000000600082015250565b600061479e6014836137f7565b91506147a982614768565b602082019050919050565b600060208201905081810360008301526147cd81614791565b9050919050565b7f74726164696e6720616c7265616479206f70656e000000000000000000000000600082015250565b600061480a6014836137f7565b9150614815826147d4565b602082019050919050565b60006020820190508181036000830152614839816147fd565b9050919050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b60006148766009836137f7565b915061488182614840565b602082019050919050565b600060208201905081810360008301526148a581614869565b9050919050565b7f4d696e4d6178206572726f720000000000000000000000000000000000000000600082015250565b60006148e2600c836137f7565b91506148ed826148ac565b602082019050919050565b60006020820190508181036000830152614911816148d5565b9050919050565b7f5570706572207468726573686f6c6420746f6f206c6f77000000000000000000600082015250565b600061494e6017836137f7565b915061495982614918565b602082019050919050565b6000602082019050818103600083015261497d81614941565b9050919050565b7f5570706572207468726573686f6c6420746f6f20686967680000000000000000600082015250565b60006149ba6018836137f7565b91506149c582614984565b602082019050919050565b600060208201905081810360008301526149e9816149ad565b9050919050565b6000819050919050565b6000614a15614a10614a0b846138a3565b6149f0565b6138a3565b9050919050565b6000614a27826149fa565b9050919050565b6000614a3982614a1c565b9050919050565b614a4981614a2e565b82525050565b6000602082019050614a646000830184614a40565b92915050565b6000614a7582613ab2565b9150614a8083613ab2565b9250828201905061ffff811115614a9a57614a99614229565b5b92915050565b6000614aab82613a96565b9150614ab683613a96565b9250828201905060ff811115614acf57614ace614229565b5b92915050565b7f526f756e647472697020746f6f20686967680000000000000000000000000000600082015250565b6000614b0b6012836137f7565b9150614b1682614ad5565b602082019050919050565b60006020820190508181036000830152614b3a81614afe565b9050919050565b6000819050919050565b6000614b66614b61614b5c84614b41565b6149f0565b613901565b9050919050565b614b7681614b4b565b82525050565b600060c082019050614b916000830189613cb9565b614b9e60208301886139ad565b614bab6040830187614b6d565b614bb86060830186614b6d565b614bc56080830185613cb9565b614bd260a08301846139ad565b979650505050505050565b600081519050614bec8161390b565b92915050565b600080600060608486031215614c0b57614c0a61389e565b5b6000614c1986828701614bdd565b9350506020614c2a86828701614bdd565b9250506040614c3b86828701614bdd565b9150509250925092565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000614c7b601d836137f7565b9150614c8682614c45565b602082019050919050565b60006020820190508181036000830152614caa81614c6e565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b6000614ce76011836137f7565b9150614cf282614cb1565b602082019050919050565b60006020820190508181036000830152614d1681614cda565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614db0816138c3565b82525050565b6000614dc28383614da7565b60208301905092915050565b6000602082019050919050565b6000614de682614d7b565b614df08185614d86565b9350614dfb83614d97565b8060005b83811015614e2c578151614e138882614db6565b9750614e1e83614dce565b925050600181019050614dff565b5085935050505092915050565b600060a082019050614e4e60008301886139ad565b614e5b6020830187614b6d565b8181036040830152614e6d8186614ddb565b9050614e7c6060830185613cb9565b614e8960808301846139ad565b969550505050505056fea264697066735822122099325e950c6d343d8dc2fd650ddb362c80f62db3b3390c567e46153a2fefa50a64736f6c63430008110033
Deployed Bytecode Sourcemap
2132:13796:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6628:463;;;;;;;;;;;;;:::i;:::-;;5100:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5429:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4839:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9762:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9998:335;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10430:285;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;5844:368;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4930:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15677:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12003:199;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;5183:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10336:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9614:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;5013:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11516:482;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11288:225;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;5629:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12205:430;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6217:117;;;;;;;;;;;;;:::i;:::-;;15254:418;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5291:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12638:432;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1319:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10925:358;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10718:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6628:463;1256:6;;;;;;;;;;1242:20;;:10;:20;;;1234:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;3870:4:::1;3857:10;;:17;;;;;;;;;;;;;;;;;;6725:1:::2;6703:24;;:10;;;;;;;;;;;:24;;;6695:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;6776:1;6754:21;:23;6746:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;6838:1;6813:9;:24;6831:4;6813:24;;;;;;;;;;;;;;;;:26;6805:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;6901:18;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6883:58;;;6950:4;6957:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6883:100;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6870:10;;:113;;;;;;;;;;;;;;;;;;6988:69;7002:9;:24;7020:4;7002:24;;;;;;;;;;;;;;;;7028:21;7051:5;6988:13;:69::i;:::-;7082:4;7062:5;:17;7068:10;;;;;;;;;;;7062:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;3892:5:::1;3879:10;;:18;;;;;;;;;;;;;;;;;;6628:463::o:0;5100:80::-;5148:13;5172:5;;;;;;;;;;;;;;;;;5165:12;;5100:80;:::o;5429:195::-;5504:4;5550:6;5515:11;:23;5527:10;5515:23;;;;;;;;;;;;;;;:32;5539:7;5515:32;;;;;;;;;;;;;;;:41;;;;5587:7;5566:37;;5575:10;5566:37;;;5596:6;5566:37;;;;;;:::i;:::-;;;;;;;;5615:4;5608:11;;5429:195;;;;:::o;4839:88::-;4894:7;2211:1;2266:2;:13;;;;:::i;:::-;2256:6;:24;;;;:::i;:::-;4905:19;;4839:88;:::o;9762:233::-;1256:6;;;;;;;;;;1242:20;;:10;:20;;;1234:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;9857:8:::1;:18;;;;9869:6;9857:18;9853:72;;;9888:5;:13;9894:6;9888:13;;;;;;;;;;;;;;;;;;;;;;;;;9887:14;9879:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;9853:72;9949:6;9929:7;:17;9938:6;9929:17;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;9982:8;9960:9;:19;9971:6;9960:19;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;9762:233:::0;;;:::o;9998:335::-;1256:6;;;;;;;;;;1242:20;;:10;:20;;;1234:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;10121:10:::1;;;;;;;;;;;10100:31;;:17;:31;;::::0;10092:72:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10196:15;10169:5;:24;10175:17;10169:24;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;10221:15;10217:112;;;10274:5;10245:7;:26;10253:17;10245:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;10317:5;10286:9;:28;10296:17;10286:28;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;10217:112;9998:335:::0;;:::o;10430:285::-;10475:12;10489:13;10504:22;10528:24;10554:15;10571:22;10610:11;;;;;;;;;;;10623:12;;;;;;;;;;;10637:19;;;;;;;;;;;10658:21;;;;;;;;;;;10681:12;;;;;;;;;;;10695:14;;;;;;;;;;;10601:109;;;;;;;;;;;;10430:285;;;;;;:::o;5844:368::-;5944:4;5963:25;5981:6;5963:17;:25::i;:::-;5955:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;6052:17;6017:11;:19;6029:6;6017:19;;;;;;;;;;;;;;;:31;6037:10;6017:31;;;;;;;;;;;;;;;;:52;6014:142;;6144:6;6110:11;:19;6122:6;6110:19;;;;;;;;;;;;;;;:31;6130:10;6110:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;6076:11;:19;6088:6;6076:19;;;;;;;;;;;;;;;:31;6096:10;6076:31;;;;;;;;;;;;;;;:74;;;;6014:142;6167:40;6181:6;6189:9;6200:6;6167:13;:40::i;:::-;6160:47;;5844:368;;;;;:::o;4930:80::-;4982:5;2211:1;4991:16;;4930:80;:::o;15677:246::-;15727:24;15754:21;15764:10;15754:9;:21::i;:::-;15727:48;;15798:16;15788:6;:26;;15780:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;15845:31;15857:10;15869:6;15845:11;:31::i;:::-;15899:10;15886:32;;;15911:6;15886:32;;;;;;:::i;:::-;;;;;;;;15722:201;15677:246;:::o;12003:199::-;12051:13;12066:17;12085:18;12105;12140:12;;12154:16;;12172:11;;12185;;12131:66;;;;;;;;12003:199;;;;:::o;5183:105::-;5249:7;5267:9;:18;5277:7;5267:18;;;;;;;;;;;;;;;;5260:25;;5183:105;;;:::o;10336:89::-;10389:4;10407:5;:13;10413:6;10407:13;;;;;;;;;;;;;;;;;;;;;;;;;10400:20;;10336:89;;;:::o;9614:145::-;9676:11;9689:13;9718:7;:15;9726:6;9718:15;;;;;;;;;;;;;;;;;;;;;;;;;9735:9;:17;9745:6;9735:17;;;;;;;;;;;;;;;;;;;;;;;;;9709:45;;;;9614:145;;;:::o;5013:84::-;5063:13;5087:7;;;;;;;;;;;;;;;;;5080:14;;5013:84;:::o;11516:482::-;1256:6;;;;;;;;;;1242:20;;:10;:20;;;1234:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;11638:5:::1;:19;11644:12;11638:19;;;;;;;;;;;;;;;;;;;;;;;;;11637:20;:46;;;;;11662:5;:21;11668:14;11662:21;;;;;;;;;;;;;;;;;;;;;;;;;11661:22;11637:46;:68;;;;;11688:5;:17;11694:10;11688:17;;;;;;;;;;;;;;;;;;;;;;;;;11687:18;11637:68;11629:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;11765:12;11738:16;;:40;;;;;;;;;;;;;;;;;;11812:14;11783:18;;:44;;;;;;;;;;;;;;;;;;11843:10;11832:8;;:21;;;;;;;;;;;;;;;;;;11882:4;11858:7;:21;11866:12;11858:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;11917:4;11891:7;:23;11899:14;11891:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;11952:4;11926:9;:23;11936:12;11926:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;11989:4;11961:9;:25;11971:14;11961:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;11516:482:::0;;;:::o;11288:225::-;11335:13;11350:17;11369;11388:19;11409:15;11441:6;;;;;;;;;;;11449:10;;;;;;;;;;;11461:16;;;;;;;;;;;11479:18;;;;;;;;;;;11499:8;;;;;;;;;;;11432:76;;;;;;;;;;11288:225;;;;;:::o;5629:210::-;5709:4;5728:29;5746:10;5728:17;:29::i;:::-;5720:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;5790:44;5804:10;5816:9;5827:6;5790:13;:44::i;:::-;5783:51;;5629:210;;;;:::o;12205:430::-;1256:6;;;;;;;;;;1242:20;;:10;:20;;;1234:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;12305:16:::1;12364:1;12357:4;12339:15;12324:30;;2211:1;2266:2;:13;;;;:::i;:::-;2256:6;:24;;;;:::i;:::-;12324:30;;;;:::i;:::-;:37;;;;:::i;:::-;:41;;;;:::i;:::-;12305:60;;12390:12;;12378:8;:24;;12370:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;12443:8;12428:12;:23;;;;12456:20;12523:1;12516:4;12494:19;12479:34;;2211:1;2266:2;:13;;;;:::i;:::-;2256:6;:24;;;;:::i;:::-;12479:34;;;;:::i;:::-;:41;;;;:::i;:::-;:45;;;;:::i;:::-;12456:68;;12553:16;;12537:12;:32;;12529:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;12618:12;12599:16;:31;;;;12300:335;;12205:430:::0;;:::o;6217:117::-;1256:6;;;;;;;;;;1242:20;;:10;:20;;;1234:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;6273:12:::1;;;;;;;;;;;6272:13;6264:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;6315:14;:12;:14::i;:::-;6217:117::o:0;15254:418::-;1256:6;;;;;;;;;;1242:20;;:10;:20;;;1234:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;15343:10:::1;15339:168;;;15361:23;15387:24;15405:4;15387:9;:24::i;:::-;15361:50;;15443:1;15425:15;:19;15417:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;15464:37;15485:15;15464:20;:37::i;:::-;15355:152;15339:168;15515:7;15511:157;;;15531:18;15552:21;15531:42;;15600:1;15587:10;:14;15579:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;15621:40;15639:21;15621:17;:40::i;:::-;15524:144;15511:157;15254:418:::0;;:::o;5291:133::-;5375:7;5393:11;:19;5405:6;5393:19;;;;;;;;;;;;;;;:28;5413:7;5393:28;;;;;;;;;;;;;;;;5386:35;;5291:133;;;;:::o;12638:432::-;1256:6;;;;;;;;;;1242:20;;:10;:20;;;1234:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;12800:10:::1;12774:36;;12789:8;12774:23;;2211:1;2266:2;:13;;;;:::i;:::-;2256:6;:24;;;;:::i;:::-;12774:23;;;;:::i;:::-;:36;;;;:::i;:::-;12760:11;:50;;;;12855:10;12829:36;;12844:8;12829:23;;2211:1;2266:2;:13;;;;:::i;:::-;2256:6;:24;;;;:::i;:::-;12829:23;;;;:::i;:::-;:36;;;;:::i;:::-;12815:11;:50;;;;12891:11;;12878;;:24;;12870:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;12959:6;2211:1;2266:2;:13;;;;:::i;:::-;2256:6;:24;;;;:::i;:::-;12944:21;;;;:::i;:::-;12932:11;;:33;12924:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;13033:3;2211:1;2266:2;:13;;;;:::i;:::-;2256:6;:24;;;;:::i;:::-;13018:18;;;;:::i;:::-;13006:11;;:30;12998:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12638:432:::0;;;;:::o;1319:131::-;1256:6;;;;;;;;;;1242:20;;:10;:20;;;1234:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;1402:8:::1;1393:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1417:30;1438:8;1417:30;;;;;;:::i;:::-;;;;;;;;1319:131:::0;:::o;10925:358::-;1256:6;;;;;;;;;;1242:20;;:10;:20;;;1234:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;11087:12:::1;11072;;:27;;;;;;;;;;;;;;;;;;11126:15;11104:19;;:37;;;;;;;;;;;;;;;;;;11170:17;11146:21;;:41;;;;;;;;;;;;;;;;;;11261:17;11243:15;11228:12;11210:15;:30;;;;:::i;:::-;:48;;;;:::i;:::-;:68;;;;:::i;:::-;11192:15;;:86;;;;;;;;;;;;;;;;;;10925:358:::0;;;;:::o;10718:202::-;1256:6;;;;;;;;;;1242:20;;:10;:20;;;1234:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;10832:2:::1;10818:10;10806:9;:22;;;;:::i;:::-;:28;;;;10798:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;10876:9;10862:11;;:23;;;;;;;;;;;;;;;;;;10905:10;10890:12;;:25;;;;;;;;;;;;;;;;;;10718:202:::0;;:::o;7096:358::-;7193:24;7220:8;;;;;;;;;;;7193:35;;7238:8;7233:50;;;7278:1;7251:29;;7233:50;7287:28;7302:12;7287:14;:28::i;:::-;7320:18;;;;;;;;;;;:34;;;7362:13;7387:4;7394:12;7408:1;7411;7414:16;7432:15;7320:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;7188:266;7096:358;;;:::o;8962:252::-;9027:4;9037:16;9056:5;9037:24;;9071:12;;;;;;;;;;;9066:118;;;9102:4;9088:18;;9066:118;;;9123:7;:15;9131:6;9123:15;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;9142:9;:17;9152:6;9142:17;;;;;;;;;;;;;;;;;;;;;;;;;9123:36;9119:65;;;9177:4;9163:18;;9119:65;9066:118;9198:11;9191:18;;;8962:252;;;:::o;7619:883::-;7711:4;7748:1;7730:20;;:6;:20;;;7722:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;7794:12;;;;;;;;;;;7789:89;;7818:7;:15;7826:6;7818:15;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;7837:9;:17;7847:6;7837:17;;;;;;;;;;;;;;;;;;;;;;;;;7818:36;7810:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;7789:89;7888:10;;;;;;;;;;;7887:11;:31;;;;;7902:5;:16;7908:9;7902:16;;;;;;;;;;;;;;;;;;;;;;;;;7887:31;7882:64;;;7923:20;:18;:20::i;:::-;7882:64;7977:4;7959:23;;:6;:23;;;;:53;;;;;8007:4;7986:26;;:9;:26;;;;7959:53;:73;;;;;8026:6;;;;;;;;;;8016:16;;:6;:16;;;;7959:73;7954:155;;;8045:39;8058:6;8066:9;8077:6;8045:12;:39::i;:::-;8037:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;7954:155;8113:18;8134:40;8148:6;8156:9;8167:6;8134:13;:40::i;:::-;8113:61;;8179:23;8214:10;8205:6;:19;;;;:::i;:::-;8179:45;;8269:6;8249:9;:17;8259:6;8249:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;8229:9;:17;8239:6;8229:17;;;;;;;;;;;;;;;:46;;;;8298:1;8285:10;:14;8280:91;;;8358:10;8331:9;:24;8349:4;8331:24;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;8304:9;:24;8322:4;8304:24;;;;;;;;;;;;;;;:64;;;;8280:91;8421:15;8398:9;:20;8408:9;8398:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;8375:9;:20;8385:9;8375:20;;;;;;;;;;;;;;;:61;;;;8463:9;8446:35;;8455:6;8446:35;;;8474:6;8446:35;;;;;;:::i;:::-;;;;;;;;8493:4;8486:11;;;;7619:883;;;;;:::o;13075:225::-;13159:1;13150:6;:10;13145:151;;;13194:6;13169:9;:21;13179:10;13169:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;13232:6;13206:9;:22;3446:1;13206:22;;;;;;;;;;;;;;;;:32;;;;;;;:::i;:::-;;;;;;;;3446:1;13249:41;;13258:10;13249:41;;;13283:6;13249:41;;;;;;:::i;:::-;;;;;;;;13145:151;13075:225;;:::o;7459:155::-;7535:3;7531:1;2211;2266:2;:13;;;;:::i;:::-;2256:6;:24;;;;:::i;:::-;7516:16;;;;:::i;:::-;:22;;;;:::i;:::-;7497:12;:41;;;;7582:3;7578:1;2211;2266:2;:13;;;;:::i;:::-;2256:6;:24;;;;:::i;:::-;7563:16;;;;:::i;:::-;:22;;;;:::i;:::-;7544:16;:41;;;;7605:4;7590:12;;:19;;;;;;;;;;;;;;;;;;7459:155::o;14427:333::-;14491:27;14506:11;14491:14;:27::i;:::-;14523:21;14561:1;14547:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14523:40;;14586:4;14568;14573:1;14568:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;14606:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14596:4;14601:1;14596:7;;;;;;;;:::i;:::-;;;;;;;:35;;;;;;;;;;;14636:18;;;;;;;;;;;:69;;;14706:11;14718:1;14720:4;14733;14739:15;14636:119;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14486:274;14427:333;:::o;14765:484::-;14821:21;14867;;;;;;;;;;;14845:19;;;;;;;;;;;:43;;;;:::i;:::-;14821:67;;14914:1;14897:14;:18;;;14893:352;;;14923:23;14980:14;14949:45;;14958:19;;;;;;;;;;;14949:28;;:6;:28;;;;:::i;:::-;:45;;;;:::i;:::-;14923:71;;15000:25;15061:14;15028:47;;15037:21;;;;;;;;;;;15028:30;;:6;:30;;;;:::i;:::-;:47;;;;:::i;:::-;15000:75;;15104:1;15086:15;:19;15081:74;;;15110:16;;;;;;;;;;;:25;;:42;15136:15;15110:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15081:74;15185:1;15165:17;:21;15160:80;;;15191:18;;;;;;;;;;;:27;;:46;15219:17;15191:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15160:80;14917:328;;14893:352;14816:433;14765:484;:::o;6339:284::-;6453:12;6404:11;:26;6424:4;6404:26;;;;;;;;;;;;;;;:46;3536:42;6404:46;;;;;;;;;;;;;;;;:61;6399:220;;;6523:17;6474:11;:26;6494:4;6474:26;;;;;;;;;;;;;;;:46;3536:42;6474:46;;;;;;;;;;;;;;;:66;;;;3536:42;6551:62;;6568:4;6551:62;;;6595:17;6551:62;;;;;;:::i;:::-;;;;;;;;6399:220;6339:284;:::o;13305:1117::-;3870:4;3857:10;;:17;;;;;;;;;;;;;;;;;;13360:27:::1;13390:24;13408:4;13390:9;:24::i;:::-;13360:54;;13449:11;;13426:19;:34;;:50;;;;;13464:12;;;;;;;;;;;13426:50;13421:997;;;13513:11;;13490:19;:34;13485:80;;13551:11;;13529:33;;13485:80;13572:20;13650:1;13632:15;;;;;;;;;;;13595:52;;13617:12;;;;;;;;;;;13595:34;;:19;:34;;;;:::i;:::-;:52;;;;:::i;:::-;:56;;;;:::i;:::-;13572:79;;13657:21;13720:15:::0;::::1;;;;;;;;;;13681:54;;13703:14;;;;;;;;;;;13681:36;;:19;:36;;;;:::i;:::-;:54;;;;:::i;:::-;13657:78;;13741:41;13761:4;13768:13;13741:11;:41::i;:::-;13793:21;13854:13;13839:12;13817:19;:34;;;;:::i;:::-;:50;;;;:::i;:::-;13793:74;;2211:1;13893:2;:13;;;;:::i;:::-;13877;:29;13873:407;;;13916:19;13938:21;13916:43;;13966:35;13987:13;13966:20;:35::i;:::-;14008:19;14054:11;14030:21;:35;;;;:::i;:::-;14008:57;;14092:1;14077:12:::0;::::1;;;;;;;;;;:16;;;14072:202;;;14104:21;14157:15:::0;::::1;;;;;;;;;;14128:44;;14142:12;;;;;;;;;;;14128:26;;:11;:26;;;;:::i;:::-;:44;;;;:::i;:::-;14104:68;;14181:28;14196:12;14181:14;:28::i;:::-;14217:49;14231:12;14245:13;14260:5;14217:13;:49::i;:::-;14096:178;14072:202;13909:371;;13873:407;14285:27;14315:21;14285:51;;14367:1;14345:19;:23;14342:71;;;14372:38;14390:19;14372:17;:38::i;:::-;14342:71;13479:939;;;;13421:997;13355:1067;3892:5:::0;3879:10;;:18;;;;;;;;;;;;;;;;;;13305:1117::o;8507:450::-;8611:4;8622:21;8646:4;8622:28;;8660:12;;;;;;;;;;;:34;;;;;8677:9;:17;8687:6;8677:17;;;;;;;;;;;;;;;;;;;;;;;;;8676:18;8660:34;:59;;;;;8699:9;:20;8709:9;8699:20;;;;;;;;;;;;;;;;;;;;;;;;;8698:21;8660:59;8655:270;;;8750:12;;8733:14;:29;8728:192;;;8786:5;8767:24;;8728:192;;;8810:5;:16;8816:9;8810:16;;;;;;;;;;;;;;;;;;;;;;;;;8809:17;:79;;;;;8871:16;;8854:14;8831:9;:20;8841:9;8831:20;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;:56;8809:79;8804:116;;;8912:5;8893:24;;8804:116;8728:192;8655:270;8936:16;8929:23;;;8507:450;;;;;:::o;9219:388::-;9316:7;9330:17;9358:12;;;;;;;;;;;9357:13;:32;;;;9374:7;:15;9382:6;9374:15;;;;;;;;;;;;;;;;;;;;;;;;;9357:32;:54;;;;9393:7;:18;9401:9;9393:18;;;;;;;;;;;;;;;;;;;;;;;;;9357:54;9352:230;;;9428:1;9416:13;;9352:230;;;9446:5;:13;9452:6;9446:13;;;;;;;;;;;;;;;;;;;;;;;;;9441:141;;;9499:3;9485:11;;;;;;;;;;;9476:20;;:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;9464:38;;9441:141;;;9519:5;:16;9525:9;9519:16;;;;;;;;;;;;;;;;;;;;;;;;;9514:68;;;9576:3;9561:12;;;;;;;;;;;9552:21;;:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;9540:39;;9514:68;9441:141;9352:230;9593:9;9586:16;;;9219:388;;;;;:::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:116::-;3868:21;3883:5;3868:21;:::i;:::-;3861:5;3858:32;3848:60;;3904:1;3901;3894:12;3848:60;3798:116;:::o;3920:133::-;3963:5;4001:6;3988:20;3979:29;;4017:30;4041:5;4017:30;:::i;:::-;3920:133;;;;:::o;4059:607::-;4130:6;4138;4146;4195:2;4183:9;4174:7;4170:23;4166:32;4163:119;;;4201:79;;:::i;:::-;4163:119;4321:1;4346:53;4391:7;4382:6;4371:9;4367:22;4346:53;:::i;:::-;4336:63;;4292:117;4448:2;4474:50;4516:7;4507:6;4496:9;4492:22;4474:50;:::i;:::-;4464:60;;4419:115;4573:2;4599:50;4641:7;4632:6;4621:9;4617:22;4599:50;:::i;:::-;4589:60;;4544:115;4059:607;;;;;:::o;4672:468::-;4737:6;4745;4794:2;4782:9;4773:7;4769:23;4765:32;4762:119;;;4800:79;;:::i;:::-;4762:119;4920:1;4945:53;4990:7;4981:6;4970:9;4966:22;4945:53;:::i;:::-;4935:63;;4891:117;5047:2;5073:50;5115:7;5106:6;5095:9;5091:22;5073:50;:::i;:::-;5063:60;;5018:115;4672:468;;;;;:::o;5146:86::-;5181:7;5221:4;5214:5;5210:16;5199:27;;5146:86;;;:::o;5238:112::-;5321:22;5337:5;5321:22;:::i;:::-;5316:3;5309:35;5238:112;;:::o;5356:89::-;5392:7;5432:6;5425:5;5421:18;5410:29;;5356:89;;;:::o;5451:115::-;5536:23;5553:5;5536:23;:::i;:::-;5531:3;5524:36;5451:115;;:::o;5572:743::-;5789:4;5827:3;5816:9;5812:19;5804:27;;5841:67;5905:1;5894:9;5890:17;5881:6;5841:67;:::i;:::-;5918:68;5982:2;5971:9;5967:18;5958:6;5918:68;:::i;:::-;5996:70;6062:2;6051:9;6047:18;6038:6;5996:70;:::i;:::-;6076;6142:2;6131:9;6127:18;6118:6;6076:70;:::i;:::-;6156:71;6222:3;6211:9;6207:19;6198:6;6156:71;:::i;:::-;6237;6303:3;6292:9;6288:19;6279:6;6237:71;:::i;:::-;5572:743;;;;;;;;;:::o;6321:619::-;6398:6;6406;6414;6463:2;6451:9;6442:7;6438:23;6434:32;6431:119;;;6469:79;;:::i;:::-;6431:119;6589:1;6614:53;6659:7;6650:6;6639:9;6635:22;6614:53;:::i;:::-;6604:63;;6560:117;6716:2;6742:53;6787:7;6778:6;6767:9;6763:22;6742:53;:::i;:::-;6732:63;;6687:118;6844:2;6870:53;6915:7;6906:6;6895:9;6891:22;6870:53;:::i;:::-;6860:63;;6815:118;6321:619;;;;;:::o;6946:214::-;7035:4;7073:2;7062:9;7058:18;7050:26;;7086:67;7150:1;7139:9;7135:17;7126:6;7086:67;:::i;:::-;6946:214;;;;:::o;7166:329::-;7225:6;7274:2;7262:9;7253:7;7249:23;7245:32;7242:119;;;7280:79;;:::i;:::-;7242:119;7400:1;7425:53;7470:7;7461:6;7450:9;7446:22;7425:53;:::i;:::-;7415:63;;7371:117;7166:329;;;;:::o;7501:553::-;7678:4;7716:3;7705:9;7701:19;7693:27;;7730:71;7798:1;7787:9;7783:17;7774:6;7730:71;:::i;:::-;7811:72;7879:2;7868:9;7864:18;7855:6;7811:72;:::i;:::-;7893;7961:2;7950:9;7946:18;7937:6;7893:72;:::i;:::-;7975;8043:2;8032:9;8028:18;8019:6;7975:72;:::i;:::-;7501:553;;;;;;;:::o;8060:329::-;8119:6;8168:2;8156:9;8147:7;8143:23;8139:32;8136:119;;;8174:79;;:::i;:::-;8136:119;8294:1;8319:53;8364:7;8355:6;8344:9;8340:22;8319:53;:::i;:::-;8309:63;;8265:117;8060:329;;;;:::o;8395:308::-;8504:4;8542:2;8531:9;8527:18;8519:26;;8555:65;8617:1;8606:9;8602:17;8593:6;8555:65;:::i;:::-;8630:66;8692:2;8681:9;8677:18;8668:6;8630:66;:::i;:::-;8395:308;;;;;:::o;8709:619::-;8786:6;8794;8802;8851:2;8839:9;8830:7;8826:23;8822:32;8819:119;;;8857:79;;:::i;:::-;8819:119;8977:1;9002:53;9047:7;9038:6;9027:9;9023:22;9002:53;:::i;:::-;8992:63;;8948:117;9104:2;9130:53;9175:7;9166:6;9155:9;9151:22;9130:53;:::i;:::-;9120:63;;9075:118;9232:2;9258:53;9303:7;9294:6;9283:9;9279:22;9258:53;:::i;:::-;9248:63;;9203:118;8709:619;;;;;:::o;9334:118::-;9421:24;9439:5;9421:24;:::i;:::-;9416:3;9409:37;9334:118;;:::o;9458:664::-;9663:4;9701:3;9690:9;9686:19;9678:27;;9715:71;9783:1;9772:9;9768:17;9759:6;9715:71;:::i;:::-;9796:72;9864:2;9853:9;9849:18;9840:6;9796:72;:::i;:::-;9878;9946:2;9935:9;9931:18;9922:6;9878:72;:::i;:::-;9960;10028:2;10017:9;10013:18;10004:6;9960:72;:::i;:::-;10042:73;10110:3;10099:9;10095:19;10086:6;10042:73;:::i;:::-;9458:664;;;;;;;;:::o;10128:120::-;10200:23;10217:5;10200:23;:::i;:::-;10193:5;10190:34;10180:62;;10238:1;10235;10228:12;10180:62;10128:120;:::o;10254:137::-;10299:5;10337:6;10324:20;10315:29;;10353:32;10379:5;10353:32;:::i;:::-;10254:137;;;;:::o;10397:470::-;10463:6;10471;10520:2;10508:9;10499:7;10495:23;10491:32;10488:119;;;10526:79;;:::i;:::-;10488:119;10646:1;10671:52;10715:7;10706:6;10695:9;10691:22;10671:52;:::i;:::-;10661:62;;10617:116;10772:2;10798:52;10842:7;10833:6;10822:9;10818:22;10798:52;:::i;:::-;10788:62;;10743:117;10397:470;;;;;:::o;10873:462::-;10935:6;10943;10992:2;10980:9;10971:7;10967:23;10963:32;10960:119;;;10998:79;;:::i;:::-;10960:119;11118:1;11143:50;11185:7;11176:6;11165:9;11161:22;11143:50;:::i;:::-;11133:60;;11089:114;11242:2;11268:50;11310:7;11301:6;11290:9;11286:22;11268:50;:::i;:::-;11258:60;;11213:115;10873:462;;;;;:::o;11341:474::-;11409:6;11417;11466:2;11454:9;11445:7;11441:23;11437:32;11434:119;;;11472:79;;:::i;:::-;11434:119;11592:1;11617:53;11662:7;11653:6;11642:9;11638:22;11617:53;:::i;:::-;11607:63;;11563:117;11719:2;11745:53;11790:7;11781:6;11770:9;11766:22;11745:53;:::i;:::-;11735:63;;11690:118;11341:474;;;;;:::o;11821:93::-;11857:7;11897:10;11890:5;11886:22;11875:33;;11821:93;;;:::o;11920:120::-;11992:23;12009:5;11992:23;:::i;:::-;11985:5;11982:34;11972:62;;12030:1;12027;12020:12;11972:62;11920:120;:::o;12046:137::-;12091:5;12129:6;12116:20;12107:29;;12145:32;12171:5;12145:32;:::i;:::-;12046:137;;;;:::o;12189:757::-;12271:6;12279;12287;12295;12344:3;12332:9;12323:7;12319:23;12315:33;12312:120;;;12351:79;;:::i;:::-;12312:120;12471:1;12496:52;12540:7;12531:6;12520:9;12516:22;12496:52;:::i;:::-;12486:62;;12442:116;12597:2;12623:52;12667:7;12658:6;12647:9;12643:22;12623:52;:::i;:::-;12613:62;;12568:117;12724:2;12750:52;12794:7;12785:6;12774:9;12770:22;12750:52;:::i;:::-;12740:62;;12695:117;12851:2;12877:52;12921:7;12912:6;12901:9;12897:22;12877:52;:::i;:::-;12867:62;;12822:117;12189:757;;;;;;;:::o;12952:104::-;12997:7;13026:24;13044:5;13026:24;:::i;:::-;13015:35;;12952:104;;;:::o;13062:138::-;13143:32;13169:5;13143:32;:::i;:::-;13136:5;13133:43;13123:71;;13190:1;13187;13180:12;13123:71;13062:138;:::o;13206:155::-;13260:5;13298:6;13285:20;13276:29;;13314:41;13349:5;13314:41;:::i;:::-;13206:155;;;;:::o;13367:345::-;13434:6;13483:2;13471:9;13462:7;13458:23;13454:32;13451:119;;;13489:79;;:::i;:::-;13451:119;13609:1;13634:61;13687:7;13678:6;13667:9;13663:22;13634:61;:::i;:::-;13624:71;;13580:125;13367:345;;;;:::o;13718:757::-;13800:6;13808;13816;13824;13873:3;13861:9;13852:7;13848:23;13844:33;13841:120;;;13880:79;;:::i;:::-;13841:120;14000:1;14025:52;14069:7;14060:6;14049:9;14045:22;14025:52;:::i;:::-;14015:62;;13971:116;14126:2;14152:52;14196:7;14187:6;14176:9;14172:22;14152:52;:::i;:::-;14142:62;;14097:117;14253:2;14279:52;14323:7;14314:6;14303:9;14299:22;14279:52;:::i;:::-;14269:62;;14224:117;14380:2;14406:52;14450:7;14441:6;14430:9;14426:22;14406:52;:::i;:::-;14396:62;;14351:117;13718:757;;;;;;;:::o;14481:118::-;14552:22;14568:5;14552:22;:::i;:::-;14545:5;14542:33;14532:61;;14589:1;14586;14579:12;14532:61;14481:118;:::o;14605:135::-;14649:5;14687:6;14674:20;14665:29;;14703:31;14728:5;14703:31;:::i;:::-;14605:135;;;;:::o;14746:466::-;14810:6;14818;14867:2;14855:9;14846:7;14842:23;14838:32;14835:119;;;14873:79;;:::i;:::-;14835:119;14993:1;15018:51;15061:7;15052:6;15041:9;15037:22;15018:51;:::i;:::-;15008:61;;14964:115;15118:2;15144:51;15187:7;15178:6;15167:9;15163:22;15144:51;:::i;:::-;15134:61;;15089:116;14746:466;;;;;:::o;15218:230::-;15358:34;15354:1;15346:6;15342:14;15335:58;15427:13;15422:2;15414:6;15410:15;15403:38;15218:230;:::o;15454:366::-;15596:3;15617:67;15681:2;15676:3;15617:67;:::i;:::-;15610:74;;15693:93;15782:3;15693:93;:::i;:::-;15811:2;15806:3;15802:12;15795:19;;15454:366;;;:::o;15826:419::-;15992:4;16030:2;16019:9;16015:18;16007:26;;16079:9;16073:4;16069:20;16065:1;16054:9;16050:17;16043:47;16107:131;16233:4;16107:131;:::i;:::-;16099:139;;15826:419;;;:::o;16251:159::-;16391:11;16387:1;16379:6;16375:14;16368:35;16251:159;:::o;16416:365::-;16558:3;16579:66;16643:1;16638:3;16579:66;:::i;:::-;16572:73;;16654:93;16743:3;16654:93;:::i;:::-;16772:2;16767:3;16763:12;16756:19;;16416:365;;;:::o;16787:419::-;16953:4;16991:2;16980:9;16976:18;16968:26;;17040:9;17034:4;17030:20;17026:1;17015:9;17011:17;17004:47;17068:131;17194:4;17068:131;:::i;:::-;17060:139;;16787:419;;;:::o;17212:168::-;17352:20;17348:1;17340:6;17336:14;17329:44;17212:168;:::o;17386:366::-;17528:3;17549:67;17613:2;17608:3;17549:67;:::i;:::-;17542:74;;17625:93;17714:3;17625:93;:::i;:::-;17743:2;17738:3;17734:12;17727:19;;17386:366;;;:::o;17758:419::-;17924:4;17962:2;17951:9;17947:18;17939:26;;18011:9;18005:4;18001:20;17997:1;17986:9;17982:17;17975:47;18039:131;18165:4;18039:131;:::i;:::-;18031:139;;17758:419;;;:::o;18183:171::-;18323:23;18319:1;18311:6;18307:14;18300:47;18183:171;:::o;18360:366::-;18502:3;18523:67;18587:2;18582:3;18523:67;:::i;:::-;18516:74;;18599:93;18688:3;18599:93;:::i;:::-;18717:2;18712:3;18708:12;18701:19;;18360:366;;;:::o;18732:419::-;18898:4;18936:2;18925:9;18921:18;18913:26;;18985:9;18979:4;18975:20;18971:1;18960:9;18956:17;18949:47;19013:131;19139:4;19013:131;:::i;:::-;19005:139;;18732:419;;;:::o;19157:143::-;19214:5;19245:6;19239:13;19230:22;;19261:33;19288:5;19261:33;:::i;:::-;19157:143;;;;:::o;19306:351::-;19376:6;19425:2;19413:9;19404:7;19400:23;19396:32;19393:119;;;19431:79;;:::i;:::-;19393:119;19551:1;19576:64;19632:7;19623:6;19612:9;19608:22;19576:64;:::i;:::-;19566:74;;19522:128;19306:351;;;;:::o;19663:332::-;19784:4;19822:2;19811:9;19807:18;19799:26;;19835:71;19903:1;19892:9;19888:17;19879:6;19835:71;:::i;:::-;19916:72;19984:2;19973:9;19969:18;19960:6;19916:72;:::i;:::-;19663:332;;;;;:::o;20001:180::-;20049:77;20046:1;20039:88;20146:4;20143:1;20136:15;20170:4;20167:1;20160:15;20187:102;20229:8;20276:5;20273:1;20269:13;20248:34;;20187:102;;;:::o;20295:848::-;20356:5;20363:4;20387:6;20378:15;;20411:5;20402:14;;20425:712;20446:1;20436:8;20433:15;20425:712;;;20541:4;20536:3;20532:14;20526:4;20523:24;20520:50;;;20550:18;;:::i;:::-;20520:50;20600:1;20590:8;20586:16;20583:451;;;21015:4;21008:5;21004:16;20995:25;;20583:451;21065:4;21059;21055:15;21047:23;;21095:32;21118:8;21095:32;:::i;:::-;21083:44;;20425:712;;;20295:848;;;;;;;:::o;21149:1073::-;21203:5;21394:8;21384:40;;21415:1;21406:10;;21417:5;;21384:40;21443:4;21433:36;;21460:1;21451:10;;21462:5;;21433:36;21529:4;21577:1;21572:27;;;;21613:1;21608:191;;;;21522:277;;21572:27;21590:1;21581:10;;21592:5;;;21608:191;21653:3;21643:8;21640:17;21637:43;;;21660:18;;:::i;:::-;21637:43;21709:8;21706:1;21702:16;21693:25;;21744:3;21737:5;21734:14;21731:40;;;21751:18;;:::i;:::-;21731:40;21784:5;;;21522:277;;21908:2;21898:8;21895:16;21889:3;21883:4;21880:13;21876:36;21858:2;21848:8;21845:16;21840:2;21834:4;21831:12;21827:35;21811:111;21808:246;;;21964:8;21958:4;21954:19;21945:28;;21999:3;21992:5;21989:14;21986:40;;;22006:18;;:::i;:::-;21986:40;22039:5;;21808:246;22079:42;22117:3;22107:8;22101:4;22098:1;22079:42;:::i;:::-;22064:57;;;;22153:4;22148:3;22144:14;22137:5;22134:25;22131:51;;;22162:18;;:::i;:::-;22131:51;22211:4;22204:5;22200:16;22191:25;;21149:1073;;;;;;:::o;22228:281::-;22286:5;22310:23;22328:4;22310:23;:::i;:::-;22302:31;;22354:25;22370:8;22354:25;:::i;:::-;22342:37;;22398:104;22435:66;22425:8;22419:4;22398:104;:::i;:::-;22389:113;;22228:281;;;;:::o;22515:410::-;22555:7;22578:20;22596:1;22578:20;:::i;:::-;22573:25;;22612:20;22630:1;22612:20;:::i;:::-;22607:25;;22667:1;22664;22660:9;22689:30;22707:11;22689:30;:::i;:::-;22678:41;;22868:1;22859:7;22855:15;22852:1;22849:22;22829:1;22822:9;22802:83;22779:139;;22898:18;;:::i;:::-;22779:139;22563:362;22515:410;;;;:::o;22931:166::-;23071:18;23067:1;23059:6;23055:14;23048:42;22931:166;:::o;23103:366::-;23245:3;23266:67;23330:2;23325:3;23266:67;:::i;:::-;23259:74;;23342:93;23431:3;23342:93;:::i;:::-;23460:2;23455:3;23451:12;23444:19;;23103:366;;;:::o;23475:419::-;23641:4;23679:2;23668:9;23664:18;23656:26;;23728:9;23722:4;23718:20;23714:1;23703:9;23699:17;23692:47;23756:131;23882:4;23756:131;:::i;:::-;23748:139;;23475:419;;;:::o;23900:178::-;24040:30;24036:1;24028:6;24024:14;24017:54;23900:178;:::o;24084:366::-;24226:3;24247:67;24311:2;24306:3;24247:67;:::i;:::-;24240:74;;24323:93;24412:3;24323:93;:::i;:::-;24441:2;24436:3;24432:12;24425:19;;24084:366;;;:::o;24456:419::-;24622:4;24660:2;24649:9;24645:18;24637:26;;24709:9;24703:4;24699:20;24695:1;24684:9;24680:17;24673:47;24737:131;24863:4;24737:131;:::i;:::-;24729:139;;24456:419;;;:::o;24881:166::-;25021:18;25017:1;25009:6;25005:14;24998:42;24881:166;:::o;25053:366::-;25195:3;25216:67;25280:2;25275:3;25216:67;:::i;:::-;25209:74;;25292:93;25381:3;25292:93;:::i;:::-;25410:2;25405:3;25401:12;25394:19;;25053:366;;;:::o;25425:419::-;25591:4;25629:2;25618:9;25614:18;25606:26;;25678:9;25672:4;25668:20;25664:1;25653:9;25649:17;25642:47;25706:131;25832:4;25706:131;:::i;:::-;25698:139;;25425:419;;;:::o;25850:194::-;25890:4;25910:20;25928:1;25910:20;:::i;:::-;25905:25;;25944:20;25962:1;25944:20;:::i;:::-;25939:25;;25988:1;25985;25981:9;25973:17;;26012:1;26006:4;26003:11;26000:37;;;26017:18;;:::i;:::-;26000:37;25850:194;;;;:::o;26050:171::-;26190:23;26186:1;26178:6;26174:14;26167:47;26050:171;:::o;26227:366::-;26369:3;26390:67;26454:2;26449:3;26390:67;:::i;:::-;26383:74;;26466:93;26555:3;26466:93;:::i;:::-;26584:2;26579:3;26575:12;26568:19;;26227:366;;;:::o;26599:419::-;26765:4;26803:2;26792:9;26788:18;26780:26;;26852:9;26846:4;26842:20;26838:1;26827:9;26823:17;26816:47;26880:131;27006:4;26880:131;:::i;:::-;26872:139;;26599:419;;;:::o;27024:173::-;27164:25;27160:1;27152:6;27148:14;27141:49;27024:173;:::o;27203:366::-;27345:3;27366:67;27430:2;27425:3;27366:67;:::i;:::-;27359:74;;27442:93;27531:3;27442:93;:::i;:::-;27560:2;27555:3;27551:12;27544:19;;27203:366;;;:::o;27575:419::-;27741:4;27779:2;27768:9;27764:18;27756:26;;27828:9;27822:4;27818:20;27814:1;27803:9;27799:17;27792:47;27856:131;27982:4;27856:131;:::i;:::-;27848:139;;27575:419;;;:::o;28000:180::-;28048:77;28045:1;28038:88;28145:4;28142:1;28135:15;28169:4;28166:1;28159:15;28186:185;28226:1;28243:20;28261:1;28243:20;:::i;:::-;28238:25;;28277:20;28295:1;28277:20;:::i;:::-;28272:25;;28316:1;28306:35;;28321:18;;:::i;:::-;28306:35;28363:1;28360;28356:9;28351:14;;28186:185;;;;:::o;28377:191::-;28417:3;28436:20;28454:1;28436:20;:::i;:::-;28431:25;;28470:20;28488:1;28470:20;:::i;:::-;28465:25;;28513:1;28510;28506:9;28499:16;;28534:3;28531:1;28528:10;28525:36;;;28541:18;;:::i;:::-;28525:36;28377:191;;;;:::o;28574:166::-;28714:18;28710:1;28702:6;28698:14;28691:42;28574:166;:::o;28746:366::-;28888:3;28909:67;28973:2;28968:3;28909:67;:::i;:::-;28902:74;;28985:93;29074:3;28985:93;:::i;:::-;29103:2;29098:3;29094:12;29087:19;;28746:366;;;:::o;29118:419::-;29284:4;29322:2;29311:9;29307:18;29299:26;;29371:9;29365:4;29361:20;29357:1;29346:9;29342:17;29335:47;29399:131;29525:4;29399:131;:::i;:::-;29391:139;;29118:419;;;:::o;29543:170::-;29683:22;29679:1;29671:6;29667:14;29660:46;29543:170;:::o;29719:366::-;29861:3;29882:67;29946:2;29941:3;29882:67;:::i;:::-;29875:74;;29958:93;30047:3;29958:93;:::i;:::-;30076:2;30071:3;30067:12;30060:19;;29719:366;;;:::o;30091:419::-;30257:4;30295:2;30284:9;30280:18;30272:26;;30344:9;30338:4;30334:20;30330:1;30319:9;30315:17;30308:47;30372:131;30498:4;30372:131;:::i;:::-;30364:139;;30091:419;;;:::o;30516:170::-;30656:22;30652:1;30644:6;30640:14;30633:46;30516:170;:::o;30692:366::-;30834:3;30855:67;30919:2;30914:3;30855:67;:::i;:::-;30848:74;;30931:93;31020:3;30931:93;:::i;:::-;31049:2;31044:3;31040:12;31033:19;;30692:366;;;:::o;31064:419::-;31230:4;31268:2;31257:9;31253:18;31245:26;;31317:9;31311:4;31307:20;31303:1;31292:9;31288:17;31281:47;31345:131;31471:4;31345:131;:::i;:::-;31337:139;;31064:419;;;:::o;31489:159::-;31629:11;31625:1;31617:6;31613:14;31606:35;31489:159;:::o;31654:365::-;31796:3;31817:66;31881:1;31876:3;31817:66;:::i;:::-;31810:73;;31892:93;31981:3;31892:93;:::i;:::-;32010:2;32005:3;32001:12;31994:19;;31654:365;;;:::o;32025:419::-;32191:4;32229:2;32218:9;32214:18;32206:26;;32278:9;32272:4;32268:20;32264:1;32253:9;32249:17;32242:47;32306:131;32432:4;32306:131;:::i;:::-;32298:139;;32025:419;;;:::o;32450:162::-;32590:14;32586:1;32578:6;32574:14;32567:38;32450:162;:::o;32618:366::-;32760:3;32781:67;32845:2;32840:3;32781:67;:::i;:::-;32774:74;;32857:93;32946:3;32857:93;:::i;:::-;32975:2;32970:3;32966:12;32959:19;;32618:366;;;:::o;32990:419::-;33156:4;33194:2;33183:9;33179:18;33171:26;;33243:9;33237:4;33233:20;33229:1;33218:9;33214:17;33207:47;33271:131;33397:4;33271:131;:::i;:::-;33263:139;;32990:419;;;:::o;33415:173::-;33555:25;33551:1;33543:6;33539:14;33532:49;33415:173;:::o;33594:366::-;33736:3;33757:67;33821:2;33816:3;33757:67;:::i;:::-;33750:74;;33833:93;33922:3;33833:93;:::i;:::-;33951:2;33946:3;33942:12;33935:19;;33594:366;;;:::o;33966:419::-;34132:4;34170:2;34159:9;34155:18;34147:26;;34219:9;34213:4;34209:20;34205:1;34194:9;34190:17;34183:47;34247:131;34373:4;34247:131;:::i;:::-;34239:139;;33966:419;;;:::o;34391:174::-;34531:26;34527:1;34519:6;34515:14;34508:50;34391:174;:::o;34571:366::-;34713:3;34734:67;34798:2;34793:3;34734:67;:::i;:::-;34727:74;;34810:93;34899:3;34810:93;:::i;:::-;34928:2;34923:3;34919:12;34912:19;;34571:366;;;:::o;34943:419::-;35109:4;35147:2;35136:9;35132:18;35124:26;;35196:9;35190:4;35186:20;35182:1;35171:9;35167:17;35160:47;35224:131;35350:4;35224:131;:::i;:::-;35216:139;;34943:419;;;:::o;35368:60::-;35396:3;35417:5;35410:12;;35368:60;;;:::o;35434:142::-;35484:9;35517:53;35535:34;35544:24;35562:5;35544:24;:::i;:::-;35535:34;:::i;:::-;35517:53;:::i;:::-;35504:66;;35434:142;;;:::o;35582:126::-;35632:9;35665:37;35696:5;35665:37;:::i;:::-;35652:50;;35582:126;;;:::o;35714:134::-;35772:9;35805:37;35836:5;35805:37;:::i;:::-;35792:50;;35714:134;;;:::o;35854:147::-;35949:45;35988:5;35949:45;:::i;:::-;35944:3;35937:58;35854:147;;:::o;36007:238::-;36108:4;36146:2;36135:9;36131:18;36123:26;;36159:79;36235:1;36224:9;36220:17;36211:6;36159:79;:::i;:::-;36007:238;;;;:::o;36251:193::-;36290:3;36309:19;36326:1;36309:19;:::i;:::-;36304:24;;36342:19;36359:1;36342:19;:::i;:::-;36337:24;;36384:1;36381;36377:9;36370:16;;36407:6;36402:3;36399:15;36396:41;;;36417:18;;:::i;:::-;36396:41;36251:193;;;;:::o;36450:188::-;36488:3;36507:18;36523:1;36507:18;:::i;:::-;36502:23;;36539:18;36555:1;36539:18;:::i;:::-;36534:23;;36580:1;36577;36573:9;36566:16;;36603:4;36598:3;36595:13;36592:39;;;36611:18;;:::i;:::-;36592:39;36450:188;;;;:::o;36644:168::-;36784:20;36780:1;36772:6;36768:14;36761:44;36644:168;:::o;36818:366::-;36960:3;36981:67;37045:2;37040:3;36981:67;:::i;:::-;36974:74;;37057:93;37146:3;37057:93;:::i;:::-;37175:2;37170:3;37166:12;37159:19;;36818:366;;;:::o;37190:419::-;37356:4;37394:2;37383:9;37379:18;37371:26;;37443:9;37437:4;37433:20;37429:1;37418:9;37414:17;37407:47;37471:131;37597:4;37471:131;:::i;:::-;37463:139;;37190:419;;;:::o;37615:85::-;37660:7;37689:5;37678:16;;37615:85;;;:::o;37706:158::-;37764:9;37797:61;37815:42;37824:32;37850:5;37824:32;:::i;:::-;37815:42;:::i;:::-;37797:61;:::i;:::-;37784:74;;37706:158;;;:::o;37870:147::-;37965:45;38004:5;37965:45;:::i;:::-;37960:3;37953:58;37870:147;;:::o;38023:807::-;38272:4;38310:3;38299:9;38295:19;38287:27;;38324:71;38392:1;38381:9;38377:17;38368:6;38324:71;:::i;:::-;38405:72;38473:2;38462:9;38458:18;38449:6;38405:72;:::i;:::-;38487:80;38563:2;38552:9;38548:18;38539:6;38487:80;:::i;:::-;38577;38653:2;38642:9;38638:18;38629:6;38577:80;:::i;:::-;38667:73;38735:3;38724:9;38720:19;38711:6;38667:73;:::i;:::-;38750;38818:3;38807:9;38803:19;38794:6;38750:73;:::i;:::-;38023:807;;;;;;;;;:::o;38836:143::-;38893:5;38924:6;38918:13;38909:22;;38940:33;38967:5;38940:33;:::i;:::-;38836:143;;;;:::o;38985:663::-;39073:6;39081;39089;39138:2;39126:9;39117:7;39113:23;39109:32;39106:119;;;39144:79;;:::i;:::-;39106:119;39264:1;39289:64;39345:7;39336:6;39325:9;39321:22;39289:64;:::i;:::-;39279:74;;39235:128;39402:2;39428:64;39484:7;39475:6;39464:9;39460:22;39428:64;:::i;:::-;39418:74;;39373:129;39541:2;39567:64;39623:7;39614:6;39603:9;39599:22;39567:64;:::i;:::-;39557:74;;39512:129;38985:663;;;;;:::o;39654:179::-;39794:31;39790:1;39782:6;39778:14;39771:55;39654:179;:::o;39839:366::-;39981:3;40002:67;40066:2;40061:3;40002:67;:::i;:::-;39995:74;;40078:93;40167:3;40078:93;:::i;:::-;40196:2;40191:3;40187:12;40180:19;;39839:366;;;:::o;40211:419::-;40377:4;40415:2;40404:9;40400:18;40392:26;;40464:9;40458:4;40454:20;40450:1;40439:9;40435:17;40428:47;40492:131;40618:4;40492:131;:::i;:::-;40484:139;;40211:419;;;:::o;40636:167::-;40776:19;40772:1;40764:6;40760:14;40753:43;40636:167;:::o;40809:366::-;40951:3;40972:67;41036:2;41031:3;40972:67;:::i;:::-;40965:74;;41048:93;41137:3;41048:93;:::i;:::-;41166:2;41161:3;41157:12;41150:19;;40809:366;;;:::o;41181:419::-;41347:4;41385:2;41374:9;41370:18;41362:26;;41434:9;41428:4;41424:20;41420:1;41409:9;41405:17;41398:47;41462:131;41588:4;41462:131;:::i;:::-;41454:139;;41181:419;;;:::o;41606:180::-;41654:77;41651:1;41644:88;41751:4;41748:1;41741:15;41775:4;41772:1;41765:15;41792:180;41840:77;41837:1;41830:88;41937:4;41934:1;41927:15;41961:4;41958:1;41951:15;41978:114;42045:6;42079:5;42073:12;42063:22;;41978:114;;;:::o;42098:184::-;42197:11;42231:6;42226:3;42219:19;42271:4;42266:3;42262:14;42247:29;;42098:184;;;;:::o;42288:132::-;42355:4;42378:3;42370:11;;42408:4;42403:3;42399:14;42391:22;;42288:132;;;:::o;42426:108::-;42503:24;42521:5;42503:24;:::i;:::-;42498:3;42491:37;42426:108;;:::o;42540:179::-;42609:10;42630:46;42672:3;42664:6;42630:46;:::i;:::-;42708:4;42703:3;42699:14;42685:28;;42540:179;;;;:::o;42725:113::-;42795:4;42827;42822:3;42818:14;42810:22;;42725:113;;;:::o;42874:732::-;42993:3;43022:54;43070:5;43022:54;:::i;:::-;43092:86;43171:6;43166:3;43092:86;:::i;:::-;43085:93;;43202:56;43252:5;43202:56;:::i;:::-;43281:7;43312:1;43297:284;43322:6;43319:1;43316:13;43297:284;;;43398:6;43392:13;43425:63;43484:3;43469:13;43425:63;:::i;:::-;43418:70;;43511:60;43564:6;43511:60;:::i;:::-;43501:70;;43357:224;43344:1;43341;43337:9;43332:14;;43297:284;;;43301:14;43597:3;43590:10;;42998:608;;;42874:732;;;;:::o;43612:831::-;43875:4;43913:3;43902:9;43898:19;43890:27;;43927:71;43995:1;43984:9;43980:17;43971:6;43927:71;:::i;:::-;44008:80;44084:2;44073:9;44069:18;44060:6;44008:80;:::i;:::-;44135:9;44129:4;44125:20;44120:2;44109:9;44105:18;44098:48;44163:108;44266:4;44257:6;44163:108;:::i;:::-;44155:116;;44281:72;44349:2;44338:9;44334:18;44325:6;44281:72;:::i;:::-;44363:73;44431:3;44420:9;44416:19;44407:6;44363:73;:::i;:::-;43612:831;;;;;;;;:::o
Swarm Source
ipfs://99325e950c6d343d8dc2fd650ddb362c80f62db3b3390c567e46153a2fefa50a
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.