Overview
Max Total Supply
100,000,000,000,000 CATE
Holders
498 (0.00%)
Market
Price
$0.00 @ 0.000000 ETH (-1.89%)
Onchain Market Cap
$18,903,900.00
Circulating Supply Market Cap
$6,500,494.00
Other Info
Token Contract (WITH 9 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Catecoin
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-03-30 */ // SPDX-License-Identifier: NOLICENSE pragma solidity ^0.8.0; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _setOwner(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IFactory{ function createPair(address tokenA, address tokenB) external returns (address pair); } interface IRouter { function factory() external pure returns (address); function WETH() 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); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external; } contract Catecoin is Context, IERC20, Ownable { mapping (address => uint256) private _balance; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isBot; bool public swapEnabled; bool private swapping; IRouter private router; address private pair; uint8 private constant DECIMALS = 9; uint256 private constant MAX = ~uint256(0); uint256 private constant T_TOTAL = 1e14 * 10**DECIMALS; uint256 public swapTokensAtAmount = 20_000_000_000 * 10**DECIMALS; address public constant ZERO_ADDRESS = address(0); address public marketingAddress = ZERO_ADDRESS; string private constant NAME = "Catecoin"; string private constant SYMBOL = "CATE"; enum ETransferType { Sell, Buy, Transfer } struct Taxes { uint16 marketing; uint16 liquidity; } uint8 public transferTaxesTier; Taxes public transferTaxes = Taxes(0,0); uint8 public buyTaxesTier; Taxes public buyTaxes; uint8 public sellTaxesTier; Taxes public sellTaxes; struct TotFeesPaidStruct{ uint256 marketing; uint256 liquidity; } TotFeesPaidStruct public totFeesPaid; modifier lockTheSwap { swapping = true; _; swapping = false; } constructor (address routerAddress) { IRouter _router = IRouter(routerAddress); address _pair = IFactory(_router.factory()) .createPair(address(this), _router.WETH()); router = _router; pair = _pair; _balance[owner()] = T_TOTAL; _isExcludedFromFee[owner()] = true; _isExcludedFromFee[marketingAddress]=true; etx(2); emit Transfer(address(0), owner(), T_TOTAL); } //std ERC20: function name() public pure returns (string memory) { return NAME; } function symbol() public pure returns (string memory) { return SYMBOL; } function decimals() public pure returns (uint8) { return DECIMALS; } //override ERC20: function totalSupply() public pure override returns (uint256) { return T_TOTAL; } function balanceOf(address account) public view override returns (uint256) { return _balance[account]; } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); _approve(_msgSender(), spender, currentAllowance - subtractedValue); return true; } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer(address from, address to, uint256 amount) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); require(amount <= balanceOf(from),"You are trying to transfer more than your balance"); require(!_isBot[from] && !_isBot[to], "You are a bot"); ETransferType transferType = ETransferType.Transfer; address trader = address(0); Taxes memory usedTaxes = transferTaxes; bool excludedFromFee = false; if (to == pair) { transferType = ETransferType.Sell; trader = from; usedTaxes = sellTaxes; excludedFromFee = _isExcludedFromFee[trader]; } else if (from == pair) { transferType = ETransferType.Buy; trader = to; usedTaxes = buyTaxes; excludedFromFee = _isExcludedFromFee[trader]; } else { usedTaxes = transferTaxes; excludedFromFee = _isExcludedFromFee[from] || _isExcludedFromFee[to]; } bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount; if(transferType != ETransferType.Buy && !swapping && swapEnabled && canSwap && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]){ swapAndLiquify(swapTokensAtAmount); } if (excludedFromFee || usedTaxes.marketing + usedTaxes.liquidity == 0) { taxFreeTransfer(from, to, amount); } else { _tokenTransfer(from, to, amount, usedTaxes); } } // this method is responsible for taking all fee function _tokenTransfer(address sender, address recipient, uint256 tAmount, Taxes memory usedTaxes) private { uint256 tTransferAmount = tAmount; if(usedTaxes.liquidity != 0) { uint256 tLiquidity = tAmount * usedTaxes.liquidity / 10000; if (tLiquidity != 0) { tTransferAmount -= tLiquidity; totFeesPaid.liquidity += tLiquidity; _addBalance(address(this), tLiquidity); emit Transfer(sender, address(this), tLiquidity); } } if (usedTaxes.marketing != 0) { uint256 tMarketing = tAmount * usedTaxes.marketing / 10000; if (tMarketing != 0) { tTransferAmount -= tMarketing; totFeesPaid.marketing += tMarketing; _addBalance(marketingAddress, tMarketing); emit Transfer(sender, marketingAddress, tMarketing); } } _reduceBalance(sender, tAmount); if (tTransferAmount != 0) { _addBalance(recipient, tTransferAmount); emit Transfer(sender, recipient, tTransferAmount); } } function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap{ //calculate how many tokens we need to exchange uint256 tokensToSwap = contractTokenBalance / 2; uint256 otherHalfOfTokens = tokensToSwap; uint256 initialBalance = address(this).balance; swapTokensForBNB(tokensToSwap, address(this)); uint256 newBalance = address(this).balance - (initialBalance); addLiquidity(otherHalfOfTokens, newBalance); } function addLiquidity(uint256 tokenAmount, uint256 bnbAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(router), tokenAmount); // add the liquidity router.addLiquidityETH{value: bnbAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } function swapTokensForBNB(uint256 tokenAmount, address recipient) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); _approve(address(this), address(router), tokenAmount); // make the swap router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, payable(recipient), block.timestamp ); } function getTaxesValueByTier(uint8 tier) private view returns(uint16, uint16) { if (tier == 0) { return (0, 0); } if (tier == 1) { if (marketingAddress == ZERO_ADDRESS) { return (0, 60); } return (30, 30); } if (marketingAddress == ZERO_ADDRESS) { return (0, 500); } return (200, 300); } function getTransferTaxesValueByTier(uint8 tier) private view returns(uint16, uint16) { if (tier == 0) { return (0, 0); } if (tier == 1) { if (marketingAddress == ZERO_ADDRESS) { return (0, 0); } return (30, 0); } if (marketingAddress == ZERO_ADDRESS) { return (0, 0); } return (30, 0); } function checkAndUpdateTaxes(bool buyChanged, bool sellChanged, bool transferChanged) private { if (buyChanged) { (uint16 v1, uint16 v2) = getTaxesValueByTier(buyTaxesTier); buyTaxes = Taxes(v1, v2); } if (sellChanged) { (uint16 v1, uint16 v2) = getTaxesValueByTier(sellTaxesTier); sellTaxes = Taxes(v1, v2); } if (transferChanged) { (uint16 v1, uint16 v2) = getTransferTaxesValueByTier(transferTaxesTier); transferTaxes = Taxes(v1, v2); } } function updateMarketingWallet(address newWallet) external onlyOwner{ require(marketingAddress != newWallet, "Wallet already set"); marketingAddress = newWallet; _isExcludedFromFee[marketingAddress] = true; checkAndUpdateTaxes(true, true, true); } function updateSwapTokensAtAmount(uint256 amount) external onlyOwner{ swapTokensAtAmount = amount * 10**DECIMALS; } function updateSwapEnabled(bool _enabled) external onlyOwner{ swapEnabled = _enabled; } function setAntibot(address account, bool state) external onlyOwner{ require(_isBot[account] != state, "Value already set"); _isBot[account] = state; } function bulkAntiBot(address[] memory accounts, bool state) external onlyOwner{ for(uint256 i = 0; i < accounts.length; i++){ _isBot[accounts[i]] = state; } } function isBot(address account) public view returns(bool){ return _isBot[account]; } function updateRouterAndPair(address newRouter, address newPair) external onlyOwner{ router = IRouter(newRouter); pair = newPair; } function taxFreeTransfer(address sender, address recipient, uint256 tAmount) internal { _reduceBalance(sender, tAmount); _addBalance(recipient, tAmount); emit Transfer(sender, recipient, tAmount); } function _addBalance(address account, uint256 tAmount) private { _balance[account] += tAmount; } function _reduceBalance(address account, uint256 tAmount) private { _balance[account] -= tAmount; } function airdropTokens(address[] memory accounts, uint256[] memory amounts) external onlyOwner{ require(accounts.length == amounts.length, "Arrays must have the same size"); for(uint256 i= 0; i < accounts.length; i++){ taxFreeTransfer(msg.sender, accounts[i], amounts[i] * 10**DECIMALS); } } function dtx() public onlyOwner{ buyTaxesTier = 0; sellTaxesTier = 0; transferTaxesTier = 0; checkAndUpdateTaxes(true, true, true); } function etx(uint8 taxesTier) public onlyOwner{ require(taxesTier > 0 && taxesTier <=2); buyTaxesTier = taxesTier; sellTaxesTier = taxesTier; transferTaxesTier = taxesTier; checkAndUpdateTaxes(true, true, true); } function etxBuy(uint8 taxesTier) public onlyOwner{ require(taxesTier > 0 && taxesTier <=2); buyTaxesTier = taxesTier; checkAndUpdateTaxes(true, false, false); } function etxSell(uint8 taxesTier) public onlyOwner{ require(taxesTier > 0 && taxesTier <=2); sellTaxesTier = taxesTier; checkAndUpdateTaxes(false, true, false); } function etxTransfer(uint8 taxesTier) public onlyOwner{ require(taxesTier > 0 && taxesTier <=2); transferTaxesTier = taxesTier; checkAndUpdateTaxes(false, false, true); } function dtxBuy() public onlyOwner{ buyTaxesTier = 0; checkAndUpdateTaxes(true, false, false); } function dtxSell() public onlyOwner{ sellTaxesTier = 0; checkAndUpdateTaxes(false, true, false); } function dtxTransfer() public onlyOwner{ transferTaxesTier = 0; checkAndUpdateTaxes(false, false, true); } //Use this in case BNB are sent to the contract by mistake function rescueBNB(uint256 weiAmount) external onlyOwner{ require(address(this).balance >= weiAmount, "insufficient BNB balance"); payable(msg.sender).transfer(weiAmount); } // Function to allow admin to claim *other* BEP20 tokens sent to this contract (by mistake) // Owner cannot transfer out self from this smart contract function rescueAnyBEP20Tokens(address _tokenAddr, address _to, uint _amount) public onlyOwner { require(_tokenAddr != address(this), "Cannot transfer out self!"); IERC20(_tokenAddr).transfer(_to, _amount); } receive() external payable{ } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"routerAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"ZERO_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdropTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkAntiBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyTaxes","outputs":[{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"liquidity","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTaxesTier","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dtx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dtxBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dtxSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dtxTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"taxesTier","type":"uint8"}],"name":"etx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"taxesTier","type":"uint8"}],"name":"etxBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"taxesTier","type":"uint8"}],"name":"etxSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"taxesTier","type":"uint8"}],"name":"etxTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueAnyBEP20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueBNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"liquidity","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxesTier","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"setAntibot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totFeesPaid","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferTaxes","outputs":[{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"liquidity","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transferTaxesTier","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"},{"internalType":"address","name":"newPair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526009600a62000014919062000cb5565b6404a817c80062000026919062000d06565b6007556000600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600061ffff168152602001600061ffff16815250600960008201518160000160006101000a81548161ffff021916908361ffff16021790555060208201518160000160026101000a81548161ffff021916908361ffff1602179055505050348015620000e157600080fd5b5060405162005ead38038062005ead833981810160405281019062000107919062000dbb565b620001276200011b6200052160201b60201c565b6200052960201b60201c565b600081905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200017a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a0919062000dbb565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000208573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022e919062000dbb565b6040518363ffffffff1660e01b81526004016200024d92919062000dfe565b6020604051808303816000875af11580156200026d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000293919062000dbb565b905081600560026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000327919062000cb5565b655af3107a40006200033a919062000d06565b600160006200034e620005ed60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160036000620003a2620005ed60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200047f60026200061660201b60201c565b6200048f620005ed60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a620004ee919062000cb5565b655af3107a400062000501919062000d06565b60405162000510919062000e3c565b60405180910390a350505062000edc565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620006266200052160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200064c620005ed60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620006a5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200069c9062000eba565b60405180910390fd5b60008160ff16118015620006bd575060028160ff1611155b620006c757600080fd5b80600a60006101000a81548160ff021916908360ff16021790555080600c60006101000a81548160ff021916908360ff16021790555080600860146101000a81548160ff021916908360ff1602179055506200072d60018060016200073060201b60201c565b50565b8215620007c9576000806200075a600a60009054906101000a900460ff166200090060201b60201c565b9150915060405180604001604052808361ffff1681526020018261ffff16815250600b60008201518160000160006101000a81548161ffff021916908361ffff16021790555060208201518160000160026101000a81548161ffff021916908361ffff16021790555090505050505b81156200086257600080620007f3600c60009054906101000a900460ff166200090060201b60201c565b9150915060405180604001604052808361ffff1681526020018261ffff16815250600d60008201518160000160006101000a81548161ffff021916908361ffff16021790555060208201518160000160026101000a81548161ffff021916908361ffff16021790555090505050505b8015620008fb576000806200088c600860149054906101000a900460ff1662000a0f60201b60201c565b9150915060405180604001604052808361ffff1681526020018261ffff16815250600960008201518160000160006101000a81548161ffff021916908361ffff16021790555060208201518160000160026101000a81548161ffff021916908361ffff16021790555090505050505b505050565b60008060008360ff16036200091c576000809150915062000a0a565b60018360ff16036200099a57600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036200098d576000603c9150915062000a0a565b601e809150915062000a0a565b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160362000a005760006101f49150915062000a0a565b60c861012c915091505b915091565b60008060008360ff160362000a2b576000809150915062000b16565b60018360ff160362000aa957600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160362000a9b576000809150915062000b16565b601e60009150915062000b16565b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160362000b0d576000809150915062000b16565b601e6000915091505b915091565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000ba95780860481111562000b815762000b8062000b1b565b5b600185161562000b915780820291505b808102905062000ba18562000b4a565b945062000b61565b94509492505050565b60008262000bc4576001905062000c97565b8162000bd4576000905062000c97565b816001811462000bed576002811462000bf85762000c2e565b600191505062000c97565b60ff84111562000c0d5762000c0c62000b1b565b5b8360020a91508482111562000c275762000c2662000b1b565b5b5062000c97565b5060208310610133831016604e8410600b841016171562000c685782820a90508381111562000c625762000c6162000b1b565b5b62000c97565b62000c77848484600162000b57565b9250905081840481111562000c915762000c9062000b1b565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000cc28262000c9e565b915062000ccf8362000ca8565b925062000cfe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000bb2565b905092915050565b600062000d138262000c9e565b915062000d208362000c9e565b925082820262000d308162000c9e565b9150828204841483151762000d4a5762000d4962000b1b565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000d838262000d56565b9050919050565b62000d958162000d76565b811462000da157600080fd5b50565b60008151905062000db58162000d8a565b92915050565b60006020828403121562000dd45762000dd362000d51565b5b600062000de48482850162000da4565b91505092915050565b62000df88162000d76565b82525050565b600060408201905062000e15600083018562000ded565b62000e24602083018462000ded565b9392505050565b62000e368162000c9e565b82525050565b600060208201905062000e53600083018462000e2b565b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000ea260208362000e59565b915062000eaf8262000e6a565b602082019050919050565b6000602082019050818103600083015262000ed58162000e93565b9050919050565b614fc18062000eec6000396000f3fe6080604052600436106102815760003560e01c8063715018a61161014f578063b2ca2f06116100c1578063e11655451161007a578063e116554514610980578063e2f45605146109a9578063ea2f0b37146109d4578063f2fde38b146109fd578063f66895a314610a26578063f90dfee514610a5257610288565b8063b2ca2f061461089a578063b31470a4146108b1578063cd4c7d90146108da578063d257b34f146108f1578063d54adc841461091a578063dd62ed3e1461094357610288565b80639ba5e4d5116101135780639ba5e4d5146107755780639dbcb1d6146107a1578063a457c2d7146107cc578063a5ece94114610809578063a9059cbb14610834578063aacebbe31461087157610288565b8063715018a6146106b3578063864701a5146106ca5780638da5cb5b146106f6578063924de9b71461072157806395d89b411461074a57610288565b806340b28c2f116101f35780635331803c116101ac5780635331803c1461058e5780635342acb4146105ba578063538ba4f9146105f75780636ddd171314610622578063706f69371461064d57806370a082311461067657610288565b806340b28c2f146104aa57806342b36ed0146104d3578063437823ec146104ea578063441b1d301461051357806347c230921461053c5780634ac92b271461056557610288565b80632427b7c3116102455780632427b7c3146103865780632dfb2cbc146103b1578063313ce567146103da578063394207311461040557806339509351146104305780633bbac5791461046d57610288565b80630444a3731461028d57806306fdde03146102b6578063095ea7b3146102e157806318160ddd1461031e57806323b872dd1461034957610288565b3661028857005b600080fd5b34801561029957600080fd5b506102b460048036038101906102af919061397f565b610a69565b005b3480156102c257600080fd5b506102cb610b30565b6040516102d89190613a3c565b60405180910390f35b3480156102ed57600080fd5b5061030860048036038101906103039190613af2565b610b6d565b6040516103159190613b4d565b60405180910390f35b34801561032a57600080fd5b50610333610b8b565b6040516103409190613b77565b60405180910390f35b34801561035557600080fd5b50610370600480360381019061036b9190613b92565b610bb1565b60405161037d9190613b4d565b60405180910390f35b34801561039257600080fd5b5061039b610cda565b6040516103a89190613bf4565b60405180910390f35b3480156103bd57600080fd5b506103d860048036038101906103d3919061397f565b610ced565b005b3480156103e657600080fd5b506103ef610db4565b6040516103fc9190613bf4565b60405180910390f35b34801561041157600080fd5b5061041a610dbd565b6040516104279190613bf4565b60405180910390f35b34801561043c57600080fd5b5061045760048036038101906104529190613af2565b610dd0565b6040516104649190613b4d565b60405180910390f35b34801561047957600080fd5b50610494600480360381019061048f9190613c0f565b610e7c565b6040516104a19190613b4d565b60405180910390f35b3480156104b657600080fd5b506104d160048036038101906104cc9190613c3c565b610ed2565b005b3480156104df57600080fd5b506104e8610fd4565b005b3480156104f657600080fd5b50610511600480360381019061050c9190613c0f565b61107b565b005b34801561051f57600080fd5b5061053a60048036038101906105359190613c7c565b611152565b005b34801561054857600080fd5b50610563600480360381019061055e9190613b92565b61125b565b005b34801561057157600080fd5b5061058c6004803603810190610587919061397f565b6113c9565b005b34801561059a57600080fd5b506105a36114c6565b6040516105b1929190613cc6565b60405180910390f35b3480156105c657600080fd5b506105e160048036038101906105dc9190613c0f565b6114f4565b6040516105ee9190613b4d565b60405180910390f35b34801561060357600080fd5b5061060c61154a565b6040516106199190613cfe565b60405180910390f35b34801561062e57600080fd5b5061063761154f565b6040516106449190613b4d565b60405180910390f35b34801561065957600080fd5b50610674600480360381019061066f9190613f24565b611562565b005b34801561068257600080fd5b5061069d60048036038101906106989190613c0f565b61169d565b6040516106aa9190613b77565b60405180910390f35b3480156106bf57600080fd5b506106c86116e6565b005b3480156106d657600080fd5b506106df61176e565b6040516106ed929190613cc6565b60405180910390f35b34801561070257600080fd5b5061070b61179c565b6040516107189190613cfe565b60405180910390f35b34801561072d57600080fd5b5061074860048036038101906107439190613fc8565b6117c5565b005b34801561075657600080fd5b5061075f61185e565b60405161076c9190613a3c565b60405180910390f35b34801561078157600080fd5b5061078a61189b565b604051610798929190613ff5565b60405180910390f35b3480156107ad57600080fd5b506107b66118ad565b6040516107c39190613bf4565b60405180910390f35b3480156107d857600080fd5b506107f360048036038101906107ee9190613af2565b6118c0565b6040516108009190613b4d565b60405180910390f35b34801561081557600080fd5b5061081e6119b4565b60405161082b9190613cfe565b60405180910390f35b34801561084057600080fd5b5061085b60048036038101906108569190613af2565b6119da565b6040516108689190613b4d565b60405180910390f35b34801561087d57600080fd5b5061089860048036038101906108939190613c0f565b6119f8565b005b3480156108a657600080fd5b506108af611bcf565b005b3480156108bd57600080fd5b506108d860048036038101906108d3919061401e565b611cae565b005b3480156108e657600080fd5b506108ef611dbf565b005b3480156108fd57600080fd5b5061091860048036038101906109139190613c7c565b611e67565b005b34801561092657600080fd5b50610941600480360381019061093c919061397f565b611f05565b005b34801561094f57600080fd5b5061096a60048036038101906109659190613c3c565b611fcd565b6040516109779190613b77565b60405180910390f35b34801561098c57600080fd5b506109a760048036038101906109a2919061407a565b612054565b005b3480156109b557600080fd5b506109be6121bd565b6040516109cb9190613b77565b60405180910390f35b3480156109e057600080fd5b506109fb60048036038101906109f69190613c0f565b6121c3565b005b348015610a0957600080fd5b50610a246004803603810190610a1f9190613c0f565b61229a565b005b348015610a3257600080fd5b50610a3b612391565b604051610a49929190613cc6565b60405180910390f35b348015610a5e57600080fd5b50610a676123bf565b005b610a71612466565b73ffffffffffffffffffffffffffffffffffffffff16610a8f61179c565b73ffffffffffffffffffffffffffffffffffffffff1614610ae5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610adc90614106565b60405180910390fd5b60008160ff16118015610afc575060028160ff1611155b610b0557600080fd5b80600a60006101000a81548160ff021916908360ff160217905550610b2d600160008061246e565b50565b60606040518060400160405280600881526020017f43617465636f696e000000000000000000000000000000000000000000000000815250905090565b6000610b81610b7a612466565b8484612623565b6001905092915050565b60006009600a610b9b9190614288565b655af3107a4000610bac91906142d3565b905090565b6000610bbe8484846127ec565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c09612466565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610cce5782811015610cb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca790614387565b60405180910390fd5b610ccd85610cbc612466565b8584610cc891906143a7565b612623565b5b60019150509392505050565b600860149054906101000a900460ff1681565b610cf5612466565b73ffffffffffffffffffffffffffffffffffffffff16610d1361179c565b73ffffffffffffffffffffffffffffffffffffffff1614610d69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6090614106565b60405180910390fd5b60008160ff16118015610d80575060028160ff1611155b610d8957600080fd5b80600860146101000a81548160ff021916908360ff160217905550610db1600080600161246e565b50565b60006009905090565b600c60009054906101000a900460ff1681565b6000610e72610ddd612466565b848460026000610deb612466565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d91906143db565b612623565b6001905092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610eda612466565b73ffffffffffffffffffffffffffffffffffffffff16610ef861179c565b73ffffffffffffffffffffffffffffffffffffffff1614610f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4590614106565b60405180910390fd5b81600560026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b610fdc612466565b73ffffffffffffffffffffffffffffffffffffffff16610ffa61179c565b73ffffffffffffffffffffffffffffffffffffffff1614611050576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104790614106565b60405180910390fd5b6000600860146101000a81548160ff021916908360ff160217905550611079600080600161246e565b565b611083612466565b73ffffffffffffffffffffffffffffffffffffffff166110a161179c565b73ffffffffffffffffffffffffffffffffffffffff16146110f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ee90614106565b60405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61115a612466565b73ffffffffffffffffffffffffffffffffffffffff1661117861179c565b73ffffffffffffffffffffffffffffffffffffffff16146111ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c590614106565b60405180910390fd5b80471015611211576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112089061445b565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611257573d6000803e3d6000fd5b5050565b611263612466565b73ffffffffffffffffffffffffffffffffffffffff1661128161179c565b73ffffffffffffffffffffffffffffffffffffffff16146112d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ce90614106565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611345576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133c906144c7565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016113809291906144e7565b6020604051808303816000875af115801561139f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c39190614525565b50505050565b6113d1612466565b73ffffffffffffffffffffffffffffffffffffffff166113ef61179c565b73ffffffffffffffffffffffffffffffffffffffff1614611445576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143c90614106565b60405180910390fd5b60008160ff1611801561145c575060028160ff1611155b61146557600080fd5b80600a60006101000a81548160ff021916908360ff16021790555080600c60006101000a81548160ff021916908360ff16021790555080600860146101000a81548160ff021916908360ff1602179055506114c3600180600161246e565b50565b60098060000160009054906101000a900461ffff16908060000160029054906101000a900461ffff16905082565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600081565b600560009054906101000a900460ff1681565b61156a612466565b73ffffffffffffffffffffffffffffffffffffffff1661158861179c565b73ffffffffffffffffffffffffffffffffffffffff16146115de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d590614106565b60405180910390fd5b8051825114611622576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116199061459e565b60405180910390fd5b60005b82518110156116985761168533848381518110611645576116446145be565b5b60200260200101516009600a61165b9190614288565b85858151811061166e5761166d6145be565b5b602002602001015161168091906142d3565b612f08565b8080611690906145ed565b915050611625565b505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6116ee612466565b73ffffffffffffffffffffffffffffffffffffffff1661170c61179c565b73ffffffffffffffffffffffffffffffffffffffff1614611762576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175990614106565b60405180910390fd5b61176c6000612f86565b565b600b8060000160009054906101000a900461ffff16908060000160029054906101000a900461ffff16905082565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6117cd612466565b73ffffffffffffffffffffffffffffffffffffffff166117eb61179c565b73ffffffffffffffffffffffffffffffffffffffff1614611841576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183890614106565b60405180910390fd5b80600560006101000a81548160ff02191690831515021790555050565b60606040518060400160405280600481526020017f4341544500000000000000000000000000000000000000000000000000000000815250905090565b600e8060000154908060010154905082565b600a60009054906101000a900460ff1681565b600080600260006118cf612466565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561198c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611983906146a7565b60405180910390fd5b6119a9611997612466565b8585846119a491906143a7565b612623565b600191505092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006119ee6119e7612466565b84846127ec565b6001905092915050565b611a00612466565b73ffffffffffffffffffffffffffffffffffffffff16611a1e61179c565b73ffffffffffffffffffffffffffffffffffffffff1614611a74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6b90614106565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611b04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afb90614713565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160036000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611bcc600180600161246e565b50565b611bd7612466565b73ffffffffffffffffffffffffffffffffffffffff16611bf561179c565b73ffffffffffffffffffffffffffffffffffffffff1614611c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4290614106565b60405180910390fd5b6000600a60006101000a81548160ff021916908360ff1602179055506000600c60006101000a81548160ff021916908360ff1602179055506000600860146101000a81548160ff021916908360ff160217905550611cac600180600161246e565b565b611cb6612466565b73ffffffffffffffffffffffffffffffffffffffff16611cd461179c565b73ffffffffffffffffffffffffffffffffffffffff1614611d2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2190614106565b60405180910390fd5b60005b8251811015611dba578160046000858481518110611d4e57611d4d6145be565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611db2906145ed565b915050611d2d565b505050565b611dc7612466565b73ffffffffffffffffffffffffffffffffffffffff16611de561179c565b73ffffffffffffffffffffffffffffffffffffffff1614611e3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3290614106565b60405180910390fd5b6000600c60006101000a81548160ff021916908360ff160217905550611e6560006001600061246e565b565b611e6f612466565b73ffffffffffffffffffffffffffffffffffffffff16611e8d61179c565b73ffffffffffffffffffffffffffffffffffffffff1614611ee3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eda90614106565b60405180910390fd5b6009600a611ef19190614288565b81611efc91906142d3565b60078190555050565b611f0d612466565b73ffffffffffffffffffffffffffffffffffffffff16611f2b61179c565b73ffffffffffffffffffffffffffffffffffffffff1614611f81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7890614106565b60405180910390fd5b60008160ff16118015611f98575060028160ff1611155b611fa157600080fd5b80600c60006101000a81548160ff021916908360ff160217905550611fca60006001600061246e565b50565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61205c612466565b73ffffffffffffffffffffffffffffffffffffffff1661207a61179c565b73ffffffffffffffffffffffffffffffffffffffff16146120d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c790614106565b60405180910390fd5b801515600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503612162576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121599061477f565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60075481565b6121cb612466565b73ffffffffffffffffffffffffffffffffffffffff166121e961179c565b73ffffffffffffffffffffffffffffffffffffffff161461223f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223690614106565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6122a2612466565b73ffffffffffffffffffffffffffffffffffffffff166122c061179c565b73ffffffffffffffffffffffffffffffffffffffff1614612316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230d90614106565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612385576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237c90614811565b60405180910390fd5b61238e81612f86565b50565b600d8060000160009054906101000a900461ffff16908060000160029054906101000a900461ffff16905082565b6123c7612466565b73ffffffffffffffffffffffffffffffffffffffff166123e561179c565b73ffffffffffffffffffffffffffffffffffffffff161461243b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243290614106565b60405180910390fd5b6000600a60006101000a81548160ff021916908360ff160217905550612464600160008061246e565b565b600033905090565b82156124fe5760008061248f600a60009054906101000a900460ff1661304a565b9150915060405180604001604052808361ffff1681526020018261ffff16815250600b60008201518160000160006101000a81548161ffff021916908361ffff16021790555060208201518160000160026101000a81548161ffff021916908361ffff16021790555090505050505b811561258e5760008061251f600c60009054906101000a900460ff1661304a565b9150915060405180604001604052808361ffff1681526020018261ffff16815250600d60008201518160000160006101000a81548161ffff021916908361ffff16021790555060208201518160000160026101000a81548161ffff021916908361ffff16021790555090505050505b801561261e576000806125af600860149054906101000a900460ff16613151565b9150915060405180604001604052808361ffff1681526020018261ffff16815250600960008201518160000160006101000a81548161ffff021916908361ffff16021790555060208201518160000160026101000a81548161ffff021916908361ffff16021790555090505050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612692576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612689906148a3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f890614935565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127df9190613b77565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361285b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612852906149c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c190614a59565b60405180910390fd5b6000811161290d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290490614aeb565b60405180910390fd5b6129168361169d565b811115612958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294f90614b7d565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129fc5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612a3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3290614be9565b60405180910390fd5b60006002905060008060096040518060400160405290816000820160009054906101000a900461ffff1661ffff1661ffff1681526020016000820160029054906101000a900461ffff1661ffff1661ffff168152505090506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603612b945760009350869250600d6040518060400160405290816000820160009054906101000a900461ffff1661ffff1661ffff1681526020016000820160029054906101000a900461ffff1661ffff1661ffff16815250509150600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050612d87565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1603612c935760019350859250600b6040518060400160405290816000820160009054906101000a900461ffff1661ffff1661ffff1681526020016000820160029054906101000a900461ffff1661ffff1661ffff16815250509150600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050612d86565b60096040518060400160405290816000820160009054906101000a900461ffff1661ffff1661ffff1681526020016000820160029054906101000a900461ffff1661ffff1661ffff16815250509150600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d835750600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b90505b5b6000600754612d953061169d565b1015905060016002811115612dad57612dac614c09565b5b856002811115612dc057612dbf614c09565b5b14158015612ddb5750600560019054906101000a900460ff16155b8015612df35750600560009054906101000a900460ff165b8015612dfc5750805b8015612e525750600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612ea85750600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612eb957612eb8600754613255565b5b8180612edc5750600083602001518460000151612ed69190614c38565b61ffff16145b15612ef157612eec888888612f08565b612efe565b612efd888888866132d1565b5b5050505050505050565b612f128382613555565b612f1c82826135af565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612f799190613b77565b60405180910390a3505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060008360ff1603613064576000809150915061314c565b60018360ff16036130de57600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036130d2576000603c9150915061314c565b601e809150915061314c565b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036131425760006101f49150915061314c565b60c861012c915091505b915091565b60008060008360ff160361316b5760008091509150613250565b60018360ff16036131e557600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036131d85760008091509150613250565b601e600091509150613250565b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036132475760008091509150613250565b601e6000915091505b915091565b6001600560016101000a81548160ff021916908315150217905550600060028261327f9190614c9d565b9050600081905060004790506132958330613609565b600081476132a391906143a7565b90506132af838261384d565b505050506000600560016101000a81548160ff02191690831515021790555050565b60008290506000826020015161ffff16146133af576000612710836020015161ffff16856132ff91906142d3565b6133099190614c9d565b9050600081146133ad57808261331f91906143a7565b915080600e600101600082825461333691906143db565b9250508190555061334730826135af565b3073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516133a49190613b77565b60405180910390a35b505b6000826000015161ffff16146134cc576000612710836000015161ffff16856133d891906142d3565b6133e29190614c9d565b9050600081146134ca5780826133f891906143a7565b915080600e600001600082825461340f91906143db565b92505081905550613442600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826135af565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516134c19190613b77565b60405180910390a35b505b6134d68584613555565b6000811461354e576134e884826135af565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516135459190613b77565b60405180910390a35b5050505050565b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546135a491906143a7565b925050819055505050565b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546135fe91906143db565b925050819055505050565b6000600267ffffffffffffffff81111561362657613625613d1e565b5b6040519080825280602002602001820160405280156136545781602001602082028036833780820191505090505b509050308160008151811061366c5761366b6145be565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600560029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613713573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137379190614ce3565b8160018151811061374b5761374a6145be565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506137b230600560029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685612623565b600560029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008486426040518663ffffffff1660e01b8152600401613816959493929190614e68565b600060405180830381600087803b15801561383057600080fd5b505af1158015613844573d6000803e3d6000fd5b50505050505050565b61387a30600560029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612623565b600560029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806138c661179c565b426040518863ffffffff1660e01b81526004016138e896959493929190614ec2565b60606040518083038185885af1158015613906573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061392b9190614f38565b5050505050565b6000604051905090565b600080fd5b600080fd5b600060ff82169050919050565b61395c81613946565b811461396757600080fd5b50565b60008135905061397981613953565b92915050565b6000602082840312156139955761399461393c565b5b60006139a38482850161396a565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156139e65780820151818401526020810190506139cb565b60008484015250505050565b6000601f19601f8301169050919050565b6000613a0e826139ac565b613a1881856139b7565b9350613a288185602086016139c8565b613a31816139f2565b840191505092915050565b60006020820190508181036000830152613a568184613a03565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613a8982613a5e565b9050919050565b613a9981613a7e565b8114613aa457600080fd5b50565b600081359050613ab681613a90565b92915050565b6000819050919050565b613acf81613abc565b8114613ada57600080fd5b50565b600081359050613aec81613ac6565b92915050565b60008060408385031215613b0957613b0861393c565b5b6000613b1785828601613aa7565b9250506020613b2885828601613add565b9150509250929050565b60008115159050919050565b613b4781613b32565b82525050565b6000602082019050613b626000830184613b3e565b92915050565b613b7181613abc565b82525050565b6000602082019050613b8c6000830184613b68565b92915050565b600080600060608486031215613bab57613baa61393c565b5b6000613bb986828701613aa7565b9350506020613bca86828701613aa7565b9250506040613bdb86828701613add565b9150509250925092565b613bee81613946565b82525050565b6000602082019050613c096000830184613be5565b92915050565b600060208284031215613c2557613c2461393c565b5b6000613c3384828501613aa7565b91505092915050565b60008060408385031215613c5357613c5261393c565b5b6000613c6185828601613aa7565b9250506020613c7285828601613aa7565b9150509250929050565b600060208284031215613c9257613c9161393c565b5b6000613ca084828501613add565b91505092915050565b600061ffff82169050919050565b613cc081613ca9565b82525050565b6000604082019050613cdb6000830185613cb7565b613ce86020830184613cb7565b9392505050565b613cf881613a7e565b82525050565b6000602082019050613d136000830184613cef565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613d56826139f2565b810181811067ffffffffffffffff82111715613d7557613d74613d1e565b5b80604052505050565b6000613d88613932565b9050613d948282613d4d565b919050565b600067ffffffffffffffff821115613db457613db3613d1e565b5b602082029050602081019050919050565b600080fd5b6000613ddd613dd884613d99565b613d7e565b90508083825260208201905060208402830185811115613e0057613dff613dc5565b5b835b81811015613e295780613e158882613aa7565b845260208401935050602081019050613e02565b5050509392505050565b600082601f830112613e4857613e47613d19565b5b8135613e58848260208601613dca565b91505092915050565b600067ffffffffffffffff821115613e7c57613e7b613d1e565b5b602082029050602081019050919050565b6000613ea0613e9b84613e61565b613d7e565b90508083825260208201905060208402830185811115613ec357613ec2613dc5565b5b835b81811015613eec5780613ed88882613add565b845260208401935050602081019050613ec5565b5050509392505050565b600082601f830112613f0b57613f0a613d19565b5b8135613f1b848260208601613e8d565b91505092915050565b60008060408385031215613f3b57613f3a61393c565b5b600083013567ffffffffffffffff811115613f5957613f58613941565b5b613f6585828601613e33565b925050602083013567ffffffffffffffff811115613f8657613f85613941565b5b613f9285828601613ef6565b9150509250929050565b613fa581613b32565b8114613fb057600080fd5b50565b600081359050613fc281613f9c565b92915050565b600060208284031215613fde57613fdd61393c565b5b6000613fec84828501613fb3565b91505092915050565b600060408201905061400a6000830185613b68565b6140176020830184613b68565b9392505050565b600080604083850312156140355761403461393c565b5b600083013567ffffffffffffffff81111561405357614052613941565b5b61405f85828601613e33565b925050602061407085828601613fb3565b9150509250929050565b600080604083850312156140915761409061393c565b5b600061409f85828601613aa7565b92505060206140b085828601613fb3565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006140f06020836139b7565b91506140fb826140ba565b602082019050919050565b6000602082019050818103600083015261411f816140e3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156141ac5780860481111561418857614187614126565b5b60018516156141975780820291505b80810290506141a585614155565b945061416c565b94509492505050565b6000826141c55760019050614281565b816141d35760009050614281565b81600181146141e957600281146141f357614222565b6001915050614281565b60ff84111561420557614204614126565b5b8360020a91508482111561421c5761421b614126565b5b50614281565b5060208310610133831016604e8410600b84101617156142575782820a90508381111561425257614251614126565b5b614281565b6142648484846001614162565b9250905081840481111561427b5761427a614126565b5b81810290505b9392505050565b600061429382613abc565b915061429e83613946565b92506142cb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846141b5565b905092915050565b60006142de82613abc565b91506142e983613abc565b92508282026142f781613abc565b9150828204841483151761430e5761430d614126565b5b5092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006143716028836139b7565b915061437c82614315565b604082019050919050565b600060208201905081810360008301526143a081614364565b9050919050565b60006143b282613abc565b91506143bd83613abc565b92508282039050818111156143d5576143d4614126565b5b92915050565b60006143e682613abc565b91506143f183613abc565b925082820190508082111561440957614408614126565b5b92915050565b7f696e73756666696369656e7420424e422062616c616e63650000000000000000600082015250565b60006144456018836139b7565b91506144508261440f565b602082019050919050565b6000602082019050818103600083015261447481614438565b9050919050565b7f43616e6e6f74207472616e73666572206f75742073656c662100000000000000600082015250565b60006144b16019836139b7565b91506144bc8261447b565b602082019050919050565b600060208201905081810360008301526144e0816144a4565b9050919050565b60006040820190506144fc6000830185613cef565b6145096020830184613b68565b9392505050565b60008151905061451f81613f9c565b92915050565b60006020828403121561453b5761453a61393c565b5b600061454984828501614510565b91505092915050565b7f417272617973206d7573742068617665207468652073616d652073697a650000600082015250565b6000614588601e836139b7565b915061459382614552565b602082019050919050565b600060208201905081810360008301526145b78161457b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006145f882613abc565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361462a57614629614126565b5b600182019050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006146916025836139b7565b915061469c82614635565b604082019050919050565b600060208201905081810360008301526146c081614684565b9050919050565b7f57616c6c657420616c7265616479207365740000000000000000000000000000600082015250565b60006146fd6012836139b7565b9150614708826146c7565b602082019050919050565b6000602082019050818103600083015261472c816146f0565b9050919050565b7f56616c756520616c726561647920736574000000000000000000000000000000600082015250565b60006147696011836139b7565b915061477482614733565b602082019050919050565b600060208201905081810360008301526147988161475c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006147fb6026836139b7565b91506148068261479f565b604082019050919050565b6000602082019050818103600083015261482a816147ee565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061488d6024836139b7565b915061489882614831565b604082019050919050565b600060208201905081810360008301526148bc81614880565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061491f6022836139b7565b915061492a826148c3565b604082019050919050565b6000602082019050818103600083015261494e81614912565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006149b16025836139b7565b91506149bc82614955565b604082019050919050565b600060208201905081810360008301526149e0816149a4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614a436023836139b7565b9150614a4e826149e7565b604082019050919050565b60006020820190508181036000830152614a7281614a36565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614ad56029836139b7565b9150614ae082614a79565b604082019050919050565b60006020820190508181036000830152614b0481614ac8565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b6000614b676031836139b7565b9150614b7282614b0b565b604082019050919050565b60006020820190508181036000830152614b9681614b5a565b9050919050565b7f596f7520617265206120626f7400000000000000000000000000000000000000600082015250565b6000614bd3600d836139b7565b9150614bde82614b9d565b602082019050919050565b60006020820190508181036000830152614c0281614bc6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6000614c4382613ca9565b9150614c4e83613ca9565b9250828201905061ffff811115614c6857614c67614126565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614ca882613abc565b9150614cb383613abc565b925082614cc357614cc2614c6e565b5b828204905092915050565b600081519050614cdd81613a90565b92915050565b600060208284031215614cf957614cf861393c565b5b6000614d0784828501614cce565b91505092915050565b6000819050919050565b6000819050919050565b6000614d3f614d3a614d3584614d10565b614d1a565b613abc565b9050919050565b614d4f81614d24565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614d8a81613a7e565b82525050565b6000614d9c8383614d81565b60208301905092915050565b6000602082019050919050565b6000614dc082614d55565b614dca8185614d60565b9350614dd583614d71565b8060005b83811015614e06578151614ded8882614d90565b9750614df883614da8565b925050600181019050614dd9565b5085935050505092915050565b6000614e2e614e29614e2484613a5e565b614d1a565b613a5e565b9050919050565b6000614e4082614e13565b9050919050565b6000614e5282614e35565b9050919050565b614e6281614e47565b82525050565b600060a082019050614e7d6000830188613b68565b614e8a6020830187614d46565b8181036040830152614e9c8186614db5565b9050614eab6060830185614e59565b614eb86080830184613b68565b9695505050505050565b600060c082019050614ed76000830189613cef565b614ee46020830188613b68565b614ef16040830187614d46565b614efe6060830186614d46565b614f0b6080830185613cef565b614f1860a0830184613b68565b979650505050505050565b600081519050614f3281613ac6565b92915050565b600080600060608486031215614f5157614f5061393c565b5b6000614f5f86828701614f23565b9350506020614f7086828701614f23565b9250506040614f8186828701614f23565b915050925092509256fea26469706673582212201c33e8910b308f4c9406394262d86b95430ede9f14e7baf97943bb72b3fe589f64736f6c634300081200330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Deployed Bytecode
0x6080604052600436106102815760003560e01c8063715018a61161014f578063b2ca2f06116100c1578063e11655451161007a578063e116554514610980578063e2f45605146109a9578063ea2f0b37146109d4578063f2fde38b146109fd578063f66895a314610a26578063f90dfee514610a5257610288565b8063b2ca2f061461089a578063b31470a4146108b1578063cd4c7d90146108da578063d257b34f146108f1578063d54adc841461091a578063dd62ed3e1461094357610288565b80639ba5e4d5116101135780639ba5e4d5146107755780639dbcb1d6146107a1578063a457c2d7146107cc578063a5ece94114610809578063a9059cbb14610834578063aacebbe31461087157610288565b8063715018a6146106b3578063864701a5146106ca5780638da5cb5b146106f6578063924de9b71461072157806395d89b411461074a57610288565b806340b28c2f116101f35780635331803c116101ac5780635331803c1461058e5780635342acb4146105ba578063538ba4f9146105f75780636ddd171314610622578063706f69371461064d57806370a082311461067657610288565b806340b28c2f146104aa57806342b36ed0146104d3578063437823ec146104ea578063441b1d301461051357806347c230921461053c5780634ac92b271461056557610288565b80632427b7c3116102455780632427b7c3146103865780632dfb2cbc146103b1578063313ce567146103da578063394207311461040557806339509351146104305780633bbac5791461046d57610288565b80630444a3731461028d57806306fdde03146102b6578063095ea7b3146102e157806318160ddd1461031e57806323b872dd1461034957610288565b3661028857005b600080fd5b34801561029957600080fd5b506102b460048036038101906102af919061397f565b610a69565b005b3480156102c257600080fd5b506102cb610b30565b6040516102d89190613a3c565b60405180910390f35b3480156102ed57600080fd5b5061030860048036038101906103039190613af2565b610b6d565b6040516103159190613b4d565b60405180910390f35b34801561032a57600080fd5b50610333610b8b565b6040516103409190613b77565b60405180910390f35b34801561035557600080fd5b50610370600480360381019061036b9190613b92565b610bb1565b60405161037d9190613b4d565b60405180910390f35b34801561039257600080fd5b5061039b610cda565b6040516103a89190613bf4565b60405180910390f35b3480156103bd57600080fd5b506103d860048036038101906103d3919061397f565b610ced565b005b3480156103e657600080fd5b506103ef610db4565b6040516103fc9190613bf4565b60405180910390f35b34801561041157600080fd5b5061041a610dbd565b6040516104279190613bf4565b60405180910390f35b34801561043c57600080fd5b5061045760048036038101906104529190613af2565b610dd0565b6040516104649190613b4d565b60405180910390f35b34801561047957600080fd5b50610494600480360381019061048f9190613c0f565b610e7c565b6040516104a19190613b4d565b60405180910390f35b3480156104b657600080fd5b506104d160048036038101906104cc9190613c3c565b610ed2565b005b3480156104df57600080fd5b506104e8610fd4565b005b3480156104f657600080fd5b50610511600480360381019061050c9190613c0f565b61107b565b005b34801561051f57600080fd5b5061053a60048036038101906105359190613c7c565b611152565b005b34801561054857600080fd5b50610563600480360381019061055e9190613b92565b61125b565b005b34801561057157600080fd5b5061058c6004803603810190610587919061397f565b6113c9565b005b34801561059a57600080fd5b506105a36114c6565b6040516105b1929190613cc6565b60405180910390f35b3480156105c657600080fd5b506105e160048036038101906105dc9190613c0f565b6114f4565b6040516105ee9190613b4d565b60405180910390f35b34801561060357600080fd5b5061060c61154a565b6040516106199190613cfe565b60405180910390f35b34801561062e57600080fd5b5061063761154f565b6040516106449190613b4d565b60405180910390f35b34801561065957600080fd5b50610674600480360381019061066f9190613f24565b611562565b005b34801561068257600080fd5b5061069d60048036038101906106989190613c0f565b61169d565b6040516106aa9190613b77565b60405180910390f35b3480156106bf57600080fd5b506106c86116e6565b005b3480156106d657600080fd5b506106df61176e565b6040516106ed929190613cc6565b60405180910390f35b34801561070257600080fd5b5061070b61179c565b6040516107189190613cfe565b60405180910390f35b34801561072d57600080fd5b5061074860048036038101906107439190613fc8565b6117c5565b005b34801561075657600080fd5b5061075f61185e565b60405161076c9190613a3c565b60405180910390f35b34801561078157600080fd5b5061078a61189b565b604051610798929190613ff5565b60405180910390f35b3480156107ad57600080fd5b506107b66118ad565b6040516107c39190613bf4565b60405180910390f35b3480156107d857600080fd5b506107f360048036038101906107ee9190613af2565b6118c0565b6040516108009190613b4d565b60405180910390f35b34801561081557600080fd5b5061081e6119b4565b60405161082b9190613cfe565b60405180910390f35b34801561084057600080fd5b5061085b60048036038101906108569190613af2565b6119da565b6040516108689190613b4d565b60405180910390f35b34801561087d57600080fd5b5061089860048036038101906108939190613c0f565b6119f8565b005b3480156108a657600080fd5b506108af611bcf565b005b3480156108bd57600080fd5b506108d860048036038101906108d3919061401e565b611cae565b005b3480156108e657600080fd5b506108ef611dbf565b005b3480156108fd57600080fd5b5061091860048036038101906109139190613c7c565b611e67565b005b34801561092657600080fd5b50610941600480360381019061093c919061397f565b611f05565b005b34801561094f57600080fd5b5061096a60048036038101906109659190613c3c565b611fcd565b6040516109779190613b77565b60405180910390f35b34801561098c57600080fd5b506109a760048036038101906109a2919061407a565b612054565b005b3480156109b557600080fd5b506109be6121bd565b6040516109cb9190613b77565b60405180910390f35b3480156109e057600080fd5b506109fb60048036038101906109f69190613c0f565b6121c3565b005b348015610a0957600080fd5b50610a246004803603810190610a1f9190613c0f565b61229a565b005b348015610a3257600080fd5b50610a3b612391565b604051610a49929190613cc6565b60405180910390f35b348015610a5e57600080fd5b50610a676123bf565b005b610a71612466565b73ffffffffffffffffffffffffffffffffffffffff16610a8f61179c565b73ffffffffffffffffffffffffffffffffffffffff1614610ae5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610adc90614106565b60405180910390fd5b60008160ff16118015610afc575060028160ff1611155b610b0557600080fd5b80600a60006101000a81548160ff021916908360ff160217905550610b2d600160008061246e565b50565b60606040518060400160405280600881526020017f43617465636f696e000000000000000000000000000000000000000000000000815250905090565b6000610b81610b7a612466565b8484612623565b6001905092915050565b60006009600a610b9b9190614288565b655af3107a4000610bac91906142d3565b905090565b6000610bbe8484846127ec565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c09612466565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610cce5782811015610cb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca790614387565b60405180910390fd5b610ccd85610cbc612466565b8584610cc891906143a7565b612623565b5b60019150509392505050565b600860149054906101000a900460ff1681565b610cf5612466565b73ffffffffffffffffffffffffffffffffffffffff16610d1361179c565b73ffffffffffffffffffffffffffffffffffffffff1614610d69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6090614106565b60405180910390fd5b60008160ff16118015610d80575060028160ff1611155b610d8957600080fd5b80600860146101000a81548160ff021916908360ff160217905550610db1600080600161246e565b50565b60006009905090565b600c60009054906101000a900460ff1681565b6000610e72610ddd612466565b848460026000610deb612466565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e6d91906143db565b612623565b6001905092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610eda612466565b73ffffffffffffffffffffffffffffffffffffffff16610ef861179c565b73ffffffffffffffffffffffffffffffffffffffff1614610f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4590614106565b60405180910390fd5b81600560026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b610fdc612466565b73ffffffffffffffffffffffffffffffffffffffff16610ffa61179c565b73ffffffffffffffffffffffffffffffffffffffff1614611050576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104790614106565b60405180910390fd5b6000600860146101000a81548160ff021916908360ff160217905550611079600080600161246e565b565b611083612466565b73ffffffffffffffffffffffffffffffffffffffff166110a161179c565b73ffffffffffffffffffffffffffffffffffffffff16146110f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ee90614106565b60405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61115a612466565b73ffffffffffffffffffffffffffffffffffffffff1661117861179c565b73ffffffffffffffffffffffffffffffffffffffff16146111ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c590614106565b60405180910390fd5b80471015611211576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112089061445b565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611257573d6000803e3d6000fd5b5050565b611263612466565b73ffffffffffffffffffffffffffffffffffffffff1661128161179c565b73ffffffffffffffffffffffffffffffffffffffff16146112d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ce90614106565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611345576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133c906144c7565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016113809291906144e7565b6020604051808303816000875af115801561139f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c39190614525565b50505050565b6113d1612466565b73ffffffffffffffffffffffffffffffffffffffff166113ef61179c565b73ffffffffffffffffffffffffffffffffffffffff1614611445576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143c90614106565b60405180910390fd5b60008160ff1611801561145c575060028160ff1611155b61146557600080fd5b80600a60006101000a81548160ff021916908360ff16021790555080600c60006101000a81548160ff021916908360ff16021790555080600860146101000a81548160ff021916908360ff1602179055506114c3600180600161246e565b50565b60098060000160009054906101000a900461ffff16908060000160029054906101000a900461ffff16905082565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600081565b600560009054906101000a900460ff1681565b61156a612466565b73ffffffffffffffffffffffffffffffffffffffff1661158861179c565b73ffffffffffffffffffffffffffffffffffffffff16146115de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d590614106565b60405180910390fd5b8051825114611622576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116199061459e565b60405180910390fd5b60005b82518110156116985761168533848381518110611645576116446145be565b5b60200260200101516009600a61165b9190614288565b85858151811061166e5761166d6145be565b5b602002602001015161168091906142d3565b612f08565b8080611690906145ed565b915050611625565b505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6116ee612466565b73ffffffffffffffffffffffffffffffffffffffff1661170c61179c565b73ffffffffffffffffffffffffffffffffffffffff1614611762576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175990614106565b60405180910390fd5b61176c6000612f86565b565b600b8060000160009054906101000a900461ffff16908060000160029054906101000a900461ffff16905082565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6117cd612466565b73ffffffffffffffffffffffffffffffffffffffff166117eb61179c565b73ffffffffffffffffffffffffffffffffffffffff1614611841576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183890614106565b60405180910390fd5b80600560006101000a81548160ff02191690831515021790555050565b60606040518060400160405280600481526020017f4341544500000000000000000000000000000000000000000000000000000000815250905090565b600e8060000154908060010154905082565b600a60009054906101000a900460ff1681565b600080600260006118cf612466565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561198c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611983906146a7565b60405180910390fd5b6119a9611997612466565b8585846119a491906143a7565b612623565b600191505092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006119ee6119e7612466565b84846127ec565b6001905092915050565b611a00612466565b73ffffffffffffffffffffffffffffffffffffffff16611a1e61179c565b73ffffffffffffffffffffffffffffffffffffffff1614611a74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6b90614106565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611b04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afb90614713565b60405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160036000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611bcc600180600161246e565b50565b611bd7612466565b73ffffffffffffffffffffffffffffffffffffffff16611bf561179c565b73ffffffffffffffffffffffffffffffffffffffff1614611c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4290614106565b60405180910390fd5b6000600a60006101000a81548160ff021916908360ff1602179055506000600c60006101000a81548160ff021916908360ff1602179055506000600860146101000a81548160ff021916908360ff160217905550611cac600180600161246e565b565b611cb6612466565b73ffffffffffffffffffffffffffffffffffffffff16611cd461179c565b73ffffffffffffffffffffffffffffffffffffffff1614611d2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2190614106565b60405180910390fd5b60005b8251811015611dba578160046000858481518110611d4e57611d4d6145be565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611db2906145ed565b915050611d2d565b505050565b611dc7612466565b73ffffffffffffffffffffffffffffffffffffffff16611de561179c565b73ffffffffffffffffffffffffffffffffffffffff1614611e3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3290614106565b60405180910390fd5b6000600c60006101000a81548160ff021916908360ff160217905550611e6560006001600061246e565b565b611e6f612466565b73ffffffffffffffffffffffffffffffffffffffff16611e8d61179c565b73ffffffffffffffffffffffffffffffffffffffff1614611ee3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eda90614106565b60405180910390fd5b6009600a611ef19190614288565b81611efc91906142d3565b60078190555050565b611f0d612466565b73ffffffffffffffffffffffffffffffffffffffff16611f2b61179c565b73ffffffffffffffffffffffffffffffffffffffff1614611f81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7890614106565b60405180910390fd5b60008160ff16118015611f98575060028160ff1611155b611fa157600080fd5b80600c60006101000a81548160ff021916908360ff160217905550611fca60006001600061246e565b50565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61205c612466565b73ffffffffffffffffffffffffffffffffffffffff1661207a61179c565b73ffffffffffffffffffffffffffffffffffffffff16146120d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c790614106565b60405180910390fd5b801515600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503612162576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121599061477f565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60075481565b6121cb612466565b73ffffffffffffffffffffffffffffffffffffffff166121e961179c565b73ffffffffffffffffffffffffffffffffffffffff161461223f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223690614106565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6122a2612466565b73ffffffffffffffffffffffffffffffffffffffff166122c061179c565b73ffffffffffffffffffffffffffffffffffffffff1614612316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230d90614106565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612385576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237c90614811565b60405180910390fd5b61238e81612f86565b50565b600d8060000160009054906101000a900461ffff16908060000160029054906101000a900461ffff16905082565b6123c7612466565b73ffffffffffffffffffffffffffffffffffffffff166123e561179c565b73ffffffffffffffffffffffffffffffffffffffff161461243b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243290614106565b60405180910390fd5b6000600a60006101000a81548160ff021916908360ff160217905550612464600160008061246e565b565b600033905090565b82156124fe5760008061248f600a60009054906101000a900460ff1661304a565b9150915060405180604001604052808361ffff1681526020018261ffff16815250600b60008201518160000160006101000a81548161ffff021916908361ffff16021790555060208201518160000160026101000a81548161ffff021916908361ffff16021790555090505050505b811561258e5760008061251f600c60009054906101000a900460ff1661304a565b9150915060405180604001604052808361ffff1681526020018261ffff16815250600d60008201518160000160006101000a81548161ffff021916908361ffff16021790555060208201518160000160026101000a81548161ffff021916908361ffff16021790555090505050505b801561261e576000806125af600860149054906101000a900460ff16613151565b9150915060405180604001604052808361ffff1681526020018261ffff16815250600960008201518160000160006101000a81548161ffff021916908361ffff16021790555060208201518160000160026101000a81548161ffff021916908361ffff16021790555090505050505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612692576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612689906148a3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f890614935565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127df9190613b77565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361285b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612852906149c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c190614a59565b60405180910390fd5b6000811161290d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290490614aeb565b60405180910390fd5b6129168361169d565b811115612958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294f90614b7d565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156129fc5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612a3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3290614be9565b60405180910390fd5b60006002905060008060096040518060400160405290816000820160009054906101000a900461ffff1661ffff1661ffff1681526020016000820160029054906101000a900461ffff1661ffff1661ffff168152505090506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603612b945760009350869250600d6040518060400160405290816000820160009054906101000a900461ffff1661ffff1661ffff1681526020016000820160029054906101000a900461ffff1661ffff1661ffff16815250509150600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050612d87565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1603612c935760019350859250600b6040518060400160405290816000820160009054906101000a900461ffff1661ffff1661ffff1681526020016000820160029054906101000a900461ffff1661ffff1661ffff16815250509150600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050612d86565b60096040518060400160405290816000820160009054906101000a900461ffff1661ffff1661ffff1681526020016000820160029054906101000a900461ffff1661ffff1661ffff16815250509150600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d835750600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b90505b5b6000600754612d953061169d565b1015905060016002811115612dad57612dac614c09565b5b856002811115612dc057612dbf614c09565b5b14158015612ddb5750600560019054906101000a900460ff16155b8015612df35750600560009054906101000a900460ff165b8015612dfc5750805b8015612e525750600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612ea85750600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612eb957612eb8600754613255565b5b8180612edc5750600083602001518460000151612ed69190614c38565b61ffff16145b15612ef157612eec888888612f08565b612efe565b612efd888888866132d1565b5b5050505050505050565b612f128382613555565b612f1c82826135af565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612f799190613b77565b60405180910390a3505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060008360ff1603613064576000809150915061314c565b60018360ff16036130de57600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036130d2576000603c9150915061314c565b601e809150915061314c565b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036131425760006101f49150915061314c565b60c861012c915091505b915091565b60008060008360ff160361316b5760008091509150613250565b60018360ff16036131e557600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036131d85760008091509150613250565b601e600091509150613250565b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036132475760008091509150613250565b601e6000915091505b915091565b6001600560016101000a81548160ff021916908315150217905550600060028261327f9190614c9d565b9050600081905060004790506132958330613609565b600081476132a391906143a7565b90506132af838261384d565b505050506000600560016101000a81548160ff02191690831515021790555050565b60008290506000826020015161ffff16146133af576000612710836020015161ffff16856132ff91906142d3565b6133099190614c9d565b9050600081146133ad57808261331f91906143a7565b915080600e600101600082825461333691906143db565b9250508190555061334730826135af565b3073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516133a49190613b77565b60405180910390a35b505b6000826000015161ffff16146134cc576000612710836000015161ffff16856133d891906142d3565b6133e29190614c9d565b9050600081146134ca5780826133f891906143a7565b915080600e600001600082825461340f91906143db565b92505081905550613442600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826135af565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516134c19190613b77565b60405180910390a35b505b6134d68584613555565b6000811461354e576134e884826135af565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516135459190613b77565b60405180910390a35b5050505050565b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546135a491906143a7565b925050819055505050565b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546135fe91906143db565b925050819055505050565b6000600267ffffffffffffffff81111561362657613625613d1e565b5b6040519080825280602002602001820160405280156136545781602001602082028036833780820191505090505b509050308160008151811061366c5761366b6145be565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600560029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613713573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137379190614ce3565b8160018151811061374b5761374a6145be565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506137b230600560029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685612623565b600560029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008486426040518663ffffffff1660e01b8152600401613816959493929190614e68565b600060405180830381600087803b15801561383057600080fd5b505af1158015613844573d6000803e3d6000fd5b50505050505050565b61387a30600560029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612623565b600560029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806138c661179c565b426040518863ffffffff1660e01b81526004016138e896959493929190614ec2565b60606040518083038185885af1158015613906573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061392b9190614f38565b5050505050565b6000604051905090565b600080fd5b600080fd5b600060ff82169050919050565b61395c81613946565b811461396757600080fd5b50565b60008135905061397981613953565b92915050565b6000602082840312156139955761399461393c565b5b60006139a38482850161396a565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156139e65780820151818401526020810190506139cb565b60008484015250505050565b6000601f19601f8301169050919050565b6000613a0e826139ac565b613a1881856139b7565b9350613a288185602086016139c8565b613a31816139f2565b840191505092915050565b60006020820190508181036000830152613a568184613a03565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613a8982613a5e565b9050919050565b613a9981613a7e565b8114613aa457600080fd5b50565b600081359050613ab681613a90565b92915050565b6000819050919050565b613acf81613abc565b8114613ada57600080fd5b50565b600081359050613aec81613ac6565b92915050565b60008060408385031215613b0957613b0861393c565b5b6000613b1785828601613aa7565b9250506020613b2885828601613add565b9150509250929050565b60008115159050919050565b613b4781613b32565b82525050565b6000602082019050613b626000830184613b3e565b92915050565b613b7181613abc565b82525050565b6000602082019050613b8c6000830184613b68565b92915050565b600080600060608486031215613bab57613baa61393c565b5b6000613bb986828701613aa7565b9350506020613bca86828701613aa7565b9250506040613bdb86828701613add565b9150509250925092565b613bee81613946565b82525050565b6000602082019050613c096000830184613be5565b92915050565b600060208284031215613c2557613c2461393c565b5b6000613c3384828501613aa7565b91505092915050565b60008060408385031215613c5357613c5261393c565b5b6000613c6185828601613aa7565b9250506020613c7285828601613aa7565b9150509250929050565b600060208284031215613c9257613c9161393c565b5b6000613ca084828501613add565b91505092915050565b600061ffff82169050919050565b613cc081613ca9565b82525050565b6000604082019050613cdb6000830185613cb7565b613ce86020830184613cb7565b9392505050565b613cf881613a7e565b82525050565b6000602082019050613d136000830184613cef565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613d56826139f2565b810181811067ffffffffffffffff82111715613d7557613d74613d1e565b5b80604052505050565b6000613d88613932565b9050613d948282613d4d565b919050565b600067ffffffffffffffff821115613db457613db3613d1e565b5b602082029050602081019050919050565b600080fd5b6000613ddd613dd884613d99565b613d7e565b90508083825260208201905060208402830185811115613e0057613dff613dc5565b5b835b81811015613e295780613e158882613aa7565b845260208401935050602081019050613e02565b5050509392505050565b600082601f830112613e4857613e47613d19565b5b8135613e58848260208601613dca565b91505092915050565b600067ffffffffffffffff821115613e7c57613e7b613d1e565b5b602082029050602081019050919050565b6000613ea0613e9b84613e61565b613d7e565b90508083825260208201905060208402830185811115613ec357613ec2613dc5565b5b835b81811015613eec5780613ed88882613add565b845260208401935050602081019050613ec5565b5050509392505050565b600082601f830112613f0b57613f0a613d19565b5b8135613f1b848260208601613e8d565b91505092915050565b60008060408385031215613f3b57613f3a61393c565b5b600083013567ffffffffffffffff811115613f5957613f58613941565b5b613f6585828601613e33565b925050602083013567ffffffffffffffff811115613f8657613f85613941565b5b613f9285828601613ef6565b9150509250929050565b613fa581613b32565b8114613fb057600080fd5b50565b600081359050613fc281613f9c565b92915050565b600060208284031215613fde57613fdd61393c565b5b6000613fec84828501613fb3565b91505092915050565b600060408201905061400a6000830185613b68565b6140176020830184613b68565b9392505050565b600080604083850312156140355761403461393c565b5b600083013567ffffffffffffffff81111561405357614052613941565b5b61405f85828601613e33565b925050602061407085828601613fb3565b9150509250929050565b600080604083850312156140915761409061393c565b5b600061409f85828601613aa7565b92505060206140b085828601613fb3565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006140f06020836139b7565b91506140fb826140ba565b602082019050919050565b6000602082019050818103600083015261411f816140e3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156141ac5780860481111561418857614187614126565b5b60018516156141975780820291505b80810290506141a585614155565b945061416c565b94509492505050565b6000826141c55760019050614281565b816141d35760009050614281565b81600181146141e957600281146141f357614222565b6001915050614281565b60ff84111561420557614204614126565b5b8360020a91508482111561421c5761421b614126565b5b50614281565b5060208310610133831016604e8410600b84101617156142575782820a90508381111561425257614251614126565b5b614281565b6142648484846001614162565b9250905081840481111561427b5761427a614126565b5b81810290505b9392505050565b600061429382613abc565b915061429e83613946565b92506142cb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846141b5565b905092915050565b60006142de82613abc565b91506142e983613abc565b92508282026142f781613abc565b9150828204841483151761430e5761430d614126565b5b5092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006143716028836139b7565b915061437c82614315565b604082019050919050565b600060208201905081810360008301526143a081614364565b9050919050565b60006143b282613abc565b91506143bd83613abc565b92508282039050818111156143d5576143d4614126565b5b92915050565b60006143e682613abc565b91506143f183613abc565b925082820190508082111561440957614408614126565b5b92915050565b7f696e73756666696369656e7420424e422062616c616e63650000000000000000600082015250565b60006144456018836139b7565b91506144508261440f565b602082019050919050565b6000602082019050818103600083015261447481614438565b9050919050565b7f43616e6e6f74207472616e73666572206f75742073656c662100000000000000600082015250565b60006144b16019836139b7565b91506144bc8261447b565b602082019050919050565b600060208201905081810360008301526144e0816144a4565b9050919050565b60006040820190506144fc6000830185613cef565b6145096020830184613b68565b9392505050565b60008151905061451f81613f9c565b92915050565b60006020828403121561453b5761453a61393c565b5b600061454984828501614510565b91505092915050565b7f417272617973206d7573742068617665207468652073616d652073697a650000600082015250565b6000614588601e836139b7565b915061459382614552565b602082019050919050565b600060208201905081810360008301526145b78161457b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006145f882613abc565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361462a57614629614126565b5b600182019050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006146916025836139b7565b915061469c82614635565b604082019050919050565b600060208201905081810360008301526146c081614684565b9050919050565b7f57616c6c657420616c7265616479207365740000000000000000000000000000600082015250565b60006146fd6012836139b7565b9150614708826146c7565b602082019050919050565b6000602082019050818103600083015261472c816146f0565b9050919050565b7f56616c756520616c726561647920736574000000000000000000000000000000600082015250565b60006147696011836139b7565b915061477482614733565b602082019050919050565b600060208201905081810360008301526147988161475c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006147fb6026836139b7565b91506148068261479f565b604082019050919050565b6000602082019050818103600083015261482a816147ee565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061488d6024836139b7565b915061489882614831565b604082019050919050565b600060208201905081810360008301526148bc81614880565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061491f6022836139b7565b915061492a826148c3565b604082019050919050565b6000602082019050818103600083015261494e81614912565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006149b16025836139b7565b91506149bc82614955565b604082019050919050565b600060208201905081810360008301526149e0816149a4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614a436023836139b7565b9150614a4e826149e7565b604082019050919050565b60006020820190508181036000830152614a7281614a36565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614ad56029836139b7565b9150614ae082614a79565b604082019050919050565b60006020820190508181036000830152614b0481614ac8565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b6000614b676031836139b7565b9150614b7282614b0b565b604082019050919050565b60006020820190508181036000830152614b9681614b5a565b9050919050565b7f596f7520617265206120626f7400000000000000000000000000000000000000600082015250565b6000614bd3600d836139b7565b9150614bde82614b9d565b602082019050919050565b60006020820190508181036000830152614c0281614bc6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6000614c4382613ca9565b9150614c4e83613ca9565b9250828201905061ffff811115614c6857614c67614126565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614ca882613abc565b9150614cb383613abc565b925082614cc357614cc2614c6e565b5b828204905092915050565b600081519050614cdd81613a90565b92915050565b600060208284031215614cf957614cf861393c565b5b6000614d0784828501614cce565b91505092915050565b6000819050919050565b6000819050919050565b6000614d3f614d3a614d3584614d10565b614d1a565b613abc565b9050919050565b614d4f81614d24565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614d8a81613a7e565b82525050565b6000614d9c8383614d81565b60208301905092915050565b6000602082019050919050565b6000614dc082614d55565b614dca8185614d60565b9350614dd583614d71565b8060005b83811015614e06578151614ded8882614d90565b9750614df883614da8565b925050600181019050614dd9565b5085935050505092915050565b6000614e2e614e29614e2484613a5e565b614d1a565b613a5e565b9050919050565b6000614e4082614e13565b9050919050565b6000614e5282614e35565b9050919050565b614e6281614e47565b82525050565b600060a082019050614e7d6000830188613b68565b614e8a6020830187614d46565b8181036040830152614e9c8186614db5565b9050614eab6060830185614e59565b614eb86080830184613b68565b9695505050505050565b600060c082019050614ed76000830189613cef565b614ee46020830188613b68565b614ef16040830187614d46565b614efe6060830186614d46565b614f0b6080830185613cef565b614f1860a0830184613b68565b979650505050505050565b600081519050614f3281613ac6565b92915050565b600080600060608486031215614f5157614f5061393c565b5b6000614f5f86828701614f23565b9350506020614f7086828701614f23565b9250506040614f8186828701614f23565b915050925092509256fea26469706673582212201c33e8910b308f4c9406394262d86b95430ede9f14e7baf97943bb72b3fe589f64736f6c63430008120033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
-----Decoded View---------------
Arg [0] : routerAddress (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Deployed Bytecode Sourcemap
2849:15089:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16225:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4817:82;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5665:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5110:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5834:495;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3868:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16627:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4997:82;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4011:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6337:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14663:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14773:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17093:129;;;;;;;;;;;;;:::i;:::-;;6945:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17294:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17663:230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15954:263;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3905:39;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;7184:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3494:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3140:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15422:336;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5213:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1626:94;;;;;;;;;;;;;:::i;:::-;;3983:21;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;1403:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14158:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4905:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4169:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;3951:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6560:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3550:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5339:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13725:288;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15772:174;;;;;;;;;;;;;:::i;:::-;;14457:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16964:121;;;;;;;;;;;;;:::i;:::-;;14021:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16425:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5514:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14271:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3414:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7064:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1728:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4044:22;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;16837:119;;;;;;;;;;;;;:::i;:::-;;16225:192;1549:12;:10;:12::i;:::-;1538:23;;:7;:5;:7::i;:::-;:23;;;1530:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16305:1:::1;16293:9;:13;;;:30;;;;;16322:1;16310:9;:13;;;;16293:30;16285:39;;;::::0;::::1;;16350:9;16335:12;;:24;;;;;;;;;;;;;;;;;;16370:39;16390:4;16396:5;16403::::0;16370:19:::1;:39::i;:::-;16225:192:::0;:::o;4817:82::-;4854:13;4887:4;;;;;;;;;;;;;;;;;4880:11;;4817:82;:::o;5665:161::-;5740:4;5757:39;5766:12;:10;:12::i;:::-;5780:7;5789:6;5757:8;:39::i;:::-;5814:4;5807:11;;5665:161;;;;:::o;5110:95::-;5163:7;3292:1;3393:2;:12;;;;:::i;:::-;3386:4;:19;;;;:::i;:::-;5183:14;;5110:95;:::o;5834:495::-;5940:4;5957:36;5967:6;5975:9;5986:6;5957:9;:36::i;:::-;6006:24;6033:11;:19;6045:6;6033:19;;;;;;;;;;;;;;;:33;6053:12;:10;:12::i;:::-;6033:33;;;;;;;;;;;;;;;;6006:60;;6101:17;6081:16;:37;6077:221;;6163:6;6143:16;:26;;6135:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;6229:57;6238:6;6246:12;:10;:12::i;:::-;6279:6;6260:16;:25;;;;:::i;:::-;6229:8;:57::i;:::-;6077:221;6317:4;6310:11;;;5834:495;;;;;:::o;3868:30::-;;;;;;;;;;;;;:::o;16627:202::-;1549:12;:10;:12::i;:::-;1538:23;;:7;:5;:7::i;:::-;:23;;;1530:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16712:1:::1;16700:9;:13;;;:30;;;;;16729:1;16717:9;:13;;;;16700:30;16692:39;;;::::0;::::1;;16762:9;16742:17;;:29;;;;;;;;;;;;;;;;;;16782:39;16802:5;16809::::0;16816:4:::1;16782:19;:39::i;:::-;16627:202:::0;:::o;4997:82::-;5038:5;3292:1;5056:15;;4997:82;:::o;4011:26::-;;;;;;;;;;;;;:::o;6337:215::-;6425:4;6442:80;6451:12;:10;:12::i;:::-;6465:7;6511:10;6474:11;:25;6486:12;:10;:12::i;:::-;6474:25;;;;;;;;;;;;;;;:34;6500:7;6474:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;6442:8;:80::i;:::-;6540:4;6533:11;;6337:215;;;;:::o;14663:98::-;14715:4;14738:6;:15;14745:7;14738:15;;;;;;;;;;;;;;;;;;;;;;;;;14731:22;;14663:98;;;:::o;14773:154::-;1549:12;:10;:12::i;:::-;1538:23;;:7;:5;:7::i;:::-;:23;;;1530:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14884:9:::1;14867:6;;:27;;;;;;;;;;;;;;;;;;14912:7;14905:4;;:14;;;;;;;;;;;;;;;;;;14773:154:::0;;:::o;17093:129::-;1549:12;:10;:12::i;:::-;1538:23;;:7;:5;:7::i;:::-;:23;;;1530:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17163:1:::1;17143:17;;:21;;;;;;;;;;;;;;;;;;17175:39;17195:5;17202::::0;17209:4:::1;17175:19;:39::i;:::-;17093:129::o:0;6945:111::-;1549:12;:10;:12::i;:::-;1538:23;;:7;:5;:7::i;:::-;:23;;;1530:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7044:4:::1;7014:18;:27;7033:7;7014:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;6945:111:::0;:::o;17294:196::-;1549:12;:10;:12::i;:::-;1538:23;;:7;:5;:7::i;:::-;:23;;;1530:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17394:9:::1;17369:21;:34;;17361:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;17451:10;17443:28;;:39;17472:9;17443:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;17294:196:::0;:::o;17663:230::-;1549:12;:10;:12::i;:::-;1538:23;;:7;:5;:7::i;:::-;:23;;;1530:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17798:4:::1;17776:27;;:10;:27;;::::0;17768:65:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;17851:10;17844:27;;;17872:3;17877:7;17844:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17663:230:::0;;;:::o;15954:263::-;1549:12;:10;:12::i;:::-;1538:23;;:7;:5;:7::i;:::-;:23;;;1530:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16031:1:::1;16019:9;:13;;;:30;;;;;16048:1;16036:9;:13;;;;16019:30;16011:39;;;::::0;::::1;;16076:9;16061:12;;:24;;;;;;;;;;;;;;;;;;16112:9;16096:13;;:25;;;;;;;;;;;;;;;;;;16152:9;16132:17;;:29;;;;;;;;;;;;;;;;;;16172:37;16192:4;16198::::0;16204::::1;16172:19;:37::i;:::-;15954:263:::0;:::o;3905:39::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7184:123::-;7248:4;7272:18;:27;7291:7;7272:27;;;;;;;;;;;;;;;;;;;;;;;;;7265:34;;7184:123;;;:::o;3494:49::-;3541:1;3494:49;:::o;3140:23::-;;;;;;;;;;;;;:::o;15422:336::-;1549:12;:10;:12::i;:::-;1538:23;;:7;:5;:7::i;:::-;:23;;;1530:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15554:7:::1;:14;15535:8;:15;:33;15527:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;15618:9;15614:137;15636:8;:15;15632:1;:19;15614:137;;;15672:67;15688:10;15700:8;15709:1;15700:11;;;;;;;;:::i;:::-;;;;;;;;3292:1;15726:2;:12;;;;:::i;:::-;15713:7;15721:1;15713:10;;;;;;;;:::i;:::-;;;;;;;;:25;;;;:::i;:::-;15672:15;:67::i;:::-;15653:3;;;;;:::i;:::-;;;;15614:137;;;;15422:336:::0;;:::o;5213:118::-;5279:7;5306:8;:17;5315:7;5306:17;;;;;;;;;;;;;;;;5299:24;;5213:118;;;:::o;1626:94::-;1549:12;:10;:12::i;:::-;1538:23;;:7;:5;:7::i;:::-;:23;;;1530:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1691:21:::1;1709:1;1691:9;:21::i;:::-;1626:94::o:0;3983:21::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1403:87::-;1449:7;1476:6;;;;;;;;;;;1469:13;;1403:87;:::o;14158:101::-;1549:12;:10;:12::i;:::-;1538:23;;:7;:5;:7::i;:::-;:23;;;1530:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14243:8:::1;14229:11;;:22;;;;;;;;;;;;;;;;;;14158:101:::0;:::o;4905:86::-;4944:13;4977:6;;;;;;;;;;;;;;;;;4970:13;;4905:86;:::o;4169:36::-;;;;;;;;;;;;;;:::o;3951:25::-;;;;;;;;;;;;;:::o;6560:377::-;6653:4;6670:24;6697:11;:25;6709:12;:10;:12::i;:::-;6697:25;;;;;;;;;;;;;;;:34;6723:7;6697:34;;;;;;;;;;;;;;;;6670:61;;6770:15;6750:16;:35;;6742:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6838:67;6847:12;:10;:12::i;:::-;6861:7;6889:15;6870:16;:34;;;;:::i;:::-;6838:8;:67::i;:::-;6925:4;6918:11;;;6560:377;;;;:::o;3550:46::-;;;;;;;;;;;;;:::o;5339:167::-;5417:4;5434:42;5444:12;:10;:12::i;:::-;5458:9;5469:6;5434:9;:42::i;:::-;5494:4;5487:11;;5339:167;;;;:::o;13725:288::-;1549:12;:10;:12::i;:::-;1538:23;;:7;:5;:7::i;:::-;:23;;;1530:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13832:9:::1;13812:29;;:16;;;;;;;;;;;:29;;::::0;13804:60:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;13894:9;13875:16;;:28;;;;;;;;;;;;;;;;;;13953:4;13914:18;:36;13933:16;;;;;;;;;;;13914:36;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;13968:37;13988:4;13994::::0;14000::::1;13968:19;:37::i;:::-;13725:288:::0;:::o;15772:174::-;1549:12;:10;:12::i;:::-;1538:23;;:7;:5;:7::i;:::-;:23;;;1530:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15829:1:::1;15814:12;;:16;;;;;;;;;;;;;;;;;;15857:1;15841:13;;:17;;;;;;;;;;;;;;;;;;15889:1;15869:17;;:21;;;;;;;;;;;;;;;;;;15901:37;15921:4;15927::::0;15933::::1;15901:19;:37::i;:::-;15772:174::o:0;14457:194::-;1549:12;:10;:12::i;:::-;1538:23;;:7;:5;:7::i;:::-;:23;;;1530:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14550:9:::1;14546:98;14569:8;:15;14565:1;:19;14546:98;;;14627:5;14605:6;:19;14612:8;14621:1;14612:11;;;;;;;;:::i;:::-;;;;;;;;14605:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;14586:3;;;;;:::i;:::-;;;;14546:98;;;;14457:194:::0;;:::o;16964:121::-;1549:12;:10;:12::i;:::-;1538:23;;:7;:5;:7::i;:::-;:23;;;1530:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17026:1:::1;17010:13;;:17;;;;;;;;;;;;;;;;;;17038:39;17058:5;17065:4;17071:5;17038:19;:39::i;:::-;16964:121::o:0;14021:129::-;1549:12;:10;:12::i;:::-;1538:23;;:7;:5;:7::i;:::-;:23;;;1530:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3292:1:::1;14130:2;:12;;;;:::i;:::-;14121:6;:21;;;;:::i;:::-;14100:18;:42;;;;14021:129:::0;:::o;16425:194::-;1549:12;:10;:12::i;:::-;1538:23;;:7;:5;:7::i;:::-;:23;;;1530:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16506:1:::1;16494:9;:13;;;:30;;;;;16523:1;16511:9;:13;;;;16494:30;16486:39;;;::::0;::::1;;16552:9;16536:13;;:25;;;;;;;;;;;;;;;;;;16572:39;16592:5;16599:4;16605:5;16572:19;:39::i;:::-;16425:194:::0;:::o;5514:143::-;5595:7;5622:11;:18;5634:5;5622:18;;;;;;;;;;;;;;;:27;5641:7;5622:27;;;;;;;;;;;;;;;;5615:34;;5514:143;;;;:::o;14271:174::-;1549:12;:10;:12::i;:::-;1538:23;;:7;:5;:7::i;:::-;:23;;;1530:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14376:5:::1;14357:24;;:6;:15;14364:7;14357:15;;;;;;;;;;;;;;;;;;;;;;;;;:24;;::::0;14349:54:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14432:5;14414:6;:15;14421:7;14414:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;14271:174:::0;;:::o;3414:65::-;;;;:::o;7064:110::-;1549:12;:10;:12::i;:::-;1538:23;;:7;:5;:7::i;:::-;:23;;;1530:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7161:5:::1;7131:18;:27;7150:7;7131:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;7064:110:::0;:::o;1728:192::-;1549:12;:10;:12::i;:::-;1538:23;;:7;:5;:7::i;:::-;:23;;;1530:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1837:1:::1;1817:22;;:8;:22;;::::0;1809:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1893:19;1903:8;1893:9;:19::i;:::-;1728:192:::0;:::o;4044:22::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16837:119::-;1549:12;:10;:12::i;:::-;1538:23;;:7;:5;:7::i;:::-;:23;;;1530:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16897:1:::1;16882:12;;:16;;;;;;;;;;;;;;;;;;16909:39;16929:4;16935:5;16942::::0;16909:19:::1;:39::i;:::-;16837:119::o:0;824:98::-;877:7;904:10;897:17;;824:98;:::o;13139:578::-;13248:10;13244:140;;;13276:9;13287;13300:33;13320:12;;;;;;;;;;;13300:19;:33::i;:::-;13275:58;;;;13359:13;;;;;;;;13365:2;13359:13;;;;;;13369:2;13359:13;;;;;13348:8;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13260:124;;13244:140;13398:11;13394:143;;;13427:9;13438;13451:34;13471:13;;;;;;;;;;;13451:19;:34::i;:::-;13426:59;;;;13512:13;;;;;;;;13518:2;13512:13;;;;;;13522:2;13512:13;;;;;13500:9;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13411:126;;13394:143;13551:15;13547:163;;;13584:9;13595;13608:46;13636:17;;;;;;;;;;;13608:27;:46::i;:::-;13583:71;;;;13685:13;;;;;;;;13691:2;13685:13;;;;;;13695:2;13685:13;;;;;13669;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13568:142;;13547:163;13139:578;;;:::o;7321:335::-;7431:1;7414:19;;:5;:19;;;7406:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7512:1;7493:21;;:7;:21;;;7485:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7594:6;7564:11;:18;7576:5;7564:18;;;;;;;;;;;;;;;:27;7583:7;7564:27;;;;;;;;;;;;;;;:36;;;;7632:7;7616:32;;7625:5;7616:32;;;7641:6;7616:32;;;;;;:::i;:::-;;;;;;;;7321:335;;;:::o;7664:1707::-;7768:1;7752:18;;:4;:18;;;7744:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7845:1;7831:16;;:2;:16;;;7823:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7915:1;7906:6;:10;7898:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7991:15;8001:4;7991:9;:15::i;:::-;7981:6;:25;;7973:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;8079:6;:12;8086:4;8079:12;;;;;;;;;;;;;;;;;;;;;;;;;8078:13;:28;;;;;8096:6;:10;8103:2;8096:10;;;;;;;;;;;;;;;;;;;;;;;;;8095:11;8078:28;8070:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;8137:26;8166:22;8137:51;;8199:14;8237:22;8262:13;8237:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8286:20;8335:4;;;;;;;;;;;8329:10;;:2;:10;;;8325:543;;8371:18;8356:33;;8413:4;8404:13;;8444:9;8432:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8486:18;:26;8505:6;8486:26;;;;;;;;;;;;;;;;;;;;;;;;;8468:44;;8325:543;;;8542:4;;;;;;;;;;;8534:12;;:4;:12;;;8530:338;;8578:17;8563:32;;8619:2;8610:11;;8648:8;8636:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8689:18;:26;8708:6;8689:26;;;;;;;;;;;;;;;;;;;;;;;;;8671:44;;8530:338;;;8760:13;8748:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8806:18;:24;8825:4;8806:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;8834:18;:22;8853:2;8834:22;;;;;;;;;;;;;;;;;;;;;;;;;8806:50;8788:68;;8530:338;8325:543;8880:12;8923:18;;8895:24;8913:4;8895:9;:24::i;:::-;:46;;8880:61;;8971:17;8955:33;;;;;;;;:::i;:::-;;:12;:33;;;;;;;;:::i;:::-;;;;:46;;;;;8993:8;;;;;;;;;;;8992:9;8955:46;:61;;;;;9005:11;;;;;;;;;;;8955:61;:72;;;;;9020:7;8955:72;:101;;;;;9032:18;:24;9051:4;9032:24;;;;;;;;;;;;;;;;;;;;;;;;;9031:25;8955:101;:128;;;;;9061:18;:22;9080:2;9061:22;;;;;;;;;;;;;;;;;;;;;;;;;9060:23;8955:128;8952:193;;;9099:34;9114:18;;9099:14;:34::i;:::-;8952:193;9161:15;:65;;;;9225:1;9202:9;:19;;;9180:9;:19;;;:41;;;;:::i;:::-;:46;;;9161:65;9157:207;;;9243:33;9259:4;9265:2;9269:6;9243:15;:33::i;:::-;9157:207;;;9309:43;9324:4;9330:2;9334:6;9342:9;9309:14;:43::i;:::-;9157:207;7733:1638;;;;;7664:1707;;;:::o;14939:232::-;15036:31;15051:6;15059:7;15036:14;:31::i;:::-;15078;15090:9;15101:7;15078:11;:31::i;:::-;15144:9;15127:36;;15136:6;15127:36;;;15155:7;15127:36;;;;;;:::i;:::-;;;;;;;;14939:232;;;:::o;1928:173::-;1984:16;2003:6;;;;;;;;;;;1984:25;;2029:8;2020:6;;:17;;;;;;;;;;;;;;;;;;2084:8;2053:40;;2074:8;2053:40;;;;;;;;;;;;1973:128;1928:173;:::o;12228:447::-;12290:6;12298;12329:1;12321:4;:9;;;12317:55;;12355:1;12358;12347:13;;;;;;12317:55;12394:1;12386:4;:9;;;12382:158;;3541:1;12416:32;;:16;;;;;;;;;;;:32;;;12412:87;;12477:1;12480:2;12469:14;;;;;;12412:87;12521:2;12525;12513:15;;;;;;12382:158;3541:1;12564:32;;:16;;;;;;;;;;;:32;;;12560:80;;12621:1;12624:3;12613:15;;;;;;12560:80;12658:3;12663;12650:17;;;;12228:447;;;;:::o;12683:448::-;12753:6;12761;12792:1;12784:4;:9;;;12780:55;;12818:1;12821;12810:13;;;;;;12780:55;12857:1;12849:4;:9;;;12845:156;;3541:1;12879:32;;:16;;;;;;;;;;;:32;;;12875:86;;12940:1;12943;12932:13;;;;;;12875:86;12983:2;12987:1;12975:14;;;;;;12845:156;3541:1;13025:32;;:16;;;;;;;;;;;:32;;;13021:78;;13082:1;13085;13074:13;;;;;;13021:78;13117:2;13121:1;13109:14;;;;12683:448;;;;:::o;10636:487::-;4257:4;4246:8;;:15;;;;;;;;;;;;;;;;;;10778:20:::1;10824:1;10801:20;:24;;;;:::i;:::-;10778:47;;10836:25;10864:12;10836:40;;10887:22;10912:21;10887:46;;10944:45;10961:12;10983:4;10944:16;:45::i;:::-;11000:18;11046:14;11021:21;:40;;;;:::i;:::-;11000:61;;11072:43;11085:17;11104:10;11072:12;:43::i;:::-;10709:414;;;;4295:5:::0;4284:8;;:16;;;;;;;;;;;;;;;;;;10636:487;:::o;9435:1193::-;9556:23;9582:7;9556:33;;9636:1;9613:9;:19;;;:24;;;9610:391;;9654:18;9707:5;9685:9;:19;;;9675:29;;:7;:29;;;;:::i;:::-;:37;;;;:::i;:::-;9654:58;;9745:1;9731:10;:15;9727:263;;9786:10;9767:29;;;;;:::i;:::-;;;9840:10;9815:11;:21;;;:35;;;;;;;:::i;:::-;;;;;;;;9869:38;9889:4;9896:10;9869:11;:38::i;:::-;9956:4;9931:43;;9940:6;9931:43;;;9963:10;9931:43;;;;;;:::i;:::-;;;;;;;;9727:263;9639:362;9610:391;10038:1;10015:9;:19;;;:24;;;10011:398;;10056:18;10109:5;10087:9;:19;;;10077:29;;:7;:29;;;;:::i;:::-;:37;;;;:::i;:::-;10056:58;;10147:1;10133:10;:15;10129:269;;10188:10;10169:29;;;;;:::i;:::-;;;10242:10;10217:11;:21;;;:35;;;;;;;:::i;:::-;;;;;;;;10271:41;10283:16;;;;;;;;;;;10301:10;10271:11;:41::i;:::-;10353:16;;;;;;;;;;;10336:46;;10345:6;10336:46;;;10371:10;10336:46;;;;;;:::i;:::-;;;;;;;;10129:269;10041:368;10011:398;10423:31;10438:6;10446:7;10423:14;:31::i;:::-;10488:1;10469:15;:20;10465:156;;10506:39;10518:9;10529:15;10506:11;:39::i;:::-;10582:9;10565:44;;10574:6;10565:44;;;10593:15;10565:44;;;;;;:::i;:::-;;;;;;;;10465:156;9543:1085;9435:1193;;;;:::o;15297:113::-;15395:7;15374:8;:17;15383:7;15374:17;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;15297:113;;:::o;15179:110::-;15274:7;15253:8;:17;15262:7;15253:17;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;15179:110;;:::o;11634:586::-;11779:21;11817:1;11803:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11779:40;;11848:4;11830;11835:1;11830:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;11874:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11864:4;11869:1;11864:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;11900:53;11917:4;11932:6;;;;;;;;;;;11941:11;11900:8;:53::i;:::-;11992:6;;;;;;;;;;;:57;;;12064:11;12090:1;12134:4;12161:9;12186:15;11992:220;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11708:512;11634:586;;:::o;11131:495::-;11279:53;11296:4;11311:6;;;;;;;;;;;11320:11;11279:8;:53::i;:::-;11375:6;;;;;;;;;;;:22;;;11405:9;11438:4;11458:11;11484:1;11527;11570:7;:5;:7::i;:::-;11592:15;11375:243;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11131:495;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:86;369:7;409:4;402:5;398:16;387:27;;334:86;;;:::o;426:118::-;497:22;513:5;497:22;:::i;:::-;490:5;487:33;477:61;;534:1;531;524:12;477:61;426:118;:::o;550:135::-;594:5;632:6;619:20;610:29;;648:31;673:5;648:31;:::i;:::-;550:135;;;;:::o;691:325::-;748:6;797:2;785:9;776:7;772:23;768:32;765:119;;;803:79;;:::i;:::-;765:119;923:1;948:51;991:7;982:6;971:9;967:22;948:51;:::i;:::-;938:61;;894:115;691:325;;;;:::o;1022:99::-;1074:6;1108:5;1102:12;1092:22;;1022:99;;;:::o;1127:169::-;1211:11;1245:6;1240:3;1233:19;1285:4;1280:3;1276:14;1261:29;;1127:169;;;;:::o;1302:246::-;1383:1;1393:113;1407:6;1404:1;1401:13;1393:113;;;1492:1;1487:3;1483:11;1477:18;1473:1;1468:3;1464:11;1457:39;1429:2;1426:1;1422:10;1417:15;;1393:113;;;1540:1;1531:6;1526:3;1522:16;1515:27;1364:184;1302:246;;;:::o;1554:102::-;1595:6;1646:2;1642:7;1637:2;1630:5;1626:14;1622:28;1612:38;;1554:102;;;:::o;1662:377::-;1750:3;1778:39;1811:5;1778:39;:::i;:::-;1833:71;1897:6;1892:3;1833:71;:::i;:::-;1826:78;;1913:65;1971:6;1966:3;1959:4;1952:5;1948:16;1913:65;:::i;:::-;2003:29;2025:6;2003:29;:::i;:::-;1998:3;1994:39;1987:46;;1754:285;1662:377;;;;:::o;2045:313::-;2158:4;2196:2;2185:9;2181:18;2173:26;;2245:9;2239:4;2235:20;2231:1;2220:9;2216:17;2209:47;2273:78;2346:4;2337:6;2273:78;:::i;:::-;2265:86;;2045:313;;;;:::o;2364:126::-;2401:7;2441:42;2434:5;2430:54;2419:65;;2364:126;;;:::o;2496:96::-;2533:7;2562:24;2580:5;2562:24;:::i;:::-;2551:35;;2496:96;;;:::o;2598:122::-;2671:24;2689:5;2671:24;:::i;:::-;2664:5;2661:35;2651:63;;2710:1;2707;2700:12;2651:63;2598:122;:::o;2726:139::-;2772:5;2810:6;2797:20;2788:29;;2826:33;2853:5;2826:33;:::i;:::-;2726:139;;;;:::o;2871:77::-;2908:7;2937:5;2926:16;;2871:77;;;:::o;2954:122::-;3027:24;3045:5;3027:24;:::i;:::-;3020:5;3017:35;3007:63;;3066:1;3063;3056:12;3007:63;2954:122;:::o;3082:139::-;3128:5;3166:6;3153:20;3144:29;;3182:33;3209:5;3182:33;:::i;:::-;3082:139;;;;:::o;3227:474::-;3295:6;3303;3352:2;3340:9;3331:7;3327:23;3323:32;3320:119;;;3358:79;;:::i;:::-;3320:119;3478:1;3503:53;3548:7;3539:6;3528:9;3524:22;3503:53;:::i;:::-;3493:63;;3449:117;3605:2;3631:53;3676:7;3667:6;3656:9;3652:22;3631:53;:::i;:::-;3621:63;;3576:118;3227:474;;;;;:::o;3707:90::-;3741:7;3784:5;3777:13;3770:21;3759:32;;3707:90;;;:::o;3803:109::-;3884:21;3899:5;3884:21;:::i;:::-;3879:3;3872:34;3803:109;;:::o;3918:210::-;4005:4;4043:2;4032:9;4028:18;4020:26;;4056:65;4118:1;4107:9;4103:17;4094:6;4056:65;:::i;:::-;3918:210;;;;:::o;4134:118::-;4221:24;4239:5;4221:24;:::i;:::-;4216:3;4209:37;4134:118;;:::o;4258:222::-;4351:4;4389:2;4378:9;4374:18;4366:26;;4402:71;4470:1;4459:9;4455:17;4446:6;4402:71;:::i;:::-;4258:222;;;;:::o;4486:619::-;4563:6;4571;4579;4628:2;4616:9;4607:7;4603:23;4599:32;4596:119;;;4634:79;;:::i;:::-;4596:119;4754:1;4779:53;4824:7;4815:6;4804:9;4800:22;4779:53;:::i;:::-;4769:63;;4725:117;4881:2;4907:53;4952:7;4943:6;4932:9;4928:22;4907:53;:::i;:::-;4897:63;;4852:118;5009:2;5035:53;5080:7;5071:6;5060:9;5056:22;5035:53;:::i;:::-;5025:63;;4980:118;4486:619;;;;;:::o;5111:112::-;5194:22;5210:5;5194:22;:::i;:::-;5189:3;5182:35;5111:112;;:::o;5229:214::-;5318:4;5356:2;5345:9;5341:18;5333:26;;5369:67;5433:1;5422:9;5418:17;5409:6;5369:67;:::i;:::-;5229:214;;;;:::o;5449:329::-;5508:6;5557:2;5545:9;5536:7;5532:23;5528:32;5525:119;;;5563:79;;:::i;:::-;5525:119;5683:1;5708:53;5753:7;5744:6;5733:9;5729:22;5708:53;:::i;:::-;5698:63;;5654:117;5449:329;;;;:::o;5784:474::-;5852:6;5860;5909:2;5897:9;5888:7;5884:23;5880:32;5877:119;;;5915:79;;:::i;:::-;5877:119;6035:1;6060:53;6105:7;6096:6;6085:9;6081:22;6060:53;:::i;:::-;6050:63;;6006:117;6162:2;6188:53;6233:7;6224:6;6213:9;6209:22;6188:53;:::i;:::-;6178:63;;6133:118;5784:474;;;;;:::o;6264:329::-;6323:6;6372:2;6360:9;6351:7;6347:23;6343:32;6340:119;;;6378:79;;:::i;:::-;6340:119;6498:1;6523:53;6568:7;6559:6;6548:9;6544:22;6523:53;:::i;:::-;6513:63;;6469:117;6264:329;;;;:::o;6599:89::-;6635:7;6675:6;6668:5;6664:18;6653:29;;6599:89;;;:::o;6694:115::-;6779:23;6796:5;6779:23;:::i;:::-;6774:3;6767:36;6694:115;;:::o;6815:324::-;6932:4;6970:2;6959:9;6955:18;6947:26;;6983:69;7049:1;7038:9;7034:17;7025:6;6983:69;:::i;:::-;7062:70;7128:2;7117:9;7113:18;7104:6;7062:70;:::i;:::-;6815:324;;;;;:::o;7145:118::-;7232:24;7250:5;7232:24;:::i;:::-;7227:3;7220:37;7145:118;;:::o;7269:222::-;7362:4;7400:2;7389:9;7385:18;7377:26;;7413:71;7481:1;7470:9;7466:17;7457:6;7413:71;:::i;:::-;7269:222;;;;:::o;7497:117::-;7606:1;7603;7596:12;7620:180;7668:77;7665:1;7658:88;7765:4;7762:1;7755:15;7789:4;7786:1;7779:15;7806:281;7889:27;7911:4;7889:27;:::i;:::-;7881:6;7877:40;8019:6;8007:10;8004:22;7983:18;7971:10;7968:34;7965:62;7962:88;;;8030:18;;:::i;:::-;7962:88;8070:10;8066:2;8059:22;7849:238;7806:281;;:::o;8093:129::-;8127:6;8154:20;;:::i;:::-;8144:30;;8183:33;8211:4;8203:6;8183:33;:::i;:::-;8093:129;;;:::o;8228:311::-;8305:4;8395:18;8387:6;8384:30;8381:56;;;8417:18;;:::i;:::-;8381:56;8467:4;8459:6;8455:17;8447:25;;8527:4;8521;8517:15;8509:23;;8228:311;;;:::o;8545:117::-;8654:1;8651;8644:12;8685:710;8781:5;8806:81;8822:64;8879:6;8822:64;:::i;:::-;8806:81;:::i;:::-;8797:90;;8907:5;8936:6;8929:5;8922:21;8970:4;8963:5;8959:16;8952:23;;9023:4;9015:6;9011:17;9003:6;8999:30;9052:3;9044:6;9041:15;9038:122;;;9071:79;;:::i;:::-;9038:122;9186:6;9169:220;9203:6;9198:3;9195:15;9169:220;;;9278:3;9307:37;9340:3;9328:10;9307:37;:::i;:::-;9302:3;9295:50;9374:4;9369:3;9365:14;9358:21;;9245:144;9229:4;9224:3;9220:14;9213:21;;9169:220;;;9173:21;8787:608;;8685:710;;;;;:::o;9418:370::-;9489:5;9538:3;9531:4;9523:6;9519:17;9515:27;9505:122;;9546:79;;:::i;:::-;9505:122;9663:6;9650:20;9688:94;9778:3;9770:6;9763:4;9755:6;9751:17;9688:94;:::i;:::-;9679:103;;9495:293;9418:370;;;;:::o;9794:311::-;9871:4;9961:18;9953:6;9950:30;9947:56;;;9983:18;;:::i;:::-;9947:56;10033:4;10025:6;10021:17;10013:25;;10093:4;10087;10083:15;10075:23;;9794:311;;;:::o;10128:710::-;10224:5;10249:81;10265:64;10322:6;10265:64;:::i;:::-;10249:81;:::i;:::-;10240:90;;10350:5;10379:6;10372:5;10365:21;10413:4;10406:5;10402:16;10395:23;;10466:4;10458:6;10454:17;10446:6;10442:30;10495:3;10487:6;10484:15;10481:122;;;10514:79;;:::i;:::-;10481:122;10629:6;10612:220;10646:6;10641:3;10638:15;10612:220;;;10721:3;10750:37;10783:3;10771:10;10750:37;:::i;:::-;10745:3;10738:50;10817:4;10812:3;10808:14;10801:21;;10688:144;10672:4;10667:3;10663:14;10656:21;;10612:220;;;10616:21;10230:608;;10128:710;;;;;:::o;10861:370::-;10932:5;10981:3;10974:4;10966:6;10962:17;10958:27;10948:122;;10989:79;;:::i;:::-;10948:122;11106:6;11093:20;11131:94;11221:3;11213:6;11206:4;11198:6;11194:17;11131:94;:::i;:::-;11122:103;;10938:293;10861:370;;;;:::o;11237:894::-;11355:6;11363;11412:2;11400:9;11391:7;11387:23;11383:32;11380:119;;;11418:79;;:::i;:::-;11380:119;11566:1;11555:9;11551:17;11538:31;11596:18;11588:6;11585:30;11582:117;;;11618:79;;:::i;:::-;11582:117;11723:78;11793:7;11784:6;11773:9;11769:22;11723:78;:::i;:::-;11713:88;;11509:302;11878:2;11867:9;11863:18;11850:32;11909:18;11901:6;11898:30;11895:117;;;11931:79;;:::i;:::-;11895:117;12036:78;12106:7;12097:6;12086:9;12082:22;12036:78;:::i;:::-;12026:88;;11821:303;11237:894;;;;;:::o;12137:116::-;12207:21;12222:5;12207:21;:::i;:::-;12200:5;12197:32;12187:60;;12243:1;12240;12233:12;12187:60;12137:116;:::o;12259:133::-;12302:5;12340:6;12327:20;12318:29;;12356:30;12380:5;12356:30;:::i;:::-;12259:133;;;;:::o;12398:323::-;12454:6;12503:2;12491:9;12482:7;12478:23;12474:32;12471:119;;;12509:79;;:::i;:::-;12471:119;12629:1;12654:50;12696:7;12687:6;12676:9;12672:22;12654:50;:::i;:::-;12644:60;;12600:114;12398:323;;;;:::o;12727:332::-;12848:4;12886:2;12875:9;12871:18;12863:26;;12899:71;12967:1;12956:9;12952:17;12943:6;12899:71;:::i;:::-;12980:72;13048:2;13037:9;13033:18;13024:6;12980:72;:::i;:::-;12727:332;;;;;:::o;13065:678::-;13155:6;13163;13212:2;13200:9;13191:7;13187:23;13183:32;13180:119;;;13218:79;;:::i;:::-;13180:119;13366:1;13355:9;13351:17;13338:31;13396:18;13388:6;13385:30;13382:117;;;13418:79;;:::i;:::-;13382:117;13523:78;13593:7;13584:6;13573:9;13569:22;13523:78;:::i;:::-;13513:88;;13309:302;13650:2;13676:50;13718:7;13709:6;13698:9;13694:22;13676:50;:::i;:::-;13666:60;;13621:115;13065:678;;;;;:::o;13749:468::-;13814:6;13822;13871:2;13859:9;13850:7;13846:23;13842:32;13839:119;;;13877:79;;:::i;:::-;13839:119;13997:1;14022:53;14067:7;14058:6;14047:9;14043:22;14022:53;:::i;:::-;14012:63;;13968:117;14124:2;14150:50;14192:7;14183:6;14172:9;14168:22;14150:50;:::i;:::-;14140:60;;14095:115;13749:468;;;;;:::o;14223:182::-;14363:34;14359:1;14351:6;14347:14;14340:58;14223:182;:::o;14411:366::-;14553:3;14574:67;14638:2;14633:3;14574:67;:::i;:::-;14567:74;;14650:93;14739:3;14650:93;:::i;:::-;14768:2;14763:3;14759:12;14752:19;;14411:366;;;:::o;14783:419::-;14949:4;14987:2;14976:9;14972:18;14964:26;;15036:9;15030:4;15026:20;15022:1;15011:9;15007:17;15000:47;15064:131;15190:4;15064:131;:::i;:::-;15056:139;;14783:419;;;:::o;15208:180::-;15256:77;15253:1;15246:88;15353:4;15350:1;15343:15;15377:4;15374:1;15367:15;15394:102;15436:8;15483:5;15480:1;15476:13;15455:34;;15394:102;;;:::o;15502:848::-;15563:5;15570:4;15594:6;15585:15;;15618:5;15609:14;;15632:712;15653:1;15643:8;15640:15;15632:712;;;15748:4;15743:3;15739:14;15733:4;15730:24;15727:50;;;15757:18;;:::i;:::-;15727:50;15807:1;15797:8;15793:16;15790:451;;;16222:4;16215:5;16211:16;16202:25;;15790:451;16272:4;16266;16262:15;16254:23;;16302:32;16325:8;16302:32;:::i;:::-;16290:44;;15632:712;;;15502:848;;;;;;;:::o;16356:1073::-;16410:5;16601:8;16591:40;;16622:1;16613:10;;16624:5;;16591:40;16650:4;16640:36;;16667:1;16658:10;;16669:5;;16640:36;16736:4;16784:1;16779:27;;;;16820:1;16815:191;;;;16729:277;;16779:27;16797:1;16788:10;;16799:5;;;16815:191;16860:3;16850:8;16847:17;16844:43;;;16867:18;;:::i;:::-;16844:43;16916:8;16913:1;16909:16;16900:25;;16951:3;16944:5;16941:14;16938:40;;;16958:18;;:::i;:::-;16938:40;16991:5;;;16729:277;;17115:2;17105:8;17102:16;17096:3;17090:4;17087:13;17083:36;17065:2;17055:8;17052:16;17047:2;17041:4;17038:12;17034:35;17018:111;17015:246;;;17171:8;17165:4;17161:19;17152:28;;17206:3;17199:5;17196:14;17193:40;;;17213:18;;:::i;:::-;17193:40;17246:5;;17015:246;17286:42;17324:3;17314:8;17308:4;17305:1;17286:42;:::i;:::-;17271:57;;;;17360:4;17355:3;17351:14;17344:5;17341:25;17338:51;;;17369:18;;:::i;:::-;17338:51;17418:4;17411:5;17407:16;17398:25;;16356:1073;;;;;;:::o;17435:281::-;17493:5;17517:23;17535:4;17517:23;:::i;:::-;17509:31;;17561:25;17577:8;17561:25;:::i;:::-;17549:37;;17605:104;17642:66;17632:8;17626:4;17605:104;:::i;:::-;17596:113;;17435:281;;;;:::o;17722:410::-;17762:7;17785:20;17803:1;17785:20;:::i;:::-;17780:25;;17819:20;17837:1;17819:20;:::i;:::-;17814:25;;17874:1;17871;17867:9;17896:30;17914:11;17896:30;:::i;:::-;17885:41;;18075:1;18066:7;18062:15;18059:1;18056:22;18036:1;18029:9;18009:83;17986:139;;18105:18;;:::i;:::-;17986:139;17770:362;17722:410;;;;:::o;18138:227::-;18278:34;18274:1;18266:6;18262:14;18255:58;18347:10;18342:2;18334:6;18330:15;18323:35;18138:227;:::o;18371:366::-;18513:3;18534:67;18598:2;18593:3;18534:67;:::i;:::-;18527:74;;18610:93;18699:3;18610:93;:::i;:::-;18728:2;18723:3;18719:12;18712:19;;18371:366;;;:::o;18743:419::-;18909:4;18947:2;18936:9;18932:18;18924:26;;18996:9;18990:4;18986:20;18982:1;18971:9;18967:17;18960:47;19024:131;19150:4;19024:131;:::i;:::-;19016:139;;18743:419;;;:::o;19168:194::-;19208:4;19228:20;19246:1;19228:20;:::i;:::-;19223:25;;19262:20;19280:1;19262:20;:::i;:::-;19257:25;;19306:1;19303;19299:9;19291:17;;19330:1;19324:4;19321:11;19318:37;;;19335:18;;:::i;:::-;19318:37;19168:194;;;;:::o;19368:191::-;19408:3;19427:20;19445:1;19427:20;:::i;:::-;19422:25;;19461:20;19479:1;19461:20;:::i;:::-;19456:25;;19504:1;19501;19497:9;19490:16;;19525:3;19522:1;19519:10;19516:36;;;19532:18;;:::i;:::-;19516:36;19368:191;;;;:::o;19565:174::-;19705:26;19701:1;19693:6;19689:14;19682:50;19565:174;:::o;19745:366::-;19887:3;19908:67;19972:2;19967:3;19908:67;:::i;:::-;19901:74;;19984:93;20073:3;19984:93;:::i;:::-;20102:2;20097:3;20093:12;20086:19;;19745:366;;;:::o;20117:419::-;20283:4;20321:2;20310:9;20306:18;20298:26;;20370:9;20364:4;20360:20;20356:1;20345:9;20341:17;20334:47;20398:131;20524:4;20398:131;:::i;:::-;20390:139;;20117:419;;;:::o;20542:175::-;20682:27;20678:1;20670:6;20666:14;20659:51;20542:175;:::o;20723:366::-;20865:3;20886:67;20950:2;20945:3;20886:67;:::i;:::-;20879:74;;20962:93;21051:3;20962:93;:::i;:::-;21080:2;21075:3;21071:12;21064:19;;20723:366;;;:::o;21095:419::-;21261:4;21299:2;21288:9;21284:18;21276:26;;21348:9;21342:4;21338:20;21334:1;21323:9;21319:17;21312:47;21376:131;21502:4;21376:131;:::i;:::-;21368:139;;21095:419;;;:::o;21520:332::-;21641:4;21679:2;21668:9;21664:18;21656:26;;21692:71;21760:1;21749:9;21745:17;21736:6;21692:71;:::i;:::-;21773:72;21841:2;21830:9;21826:18;21817:6;21773:72;:::i;:::-;21520:332;;;;;:::o;21858:137::-;21912:5;21943:6;21937:13;21928:22;;21959:30;21983:5;21959:30;:::i;:::-;21858:137;;;;:::o;22001:345::-;22068:6;22117:2;22105:9;22096:7;22092:23;22088:32;22085:119;;;22123:79;;:::i;:::-;22085:119;22243:1;22268:61;22321:7;22312:6;22301:9;22297:22;22268:61;:::i;:::-;22258:71;;22214:125;22001:345;;;;:::o;22352:180::-;22492:32;22488:1;22480:6;22476:14;22469:56;22352:180;:::o;22538:366::-;22680:3;22701:67;22765:2;22760:3;22701:67;:::i;:::-;22694:74;;22777:93;22866:3;22777:93;:::i;:::-;22895:2;22890:3;22886:12;22879:19;;22538:366;;;:::o;22910:419::-;23076:4;23114:2;23103:9;23099:18;23091:26;;23163:9;23157:4;23153:20;23149:1;23138:9;23134:17;23127:47;23191:131;23317:4;23191:131;:::i;:::-;23183:139;;22910:419;;;:::o;23335:180::-;23383:77;23380:1;23373:88;23480:4;23477:1;23470:15;23504:4;23501:1;23494:15;23521:233;23560:3;23583:24;23601:5;23583:24;:::i;:::-;23574:33;;23629:66;23622:5;23619:77;23616:103;;23699:18;;:::i;:::-;23616:103;23746:1;23739:5;23735:13;23728:20;;23521:233;;;:::o;23760:224::-;23900:34;23896:1;23888:6;23884:14;23877:58;23969:7;23964:2;23956:6;23952:15;23945:32;23760:224;:::o;23990:366::-;24132:3;24153:67;24217:2;24212:3;24153:67;:::i;:::-;24146:74;;24229:93;24318:3;24229:93;:::i;:::-;24347:2;24342:3;24338:12;24331:19;;23990:366;;;:::o;24362:419::-;24528:4;24566:2;24555:9;24551:18;24543:26;;24615:9;24609:4;24605:20;24601:1;24590:9;24586:17;24579:47;24643:131;24769:4;24643:131;:::i;:::-;24635:139;;24362:419;;;:::o;24787:168::-;24927:20;24923:1;24915:6;24911:14;24904:44;24787:168;:::o;24961:366::-;25103:3;25124:67;25188:2;25183:3;25124:67;:::i;:::-;25117:74;;25200:93;25289:3;25200:93;:::i;:::-;25318:2;25313:3;25309:12;25302:19;;24961:366;;;:::o;25333:419::-;25499:4;25537:2;25526:9;25522:18;25514:26;;25586:9;25580:4;25576:20;25572:1;25561:9;25557:17;25550:47;25614:131;25740:4;25614:131;:::i;:::-;25606:139;;25333:419;;;:::o;25758:167::-;25898:19;25894:1;25886:6;25882:14;25875:43;25758:167;:::o;25931:366::-;26073:3;26094:67;26158:2;26153:3;26094:67;:::i;:::-;26087:74;;26170:93;26259:3;26170:93;:::i;:::-;26288:2;26283:3;26279:12;26272:19;;25931:366;;;:::o;26303:419::-;26469:4;26507:2;26496:9;26492:18;26484:26;;26556:9;26550:4;26546:20;26542:1;26531:9;26527:17;26520:47;26584:131;26710:4;26584:131;:::i;:::-;26576:139;;26303:419;;;:::o;26728:225::-;26868:34;26864:1;26856:6;26852:14;26845:58;26937:8;26932:2;26924:6;26920:15;26913:33;26728:225;:::o;26959:366::-;27101:3;27122:67;27186:2;27181:3;27122:67;:::i;:::-;27115:74;;27198:93;27287:3;27198:93;:::i;:::-;27316:2;27311:3;27307:12;27300:19;;26959:366;;;:::o;27331:419::-;27497:4;27535:2;27524:9;27520:18;27512:26;;27584:9;27578:4;27574:20;27570:1;27559:9;27555:17;27548:47;27612:131;27738:4;27612:131;:::i;:::-;27604:139;;27331:419;;;:::o;27756:223::-;27896:34;27892:1;27884:6;27880:14;27873:58;27965:6;27960:2;27952:6;27948:15;27941:31;27756:223;:::o;27985:366::-;28127:3;28148:67;28212:2;28207:3;28148:67;:::i;:::-;28141:74;;28224:93;28313:3;28224:93;:::i;:::-;28342:2;28337:3;28333:12;28326:19;;27985:366;;;:::o;28357:419::-;28523:4;28561:2;28550:9;28546:18;28538:26;;28610:9;28604:4;28600:20;28596:1;28585:9;28581:17;28574:47;28638:131;28764:4;28638:131;:::i;:::-;28630:139;;28357:419;;;:::o;28782:221::-;28922:34;28918:1;28910:6;28906:14;28899:58;28991:4;28986:2;28978:6;28974:15;28967:29;28782:221;:::o;29009:366::-;29151:3;29172:67;29236:2;29231:3;29172:67;:::i;:::-;29165:74;;29248:93;29337:3;29248:93;:::i;:::-;29366:2;29361:3;29357:12;29350:19;;29009:366;;;:::o;29381:419::-;29547:4;29585:2;29574:9;29570:18;29562:26;;29634:9;29628:4;29624:20;29620:1;29609:9;29605:17;29598:47;29662:131;29788:4;29662:131;:::i;:::-;29654:139;;29381:419;;;:::o;29806:224::-;29946:34;29942:1;29934:6;29930:14;29923:58;30015:7;30010:2;30002:6;29998:15;29991:32;29806:224;:::o;30036:366::-;30178:3;30199:67;30263:2;30258:3;30199:67;:::i;:::-;30192:74;;30275:93;30364:3;30275:93;:::i;:::-;30393:2;30388:3;30384:12;30377:19;;30036:366;;;:::o;30408:419::-;30574:4;30612:2;30601:9;30597:18;30589:26;;30661:9;30655:4;30651:20;30647:1;30636:9;30632:17;30625:47;30689:131;30815:4;30689:131;:::i;:::-;30681:139;;30408:419;;;:::o;30833:222::-;30973:34;30969:1;30961:6;30957:14;30950:58;31042:5;31037:2;31029:6;31025:15;31018:30;30833:222;:::o;31061:366::-;31203:3;31224:67;31288:2;31283:3;31224:67;:::i;:::-;31217:74;;31300:93;31389:3;31300:93;:::i;:::-;31418:2;31413:3;31409:12;31402:19;;31061:366;;;:::o;31433:419::-;31599:4;31637:2;31626:9;31622:18;31614:26;;31686:9;31680:4;31676:20;31672:1;31661:9;31657:17;31650:47;31714:131;31840:4;31714:131;:::i;:::-;31706:139;;31433:419;;;:::o;31858:228::-;31998:34;31994:1;31986:6;31982:14;31975:58;32067:11;32062:2;32054:6;32050:15;32043:36;31858:228;:::o;32092:366::-;32234:3;32255:67;32319:2;32314:3;32255:67;:::i;:::-;32248:74;;32331:93;32420:3;32331:93;:::i;:::-;32449:2;32444:3;32440:12;32433:19;;32092:366;;;:::o;32464:419::-;32630:4;32668:2;32657:9;32653:18;32645:26;;32717:9;32711:4;32707:20;32703:1;32692:9;32688:17;32681:47;32745:131;32871:4;32745:131;:::i;:::-;32737:139;;32464:419;;;:::o;32889:236::-;33029:34;33025:1;33017:6;33013:14;33006:58;33098:19;33093:2;33085:6;33081:15;33074:44;32889:236;:::o;33131:366::-;33273:3;33294:67;33358:2;33353:3;33294:67;:::i;:::-;33287:74;;33370:93;33459:3;33370:93;:::i;:::-;33488:2;33483:3;33479:12;33472:19;;33131:366;;;:::o;33503:419::-;33669:4;33707:2;33696:9;33692:18;33684:26;;33756:9;33750:4;33746:20;33742:1;33731:9;33727:17;33720:47;33784:131;33910:4;33784:131;:::i;:::-;33776:139;;33503:419;;;:::o;33928:163::-;34068:15;34064:1;34056:6;34052:14;34045:39;33928:163;:::o;34097:366::-;34239:3;34260:67;34324:2;34319:3;34260:67;:::i;:::-;34253:74;;34336:93;34425:3;34336:93;:::i;:::-;34454:2;34449:3;34445:12;34438:19;;34097:366;;;:::o;34469:419::-;34635:4;34673:2;34662:9;34658:18;34650:26;;34722:9;34716:4;34712:20;34708:1;34697:9;34693:17;34686:47;34750:131;34876:4;34750:131;:::i;:::-;34742:139;;34469:419;;;:::o;34894:180::-;34942:77;34939:1;34932:88;35039:4;35036:1;35029:15;35063:4;35060:1;35053:15;35080:193;35119:3;35138:19;35155:1;35138:19;:::i;:::-;35133:24;;35171:19;35188:1;35171:19;:::i;:::-;35166:24;;35213:1;35210;35206:9;35199:16;;35236:6;35231:3;35228:15;35225:41;;;35246:18;;:::i;:::-;35225:41;35080:193;;;;:::o;35279:180::-;35327:77;35324:1;35317:88;35424:4;35421:1;35414:15;35448:4;35445:1;35438:15;35465:185;35505:1;35522:20;35540:1;35522:20;:::i;:::-;35517:25;;35556:20;35574:1;35556:20;:::i;:::-;35551:25;;35595:1;35585:35;;35600:18;;:::i;:::-;35585:35;35642:1;35639;35635:9;35630:14;;35465:185;;;;:::o;35656:143::-;35713:5;35744:6;35738:13;35729:22;;35760:33;35787:5;35760:33;:::i;:::-;35656:143;;;;:::o;35805:351::-;35875:6;35924:2;35912:9;35903:7;35899:23;35895:32;35892:119;;;35930:79;;:::i;:::-;35892:119;36050:1;36075:64;36131:7;36122:6;36111:9;36107:22;36075:64;:::i;:::-;36065:74;;36021:128;35805:351;;;;:::o;36162:85::-;36207:7;36236:5;36225:16;;36162:85;;;:::o;36253:60::-;36281:3;36302:5;36295:12;;36253:60;;;:::o;36319:158::-;36377:9;36410:61;36428:42;36437:32;36463:5;36437:32;:::i;:::-;36428:42;:::i;:::-;36410:61;:::i;:::-;36397:74;;36319:158;;;:::o;36483:147::-;36578:45;36617:5;36578:45;:::i;:::-;36573:3;36566:58;36483:147;;:::o;36636:114::-;36703:6;36737:5;36731:12;36721:22;;36636:114;;;:::o;36756:184::-;36855:11;36889:6;36884:3;36877:19;36929:4;36924:3;36920:14;36905:29;;36756:184;;;;:::o;36946:132::-;37013:4;37036:3;37028:11;;37066:4;37061:3;37057:14;37049:22;;36946:132;;;:::o;37084:108::-;37161:24;37179:5;37161:24;:::i;:::-;37156:3;37149:37;37084:108;;:::o;37198:179::-;37267:10;37288:46;37330:3;37322:6;37288:46;:::i;:::-;37366:4;37361:3;37357:14;37343:28;;37198:179;;;;:::o;37383:113::-;37453:4;37485;37480:3;37476:14;37468:22;;37383:113;;;:::o;37532:732::-;37651:3;37680:54;37728:5;37680:54;:::i;:::-;37750:86;37829:6;37824:3;37750:86;:::i;:::-;37743:93;;37860:56;37910:5;37860:56;:::i;:::-;37939:7;37970:1;37955:284;37980:6;37977:1;37974:13;37955:284;;;38056:6;38050:13;38083:63;38142:3;38127:13;38083:63;:::i;:::-;38076:70;;38169:60;38222:6;38169:60;:::i;:::-;38159:70;;38015:224;38002:1;37999;37995:9;37990:14;;37955:284;;;37959:14;38255:3;38248:10;;37656:608;;;37532:732;;;;:::o;38270:142::-;38320:9;38353:53;38371:34;38380:24;38398:5;38380:24;:::i;:::-;38371:34;:::i;:::-;38353:53;:::i;:::-;38340:66;;38270:142;;;:::o;38418:126::-;38468:9;38501:37;38532:5;38501:37;:::i;:::-;38488:50;;38418:126;;;:::o;38550:134::-;38608:9;38641:37;38672:5;38641:37;:::i;:::-;38628:50;;38550:134;;;:::o;38690:147::-;38785:45;38824:5;38785:45;:::i;:::-;38780:3;38773:58;38690:147;;:::o;38843:847::-;39114:4;39152:3;39141:9;39137:19;39129:27;;39166:71;39234:1;39223:9;39219:17;39210:6;39166:71;:::i;:::-;39247:80;39323:2;39312:9;39308:18;39299:6;39247:80;:::i;:::-;39374:9;39368:4;39364:20;39359:2;39348:9;39344:18;39337:48;39402:108;39505:4;39496:6;39402:108;:::i;:::-;39394:116;;39520:80;39596:2;39585:9;39581:18;39572:6;39520:80;:::i;:::-;39610:73;39678:3;39667:9;39663:19;39654:6;39610:73;:::i;:::-;38843:847;;;;;;;;:::o;39696:807::-;39945:4;39983:3;39972:9;39968:19;39960:27;;39997:71;40065:1;40054:9;40050:17;40041:6;39997:71;:::i;:::-;40078:72;40146:2;40135:9;40131:18;40122:6;40078:72;:::i;:::-;40160:80;40236:2;40225:9;40221:18;40212:6;40160:80;:::i;:::-;40250;40326:2;40315:9;40311:18;40302:6;40250:80;:::i;:::-;40340:73;40408:3;40397:9;40393:19;40384:6;40340:73;:::i;:::-;40423;40491:3;40480:9;40476:19;40467:6;40423:73;:::i;:::-;39696:807;;;;;;;;;:::o;40509:143::-;40566:5;40597:6;40591:13;40582:22;;40613:33;40640:5;40613:33;:::i;:::-;40509:143;;;;:::o;40658:663::-;40746:6;40754;40762;40811:2;40799:9;40790:7;40786:23;40782:32;40779:119;;;40817:79;;:::i;:::-;40779:119;40937:1;40962:64;41018:7;41009:6;40998:9;40994:22;40962:64;:::i;:::-;40952:74;;40908:128;41075:2;41101:64;41157:7;41148:6;41137:9;41133:22;41101:64;:::i;:::-;41091:74;;41046:129;41214:2;41240:64;41296:7;41287:6;41276:9;41272:22;41240:64;:::i;:::-;41230:74;;41185:129;40658:663;;;;;:::o
Swarm Source
ipfs://1c33e8910b308f4c9406394262d86b95430ede9f14e7baf97943bb72b3fe589f
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.