Token migration announcement. Kondux token contract has migrated to a new address.
ERC-20
Old Contract
Overview
Max Total Supply
10,000,000,000,000 KNDX
Holders
1,954 (0.00%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
59,992.474346689 KNDXValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
KNDX
Compiler Version
v0.8.11+commit.d7f03943
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-02-17 */ //SPDX-License-Identifier: MIT //Note: SafeMath is not used because it is redundant since solidity 0.8 pragma solidity 0.8.11; 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 getOwner() external view returns (address); 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 _owner) { owner = _owner; } 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 KNDX is IERC20, Auth { string constant _name = "Kondux"; string constant _symbol = "KNDX"; uint8 constant _decimals = 9; uint256 constant _totalSupply = 10_000_000_000_000 * 10**_decimals; mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) _allowances; mapping (address => bool) public excludedFromFees; bool public tradingOpen; uint256 public taxSwapMin; uint256 public taxSwapMax; mapping (address => bool) private _isLiqPool; uint8 constant _maxTaxRate = 5; uint8 public taxRateBuy; uint8 public taxRateSell; bool public antiBotEnabled; mapping (address => bool) public excludedFromAntiBot; mapping (address => uint256) private _lastSwapBlock; address payable private taxWallet = payable(0x79BD02b5936FFdC5915cB7Cd58156E3169F4F569); bool private _inTaxSwap = false; address private constant _uniswapV2RouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); IUniswapV2Router02 private _uniswapV2Router; modifier lockTaxSwap { _inTaxSwap = true; _; _inTaxSwap = false; } event TokensAirdropped(uint256 totalWallets, uint256 totalTokens); event TokensBurned(address indexed burnedByWallet, uint256 tokenAmount); event TaxWalletChanged(address newTaxWallet); event TaxRateChanged(uint8 newBuyTax, uint8 newSellTax); constructor () Auth(msg.sender) { taxSwapMin = _totalSupply * 10 / 10000; taxSwapMax = _totalSupply * 50 / 10000; _uniswapV2Router = IUniswapV2Router02(_uniswapV2RouterAddress); excludedFromFees[_uniswapV2RouterAddress] = true; excludedFromAntiBot[owner] = true; excludedFromAntiBot[address(this)] = true; excludedFromFees[owner] = true; excludedFromFees[address(this)] = true; excludedFromFees[taxWallet] = 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 getOwner() external view override returns (address) { return owner; } 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(), "Trading not open"); return _transferFrom(msg.sender, recipient, amount); } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { require(_checkTradingOpen(), "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); } //TODO - fix addresses and values before deploying! function _distributeInitialBalances() internal { // Rewards pool allocation address 25% 2.5T: 0x700830a7E81Bee3cd485f27bd7fA4C6754DE437f uint256 rewardsPoolAmount = 2_500_000_000_000 * 10**_decimals; _balances[address(0x700830a7E81Bee3cd485f27bd7fA4C6754DE437f)] = rewardsPoolAmount; emit Transfer(address(0), address(0x700830a7E81Bee3cd485f27bd7fA4C6754DE437f), rewardsPoolAmount ); // exchange/partnerships 25% 2.5T: 0xF5f6AA0Fd5Ae2cBF7e14e16be4642c5Fb1c0739D uint256 exchangePartnershipAmount = 2_500_000_000_000 * 10**_decimals; _balances[address(0xF5f6AA0Fd5Ae2cBF7e14e16be4642c5Fb1c0739D)] = exchangePartnershipAmount; emit Transfer(address(0), address(0xF5f6AA0Fd5Ae2cBF7e14e16be4642c5Fb1c0739D), exchangePartnershipAmount ); // Dev Fund 15% 1.5T: 0x107039123098d4b1aCef2c3e9FEd95031f42a61d uint256 devFundAmount = 1_500_000_000_000 * 10**_decimals; _balances[address(0x107039123098d4b1aCef2c3e9FEd95031f42a61d)] = devFundAmount; emit Transfer(address(0), address(0x107039123098d4b1aCef2c3e9FEd95031f42a61d), devFundAmount ); // Team wallet 5% 500B: 0x4696c2555Be4231ca06C876c4c34AE0E0EeE32CC uint256 teamAmount = 500_000_000_000 * 10**_decimals; _balances[address(0x4696c2555Be4231ca06C876c4c34AE0E0EeE32CC)] = teamAmount; emit Transfer(address(0), address(0x4696c2555Be4231ca06C876c4c34AE0E0EeE32CC), teamAmount ); // Marketing 1.7% 170B: 0xB8A95684053fE7dD1543cabBae96F840374Be95b uint256 marketingAmount = 161_948_209_087 * 10**_decimals; _balances[address(0xB8A95684053fE7dD1543cabBae96F840374Be95b)] = marketingAmount; emit Transfer(address(0), address(0xB8A95684053fE7dD1543cabBae96F840374Be95b), marketingAmount ); // TXN settlement address + 263B - 0x79BD02b5936FFdC5915cB7Cd58156E3169F4F569 uint256 txnSettlementAmount = 263_000_000_000 * 10**_decimals; _balances[address(0x79BD02b5936FFdC5915cB7Cd58156E3169F4F569)] = txnSettlementAmount; emit Transfer(address(0), address(0x79BD02b5936FFdC5915cB7Cd58156E3169F4F569), txnSettlementAmount ); // Burn amount = 287,545,998,160 uint256 burnAmount = 287_545_998_160 * 10**_decimals; _balances[address(0)] = burnAmount; emit Transfer(address(0), address(0), burnAmount ); emit TokensBurned(address(0), burnAmount); uint256 liquidityPoolAmount = 567_141_443_087 * 10**_decimals; _balances[address(this)] = liquidityPoolAmount; emit Transfer(address(0), address(this), liquidityPoolAmount ); uint256 airdropTokensAmount = _totalSupply - txnSettlementAmount - rewardsPoolAmount - exchangePartnershipAmount - devFundAmount - teamAmount - marketingAmount - burnAmount - liquidityPoolAmount; _balances[address(0x32Bdac9Be1fe8BD91170a6Cd8A9502410127F5f4)] = airdropTokensAmount; emit Transfer(address(0), address(0x32Bdac9Be1fe8BD91170a6Cd8A9502410127F5f4), airdropTokensAmount ); } function initLP(uint256 ethAmountWei) external onlyOwner { require(!tradingOpen, "trading already open"); require(ethAmountWei > 0, "eth cannot be 0"); _distributeInitialBalances(); uint256 _contractETHBalance = address(this).balance; require(_contractETHBalance >= ethAmountWei, "not enough eth"); uint256 _contractTokenBalance = balanceOf(address(this)); require(_contractTokenBalance > 0, "no tokens"); address _uniLpAddr = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); _isLiqPool[_uniLpAddr] = true; _approveRouter(_contractTokenBalance); _addLiquidity(_contractTokenBalance, ethAmountWei, false); _openTrading(); } function _approveRouter(uint256 _tokenAmount) internal { if ( _allowances[address(this)][_uniswapV2RouterAddress] < _tokenAmount ) { _allowances[address(this)][_uniswapV2RouterAddress] = type(uint256).max; emit Approval(address(this), _uniswapV2RouterAddress, type(uint256).max); } } function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei, bool autoburn) internal { address lpTokenRecipient = address(0); if ( !autoburn ) { lpTokenRecipient = owner; } _uniswapV2Router.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, lpTokenRecipient, block.timestamp ); } function _openTrading() internal { taxRateBuy = 3; taxRateSell = 3; tradingOpen = true; } function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { require(sender != address(0) || recipient != address(0), "Zero wallet cannot do transfers."); if ( tradingOpen ) { if ( antiBotEnabled ) { checkAntiBot(sender, recipient); } if ( !_inTaxSwap && _isLiqPool[recipient] ) { _swapTaxAndDistributeEth(); } } 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 _checkTradingOpen() private view returns (bool){ bool checkResult = false; if ( tradingOpen ) { checkResult = true; } else if ( tx.origin == owner ) { checkResult = true; } return checkResult; } function _calculateTax(address sender, address recipient, uint256 amount) internal view returns (uint256) { uint256 taxAmount; if ( !tradingOpen || excludedFromFees[sender] || excludedFromFees[recipient] ) { taxAmount = 0; } else if ( _isLiqPool[sender] ) { taxAmount = amount * taxRateBuy / 100; } else if ( _isLiqPool[recipient] ) { taxAmount = amount * taxRateSell / 100; } else { taxAmount = 0; } return taxAmount; } function burnTokens(uint256 amount) external { //burns tokens from the msg.sender's wallet uint256 _tokensAvailable = balanceOf(msg.sender); require(amount <= _tokensAvailable, "Token balance too low"); _balances[msg.sender] -= amount; _balances[address(0)] += amount; emit Transfer(msg.sender,address(0), amount); emit TokensBurned(msg.sender, amount); } function checkAntiBot(address sender, address recipient) internal { if ( _isLiqPool[sender] && !excludedFromAntiBot[recipient] ) { //buy transactions require(_lastSwapBlock[recipient] < block.number, "AntiBot triggered"); _lastSwapBlock[recipient] = block.number; } else if ( _isLiqPool[recipient] && !excludedFromAntiBot[sender] ) { //sell transactions require(_lastSwapBlock[sender] < block.number, "AntiBot triggered"); _lastSwapBlock[sender] = block.number; } } function enableAntiBot(bool isEnabled) external onlyOwner { antiBotEnabled = isEnabled; } function excludeFromAntiBot(address wallet, bool isExcluded) external onlyOwner { if (!isExcluded) { require(wallet != address(this) && wallet != owner, "This address must be excluded" ); } excludedFromAntiBot[wallet] = isExcluded; } function excludeFromFees(address wallet, bool isExcluded) external onlyOwner { if (isExcluded) { require(wallet != address(this) && wallet != owner, "Cannot enforce fees for this address"); } excludedFromFees[wallet] = isExcluded; } function adjustTaxRate(uint8 newBuyTax, uint8 newSellTax) external onlyOwner { require(newBuyTax <= _maxTaxRate && newSellTax <= _maxTaxRate, "Tax too high"); //set new tax rate percentage - cannot be higher than the default rate 5% taxRateBuy = newBuyTax; taxRateSell = newSellTax; emit TaxRateChanged(newBuyTax, newSellTax); } function setTaxWallet(address newTaxWallet) external onlyOwner { taxWallet = payable(newTaxWallet); excludedFromFees[newTaxWallet] = true; emit TaxWalletChanged(newTaxWallet); } function taxSwapSettings(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 / 10000, "Upper threshold too low"); require(taxSwapMax<_totalSupply / 10, "Upper threshold too high"); } function _swapTaxAndDistributeEth() private lockTaxSwap { uint256 _taxTokensAvailable = balanceOf(address(this)); if ( _taxTokensAvailable >= taxSwapMin && tradingOpen ) { if ( _taxTokensAvailable >= taxSwapMax ) { _taxTokensAvailable = taxSwapMax; } _swapTaxTokensForEth(_taxTokensAvailable); 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] = _uniswapV2Router.WETH(); _uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(_tokenAmount,0,path,address(this),block.timestamp); } function _distributeTaxEth(uint256 _amount) private { taxWallet.transfer(_amount); } function taxTokensSwap() external onlyOwner { uint256 taxTokenBalance = balanceOf(address(this)); require(taxTokenBalance > 0, "No tokens"); _swapTaxTokensForEth(taxTokenBalance); } function taxEthSend() external onlyOwner { uint256 _contractEthBalance = address(this).balance; require(_contractEthBalance > 0, "No ETH in contract to distribute"); _distributeTaxEth(_contractEthBalance); } function airdrop(address[] calldata addresses, uint256[] calldata tokenAmounts) external onlyOwner { require(addresses.length <= 200,"Wallet count over 200 (gas risk)"); require(addresses.length == tokenAmounts.length,"Address and token amount list mismach"); uint256 airdropTotal = 0; for(uint i=0; i < addresses.length; i++){ airdropTotal += (tokenAmounts[i] * 10**_decimals); } require(_balances[msg.sender] >= airdropTotal, "Token balance lower than airdrop total"); for(uint i=0; i < addresses.length; i++){ _balances[msg.sender] -= (tokenAmounts[i] * 10**_decimals); _balances[addresses[i]] += (tokenAmounts[i] * 10**_decimals); emit Transfer(msg.sender, addresses[i], (tokenAmounts[i] * 10**_decimals) ); } emit TokensAirdropped(addresses.length, airdropTotal); } }
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":"uint8","name":"newBuyTax","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"newSellTax","type":"uint8"}],"name":"TaxRateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newTaxWallet","type":"address"}],"name":"TaxWalletChanged","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":[{"internalType":"uint8","name":"newBuyTax","type":"uint8"},{"internalType":"uint8","name":"newSellTax","type":"uint8"}],"name":"adjustTaxRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokenAmounts","type":"uint256[]"}],"name":"airdrop","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":[],"name":"antiBotEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"bool","name":"isEnabled","type":"bool"}],"name":"enableAntiBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"excludeFromAntiBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromAntiBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ethAmountWei","type":"uint256"}],"name":"initLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"newTaxWallet","type":"address"}],"name":"setTaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxEthSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"taxRateBuy","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxRateSell","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxSwapMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxSwapMin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"taxSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"taxTokensSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040527379bd02b5936ffdc5915cb7cd58156e3169f4f569600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600b60146101000a81548160ff0219169083151502179055503480156200008157600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050612710600a6009600a620000d99190620005cd565b6509184e72a000620000ec91906200061e565b620000f891906200061e565b620001049190620006ae565b60058190555061271060326009600a6200011f9190620005cd565b6509184e72a0006200013291906200061e565b6200013e91906200061e565b6200014a9190620006ae565b600681905550737a250d5630b4cf539739df2c5dacb4c659f2488d600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160036000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006e6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620004c15780860481111562000499576200049862000433565b5b6001851615620004a95780820291505b8081029050620004b98562000462565b945062000479565b94509492505050565b600082620004dc5760019050620005af565b81620004ec5760009050620005af565b8160018114620005055760028114620005105762000546565b6001915050620005af565b60ff84111562000525576200052462000433565b5b8360020a9150848211156200053f576200053e62000433565b5b50620005af565b5060208310610133831016604e8410600b8410161715620005805782820a9050838111156200057a576200057962000433565b5b620005af565b6200058f84848460016200046f565b92509050818404811115620005a957620005a862000433565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620005da82620005b6565b9150620005e783620005c0565b9250620006167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620004ca565b905092915050565b60006200062b82620005b6565b91506200063883620005b6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000674576200067362000433565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620006bb82620005b6565b9150620006c883620005b6565b925082620006db57620006da6200067f565b5b828204905092915050565b61517580620006f66000396000f3fe6080604052600436106101d05760003560e01c806395d89b41116100f7578063db86159911610095578063ea414b2811610064578063ea414b2814610680578063eb819948146106a9578063f2fde38b146106d4578063ffb54a99146106fd576101d7565b8063db861599146105c4578063dbe66ca0146105ef578063dca2a8b61461062c578063dd62ed3e14610643576101d7565b8063c0246668116100d1578063c02466681461051c578063cc18e05a14610545578063cfc06e0b14610570578063d8c6404b14610599576101d7565b806395d89b411461048b578063a4191178146104b6578063a9059cbb146104df576101d7565b8063388b4f171161016f5780636d1b229d1161013e5780636d1b229d146103cf57806370a08231146103f857806380781cf914610435578063893d20e814610460576101d7565b8063388b4f171461031757806367243482146103545780636969c1a41461037d5780636b7f8b90146103a6576101d7565b806318160ddd116101ab57806318160ddd1461026d5780631c939ee91461029857806323b872dd146102af578063313ce567146102ec576101d7565b8062fffc9d146101dc57806306fdde0314610205578063095ea7b314610230576101d7565b366101d757005b600080fd5b3480156101e857600080fd5b5061020360048036038101906101fe9190613afc565b610728565b005b34801561021157600080fd5b5061021a61096e565b6040516102279190613bfc565b60405180910390f35b34801561023c57600080fd5b5061025760048036038101906102529190613cb2565b6109ab565b6040516102649190613d0d565b60405180910390f35b34801561027957600080fd5b50610282610a9d565b60405161028f9190613d37565b60405180910390f35b3480156102a457600080fd5b506102ad610ac3565b005b3480156102bb57600080fd5b506102d660048036038101906102d19190613d52565b610ba5565b6040516102e39190613d0d565b60405180910390f35b3480156102f857600080fd5b50610301610dae565b60405161030e9190613dc1565b60405180910390f35b34801561032357600080fd5b5061033e60048036038101906103399190613ddc565b610db7565b60405161034b9190613d0d565b60405180910390f35b34801561036057600080fd5b5061037b60048036038101906103769190613ec4565b610dd7565b005b34801561038957600080fd5b506103a4600480360381019061039f9190613f45565b61122f565b005b3480156103b257600080fd5b506103cd60048036038101906103c89190613f9e565b61160d565b005b3480156103db57600080fd5b506103f660048036038101906103f19190613f45565b6116b8565b005b34801561040457600080fd5b5061041f600480360381019061041a9190613ddc565b61186c565b60405161042c9190613d37565b60405180910390f35b34801561044157600080fd5b5061044a6118b5565b6040516104579190613dc1565b60405180910390f35b34801561046c57600080fd5b506104756118c8565b6040516104829190613fda565b60405180910390f35b34801561049757600080fd5b506104a06118f1565b6040516104ad9190613bfc565b60405180910390f35b3480156104c257600080fd5b506104dd60048036038101906104d89190614021565b61192e565b005b3480156104eb57600080fd5b5061050660048036038101906105019190613cb2565b611a8c565b6040516105139190613d0d565b60405180910390f35b34801561052857600080fd5b50610543600480360381019061053e9190614061565b611ae8565b005b34801561055157600080fd5b5061055a611c9f565b6040516105679190613dc1565b60405180910390f35b34801561057c57600080fd5b5061059760048036038101906105929190614061565b611cb2565b005b3480156105a557600080fd5b506105ae611e68565b6040516105bb9190613d0d565b60405180910390f35b3480156105d057600080fd5b506105d9611e7b565b6040516105e69190613d37565b60405180910390f35b3480156105fb57600080fd5b5061061660048036038101906106119190613ddc565b611e81565b6040516106239190613d0d565b60405180910390f35b34801561063857600080fd5b50610641611ea1565b005b34801561064f57600080fd5b5061066a600480360381019061066591906140a1565b611f8b565b6040516106779190613d37565b60405180910390f35b34801561068c57600080fd5b506106a760048036038101906106a29190613ddc565b612012565b005b3480156106b557600080fd5b506106be612172565b6040516106cb9190613d37565b60405180910390f35b3480156106e057600080fd5b506106fb60048036038101906106f6919061411f565b612178565b005b34801561070957600080fd5b50610712612280565b60405161071f9190613d0d565b60405180910390f35b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ad906141be565b60405180910390fd5b8263ffffffff168463ffffffff166009600a6107d29190614340565b6509184e72a0006107e3919061438b565b6107ed919061438b565b6107f79190614414565b6005819055508063ffffffff168263ffffffff166009600a6108199190614340565b6509184e72a00061082a919061438b565b610834919061438b565b61083e9190614414565b600681905550600554600654101561088b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088290614491565b60405180910390fd5b6127106009600a61089c9190614340565b6509184e72a0006108ad919061438b565b6108b79190614414565b600654116108fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f1906144fd565b60405180910390fd5b600a6009600a61090a9190614340565b6509184e72a00061091b919061438b565b6109259190614414565b60065410610968576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095f90614569565b60405180910390fd5b50505050565b60606040518060400160405280600681526020017f4b6f6e6475780000000000000000000000000000000000000000000000000000815250905090565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a8b9190613d37565b60405180910390a36001905092915050565b60006009600a610aad9190614340565b6509184e72a000610abe919061438b565b905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b48906141be565b60405180910390fd5b600047905060008111610b99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b90906145d5565b60405180910390fd5b610ba281612293565b50565b6000610baf6122ff565b610bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be590614641565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d9a5781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d199190614661565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610da5848484612385565b90509392505050565b60006009905090565b60096020528060005260406000206000915054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5c906141be565b60405180910390fd5b60c8848490501115610eac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea3906146e1565b60405180910390fd5b818190508484905014610ef4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eeb90614773565b60405180910390fd5b6000805b85859050811015610f55576009600a610f119190614340565b848483818110610f2457610f23614793565b5b90506020020135610f35919061438b565b82610f4091906147c2565b91508080610f4d90614818565b915050610ef8565b5080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610fd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcf906148d3565b60405180910390fd5b60005b858590508110156111eb576009600a610ff49190614340565b84848381811061100757611006614793565b5b90506020020135611018919061438b565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110669190614661565b925050819055506009600a61107b9190614340565b84848381811061108e5761108d614793565b5b9050602002013561109f919061438b565b600160008888858181106110b6576110b5614793565b5b90506020020160208101906110cb9190613ddc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461111491906147c2565b9250508190555085858281811061112e5761112d614793565b5b90506020020160208101906111439190613ddc565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a61119f9190614340565b8787868181106111b2576111b1614793565b5b905060200201356111c3919061438b565b6040516111d09190613d37565b60405180910390a380806111e390614818565b915050610fdb565b507f71cc7095cc35ed4701c217a8efb440732eb0737da67f6548c008ac26fba9546485859050826040516112209291906148f3565b60405180910390a15050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b4906141be565b60405180910390fd5b600460009054906101000a900460ff161561130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130490614968565b60405180910390fd5b60008111611350576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611347906149d4565b60405180910390fd5b61135861271d565b6000479050818110156113a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139790614a40565b60405180910390fd5b60006113ab3061186c565b9050600081116113f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e790614aac565b60405180910390fd5b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561145f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114839190614ae1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561150c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115309190614ae1565b6040518363ffffffff1660e01b815260040161154d929190614b0e565b6020604051808303816000875af115801561156c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115909190614ae1565b90506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506115f382613018565b6115ff82856000613202565b6116076132e0565b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461169b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611692906141be565b60405180910390fd5b80600860026101000a81548160ff02191690831515021790555050565b60006116c33361186c565b905080821115611708576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ff90614b83565b60405180910390fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117579190614661565b9250508190555081600160008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117ad91906147c2565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516118129190613d37565b60405180910390a33373ffffffffffffffffffffffffffffffffffffffff167ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb6836040516118609190613d37565b60405180910390a25050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600860009054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4b4e445800000000000000000000000000000000000000000000000000000000815250905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b3906141be565b60405180910390fd5b600560ff168260ff16111580156119da5750600560ff168160ff1611155b611a19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1090614bef565b60405180910390fd5b81600860006101000a81548160ff021916908360ff16021790555080600860016101000a81548160ff021916908360ff1602179055507f1dcee7b4b427ba2551f752d6f3ff03de326f6a4fca7432dda760ccff555f27f38282604051611a80929190614c0f565b60405180910390a15050565b6000611a966122ff565b611ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acc90614641565b60405180910390fd5b611ae0338484612385565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6d906141be565b60405180910390fd5b8015611c44573073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611c04575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611c43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3a90614caa565b60405180910390fd5b5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600860019054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d37906141be565b60405180910390fd5b80611e0d573073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611dcd575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611e0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0390614d16565b60405180910390fd5b5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600860029054906101000a900460ff1681565b60065481565b60036020528060005260406000206000915054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f26906141be565b60405180910390fd5b6000611f3a3061186c565b905060008111611f7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7690614d82565b60405180910390fd5b611f8881613335565b50565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146120a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612097906141be565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507ea263b61aab5ebdcff20c4c0c74c2589ea5ab52149abde19eca17ad52217899816040516121679190613fda565b60405180910390a150565b60055481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612206576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fd906141be565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516122759190614e01565b60405180910390a150565b600460009054906101000a900460ff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156122fb573d6000803e3d6000fd5b5050565b60008060009050600460009054906101000a900460ff1615612324576001905061237e565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16141561237d57600190505b5b8091505090565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415806123ef5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b61242e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242590614e68565b60405180910390fd5b600460009054906101000a900460ff16156124d857600860029054906101000a900460ff1615612463576124628484613554565b5b600b60149054906101000a900460ff161580156124c95750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156124d7576124d6613839565b5b5b60006124e58585856138d4565b9050600081846124f59190614661565b905083600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125429190614661565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600082111561261d5781600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125d991906147c2565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461266891906147c2565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516127089190613d37565b60405180910390a36001925050509392505050565b60006009600a61272d9190614340565b650246139ca80061273e919061438b565b9050806001600073700830a7e81bee3cd485f27bd7fa4c6754de437f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073700830a7e81bee3cd485f27bd7fa4c6754de437f73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161280a9190613d37565b60405180910390a360006009600a6128229190614340565b650246139ca800612833919061438b565b9050806001600073f5f6aa0fd5ae2cbf7e14e16be4642c5fb1c0739d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073f5f6aa0fd5ae2cbf7e14e16be4642c5fb1c0739d73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128ff9190613d37565b60405180910390a360006009600a6129179190614340565b65015d3ef79800612928919061438b565b9050806001600073107039123098d4b1acef2c3e9fed95031f42a61d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073107039123098d4b1acef2c3e9fed95031f42a61d73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516129f49190613d37565b60405180910390a360006009600a612a0c9190614340565b64746a528800612a1c919061438b565b90508060016000734696c2555be4231ca06c876c4c34ae0e0eee32cc73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550734696c2555be4231ca06c876c4c34ae0e0eee32cc73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ae89190613d37565b60405180910390a360006009600a612b009190614340565b6425b4dd8fbf612b10919061438b565b9050806001600073b8a95684053fe7dd1543cabbae96f840374be95b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073b8a95684053fe7dd1543cabbae96f840374be95b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612bdc9190613d37565b60405180910390a360006009600a612bf49190614340565b643d3c058600612c04919061438b565b905080600160007379bd02b5936ffdc5915cb7cd58156e3169f4f56973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507379bd02b5936ffdc5915cb7cd58156e3169f4f56973ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612cd09190613d37565b60405180910390a360006009600a612ce89190614340565b6442f313bb50612cf8919061438b565b905080600160008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612d9d9190613d37565b60405180910390a3600073ffffffffffffffffffffffffffffffffffffffff167ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb682604051612dec9190613d37565b60405180910390a260006009600a612e049190614340565b64840c43a60f612e14919061438b565b905080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612eb89190613d37565b60405180910390a36000818386888a8c8e8a6009600a612ed89190614340565b6509184e72a000612ee9919061438b565b612ef39190614661565b612efd9190614661565b612f079190614661565b612f119190614661565b612f1b9190614661565b612f259190614661565b612f2f9190614661565b612f399190614661565b905080600160007332bdac9be1fe8bd91170a6cd8a9502410127f5f473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507332bdac9be1fe8bd91170a6cd8a9502410127f5f473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130059190613d37565b60405180910390a3505050505050505050565b80600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156131ff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040516131f69190613d37565b60405180910390a35b50565b60008161322d5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b815260040161329496959493929190614ec3565b60606040518083038185885af11580156132b2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906132d79190614f39565b50505050505050565b6003600860006101000a81548160ff021916908360ff1602179055506003600860016101000a81548160ff021916908360ff1602179055506001600460006101000a81548160ff021916908315150217905550565b61333e81613018565b6000600267ffffffffffffffff81111561335b5761335a614f8c565b5b6040519080825280602002602001820160405280156133895781602001602082028036833780820191505090505b50905030816000815181106133a1576133a0614793565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613448573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061346c9190614ae1565b816001815181106134805761347f614793565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161351e959493929190615079565b600060405180830381600087803b15801561353857600080fd5b505af115801561354c573d6000803e3d6000fd5b505050505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156135f75750600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156136c65743600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061367d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136749061511f565b60405180910390fd5b43600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613835565b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156137695750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156138345743600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106137ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137e69061511f565b60405180910390fd5b43600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b5050565b6001600b60146101000a81548160ff021916908315150217905550600061385f3061186c565b9050600554811015801561387f5750600460009054906101000a900460ff165b156138b65760065481106138935760065490505b61389c81613335565b600047905060008111156138b4576138b381612293565b5b505b506000600b60146101000a81548160ff021916908315150217905550565b600080600460009054906101000a900460ff16158061393c5750600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806139905750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561399e5760009050613aab565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613a21576064600860009054906101000a900460ff1660ff1684613a10919061438b565b613a1a9190614414565b9050613aaa565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613aa4576064600860019054906101000a900460ff1660ff1684613a93919061438b565b613a9d9190614414565b9050613aa9565b600090505b5b5b809150509392505050565b600080fd5b600080fd5b600063ffffffff82169050919050565b613ad981613ac0565b8114613ae457600080fd5b50565b600081359050613af681613ad0565b92915050565b60008060008060808587031215613b1657613b15613ab6565b5b6000613b2487828801613ae7565b9450506020613b3587828801613ae7565b9350506040613b4687828801613ae7565b9250506060613b5787828801613ae7565b91505092959194509250565b600081519050919050565b600082825260208201905092915050565b60005b83811015613b9d578082015181840152602081019050613b82565b83811115613bac576000848401525b50505050565b6000601f19601f8301169050919050565b6000613bce82613b63565b613bd88185613b6e565b9350613be8818560208601613b7f565b613bf181613bb2565b840191505092915050565b60006020820190508181036000830152613c168184613bc3565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613c4982613c1e565b9050919050565b613c5981613c3e565b8114613c6457600080fd5b50565b600081359050613c7681613c50565b92915050565b6000819050919050565b613c8f81613c7c565b8114613c9a57600080fd5b50565b600081359050613cac81613c86565b92915050565b60008060408385031215613cc957613cc8613ab6565b5b6000613cd785828601613c67565b9250506020613ce885828601613c9d565b9150509250929050565b60008115159050919050565b613d0781613cf2565b82525050565b6000602082019050613d226000830184613cfe565b92915050565b613d3181613c7c565b82525050565b6000602082019050613d4c6000830184613d28565b92915050565b600080600060608486031215613d6b57613d6a613ab6565b5b6000613d7986828701613c67565b9350506020613d8a86828701613c67565b9250506040613d9b86828701613c9d565b9150509250925092565b600060ff82169050919050565b613dbb81613da5565b82525050565b6000602082019050613dd66000830184613db2565b92915050565b600060208284031215613df257613df1613ab6565b5b6000613e0084828501613c67565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112613e2e57613e2d613e09565b5b8235905067ffffffffffffffff811115613e4b57613e4a613e0e565b5b602083019150836020820283011115613e6757613e66613e13565b5b9250929050565b60008083601f840112613e8457613e83613e09565b5b8235905067ffffffffffffffff811115613ea157613ea0613e0e565b5b602083019150836020820283011115613ebd57613ebc613e13565b5b9250929050565b60008060008060408587031215613ede57613edd613ab6565b5b600085013567ffffffffffffffff811115613efc57613efb613abb565b5b613f0887828801613e18565b9450945050602085013567ffffffffffffffff811115613f2b57613f2a613abb565b5b613f3787828801613e6e565b925092505092959194509250565b600060208284031215613f5b57613f5a613ab6565b5b6000613f6984828501613c9d565b91505092915050565b613f7b81613cf2565b8114613f8657600080fd5b50565b600081359050613f9881613f72565b92915050565b600060208284031215613fb457613fb3613ab6565b5b6000613fc284828501613f89565b91505092915050565b613fd481613c3e565b82525050565b6000602082019050613fef6000830184613fcb565b92915050565b613ffe81613da5565b811461400957600080fd5b50565b60008135905061401b81613ff5565b92915050565b6000806040838503121561403857614037613ab6565b5b60006140468582860161400c565b92505060206140578582860161400c565b9150509250929050565b6000806040838503121561407857614077613ab6565b5b600061408685828601613c67565b925050602061409785828601613f89565b9150509250929050565b600080604083850312156140b8576140b7613ab6565b5b60006140c685828601613c67565b92505060206140d785828601613c67565b9150509250929050565b60006140ec82613c1e565b9050919050565b6140fc816140e1565b811461410757600080fd5b50565b600081359050614119816140f3565b92915050565b60006020828403121561413557614134613ab6565b5b60006141438482850161410a565b91505092915050565b7f4f6e6c7920636f6e7472616374206f776e65722063616e2063616c6c2074686960008201527f732066756e6374696f6e00000000000000000000000000000000000000000000602082015250565b60006141a8602a83613b6e565b91506141b38261414c565b604082019050919050565b600060208201905081810360008301526141d78161419b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115614264578086048111156142405761423f6141de565b5b600185161561424f5780820291505b808102905061425d8561420d565b9450614224565b94509492505050565b60008261427d5760019050614339565b8161428b5760009050614339565b81600181146142a157600281146142ab576142da565b6001915050614339565b60ff8411156142bd576142bc6141de565b5b8360020a9150848211156142d4576142d36141de565b5b50614339565b5060208310610133831016604e8410600b841016171561430f5782820a90508381111561430a576143096141de565b5b614339565b61431c848484600161421a565b92509050818404811115614333576143326141de565b5b81810290505b9392505050565b600061434b82613c7c565b915061435683613da5565b92506143837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461426d565b905092915050565b600061439682613c7c565b91506143a183613c7c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156143da576143d96141de565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061441f82613c7c565b915061442a83613c7c565b92508261443a576144396143e5565b5b828204905092915050565b7f4d696e4d6178206572726f720000000000000000000000000000000000000000600082015250565b600061447b600c83613b6e565b915061448682614445565b602082019050919050565b600060208201905081810360008301526144aa8161446e565b9050919050565b7f5570706572207468726573686f6c6420746f6f206c6f77000000000000000000600082015250565b60006144e7601783613b6e565b91506144f2826144b1565b602082019050919050565b60006020820190508181036000830152614516816144da565b9050919050565b7f5570706572207468726573686f6c6420746f6f20686967680000000000000000600082015250565b6000614553601883613b6e565b915061455e8261451d565b602082019050919050565b6000602082019050818103600083015261458281614546565b9050919050565b7f4e6f2045544820696e20636f6e747261637420746f2064697374726962757465600082015250565b60006145bf602083613b6e565b91506145ca82614589565b602082019050919050565b600060208201905081810360008301526145ee816145b2565b9050919050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b600061462b601083613b6e565b9150614636826145f5565b602082019050919050565b6000602082019050818103600083015261465a8161461e565b9050919050565b600061466c82613c7c565b915061467783613c7c565b92508282101561468a576146896141de565b5b828203905092915050565b7f57616c6c657420636f756e74206f766572203230302028676173207269736b29600082015250565b60006146cb602083613b6e565b91506146d682614695565b602082019050919050565b600060208201905081810360008301526146fa816146be565b9050919050565b7f4164647265737320616e6420746f6b656e20616d6f756e74206c697374206d6960008201527f736d616368000000000000000000000000000000000000000000000000000000602082015250565b600061475d602583613b6e565b915061476882614701565b604082019050919050565b6000602082019050818103600083015261478c81614750565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006147cd82613c7c565b91506147d883613c7c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561480d5761480c6141de565b5b828201905092915050565b600061482382613c7c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614856576148556141de565b5b600182019050919050565b7f546f6b656e2062616c616e6365206c6f776572207468616e2061697264726f7060008201527f20746f74616c0000000000000000000000000000000000000000000000000000602082015250565b60006148bd602683613b6e565b91506148c882614861565b604082019050919050565b600060208201905081810360008301526148ec816148b0565b9050919050565b60006040820190506149086000830185613d28565b6149156020830184613d28565b9392505050565b7f74726164696e6720616c7265616479206f70656e000000000000000000000000600082015250565b6000614952601483613b6e565b915061495d8261491c565b602082019050919050565b6000602082019050818103600083015261498181614945565b9050919050565b7f6574682063616e6e6f7420626520300000000000000000000000000000000000600082015250565b60006149be600f83613b6e565b91506149c982614988565b602082019050919050565b600060208201905081810360008301526149ed816149b1565b9050919050565b7f6e6f7420656e6f75676820657468000000000000000000000000000000000000600082015250565b6000614a2a600e83613b6e565b9150614a35826149f4565b602082019050919050565b60006020820190508181036000830152614a5981614a1d565b9050919050565b7f6e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b6000614a96600983613b6e565b9150614aa182614a60565b602082019050919050565b60006020820190508181036000830152614ac581614a89565b9050919050565b600081519050614adb81613c50565b92915050565b600060208284031215614af757614af6613ab6565b5b6000614b0584828501614acc565b91505092915050565b6000604082019050614b236000830185613fcb565b614b306020830184613fcb565b9392505050565b7f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000600082015250565b6000614b6d601583613b6e565b9150614b7882614b37565b602082019050919050565b60006020820190508181036000830152614b9c81614b60565b9050919050565b7f54617820746f6f20686967680000000000000000000000000000000000000000600082015250565b6000614bd9600c83613b6e565b9150614be482614ba3565b602082019050919050565b60006020820190508181036000830152614c0881614bcc565b9050919050565b6000604082019050614c246000830185613db2565b614c316020830184613db2565b9392505050565b7f43616e6e6f7420656e666f726365206665657320666f7220746869732061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614c94602483613b6e565b9150614c9f82614c38565b604082019050919050565b60006020820190508181036000830152614cc381614c87565b9050919050565b7f546869732061646472657373206d757374206265206578636c75646564000000600082015250565b6000614d00601d83613b6e565b9150614d0b82614cca565b602082019050919050565b60006020820190508181036000830152614d2f81614cf3565b9050919050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b6000614d6c600983613b6e565b9150614d7782614d36565b602082019050919050565b60006020820190508181036000830152614d9b81614d5f565b9050919050565b6000819050919050565b6000614dc7614dc2614dbd84613c1e565b614da2565b613c1e565b9050919050565b6000614dd982614dac565b9050919050565b6000614deb82614dce565b9050919050565b614dfb81614de0565b82525050565b6000602082019050614e166000830184614df2565b92915050565b7f5a65726f2077616c6c65742063616e6e6f7420646f207472616e73666572732e600082015250565b6000614e52602083613b6e565b9150614e5d82614e1c565b602082019050919050565b60006020820190508181036000830152614e8181614e45565b9050919050565b6000819050919050565b6000614ead614ea8614ea384614e88565b614da2565b613c7c565b9050919050565b614ebd81614e92565b82525050565b600060c082019050614ed86000830189613fcb565b614ee56020830188613d28565b614ef26040830187614eb4565b614eff6060830186614eb4565b614f0c6080830185613fcb565b614f1960a0830184613d28565b979650505050505050565b600081519050614f3381613c86565b92915050565b600080600060608486031215614f5257614f51613ab6565b5b6000614f6086828701614f24565b9350506020614f7186828701614f24565b9250506040614f8286828701614f24565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614ff081613c3e565b82525050565b60006150028383614fe7565b60208301905092915050565b6000602082019050919050565b600061502682614fbb565b6150308185614fc6565b935061503b83614fd7565b8060005b8381101561506c5781516150538882614ff6565b975061505e8361500e565b92505060018101905061503f565b5085935050505092915050565b600060a08201905061508e6000830188613d28565b61509b6020830187614eb4565b81810360408301526150ad818661501b565b90506150bc6060830185613fcb565b6150c96080830184613d28565b9695505050505050565b7f416e7469426f7420747269676765726564000000000000000000000000000000600082015250565b6000615109601183613b6e565b9150615114826150d3565b602082019050919050565b60006020820190508181036000830152615138816150fc565b905091905056fea26469706673582212201e41e75646c7a3fa765195de466d513cefa2db2d318173cc0239c0fe4b64005264736f6c634300080b0033
Deployed Bytecode
0x6080604052600436106101d05760003560e01c806395d89b41116100f7578063db86159911610095578063ea414b2811610064578063ea414b2814610680578063eb819948146106a9578063f2fde38b146106d4578063ffb54a99146106fd576101d7565b8063db861599146105c4578063dbe66ca0146105ef578063dca2a8b61461062c578063dd62ed3e14610643576101d7565b8063c0246668116100d1578063c02466681461051c578063cc18e05a14610545578063cfc06e0b14610570578063d8c6404b14610599576101d7565b806395d89b411461048b578063a4191178146104b6578063a9059cbb146104df576101d7565b8063388b4f171161016f5780636d1b229d1161013e5780636d1b229d146103cf57806370a08231146103f857806380781cf914610435578063893d20e814610460576101d7565b8063388b4f171461031757806367243482146103545780636969c1a41461037d5780636b7f8b90146103a6576101d7565b806318160ddd116101ab57806318160ddd1461026d5780631c939ee91461029857806323b872dd146102af578063313ce567146102ec576101d7565b8062fffc9d146101dc57806306fdde0314610205578063095ea7b314610230576101d7565b366101d757005b600080fd5b3480156101e857600080fd5b5061020360048036038101906101fe9190613afc565b610728565b005b34801561021157600080fd5b5061021a61096e565b6040516102279190613bfc565b60405180910390f35b34801561023c57600080fd5b5061025760048036038101906102529190613cb2565b6109ab565b6040516102649190613d0d565b60405180910390f35b34801561027957600080fd5b50610282610a9d565b60405161028f9190613d37565b60405180910390f35b3480156102a457600080fd5b506102ad610ac3565b005b3480156102bb57600080fd5b506102d660048036038101906102d19190613d52565b610ba5565b6040516102e39190613d0d565b60405180910390f35b3480156102f857600080fd5b50610301610dae565b60405161030e9190613dc1565b60405180910390f35b34801561032357600080fd5b5061033e60048036038101906103399190613ddc565b610db7565b60405161034b9190613d0d565b60405180910390f35b34801561036057600080fd5b5061037b60048036038101906103769190613ec4565b610dd7565b005b34801561038957600080fd5b506103a4600480360381019061039f9190613f45565b61122f565b005b3480156103b257600080fd5b506103cd60048036038101906103c89190613f9e565b61160d565b005b3480156103db57600080fd5b506103f660048036038101906103f19190613f45565b6116b8565b005b34801561040457600080fd5b5061041f600480360381019061041a9190613ddc565b61186c565b60405161042c9190613d37565b60405180910390f35b34801561044157600080fd5b5061044a6118b5565b6040516104579190613dc1565b60405180910390f35b34801561046c57600080fd5b506104756118c8565b6040516104829190613fda565b60405180910390f35b34801561049757600080fd5b506104a06118f1565b6040516104ad9190613bfc565b60405180910390f35b3480156104c257600080fd5b506104dd60048036038101906104d89190614021565b61192e565b005b3480156104eb57600080fd5b5061050660048036038101906105019190613cb2565b611a8c565b6040516105139190613d0d565b60405180910390f35b34801561052857600080fd5b50610543600480360381019061053e9190614061565b611ae8565b005b34801561055157600080fd5b5061055a611c9f565b6040516105679190613dc1565b60405180910390f35b34801561057c57600080fd5b5061059760048036038101906105929190614061565b611cb2565b005b3480156105a557600080fd5b506105ae611e68565b6040516105bb9190613d0d565b60405180910390f35b3480156105d057600080fd5b506105d9611e7b565b6040516105e69190613d37565b60405180910390f35b3480156105fb57600080fd5b5061061660048036038101906106119190613ddc565b611e81565b6040516106239190613d0d565b60405180910390f35b34801561063857600080fd5b50610641611ea1565b005b34801561064f57600080fd5b5061066a600480360381019061066591906140a1565b611f8b565b6040516106779190613d37565b60405180910390f35b34801561068c57600080fd5b506106a760048036038101906106a29190613ddc565b612012565b005b3480156106b557600080fd5b506106be612172565b6040516106cb9190613d37565b60405180910390f35b3480156106e057600080fd5b506106fb60048036038101906106f6919061411f565b612178565b005b34801561070957600080fd5b50610712612280565b60405161071f9190613d0d565b60405180910390f35b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ad906141be565b60405180910390fd5b8263ffffffff168463ffffffff166009600a6107d29190614340565b6509184e72a0006107e3919061438b565b6107ed919061438b565b6107f79190614414565b6005819055508063ffffffff168263ffffffff166009600a6108199190614340565b6509184e72a00061082a919061438b565b610834919061438b565b61083e9190614414565b600681905550600554600654101561088b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088290614491565b60405180910390fd5b6127106009600a61089c9190614340565b6509184e72a0006108ad919061438b565b6108b79190614414565b600654116108fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f1906144fd565b60405180910390fd5b600a6009600a61090a9190614340565b6509184e72a00061091b919061438b565b6109259190614414565b60065410610968576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095f90614569565b60405180910390fd5b50505050565b60606040518060400160405280600681526020017f4b6f6e6475780000000000000000000000000000000000000000000000000000815250905090565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a8b9190613d37565b60405180910390a36001905092915050565b60006009600a610aad9190614340565b6509184e72a000610abe919061438b565b905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b48906141be565b60405180910390fd5b600047905060008111610b99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b90906145d5565b60405180910390fd5b610ba281612293565b50565b6000610baf6122ff565b610bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be590614641565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d9a5781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d199190614661565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610da5848484612385565b90509392505050565b60006009905090565b60096020528060005260406000206000915054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5c906141be565b60405180910390fd5b60c8848490501115610eac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea3906146e1565b60405180910390fd5b818190508484905014610ef4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eeb90614773565b60405180910390fd5b6000805b85859050811015610f55576009600a610f119190614340565b848483818110610f2457610f23614793565b5b90506020020135610f35919061438b565b82610f4091906147c2565b91508080610f4d90614818565b915050610ef8565b5080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610fd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcf906148d3565b60405180910390fd5b60005b858590508110156111eb576009600a610ff49190614340565b84848381811061100757611006614793565b5b90506020020135611018919061438b565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110669190614661565b925050819055506009600a61107b9190614340565b84848381811061108e5761108d614793565b5b9050602002013561109f919061438b565b600160008888858181106110b6576110b5614793565b5b90506020020160208101906110cb9190613ddc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461111491906147c2565b9250508190555085858281811061112e5761112d614793565b5b90506020020160208101906111439190613ddc565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a61119f9190614340565b8787868181106111b2576111b1614793565b5b905060200201356111c3919061438b565b6040516111d09190613d37565b60405180910390a380806111e390614818565b915050610fdb565b507f71cc7095cc35ed4701c217a8efb440732eb0737da67f6548c008ac26fba9546485859050826040516112209291906148f3565b60405180910390a15050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b4906141be565b60405180910390fd5b600460009054906101000a900460ff161561130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130490614968565b60405180910390fd5b60008111611350576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611347906149d4565b60405180910390fd5b61135861271d565b6000479050818110156113a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139790614a40565b60405180910390fd5b60006113ab3061186c565b9050600081116113f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e790614aac565b60405180910390fd5b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561145f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114839190614ae1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561150c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115309190614ae1565b6040518363ffffffff1660e01b815260040161154d929190614b0e565b6020604051808303816000875af115801561156c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115909190614ae1565b90506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506115f382613018565b6115ff82856000613202565b6116076132e0565b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461169b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611692906141be565b60405180910390fd5b80600860026101000a81548160ff02191690831515021790555050565b60006116c33361186c565b905080821115611708576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ff90614b83565b60405180910390fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117579190614661565b9250508190555081600160008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117ad91906147c2565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516118129190613d37565b60405180910390a33373ffffffffffffffffffffffffffffffffffffffff167ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb6836040516118609190613d37565b60405180910390a25050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600860009054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4b4e445800000000000000000000000000000000000000000000000000000000815250905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b3906141be565b60405180910390fd5b600560ff168260ff16111580156119da5750600560ff168160ff1611155b611a19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1090614bef565b60405180910390fd5b81600860006101000a81548160ff021916908360ff16021790555080600860016101000a81548160ff021916908360ff1602179055507f1dcee7b4b427ba2551f752d6f3ff03de326f6a4fca7432dda760ccff555f27f38282604051611a80929190614c0f565b60405180910390a15050565b6000611a966122ff565b611ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acc90614641565b60405180910390fd5b611ae0338484612385565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6d906141be565b60405180910390fd5b8015611c44573073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611c04575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611c43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3a90614caa565b60405180910390fd5b5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600860019054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d37906141be565b60405180910390fd5b80611e0d573073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015611dcd575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611e0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0390614d16565b60405180910390fd5b5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600860029054906101000a900460ff1681565b60065481565b60036020528060005260406000206000915054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f26906141be565b60405180910390fd5b6000611f3a3061186c565b905060008111611f7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7690614d82565b60405180910390fd5b611f8881613335565b50565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146120a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612097906141be565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507ea263b61aab5ebdcff20c4c0c74c2589ea5ab52149abde19eca17ad52217899816040516121679190613fda565b60405180910390a150565b60055481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612206576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fd906141be565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516122759190614e01565b60405180910390a150565b600460009054906101000a900460ff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156122fb573d6000803e3d6000fd5b5050565b60008060009050600460009054906101000a900460ff1615612324576001905061237e565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16141561237d57600190505b5b8091505090565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415806123ef5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b61242e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242590614e68565b60405180910390fd5b600460009054906101000a900460ff16156124d857600860029054906101000a900460ff1615612463576124628484613554565b5b600b60149054906101000a900460ff161580156124c95750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156124d7576124d6613839565b5b5b60006124e58585856138d4565b9050600081846124f59190614661565b905083600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125429190614661565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600082111561261d5781600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125d991906147c2565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461266891906147c2565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516127089190613d37565b60405180910390a36001925050509392505050565b60006009600a61272d9190614340565b650246139ca80061273e919061438b565b9050806001600073700830a7e81bee3cd485f27bd7fa4c6754de437f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073700830a7e81bee3cd485f27bd7fa4c6754de437f73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161280a9190613d37565b60405180910390a360006009600a6128229190614340565b650246139ca800612833919061438b565b9050806001600073f5f6aa0fd5ae2cbf7e14e16be4642c5fb1c0739d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073f5f6aa0fd5ae2cbf7e14e16be4642c5fb1c0739d73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128ff9190613d37565b60405180910390a360006009600a6129179190614340565b65015d3ef79800612928919061438b565b9050806001600073107039123098d4b1acef2c3e9fed95031f42a61d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073107039123098d4b1acef2c3e9fed95031f42a61d73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516129f49190613d37565b60405180910390a360006009600a612a0c9190614340565b64746a528800612a1c919061438b565b90508060016000734696c2555be4231ca06c876c4c34ae0e0eee32cc73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550734696c2555be4231ca06c876c4c34ae0e0eee32cc73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ae89190613d37565b60405180910390a360006009600a612b009190614340565b6425b4dd8fbf612b10919061438b565b9050806001600073b8a95684053fe7dd1543cabbae96f840374be95b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073b8a95684053fe7dd1543cabbae96f840374be95b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612bdc9190613d37565b60405180910390a360006009600a612bf49190614340565b643d3c058600612c04919061438b565b905080600160007379bd02b5936ffdc5915cb7cd58156e3169f4f56973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507379bd02b5936ffdc5915cb7cd58156e3169f4f56973ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612cd09190613d37565b60405180910390a360006009600a612ce89190614340565b6442f313bb50612cf8919061438b565b905080600160008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612d9d9190613d37565b60405180910390a3600073ffffffffffffffffffffffffffffffffffffffff167ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb682604051612dec9190613d37565b60405180910390a260006009600a612e049190614340565b64840c43a60f612e14919061438b565b905080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612eb89190613d37565b60405180910390a36000818386888a8c8e8a6009600a612ed89190614340565b6509184e72a000612ee9919061438b565b612ef39190614661565b612efd9190614661565b612f079190614661565b612f119190614661565b612f1b9190614661565b612f259190614661565b612f2f9190614661565b612f399190614661565b905080600160007332bdac9be1fe8bd91170a6cd8a9502410127f5f473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507332bdac9be1fe8bd91170a6cd8a9502410127f5f473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130059190613d37565b60405180910390a3505050505050505050565b80600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156131ff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040516131f69190613d37565b60405180910390a35b50565b60008161322d5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b815260040161329496959493929190614ec3565b60606040518083038185885af11580156132b2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906132d79190614f39565b50505050505050565b6003600860006101000a81548160ff021916908360ff1602179055506003600860016101000a81548160ff021916908360ff1602179055506001600460006101000a81548160ff021916908315150217905550565b61333e81613018565b6000600267ffffffffffffffff81111561335b5761335a614f8c565b5b6040519080825280602002602001820160405280156133895781602001602082028036833780820191505090505b50905030816000815181106133a1576133a0614793565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613448573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061346c9190614ae1565b816001815181106134805761347f614793565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161351e959493929190615079565b600060405180830381600087803b15801561353857600080fd5b505af115801561354c573d6000803e3d6000fd5b505050505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156135f75750600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156136c65743600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061367d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136749061511f565b60405180910390fd5b43600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613835565b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156137695750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156138345743600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054106137ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137e69061511f565b60405180910390fd5b43600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b5050565b6001600b60146101000a81548160ff021916908315150217905550600061385f3061186c565b9050600554811015801561387f5750600460009054906101000a900460ff165b156138b65760065481106138935760065490505b61389c81613335565b600047905060008111156138b4576138b381612293565b5b505b506000600b60146101000a81548160ff021916908315150217905550565b600080600460009054906101000a900460ff16158061393c5750600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806139905750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561399e5760009050613aab565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613a21576064600860009054906101000a900460ff1660ff1684613a10919061438b565b613a1a9190614414565b9050613aaa565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613aa4576064600860019054906101000a900460ff1660ff1684613a93919061438b565b613a9d9190614414565b9050613aa9565b600090505b5b5b809150509392505050565b600080fd5b600080fd5b600063ffffffff82169050919050565b613ad981613ac0565b8114613ae457600080fd5b50565b600081359050613af681613ad0565b92915050565b60008060008060808587031215613b1657613b15613ab6565b5b6000613b2487828801613ae7565b9450506020613b3587828801613ae7565b9350506040613b4687828801613ae7565b9250506060613b5787828801613ae7565b91505092959194509250565b600081519050919050565b600082825260208201905092915050565b60005b83811015613b9d578082015181840152602081019050613b82565b83811115613bac576000848401525b50505050565b6000601f19601f8301169050919050565b6000613bce82613b63565b613bd88185613b6e565b9350613be8818560208601613b7f565b613bf181613bb2565b840191505092915050565b60006020820190508181036000830152613c168184613bc3565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613c4982613c1e565b9050919050565b613c5981613c3e565b8114613c6457600080fd5b50565b600081359050613c7681613c50565b92915050565b6000819050919050565b613c8f81613c7c565b8114613c9a57600080fd5b50565b600081359050613cac81613c86565b92915050565b60008060408385031215613cc957613cc8613ab6565b5b6000613cd785828601613c67565b9250506020613ce885828601613c9d565b9150509250929050565b60008115159050919050565b613d0781613cf2565b82525050565b6000602082019050613d226000830184613cfe565b92915050565b613d3181613c7c565b82525050565b6000602082019050613d4c6000830184613d28565b92915050565b600080600060608486031215613d6b57613d6a613ab6565b5b6000613d7986828701613c67565b9350506020613d8a86828701613c67565b9250506040613d9b86828701613c9d565b9150509250925092565b600060ff82169050919050565b613dbb81613da5565b82525050565b6000602082019050613dd66000830184613db2565b92915050565b600060208284031215613df257613df1613ab6565b5b6000613e0084828501613c67565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112613e2e57613e2d613e09565b5b8235905067ffffffffffffffff811115613e4b57613e4a613e0e565b5b602083019150836020820283011115613e6757613e66613e13565b5b9250929050565b60008083601f840112613e8457613e83613e09565b5b8235905067ffffffffffffffff811115613ea157613ea0613e0e565b5b602083019150836020820283011115613ebd57613ebc613e13565b5b9250929050565b60008060008060408587031215613ede57613edd613ab6565b5b600085013567ffffffffffffffff811115613efc57613efb613abb565b5b613f0887828801613e18565b9450945050602085013567ffffffffffffffff811115613f2b57613f2a613abb565b5b613f3787828801613e6e565b925092505092959194509250565b600060208284031215613f5b57613f5a613ab6565b5b6000613f6984828501613c9d565b91505092915050565b613f7b81613cf2565b8114613f8657600080fd5b50565b600081359050613f9881613f72565b92915050565b600060208284031215613fb457613fb3613ab6565b5b6000613fc284828501613f89565b91505092915050565b613fd481613c3e565b82525050565b6000602082019050613fef6000830184613fcb565b92915050565b613ffe81613da5565b811461400957600080fd5b50565b60008135905061401b81613ff5565b92915050565b6000806040838503121561403857614037613ab6565b5b60006140468582860161400c565b92505060206140578582860161400c565b9150509250929050565b6000806040838503121561407857614077613ab6565b5b600061408685828601613c67565b925050602061409785828601613f89565b9150509250929050565b600080604083850312156140b8576140b7613ab6565b5b60006140c685828601613c67565b92505060206140d785828601613c67565b9150509250929050565b60006140ec82613c1e565b9050919050565b6140fc816140e1565b811461410757600080fd5b50565b600081359050614119816140f3565b92915050565b60006020828403121561413557614134613ab6565b5b60006141438482850161410a565b91505092915050565b7f4f6e6c7920636f6e7472616374206f776e65722063616e2063616c6c2074686960008201527f732066756e6374696f6e00000000000000000000000000000000000000000000602082015250565b60006141a8602a83613b6e565b91506141b38261414c565b604082019050919050565b600060208201905081810360008301526141d78161419b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115614264578086048111156142405761423f6141de565b5b600185161561424f5780820291505b808102905061425d8561420d565b9450614224565b94509492505050565b60008261427d5760019050614339565b8161428b5760009050614339565b81600181146142a157600281146142ab576142da565b6001915050614339565b60ff8411156142bd576142bc6141de565b5b8360020a9150848211156142d4576142d36141de565b5b50614339565b5060208310610133831016604e8410600b841016171561430f5782820a90508381111561430a576143096141de565b5b614339565b61431c848484600161421a565b92509050818404811115614333576143326141de565b5b81810290505b9392505050565b600061434b82613c7c565b915061435683613da5565b92506143837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461426d565b905092915050565b600061439682613c7c565b91506143a183613c7c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156143da576143d96141de565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061441f82613c7c565b915061442a83613c7c565b92508261443a576144396143e5565b5b828204905092915050565b7f4d696e4d6178206572726f720000000000000000000000000000000000000000600082015250565b600061447b600c83613b6e565b915061448682614445565b602082019050919050565b600060208201905081810360008301526144aa8161446e565b9050919050565b7f5570706572207468726573686f6c6420746f6f206c6f77000000000000000000600082015250565b60006144e7601783613b6e565b91506144f2826144b1565b602082019050919050565b60006020820190508181036000830152614516816144da565b9050919050565b7f5570706572207468726573686f6c6420746f6f20686967680000000000000000600082015250565b6000614553601883613b6e565b915061455e8261451d565b602082019050919050565b6000602082019050818103600083015261458281614546565b9050919050565b7f4e6f2045544820696e20636f6e747261637420746f2064697374726962757465600082015250565b60006145bf602083613b6e565b91506145ca82614589565b602082019050919050565b600060208201905081810360008301526145ee816145b2565b9050919050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b600061462b601083613b6e565b9150614636826145f5565b602082019050919050565b6000602082019050818103600083015261465a8161461e565b9050919050565b600061466c82613c7c565b915061467783613c7c565b92508282101561468a576146896141de565b5b828203905092915050565b7f57616c6c657420636f756e74206f766572203230302028676173207269736b29600082015250565b60006146cb602083613b6e565b91506146d682614695565b602082019050919050565b600060208201905081810360008301526146fa816146be565b9050919050565b7f4164647265737320616e6420746f6b656e20616d6f756e74206c697374206d6960008201527f736d616368000000000000000000000000000000000000000000000000000000602082015250565b600061475d602583613b6e565b915061476882614701565b604082019050919050565b6000602082019050818103600083015261478c81614750565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006147cd82613c7c565b91506147d883613c7c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561480d5761480c6141de565b5b828201905092915050565b600061482382613c7c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614856576148556141de565b5b600182019050919050565b7f546f6b656e2062616c616e6365206c6f776572207468616e2061697264726f7060008201527f20746f74616c0000000000000000000000000000000000000000000000000000602082015250565b60006148bd602683613b6e565b91506148c882614861565b604082019050919050565b600060208201905081810360008301526148ec816148b0565b9050919050565b60006040820190506149086000830185613d28565b6149156020830184613d28565b9392505050565b7f74726164696e6720616c7265616479206f70656e000000000000000000000000600082015250565b6000614952601483613b6e565b915061495d8261491c565b602082019050919050565b6000602082019050818103600083015261498181614945565b9050919050565b7f6574682063616e6e6f7420626520300000000000000000000000000000000000600082015250565b60006149be600f83613b6e565b91506149c982614988565b602082019050919050565b600060208201905081810360008301526149ed816149b1565b9050919050565b7f6e6f7420656e6f75676820657468000000000000000000000000000000000000600082015250565b6000614a2a600e83613b6e565b9150614a35826149f4565b602082019050919050565b60006020820190508181036000830152614a5981614a1d565b9050919050565b7f6e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b6000614a96600983613b6e565b9150614aa182614a60565b602082019050919050565b60006020820190508181036000830152614ac581614a89565b9050919050565b600081519050614adb81613c50565b92915050565b600060208284031215614af757614af6613ab6565b5b6000614b0584828501614acc565b91505092915050565b6000604082019050614b236000830185613fcb565b614b306020830184613fcb565b9392505050565b7f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000600082015250565b6000614b6d601583613b6e565b9150614b7882614b37565b602082019050919050565b60006020820190508181036000830152614b9c81614b60565b9050919050565b7f54617820746f6f20686967680000000000000000000000000000000000000000600082015250565b6000614bd9600c83613b6e565b9150614be482614ba3565b602082019050919050565b60006020820190508181036000830152614c0881614bcc565b9050919050565b6000604082019050614c246000830185613db2565b614c316020830184613db2565b9392505050565b7f43616e6e6f7420656e666f726365206665657320666f7220746869732061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614c94602483613b6e565b9150614c9f82614c38565b604082019050919050565b60006020820190508181036000830152614cc381614c87565b9050919050565b7f546869732061646472657373206d757374206265206578636c75646564000000600082015250565b6000614d00601d83613b6e565b9150614d0b82614cca565b602082019050919050565b60006020820190508181036000830152614d2f81614cf3565b9050919050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b6000614d6c600983613b6e565b9150614d7782614d36565b602082019050919050565b60006020820190508181036000830152614d9b81614d5f565b9050919050565b6000819050919050565b6000614dc7614dc2614dbd84613c1e565b614da2565b613c1e565b9050919050565b6000614dd982614dac565b9050919050565b6000614deb82614dce565b9050919050565b614dfb81614de0565b82525050565b6000602082019050614e166000830184614df2565b92915050565b7f5a65726f2077616c6c65742063616e6e6f7420646f207472616e73666572732e600082015250565b6000614e52602083613b6e565b9150614e5d82614e1c565b602082019050919050565b60006020820190508181036000830152614e8181614e45565b9050919050565b6000819050919050565b6000614ead614ea8614ea384614e88565b614da2565b613c7c565b9050919050565b614ebd81614e92565b82525050565b600060c082019050614ed86000830189613fcb565b614ee56020830188613d28565b614ef26040830187614eb4565b614eff6060830186614eb4565b614f0c6080830185613fcb565b614f1960a0830184613d28565b979650505050505050565b600081519050614f3381613c86565b92915050565b600080600060608486031215614f5257614f51613ab6565b5b6000614f6086828701614f24565b9350506020614f7186828701614f24565b9250506040614f8286828701614f24565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614ff081613c3e565b82525050565b60006150028383614fe7565b60208301905092915050565b6000602082019050919050565b600061502682614fbb565b6150308185614fc6565b935061503b83614fd7565b8060005b8381101561506c5781516150538882614ff6565b975061505e8361500e565b92505060018101905061503f565b5085935050505092915050565b600060a08201905061508e6000830188613d28565b61509b6020830187614eb4565b81810360408301526150ad818661501b565b90506150bc6060830185613fcb565b6150c96080830184613d28565b9695505050505050565b7f416e7469426f7420747269676765726564000000000000000000000000000000600082015250565b6000615109601183613b6e565b9150615114826150d3565b602082019050919050565b60006020820190508181036000830152615138816150fc565b905091905056fea26469706673582212201e41e75646c7a3fa765195de466d513cefa2db2d318173cc0239c0fe4b64005264736f6c634300080b0033
Deployed Bytecode Sourcemap
2033:13773:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13155:423;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4125:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4535:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3864:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14666:220;;;;;;;;;;;;;:::i;:::-;;4940:363;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3955:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2652:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14891:912;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8242:717;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12020:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11138:378;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4289:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2567:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4208:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4038:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12610:345;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4735:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12365:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2592:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12119:241;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2622:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2455:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2348:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14469:192;;;;;;;;;;;;;:::i;:::-;;4397:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12962:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2428:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1222:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2401:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13155:423;1161:5;;;;;;;;;;1147:19;;:10;:19;;;1139:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;13315:10:::1;13289:36;;13304:8;13289:23;;2166:1;2224:2;:13;;;;:::i;:::-;2203:18;:34;;;;:::i;:::-;13289:23;;;;:::i;:::-;:36;;;;:::i;:::-;13276:10;:49;;;;13369:10;13343:36;;13358:8;13343:23;;2166:1;2224:2;:13;;;;:::i;:::-;2203:18;:34;;;;:::i;:::-;13343:23;;;;:::i;:::-;:36;;;;:::i;:::-;13330:10;:49;;;;13404:10;;13392;;:22;;13384:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;13470:5;2166:1;2224:2;:13;;;;:::i;:::-;2203:18;:34;;;;:::i;:::-;13455:20;;;;:::i;:::-;13444:10;;:31;13436:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13542:2;2166:1;2224:2;:13;;;;:::i;:::-;2203:18;:34;;;;:::i;:::-;13527:17;;;;:::i;:::-;13516:10;;:28;13508:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;13155:423:::0;;;;:::o;4125:80::-;4173:13;4197:5;;;;;;;;;;;;;;;;;4190:12;;4125:80;:::o;4535:195::-;4610:4;4656:6;4621:11;:23;4633:10;4621:23;;;;;;;;;;;;;;;:32;4645:7;4621:32;;;;;;;;;;;;;;;:41;;;;4693:7;4672:37;;4681:10;4672:37;;;4702:6;4672:37;;;;;;:::i;:::-;;;;;;;;4721:4;4714:11;;4535:195;;;;:::o;3864:88::-;3919:7;2166:1;2224:2;:13;;;;:::i;:::-;2203:18;:34;;;;:::i;:::-;3930:19;;3864:88;:::o;14666:220::-;1161:5;;;;;;;;;;1147:19;;:10;:19;;;1139:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14713:27:::1;14743:21;14713:51;;14799:1;14777:19;:23;14769:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14842:38;14860:19;14842:17;:38::i;:::-;14707:179;14666:220::o:0;4940:363::-;5040:4;5059:19;:17;:19::i;:::-;5051:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;5143:17;5108:11;:19;5120:6;5108:19;;;;;;;;;;;;;;;:31;5128:10;5108:31;;;;;;;;;;;;;;;;:52;5104:143;;5235:6;5201:11;:19;5213:6;5201:19;;;;;;;;;;;;;;;:31;5221:10;5201:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;5167:11;:19;5179:6;5167:19;;;;;;;;;;;;;;;:31;5187:10;5167:31;;;;;;;;;;;;;;;:74;;;;5104:143;5258:40;5272:6;5280:9;5291:6;5258:13;:40::i;:::-;5251:47;;4940:363;;;;;:::o;3955:80::-;4007:5;2166:1;4016:16;;3955:80;:::o;2652:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;14891:912::-;1161:5;;;;;;;;;;1147:19;;:10;:19;;;1139:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;15029:3:::1;15009:9;;:16;;:23;;15001:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15107:12;;:19;;15087:9;;:16;;:39;15079:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;15180:20;15219:6:::0;15215:116:::1;15233:9;;:16;;15229:1;:20;15215:116;;;2166:1;15305:2;:13;;;;:::i;:::-;15287:12;;15300:1;15287:15;;;;;;;:::i;:::-;;;;;;;;:31;;;;:::i;:::-;15270:49;;;;;:::i;:::-;;;15251:3;;;;;:::i;:::-;;;;15215:116;;;;15374:12;15349:9;:21;15359:10;15349:21;;;;;;;;;;;;;;;;:37;;15341:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;15446:6;15442:288;15460:9;;:16;;15456:1;:20;15442:288;;;2166:1;15541:2;:13;;;;:::i;:::-;15523:12;;15536:1;15523:15;;;;;;;:::i;:::-;;;;;;;;:31;;;;:::i;:::-;15497:9;:21;15507:10;15497:21;;;;;;;;;;;;;;;;:58;;;;;;;:::i;:::-;;;;;;;;2166:1;15616:2;:13;;;;:::i;:::-;15598:12;;15611:1;15598:15;;;;;;;:::i;:::-;;;;;;;;:31;;;;:::i;:::-;15570:9;:23;15580:9;;15590:1;15580:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;15570:23;;;;;;;;;;;;;;;;:60;;;;;;;:::i;:::-;;;;;;;;15662:9;;15672:1;15662:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;15641:70;;15650:10;15641:70;;;2166:1;15695:2;:13;;;;:::i;:::-;15677:12;;15690:1;15677:15;;;;;;;:::i;:::-;;;;;;;;:31;;;;:::i;:::-;15641:70;;;;;;:::i;:::-;;;;;;;;15478:3;;;;;:::i;:::-;;;;15442:288;;;;15747:48;15764:9;;:16;;15782:12;15747:48;;;;;;;:::i;:::-;;;;;;;;14990:813;14891:912:::0;;;;:::o;8242:717::-;1161:5;;;;;;;;;;1147:19;;:10;:19;;;1139:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;8313:11:::1;;;;;;;;;;;8312:12;8304:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;8377:1;8362:12;:16;8354:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;8405:28;:26;:28::i;:::-;8440:27;8470:21;8440:51;;8527:12;8504:19;:35;;8496:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;8563:29;8595:24;8613:4;8595:9;:24::i;:::-;8563:56;;8656:1;8632:21;:25;8624:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;8676:18;8715:16;;;;;;;;;;;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8697:56;;;8762:4;8769:16;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8697:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8676:117;;8823:4;8798:10;:22;8809:10;8798:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;8834:37;8849:21;8834:14;:37::i;:::-;8876:57;8890:21;8913:12;8927:5;8876:13;:57::i;:::-;8940:14;:12;:14::i;:::-;8299:660;;;8242:717:::0;:::o;12020:94::-;1161:5;;;;;;;;;;1147:19;;:10;:19;;;1139:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12100:9:::1;12083:14;;:26;;;;;;;;;;;;;;;;;;12020:94:::0;:::o;11138:378::-;11235:24;11262:21;11272:10;11262:9;:21::i;:::-;11235:48;;11306:16;11296:6;:26;;11288:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;11378:6;11353:9;:21;11363:10;11353:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;11414:6;11389:9;:21;11407:1;11389:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;11458:1;11430:39;;11439:10;11430:39;;;11462:6;11430:39;;;;;;:::i;:::-;;;;;;;;11492:10;11479:32;;;11504:6;11479:32;;;;;;:::i;:::-;;;;;;;;11183:333;11138:378;:::o;4289:105::-;4355:7;4373:9;:18;4383:7;4373:18;;;;;;;;;;;;;;;;4366:25;;4289:105;;;:::o;2567:23::-;;;;;;;;;;;;;:::o;4208:78::-;4260:7;4278:5;;;;;;;;;;;4271:12;;4208:78;:::o;4038:84::-;4088:13;4112:7;;;;;;;;;;;;;;;;;4105:14;;4038:84;:::o;12610:345::-;1161:5;;;;;;;;;;1147:19;;:10;:19;;;1139:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;2561:1:::1;12700:24;;:9;:24;;;;:53;;;;;2561:1;12728:25;;:10;:25;;;;12700:53;12692:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;12865:9;12852:10;;:22;;;;;;;;;;;;;;;;;;12893:10;12879:11;;:24;;;;;;;;;;;;;;;;;;12913:37;12928:9;12939:10;12913:37;;;;;;;:::i;:::-;;;;;;;;12610:345:::0;;:::o;4735:200::-;4815:4;4834:19;:17;:19::i;:::-;4826:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;4886:44;4900:10;4912:9;4923:6;4886:13;:44::i;:::-;4879:51;;4735:200;;;;:::o;12365:240::-;1161:5;;;;;;;;;;1147:19;;:10;:19;;;1139:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12451:10:::1;12447:112;;;12491:4;12473:23;;:6;:23;;;;:42;;;;;12510:5;::::0;::::1;;;;;;;;12500:15;;:6;:15;;;;12473:42;12465:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;12447:112;12590:10;12563:16;:24;12580:6;12563:24;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;12365:240:::0;;:::o;2592:24::-;;;;;;;;;;;;;:::o;12119:241::-;1161:5;;;;;;;;;;1147:19;;:10;:19;;;1139:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12209:10:::1;12204:107;;12249:4;12231:23;;:6;:23;;;;:42;;;;;12268:5;::::0;::::1;;;;;;;;12258:15;;:6;:15;;;;12231:42;12223:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;12204:107;12345:10;12315:19;:27;12335:6;12315:27;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;12119:241:::0;;:::o;2622:26::-;;;;;;;;;;;;;:::o;2455:25::-;;;;:::o;2348:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;14469:192::-;1161:5;;;;;;;;;;1147:19;;:10;:19;;;1139:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14518:23:::1;14544:24;14562:4;14544:9;:24::i;:::-;14518:50;;14599:1;14581:15;:19;14573:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;14619:37;14640:15;14619:20;:37::i;:::-;14513:148;14469:192::o:0;4397:133::-;4481:7;4499:11;:19;4511:6;4499:19;;;;;;;;;;;;;;;:28;4519:7;4499:28;;;;;;;;;;;;;;;;4492:35;;4397:133;;;;:::o;12962:188::-;1161:5;;;;;;;;;;1147:19;;:10;:19;;;1139:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;13050:12:::1;13030:9;;:33;;;;;;;;;;;;;;;;;;13101:4;13068:16;:30;13085:12;13068:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;13115:30;13132:12;13115:30;;;;;;:::i;:::-;;;;;;;;12962:188:::0;:::o;2428:25::-;;;;:::o;1222:130::-;1161:5;;;;;;;;;;1147:19;;:10;:19;;;1139:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;1304:8:::1;1296:5;::::0;:16:::1;;;;;;;;;;;;;;;;;;1319:30;1340:8;1319:30;;;;;;:::i;:::-;;;;;;;;1222:130:::0;:::o;2401:23::-;;;;;;;;;;;;;:::o;14375:89::-;14432:9;;;;;;;;;;;:18;;:27;14451:7;14432:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14375:89;:::o;10467:219::-;10518:4;10528:16;10547:5;10528:24;;10562:11;;;;;;;;;;;10557:101;;;10592:4;10578:18;;10557:101;;;10627:5;;;;;;;;;;10614:18;;:9;:18;;;10609:49;;;10651:4;10637:18;;10609:49;10557:101;10670:11;10663:18;;;10467:219;:::o;9699:763::-;9791:4;9828:1;9810:20;;:6;:20;;;;:47;;;;9855:1;9834:23;;:9;:23;;;;9810:47;9802:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;9904:11;;;;;;;;;;;9899:168;;;9929:14;;;;;;;;;;;9924:58;;;9948:31;9961:6;9969:9;9948:12;:31::i;:::-;9924:58;9993:10;;;;;;;;;;;9992:11;:36;;;;;10007:10;:21;10018:9;10007:21;;;;;;;;;;;;;;;;;;;;;;;;;9992:36;9987:75;;;10033:26;:24;:26::i;:::-;9987:75;9899:168;10073:18;10094:40;10108:6;10116:9;10127:6;10094:13;:40::i;:::-;10073:61;;10139:23;10174:10;10165:6;:19;;;;:::i;:::-;10139:45;;10229:6;10209:9;:17;10219:6;10209:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;10189:9;:17;10199:6;10189:17;;;;;;;;;;;;;;;:46;;;;10258:1;10245:10;:14;10240:91;;;10318:10;10291:9;:24;10309:4;10291:24;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;10264:9;:24;10282:4;10264:24;;;;;;;;;;;;;;;:64;;;;10240:91;10381:15;10358:9;:20;10368:9;10358:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;10335:9;:20;10345:9;10335:20;;;;;;;;;;;;;;;:61;;;;10423:9;10406:35;;10415:6;10406:35;;;10434:6;10406:35;;;;;;:::i;:::-;;;;;;;;10453:4;10446:11;;;;9699:763;;;;;:::o;5362:2875::-;5506:25;2166:1;5554:2;:13;;;;:::i;:::-;5534:17;:33;;;;:::i;:::-;5506:61;;5637:17;5572:9;:62;5590:42;5572:62;;;;;;;;;;;;;;;:82;;;;5693:42;5664:93;;5681:1;5664:93;;;5738:17;5664:93;;;;;;:::i;:::-;;;;;;;;5846:33;2166:1;5902:2;:13;;;;:::i;:::-;5882:17;:33;;;;:::i;:::-;5846:69;;5985:25;5920:9;:62;5938:42;5920:62;;;;;;;;;;;;;;;:90;;;;6049:42;6020:101;;6037:1;6020:101;;;6094:25;6020:101;;;;;;:::i;:::-;;;;;;;;6200:21;2166:1;6244:2;:13;;;;:::i;:::-;6224:17;:33;;;;:::i;:::-;6200:57;;6327:13;6262:9;:62;6280:42;6262:62;;;;;;;;;;;;;;;:78;;;;6379:42;6350:89;;6367:1;6350:89;;;6424:13;6350:89;;;;;;:::i;:::-;;;;;;;;6516:18;2166:1;6555:2;:13;;;;:::i;:::-;6537:15;:31;;;;:::i;:::-;6516:52;;6638:10;6573:9;:62;6591:42;6573:62;;;;;;;;;;;;;;;:75;;;;6687:42;6658:86;;6675:1;6658:86;;;6732:10;6658:86;;;;;;:::i;:::-;;;;;;;;6825:23;2166:1;6869:2;:13;;;;:::i;:::-;6851:15;:31;;;;:::i;:::-;6825:57;;6952:15;6887:9;:62;6905:42;6887:62;;;;;;;;;;;;;;;:80;;;;7006:42;6977:91;;6994:1;6977:91;;;7051:15;6977:91;;;;;;:::i;:::-;;;;;;;;7156:27;2166:1;7204:2;:13;;;;:::i;:::-;7186:15;:31;;;;:::i;:::-;7156:61;;7287:19;7222:9;:62;7240:42;7222:62;;;;;;;;;;;;;;;:84;;;;7345:42;7316:95;;7333:1;7316:95;;;7390:19;7316:95;;;;;;:::i;:::-;;;;;;;;7458:18;2166:1;7497:2;:13;;;;:::i;:::-;7479:15;:31;;;;:::i;:::-;7458:52;;7539:10;7515:9;:21;7533:1;7515:21;;;;;;;;;;;;;;;:34;;;;7588:1;7559:45;;7576:1;7559:45;;;7592:10;7559:45;;;;;;:::i;:::-;;;;;;;;7635:1;7614:36;;;7639:10;7614:36;;;;;;:::i;:::-;;;;;;;;7657:27;2166:1;7705:2;:13;;;;:::i;:::-;7687:15;:31;;;;:::i;:::-;7657:61;;7751:19;7724:9;:24;7742:4;7724:24;;;;;;;;;;;;;;;:46;;;;7809:4;7780:57;;7797:1;7780:57;;;7816:19;7780:57;;;;;;:::i;:::-;;;;;;;;7844:27;8019:19;8006:10;7988:15;7975:10;7959:13;7931:25;7911:17;7889:19;2166:1;2224:2;:13;;;;:::i;:::-;2203:18;:34;;;;:::i;:::-;7874;;;;:::i;:::-;:54;;;;:::i;:::-;:82;;;;:::i;:::-;:98;;;;:::i;:::-;:111;;;;:::i;:::-;:129;;;;:::i;:::-;:142;;;;:::i;:::-;:164;;;;:::i;:::-;7844:194;;8108:19;8043:9;:62;8061:42;8043:62;;;;;;;;;;;;;;;:84;;;;8166:42;8137:95;;8154:1;8137:95;;;8211:19;8137:95;;;;;;:::i;:::-;;;;;;;;5409:2828;;;;;;;;;5362:2875::o;8964:299::-;9083:12;9029:11;:26;9049:4;9029:26;;;;;;;;;;;;;;;:51;2952:42;9029:51;;;;;;;;;;;;;;;;:66;9024:235;;;9158:17;9104:11;:26;9124:4;9104:26;;;;;;;;;;;;;;;:51;2952:42;9104:51;;;;;;;;;;;;;;;:71;;;;2952:42;9186:67;;9203:4;9186:67;;;9235:17;9186:67;;;;;;:::i;:::-;;;;;;;;9024:235;8964:299;:::o;9268:321::-;9365:24;9413:8;9407:46;;9445:5;;;;;;;;;;9426:24;;9407:46;9457:16;;;;;;;;;;;:32;;;9497:13;9522:4;9529:12;9543:1;9546;9549:16;9567:15;9457:127;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;9360:229;9268:321;;;:::o;9594:100::-;9645:1;9632:10;;:14;;;;;;;;;;;;;;;;;;9665:1;9651:11;;:15;;;;;;;;;;;;;;;;;;9685:4;9671:11;;:18;;;;;;;;;;;;;;;;;;9594:100::o;14038:332::-;14103:28;14118:12;14103:14;:28::i;:::-;14136:21;14174:1;14160:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14136:40;;14199:4;14181;14186:1;14181:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;14219:16;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14209:4;14214:1;14209:7;;;;;;;;:::i;:::-;;;;;;;:33;;;;;;;;;;;14247:16;;;;;;;;;;;:67;;;14315:12;14328:1;14330:4;14343;14349:15;14247:118;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14098:272;14038:332;:::o;11523:492::-;11599:10;:18;11610:6;11599:18;;;;;;;;;;;;;;;;;;;;;;;;;:53;;;;;11622:19;:30;11642:9;11622:30;;;;;;;;;;;;;;;;;;;;;;;;;11621:31;11599:53;11594:417;;;11716:12;11688:14;:25;11703:9;11688:25;;;;;;;;;;;;;;;;:40;11680:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;11784:12;11756:14;:25;11771:9;11756:25;;;;;;;;;;;;;;;:40;;;;11594:417;;;11813:10;:21;11824:9;11813:21;;;;;;;;;;;;;;;;;;;;;;;;;:53;;;;;11839:19;:27;11859:6;11839:27;;;;;;;;;;;;;;;;;;;;;;;;;11838:28;11813:53;11808:203;;;11928:12;11903:14;:22;11918:6;11903:22;;;;;;;;;;;;;;;;:37;11895:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11993:12;11968:14;:22;11983:6;11968:22;;;;;;;;;;;;;;;:37;;;;11808:203;11594:417;11523:492;;:::o;13583:450::-;3082:4;3069:10;;:17;;;;;;;;;;;;;;;;;;13644:27:::1;13674:24;13692:4;13674:9;:24::i;:::-;13644:54;;13731:10;;13708:19;:33;;:48;;;;;13745:11;;;;;;;;;;;13708:48;13703:326;;;13793:10;;13770:19;:33;13765:78;;13830:10;;13808:32;;13765:78;13848:41;13869:19;13848:20;:41::i;:::-;13895:27;13925:21;13895:51;;13978:1;13956:19;:23;13952:72;;;13983:38;14001:19;13983:17;:38::i;:::-;13952:72;13759:270;13703:326;13639:394;3104:5:::0;3091:10;;:18;;;;;;;;;;;;;;;;;;13583:450::o;10691:440::-;10788:7;10802:17;10830:11;;;;;;;;;;;10829:12;:40;;;;10845:16;:24;10862:6;10845:24;;;;;;;;;;;;;;;;;;;;;;;;;10829:40;:71;;;;10873:16;:27;10890:9;10873:27;;;;;;;;;;;;;;;;;;;;;;;;;10829:71;10824:282;;;10917:1;10905:13;;10824:282;;;10935:10;:18;10946:6;10935:18;;;;;;;;;;;;;;;;;;;;;;;;;10930:176;;;10992:3;10979:10;;;;;;;;;;;10970:19;;:6;:19;;;;:::i;:::-;:25;;;;:::i;:::-;10958:37;;10930:176;;;11012:10;:21;11023:9;11012:21;;;;;;;;;;;;;;;;;;;;;;;;;11007:99;;;11073:3;11059:11;;;;;;;;;;;11050:20;;:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;11038:38;;11007:99;;;11102:1;11090:13;;11007:99;10930:176;10824:282;11117:9;11110:16;;;10691:440;;;;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:93;370:7;410:10;403:5;399:22;388:33;;334:93;;;:::o;433:120::-;505:23;522:5;505:23;:::i;:::-;498:5;495:34;485:62;;543:1;540;533:12;485:62;433:120;:::o;559:137::-;604:5;642:6;629:20;620:29;;658:32;684:5;658:32;:::i;:::-;559:137;;;;:::o;702:757::-;784:6;792;800;808;857:3;845:9;836:7;832:23;828:33;825:120;;;864:79;;:::i;:::-;825:120;984:1;1009:52;1053:7;1044:6;1033:9;1029:22;1009:52;:::i;:::-;999:62;;955:116;1110:2;1136:52;1180:7;1171:6;1160:9;1156:22;1136:52;:::i;:::-;1126:62;;1081:117;1237:2;1263:52;1307:7;1298:6;1287:9;1283:22;1263:52;:::i;:::-;1253:62;;1208:117;1364:2;1390:52;1434:7;1425:6;1414:9;1410:22;1390:52;:::i;:::-;1380:62;;1335:117;702:757;;;;;;;:::o;1465:99::-;1517:6;1551:5;1545:12;1535:22;;1465:99;;;:::o;1570:169::-;1654:11;1688:6;1683:3;1676:19;1728:4;1723:3;1719:14;1704:29;;1570:169;;;;:::o;1745:307::-;1813:1;1823:113;1837:6;1834:1;1831:13;1823:113;;;1922:1;1917:3;1913:11;1907:18;1903:1;1898:3;1894:11;1887:39;1859:2;1856:1;1852:10;1847:15;;1823:113;;;1954:6;1951:1;1948:13;1945:101;;;2034:1;2025:6;2020:3;2016:16;2009:27;1945:101;1794:258;1745:307;;;:::o;2058:102::-;2099:6;2150:2;2146:7;2141:2;2134:5;2130:14;2126:28;2116:38;;2058:102;;;:::o;2166:364::-;2254:3;2282:39;2315:5;2282:39;:::i;:::-;2337:71;2401:6;2396:3;2337:71;:::i;:::-;2330:78;;2417:52;2462:6;2457:3;2450:4;2443:5;2439:16;2417:52;:::i;:::-;2494:29;2516:6;2494:29;:::i;:::-;2489:3;2485:39;2478:46;;2258:272;2166:364;;;;:::o;2536:313::-;2649:4;2687:2;2676:9;2672:18;2664:26;;2736:9;2730:4;2726:20;2722:1;2711:9;2707:17;2700:47;2764:78;2837:4;2828:6;2764:78;:::i;:::-;2756:86;;2536:313;;;;:::o;2855:126::-;2892:7;2932:42;2925:5;2921:54;2910:65;;2855:126;;;:::o;2987:96::-;3024:7;3053:24;3071:5;3053:24;:::i;:::-;3042:35;;2987:96;;;:::o;3089:122::-;3162:24;3180:5;3162:24;:::i;:::-;3155:5;3152:35;3142:63;;3201:1;3198;3191:12;3142:63;3089:122;:::o;3217:139::-;3263:5;3301:6;3288:20;3279:29;;3317:33;3344:5;3317:33;:::i;:::-;3217:139;;;;:::o;3362:77::-;3399:7;3428:5;3417:16;;3362:77;;;:::o;3445:122::-;3518:24;3536:5;3518:24;:::i;:::-;3511:5;3508:35;3498:63;;3557:1;3554;3547:12;3498:63;3445:122;:::o;3573:139::-;3619:5;3657:6;3644:20;3635:29;;3673:33;3700:5;3673:33;:::i;:::-;3573:139;;;;:::o;3718:474::-;3786:6;3794;3843:2;3831:9;3822:7;3818:23;3814:32;3811:119;;;3849:79;;:::i;:::-;3811:119;3969:1;3994:53;4039:7;4030:6;4019:9;4015:22;3994:53;:::i;:::-;3984:63;;3940:117;4096:2;4122:53;4167:7;4158:6;4147:9;4143:22;4122:53;:::i;:::-;4112:63;;4067:118;3718:474;;;;;:::o;4198:90::-;4232:7;4275:5;4268:13;4261:21;4250:32;;4198:90;;;:::o;4294:109::-;4375:21;4390:5;4375:21;:::i;:::-;4370:3;4363:34;4294:109;;:::o;4409:210::-;4496:4;4534:2;4523:9;4519:18;4511:26;;4547:65;4609:1;4598:9;4594:17;4585:6;4547:65;:::i;:::-;4409:210;;;;:::o;4625:118::-;4712:24;4730:5;4712:24;:::i;:::-;4707:3;4700:37;4625:118;;:::o;4749:222::-;4842:4;4880:2;4869:9;4865:18;4857:26;;4893:71;4961:1;4950:9;4946:17;4937:6;4893:71;:::i;:::-;4749:222;;;;:::o;4977:619::-;5054:6;5062;5070;5119:2;5107:9;5098:7;5094:23;5090:32;5087:119;;;5125:79;;:::i;:::-;5087:119;5245:1;5270:53;5315:7;5306:6;5295:9;5291:22;5270:53;:::i;:::-;5260:63;;5216:117;5372:2;5398:53;5443:7;5434:6;5423:9;5419:22;5398:53;:::i;:::-;5388:63;;5343:118;5500:2;5526:53;5571:7;5562:6;5551:9;5547:22;5526:53;:::i;:::-;5516:63;;5471:118;4977:619;;;;;:::o;5602:86::-;5637:7;5677:4;5670:5;5666:16;5655:27;;5602:86;;;:::o;5694:112::-;5777:22;5793:5;5777:22;:::i;:::-;5772:3;5765:35;5694:112;;:::o;5812:214::-;5901:4;5939:2;5928:9;5924:18;5916:26;;5952:67;6016:1;6005:9;6001:17;5992:6;5952:67;:::i;:::-;5812:214;;;;:::o;6032:329::-;6091:6;6140:2;6128:9;6119:7;6115:23;6111:32;6108:119;;;6146:79;;:::i;:::-;6108:119;6266:1;6291:53;6336:7;6327:6;6316:9;6312:22;6291:53;:::i;:::-;6281:63;;6237:117;6032:329;;;;:::o;6367:117::-;6476:1;6473;6466:12;6490:117;6599:1;6596;6589:12;6613:117;6722:1;6719;6712:12;6753:568;6826:8;6836:6;6886:3;6879:4;6871:6;6867:17;6863:27;6853:122;;6894:79;;:::i;:::-;6853:122;7007:6;6994:20;6984:30;;7037:18;7029:6;7026:30;7023:117;;;7059:79;;:::i;:::-;7023:117;7173:4;7165:6;7161:17;7149:29;;7227:3;7219:4;7211:6;7207:17;7197:8;7193:32;7190:41;7187:128;;;7234:79;;:::i;:::-;7187:128;6753:568;;;;;:::o;7344:::-;7417:8;7427:6;7477:3;7470:4;7462:6;7458:17;7454:27;7444:122;;7485:79;;:::i;:::-;7444:122;7598:6;7585:20;7575:30;;7628:18;7620:6;7617:30;7614:117;;;7650:79;;:::i;:::-;7614:117;7764:4;7756:6;7752:17;7740:29;;7818:3;7810:4;7802:6;7798:17;7788:8;7784:32;7781:41;7778:128;;;7825:79;;:::i;:::-;7778:128;7344:568;;;;;:::o;7918:934::-;8040:6;8048;8056;8064;8113:2;8101:9;8092:7;8088:23;8084:32;8081:119;;;8119:79;;:::i;:::-;8081:119;8267:1;8256:9;8252:17;8239:31;8297:18;8289:6;8286:30;8283:117;;;8319:79;;:::i;:::-;8283:117;8432:80;8504:7;8495:6;8484:9;8480:22;8432:80;:::i;:::-;8414:98;;;;8210:312;8589:2;8578:9;8574:18;8561:32;8620:18;8612:6;8609:30;8606:117;;;8642:79;;:::i;:::-;8606:117;8755:80;8827:7;8818:6;8807:9;8803:22;8755:80;:::i;:::-;8737:98;;;;8532:313;7918:934;;;;;;;:::o;8858:329::-;8917:6;8966:2;8954:9;8945:7;8941:23;8937:32;8934:119;;;8972:79;;:::i;:::-;8934:119;9092:1;9117:53;9162:7;9153:6;9142:9;9138:22;9117:53;:::i;:::-;9107:63;;9063:117;8858:329;;;;:::o;9193:116::-;9263:21;9278:5;9263:21;:::i;:::-;9256:5;9253:32;9243:60;;9299:1;9296;9289:12;9243:60;9193:116;:::o;9315:133::-;9358:5;9396:6;9383:20;9374:29;;9412:30;9436:5;9412:30;:::i;:::-;9315:133;;;;:::o;9454:323::-;9510:6;9559:2;9547:9;9538:7;9534:23;9530:32;9527:119;;;9565:79;;:::i;:::-;9527:119;9685:1;9710:50;9752:7;9743:6;9732:9;9728:22;9710:50;:::i;:::-;9700:60;;9656:114;9454:323;;;;:::o;9783:118::-;9870:24;9888:5;9870:24;:::i;:::-;9865:3;9858:37;9783:118;;:::o;9907:222::-;10000:4;10038:2;10027:9;10023:18;10015:26;;10051:71;10119:1;10108:9;10104:17;10095:6;10051:71;:::i;:::-;9907:222;;;;:::o;10135:118::-;10206:22;10222:5;10206:22;:::i;:::-;10199:5;10196:33;10186:61;;10243:1;10240;10233:12;10186:61;10135:118;:::o;10259:135::-;10303:5;10341:6;10328:20;10319:29;;10357:31;10382:5;10357:31;:::i;:::-;10259:135;;;;:::o;10400:466::-;10464:6;10472;10521:2;10509:9;10500:7;10496:23;10492:32;10489:119;;;10527:79;;:::i;:::-;10489:119;10647:1;10672:51;10715:7;10706:6;10695:9;10691:22;10672:51;:::i;:::-;10662:61;;10618:115;10772:2;10798:51;10841:7;10832:6;10821:9;10817:22;10798:51;:::i;:::-;10788:61;;10743:116;10400:466;;;;;:::o;10872:468::-;10937:6;10945;10994:2;10982:9;10973:7;10969:23;10965:32;10962:119;;;11000:79;;:::i;:::-;10962:119;11120:1;11145:53;11190:7;11181:6;11170:9;11166:22;11145:53;:::i;:::-;11135:63;;11091:117;11247:2;11273:50;11315:7;11306:6;11295:9;11291:22;11273:50;:::i;:::-;11263:60;;11218:115;10872:468;;;;;:::o;11346:474::-;11414:6;11422;11471:2;11459:9;11450:7;11446:23;11442:32;11439:119;;;11477:79;;:::i;:::-;11439:119;11597:1;11622:53;11667:7;11658:6;11647:9;11643:22;11622:53;:::i;:::-;11612:63;;11568:117;11724:2;11750:53;11795:7;11786:6;11775:9;11771:22;11750:53;:::i;:::-;11740:63;;11695:118;11346:474;;;;;:::o;11826:104::-;11871:7;11900:24;11918:5;11900:24;:::i;:::-;11889:35;;11826:104;;;:::o;11936:138::-;12017:32;12043:5;12017:32;:::i;:::-;12010:5;12007:43;11997:71;;12064:1;12061;12054:12;11997:71;11936:138;:::o;12080:155::-;12134:5;12172:6;12159:20;12150:29;;12188:41;12223:5;12188:41;:::i;:::-;12080:155;;;;:::o;12241:345::-;12308:6;12357:2;12345:9;12336:7;12332:23;12328:32;12325:119;;;12363:79;;:::i;:::-;12325:119;12483:1;12508:61;12561:7;12552:6;12541:9;12537:22;12508:61;:::i;:::-;12498:71;;12454:125;12241:345;;;;:::o;12592:229::-;12732:34;12728:1;12720:6;12716:14;12709:58;12801:12;12796:2;12788:6;12784:15;12777:37;12592:229;:::o;12827:366::-;12969:3;12990:67;13054:2;13049:3;12990:67;:::i;:::-;12983:74;;13066:93;13155:3;13066:93;:::i;:::-;13184:2;13179:3;13175:12;13168:19;;12827:366;;;:::o;13199:419::-;13365:4;13403:2;13392:9;13388:18;13380:26;;13452:9;13446:4;13442:20;13438:1;13427:9;13423:17;13416:47;13480:131;13606:4;13480:131;:::i;:::-;13472:139;;13199:419;;;:::o;13624:180::-;13672:77;13669:1;13662:88;13769:4;13766:1;13759:15;13793:4;13790:1;13783:15;13810:102;13852:8;13899:5;13896:1;13892:13;13871:34;;13810:102;;;:::o;13918:848::-;13979:5;13986:4;14010:6;14001:15;;14034:5;14025:14;;14048:712;14069:1;14059:8;14056:15;14048:712;;;14164:4;14159:3;14155:14;14149:4;14146:24;14143:50;;;14173:18;;:::i;:::-;14143:50;14223:1;14213:8;14209:16;14206:451;;;14638:4;14631:5;14627:16;14618:25;;14206:451;14688:4;14682;14678:15;14670:23;;14718:32;14741:8;14718:32;:::i;:::-;14706:44;;14048:712;;;13918:848;;;;;;;:::o;14772:1073::-;14826:5;15017:8;15007:40;;15038:1;15029:10;;15040:5;;15007:40;15066:4;15056:36;;15083:1;15074:10;;15085:5;;15056:36;15152:4;15200:1;15195:27;;;;15236:1;15231:191;;;;15145:277;;15195:27;15213:1;15204:10;;15215:5;;;15231:191;15276:3;15266:8;15263:17;15260:43;;;15283:18;;:::i;:::-;15260:43;15332:8;15329:1;15325:16;15316:25;;15367:3;15360:5;15357:14;15354:40;;;15374:18;;:::i;:::-;15354:40;15407:5;;;15145:277;;15531:2;15521:8;15518:16;15512:3;15506:4;15503:13;15499:36;15481:2;15471:8;15468:16;15463:2;15457:4;15454:12;15450:35;15434:111;15431:246;;;15587:8;15581:4;15577:19;15568:28;;15622:3;15615:5;15612:14;15609:40;;;15629:18;;:::i;:::-;15609:40;15662:5;;15431:246;15702:42;15740:3;15730:8;15724:4;15721:1;15702:42;:::i;:::-;15687:57;;;;15776:4;15771:3;15767:14;15760:5;15757:25;15754:51;;;15785:18;;:::i;:::-;15754:51;15834:4;15827:5;15823:16;15814:25;;14772:1073;;;;;;:::o;15851:281::-;15909:5;15933:23;15951:4;15933:23;:::i;:::-;15925:31;;15977:25;15993:8;15977:25;:::i;:::-;15965:37;;16021:104;16058:66;16048:8;16042:4;16021:104;:::i;:::-;16012:113;;15851:281;;;;:::o;16138:348::-;16178:7;16201:20;16219:1;16201:20;:::i;:::-;16196:25;;16235:20;16253:1;16235:20;:::i;:::-;16230:25;;16423:1;16355:66;16351:74;16348:1;16345:81;16340:1;16333:9;16326:17;16322:105;16319:131;;;16430:18;;:::i;:::-;16319:131;16478:1;16475;16471:9;16460:20;;16138:348;;;;:::o;16492:180::-;16540:77;16537:1;16530:88;16637:4;16634:1;16627:15;16661:4;16658:1;16651:15;16678:185;16718:1;16735:20;16753:1;16735:20;:::i;:::-;16730:25;;16769:20;16787:1;16769:20;:::i;:::-;16764:25;;16808:1;16798:35;;16813:18;;:::i;:::-;16798:35;16855:1;16852;16848:9;16843:14;;16678:185;;;;:::o;16869:162::-;17009:14;17005:1;16997:6;16993:14;16986:38;16869:162;:::o;17037:366::-;17179:3;17200:67;17264:2;17259:3;17200:67;:::i;:::-;17193:74;;17276:93;17365:3;17276:93;:::i;:::-;17394:2;17389:3;17385:12;17378:19;;17037:366;;;:::o;17409:419::-;17575:4;17613:2;17602:9;17598:18;17590:26;;17662:9;17656:4;17652:20;17648:1;17637:9;17633:17;17626:47;17690:131;17816:4;17690:131;:::i;:::-;17682:139;;17409:419;;;:::o;17834:173::-;17974:25;17970:1;17962:6;17958:14;17951:49;17834:173;:::o;18013:366::-;18155:3;18176:67;18240:2;18235:3;18176:67;:::i;:::-;18169:74;;18252:93;18341:3;18252:93;:::i;:::-;18370:2;18365:3;18361:12;18354:19;;18013:366;;;:::o;18385:419::-;18551:4;18589:2;18578:9;18574:18;18566:26;;18638:9;18632:4;18628:20;18624:1;18613:9;18609:17;18602:47;18666:131;18792:4;18666:131;:::i;:::-;18658:139;;18385:419;;;:::o;18810:174::-;18950:26;18946:1;18938:6;18934:14;18927:50;18810:174;:::o;18990:366::-;19132:3;19153:67;19217:2;19212:3;19153:67;:::i;:::-;19146:74;;19229:93;19318:3;19229:93;:::i;:::-;19347:2;19342:3;19338:12;19331:19;;18990:366;;;:::o;19362:419::-;19528:4;19566:2;19555:9;19551:18;19543:26;;19615:9;19609:4;19605:20;19601:1;19590:9;19586:17;19579:47;19643:131;19769:4;19643:131;:::i;:::-;19635:139;;19362:419;;;:::o;19787:182::-;19927:34;19923:1;19915:6;19911:14;19904:58;19787:182;:::o;19975:366::-;20117:3;20138:67;20202:2;20197:3;20138:67;:::i;:::-;20131:74;;20214:93;20303:3;20214:93;:::i;:::-;20332:2;20327:3;20323:12;20316:19;;19975:366;;;:::o;20347:419::-;20513:4;20551:2;20540:9;20536:18;20528:26;;20600:9;20594:4;20590:20;20586:1;20575:9;20571:17;20564:47;20628:131;20754:4;20628:131;:::i;:::-;20620:139;;20347:419;;;:::o;20772:166::-;20912:18;20908:1;20900:6;20896:14;20889:42;20772:166;:::o;20944:366::-;21086:3;21107:67;21171:2;21166:3;21107:67;:::i;:::-;21100:74;;21183:93;21272:3;21183:93;:::i;:::-;21301:2;21296:3;21292:12;21285:19;;20944:366;;;:::o;21316:419::-;21482:4;21520:2;21509:9;21505:18;21497:26;;21569:9;21563:4;21559:20;21555:1;21544:9;21540:17;21533:47;21597:131;21723:4;21597:131;:::i;:::-;21589:139;;21316:419;;;:::o;21741:191::-;21781:4;21801:20;21819:1;21801:20;:::i;:::-;21796:25;;21835:20;21853:1;21835:20;:::i;:::-;21830:25;;21874:1;21871;21868:8;21865:34;;;21879:18;;:::i;:::-;21865:34;21924:1;21921;21917:9;21909:17;;21741:191;;;;:::o;21938:182::-;22078:34;22074:1;22066:6;22062:14;22055:58;21938:182;:::o;22126:366::-;22268:3;22289:67;22353:2;22348:3;22289:67;:::i;:::-;22282:74;;22365:93;22454:3;22365:93;:::i;:::-;22483:2;22478:3;22474:12;22467:19;;22126:366;;;:::o;22498:419::-;22664:4;22702:2;22691:9;22687:18;22679:26;;22751:9;22745:4;22741:20;22737:1;22726:9;22722:17;22715:47;22779:131;22905:4;22779:131;:::i;:::-;22771:139;;22498:419;;;:::o;22923:224::-;23063:34;23059:1;23051:6;23047:14;23040:58;23132:7;23127:2;23119:6;23115:15;23108:32;22923:224;:::o;23153:366::-;23295:3;23316:67;23380:2;23375:3;23316:67;:::i;:::-;23309:74;;23392:93;23481:3;23392:93;:::i;:::-;23510:2;23505:3;23501:12;23494:19;;23153:366;;;:::o;23525:419::-;23691:4;23729:2;23718:9;23714:18;23706:26;;23778:9;23772:4;23768:20;23764:1;23753:9;23749:17;23742:47;23806:131;23932:4;23806:131;:::i;:::-;23798:139;;23525:419;;;:::o;23950:180::-;23998:77;23995:1;23988:88;24095:4;24092:1;24085:15;24119:4;24116:1;24109:15;24136:305;24176:3;24195:20;24213:1;24195:20;:::i;:::-;24190:25;;24229:20;24247:1;24229:20;:::i;:::-;24224:25;;24383:1;24315:66;24311:74;24308:1;24305:81;24302:107;;;24389:18;;:::i;:::-;24302:107;24433:1;24430;24426:9;24419:16;;24136:305;;;;:::o;24447:233::-;24486:3;24509:24;24527:5;24509:24;:::i;:::-;24500:33;;24555:66;24548:5;24545:77;24542:103;;;24625:18;;:::i;:::-;24542:103;24672:1;24665:5;24661:13;24654:20;;24447:233;;;:::o;24686:225::-;24826:34;24822:1;24814:6;24810:14;24803:58;24895:8;24890:2;24882:6;24878:15;24871:33;24686:225;:::o;24917:366::-;25059:3;25080:67;25144:2;25139:3;25080:67;:::i;:::-;25073:74;;25156:93;25245:3;25156:93;:::i;:::-;25274:2;25269:3;25265:12;25258:19;;24917:366;;;:::o;25289:419::-;25455:4;25493:2;25482:9;25478:18;25470:26;;25542:9;25536:4;25532:20;25528:1;25517:9;25513:17;25506:47;25570:131;25696:4;25570:131;:::i;:::-;25562:139;;25289:419;;;:::o;25714:332::-;25835:4;25873:2;25862:9;25858:18;25850:26;;25886:71;25954:1;25943:9;25939:17;25930:6;25886:71;:::i;:::-;25967:72;26035:2;26024:9;26020:18;26011:6;25967:72;:::i;:::-;25714:332;;;;;:::o;26052:170::-;26192:22;26188:1;26180:6;26176:14;26169:46;26052:170;:::o;26228:366::-;26370:3;26391:67;26455:2;26450:3;26391:67;:::i;:::-;26384:74;;26467:93;26556:3;26467:93;:::i;:::-;26585:2;26580:3;26576:12;26569:19;;26228:366;;;:::o;26600:419::-;26766:4;26804:2;26793:9;26789:18;26781:26;;26853:9;26847:4;26843:20;26839:1;26828:9;26824:17;26817:47;26881:131;27007:4;26881:131;:::i;:::-;26873:139;;26600:419;;;:::o;27025:165::-;27165:17;27161:1;27153:6;27149:14;27142:41;27025:165;:::o;27196:366::-;27338:3;27359:67;27423:2;27418:3;27359:67;:::i;:::-;27352:74;;27435:93;27524:3;27435:93;:::i;:::-;27553:2;27548:3;27544:12;27537:19;;27196:366;;;:::o;27568:419::-;27734:4;27772:2;27761:9;27757:18;27749:26;;27821:9;27815:4;27811:20;27807:1;27796:9;27792:17;27785:47;27849:131;27975:4;27849:131;:::i;:::-;27841:139;;27568:419;;;:::o;27993:164::-;28133:16;28129:1;28121:6;28117:14;28110:40;27993:164;:::o;28163:366::-;28305:3;28326:67;28390:2;28385:3;28326:67;:::i;:::-;28319:74;;28402:93;28491:3;28402:93;:::i;:::-;28520:2;28515:3;28511:12;28504:19;;28163:366;;;:::o;28535:419::-;28701:4;28739:2;28728:9;28724:18;28716:26;;28788:9;28782:4;28778:20;28774:1;28763:9;28759:17;28752:47;28816:131;28942:4;28816:131;:::i;:::-;28808:139;;28535:419;;;:::o;28960:159::-;29100:11;29096:1;29088:6;29084:14;29077:35;28960:159;:::o;29125:365::-;29267:3;29288:66;29352:1;29347:3;29288:66;:::i;:::-;29281:73;;29363:93;29452:3;29363:93;:::i;:::-;29481:2;29476:3;29472:12;29465:19;;29125:365;;;:::o;29496:419::-;29662:4;29700:2;29689:9;29685:18;29677:26;;29749:9;29743:4;29739:20;29735:1;29724:9;29720:17;29713:47;29777:131;29903:4;29777:131;:::i;:::-;29769:139;;29496:419;;;:::o;29921:143::-;29978:5;30009:6;30003:13;29994:22;;30025:33;30052:5;30025:33;:::i;:::-;29921:143;;;;:::o;30070:351::-;30140:6;30189:2;30177:9;30168:7;30164:23;30160:32;30157:119;;;30195:79;;:::i;:::-;30157:119;30315:1;30340:64;30396:7;30387:6;30376:9;30372:22;30340:64;:::i;:::-;30330:74;;30286:128;30070:351;;;;:::o;30427:332::-;30548:4;30586:2;30575:9;30571:18;30563:26;;30599:71;30667:1;30656:9;30652:17;30643:6;30599:71;:::i;:::-;30680:72;30748:2;30737:9;30733:18;30724:6;30680:72;:::i;:::-;30427:332;;;;;:::o;30765:171::-;30905:23;30901:1;30893:6;30889:14;30882:47;30765:171;:::o;30942:366::-;31084:3;31105:67;31169:2;31164:3;31105:67;:::i;:::-;31098:74;;31181:93;31270:3;31181:93;:::i;:::-;31299:2;31294:3;31290:12;31283:19;;30942:366;;;:::o;31314:419::-;31480:4;31518:2;31507:9;31503:18;31495:26;;31567:9;31561:4;31557:20;31553:1;31542:9;31538:17;31531:47;31595:131;31721:4;31595:131;:::i;:::-;31587:139;;31314:419;;;:::o;31739:162::-;31879:14;31875:1;31867:6;31863:14;31856:38;31739:162;:::o;31907:366::-;32049:3;32070:67;32134:2;32129:3;32070:67;:::i;:::-;32063:74;;32146:93;32235:3;32146:93;:::i;:::-;32264:2;32259:3;32255:12;32248:19;;31907:366;;;:::o;32279:419::-;32445:4;32483:2;32472:9;32468:18;32460:26;;32532:9;32526:4;32522:20;32518:1;32507:9;32503:17;32496:47;32560:131;32686:4;32560:131;:::i;:::-;32552:139;;32279:419;;;:::o;32704:316::-;32817:4;32855:2;32844:9;32840:18;32832:26;;32868:67;32932:1;32921:9;32917:17;32908:6;32868:67;:::i;:::-;32945:68;33009:2;32998:9;32994:18;32985:6;32945:68;:::i;:::-;32704:316;;;;;:::o;33026:223::-;33166:34;33162:1;33154:6;33150:14;33143:58;33235:6;33230:2;33222:6;33218:15;33211:31;33026:223;:::o;33255:366::-;33397:3;33418:67;33482:2;33477:3;33418:67;:::i;:::-;33411:74;;33494:93;33583:3;33494:93;:::i;:::-;33612:2;33607:3;33603:12;33596:19;;33255:366;;;:::o;33627:419::-;33793:4;33831:2;33820:9;33816:18;33808:26;;33880:9;33874:4;33870:20;33866:1;33855:9;33851:17;33844:47;33908:131;34034:4;33908:131;:::i;:::-;33900:139;;33627:419;;;:::o;34052:179::-;34192:31;34188:1;34180:6;34176:14;34169:55;34052:179;:::o;34237:366::-;34379:3;34400:67;34464:2;34459:3;34400:67;:::i;:::-;34393:74;;34476:93;34565:3;34476:93;:::i;:::-;34594:2;34589:3;34585:12;34578:19;;34237:366;;;:::o;34609:419::-;34775:4;34813:2;34802:9;34798:18;34790:26;;34862:9;34856:4;34852:20;34848:1;34837:9;34833:17;34826:47;34890:131;35016:4;34890:131;:::i;:::-;34882:139;;34609:419;;;:::o;35034:159::-;35174:11;35170:1;35162:6;35158:14;35151:35;35034:159;:::o;35199:365::-;35341:3;35362:66;35426:1;35421:3;35362:66;:::i;:::-;35355:73;;35437:93;35526:3;35437:93;:::i;:::-;35555:2;35550:3;35546:12;35539:19;;35199:365;;;:::o;35570:419::-;35736:4;35774:2;35763:9;35759:18;35751:26;;35823:9;35817:4;35813:20;35809:1;35798:9;35794:17;35787:47;35851:131;35977:4;35851:131;:::i;:::-;35843:139;;35570:419;;;:::o;35995:60::-;36023:3;36044:5;36037:12;;35995:60;;;:::o;36061:142::-;36111:9;36144:53;36162:34;36171:24;36189:5;36171:24;:::i;:::-;36162:34;:::i;:::-;36144:53;:::i;:::-;36131:66;;36061:142;;;:::o;36209:126::-;36259:9;36292:37;36323:5;36292:37;:::i;:::-;36279:50;;36209:126;;;:::o;36341:134::-;36399:9;36432:37;36463:5;36432:37;:::i;:::-;36419:50;;36341:134;;;:::o;36481:147::-;36576:45;36615:5;36576:45;:::i;:::-;36571:3;36564:58;36481:147;;:::o;36634:238::-;36735:4;36773:2;36762:9;36758:18;36750:26;;36786:79;36862:1;36851:9;36847:17;36838:6;36786:79;:::i;:::-;36634:238;;;;:::o;36878:182::-;37018:34;37014:1;37006:6;37002:14;36995:58;36878:182;:::o;37066:366::-;37208:3;37229:67;37293:2;37288:3;37229:67;:::i;:::-;37222:74;;37305:93;37394:3;37305:93;:::i;:::-;37423:2;37418:3;37414:12;37407:19;;37066:366;;;:::o;37438:419::-;37604:4;37642:2;37631:9;37627:18;37619:26;;37691:9;37685:4;37681:20;37677:1;37666:9;37662:17;37655:47;37719:131;37845:4;37719:131;:::i;:::-;37711:139;;37438:419;;;:::o;37863:85::-;37908:7;37937:5;37926:16;;37863:85;;;:::o;37954:158::-;38012:9;38045:61;38063:42;38072:32;38098:5;38072:32;:::i;:::-;38063:42;:::i;:::-;38045:61;:::i;:::-;38032:74;;37954:158;;;:::o;38118:147::-;38213:45;38252:5;38213:45;:::i;:::-;38208:3;38201:58;38118:147;;:::o;38271:807::-;38520:4;38558:3;38547:9;38543:19;38535:27;;38572:71;38640:1;38629:9;38625:17;38616:6;38572:71;:::i;:::-;38653:72;38721:2;38710:9;38706:18;38697:6;38653:72;:::i;:::-;38735:80;38811:2;38800:9;38796:18;38787:6;38735:80;:::i;:::-;38825;38901:2;38890:9;38886:18;38877:6;38825:80;:::i;:::-;38915:73;38983:3;38972:9;38968:19;38959:6;38915:73;:::i;:::-;38998;39066:3;39055:9;39051:19;39042:6;38998:73;:::i;:::-;38271:807;;;;;;;;;:::o;39084:143::-;39141:5;39172:6;39166:13;39157:22;;39188:33;39215:5;39188:33;:::i;:::-;39084:143;;;;:::o;39233:663::-;39321:6;39329;39337;39386:2;39374:9;39365:7;39361:23;39357:32;39354:119;;;39392:79;;:::i;:::-;39354:119;39512:1;39537:64;39593:7;39584:6;39573:9;39569:22;39537:64;:::i;:::-;39527:74;;39483:128;39650:2;39676:64;39732:7;39723:6;39712:9;39708:22;39676:64;:::i;:::-;39666:74;;39621:129;39789:2;39815:64;39871:7;39862:6;39851:9;39847:22;39815:64;:::i;:::-;39805:74;;39760:129;39233:663;;;;;:::o;39902:180::-;39950:77;39947:1;39940:88;40047:4;40044:1;40037:15;40071:4;40068:1;40061:15;40088:114;40155:6;40189:5;40183:12;40173:22;;40088:114;;;:::o;40208:184::-;40307:11;40341:6;40336:3;40329:19;40381:4;40376:3;40372:14;40357:29;;40208:184;;;;:::o;40398:132::-;40465:4;40488:3;40480:11;;40518:4;40513:3;40509:14;40501:22;;40398:132;;;:::o;40536:108::-;40613:24;40631:5;40613:24;:::i;:::-;40608:3;40601:37;40536:108;;:::o;40650:179::-;40719:10;40740:46;40782:3;40774:6;40740:46;:::i;:::-;40818:4;40813:3;40809:14;40795:28;;40650:179;;;;:::o;40835:113::-;40905:4;40937;40932:3;40928:14;40920:22;;40835:113;;;:::o;40984:732::-;41103:3;41132:54;41180:5;41132:54;:::i;:::-;41202:86;41281:6;41276:3;41202:86;:::i;:::-;41195:93;;41312:56;41362:5;41312:56;:::i;:::-;41391:7;41422:1;41407:284;41432:6;41429:1;41426:13;41407:284;;;41508:6;41502:13;41535:63;41594:3;41579:13;41535:63;:::i;:::-;41528:70;;41621:60;41674:6;41621:60;:::i;:::-;41611:70;;41467:224;41454:1;41451;41447:9;41442:14;;41407:284;;;41411:14;41707:3;41700:10;;41108:608;;;40984:732;;;;:::o;41722:831::-;41985:4;42023:3;42012:9;42008:19;42000:27;;42037:71;42105:1;42094:9;42090:17;42081:6;42037:71;:::i;:::-;42118:80;42194:2;42183:9;42179:18;42170:6;42118:80;:::i;:::-;42245:9;42239:4;42235:20;42230:2;42219:9;42215:18;42208:48;42273:108;42376:4;42367:6;42273:108;:::i;:::-;42265:116;;42391:72;42459:2;42448:9;42444:18;42435:6;42391:72;:::i;:::-;42473:73;42541:3;42530:9;42526:19;42517:6;42473:73;:::i;:::-;41722:831;;;;;;;;:::o;42559:167::-;42699:19;42695:1;42687:6;42683:14;42676:43;42559:167;:::o;42732:366::-;42874:3;42895:67;42959:2;42954:3;42895:67;:::i;:::-;42888:74;;42971:93;43060:3;42971:93;:::i;:::-;43089:2;43084:3;43080:12;43073:19;;42732:366;;;:::o;43104:419::-;43270:4;43308:2;43297:9;43293:18;43285:26;;43357:9;43351:4;43347:20;43343:1;43332:9;43328:17;43321:47;43385:131;43511:4;43385:131;:::i;:::-;43377:139;;43104:419;;;:::o
Swarm Source
ipfs://1e41e75646c7a3fa765195de466d513cefa2db2d318173cc0239c0fe4b640052
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.