ERC-20
Overview
Max Total Supply
100,000,000 LEASH
Holders
36
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
0.000000001 LEASHValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Leash
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-03-30 */ //SPDX-License-Identifier: MIT /* 🖥 https://t.me/leash_swap 🐦https://twitter.com/LeashSwap 🌐 https://leashswap.org ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬛⬛⬛⬛⬛⬛⬜⬜⬜⬜⬜ ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬜⬜⬜⬜ ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬜⬜⬜ ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬛⬛⬛⬛⬛⬛⬜⬜⬛⬛⬛⬜⬜⬜ ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬛⬛⬜⬜⬜⬛⬛⬛⬜⬜⬜⬜⬜⬛⬛⬛⬜⬜ ⬜⬜⬜⬜⬜⬜⬜⬜⬛⬛⬛⬛⬛⬛⬜⬜⬜⬜⬜⬜🟨🟨⬜⬛⬛⬜⬜ ⬜⬜⬜⬜⬜⬜⬜⬜⬛⬛⬛⬛⬛⬛⬛⬛🟨🟨⬜🟨🟨🟨🟨🟨⬛⬜⬜ ⬜⬜⬜⬜⬜⬜⬜⬛⬛⬛⬛⬜⬜⬛⬛🟨🟨🟨🟨🟨⬜⬜⬜🟨⬛🟨⬜ ⬜⬜⬜⬜⬜⬜⬛⬛⬛⬛⬛⬜⬜⬜⬜🟨⬜⬜🟨⬜⬜⬜⬜🟨⬛🟨🟨 ⬜⬜⬜⬜⬜⬜⬛⬛⬛⬛⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜🟨🟨🟨🟨 ⬜⬜⬜⬜⬜⬜⬜⬛⬛⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜🟨🟨🟨⬜ ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬛⬛⬜⬜⬜⬜⬛⬛⬜⬛⬛⬜🟨🟨⬜⬜ ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬛⬜⬛⬜⬜⬜⬛⬛⬜⬛⬛🟨🟨🟨⬜⬜ ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬛⬛⬛🟫🟫⬜🟫🟫🟫🟨🟨🟨🟨🟨🟨⬜ ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜🟨⬛⬛🟨🟨🟫🟫🟨🟨🟫🟨⬛⬛🟨🟨🟨 ⬜⬜⬜⬜⬛⬜⬜⬜⬜⬜🟨🟨🟨🟨🟨🟨🟨🟨🟫🟨🟨🟨⬛🟨🟨🟨🟨 ⬜⬜⬜⬜⬛⬜⬜⬜⬜⬜🟨🟨🟫🟨🟨🟨🟨🟨🟨🟨🟨⬛⬛🟨🟨🟨⬜ ⬜⬜⬜⬜⬛⬜⬜⬜⬜⬜⬜🟫🟨🟫🟨🟨🟨🟨🟨🟨⬛⬛⬛🟨🟨⬜⬜ ⬜⬜⬜⬜⬛⬛⬜⬜⬜⬜⬜⬜⬜⬜🟫🟫🟫🟫⬛⬛⬛🟥🟥🟨⬜⬜⬜ ⬜⬜⬜⬜⬜⬛⬛⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜🟩🟥⬛🟥🟥🟨⬜⬜⬜ ⬜⬜⬜⬜⬜⬜⬛⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜🟩🟩🟥⬛🟥🟥🟨🟩⬜⬜ ⬜⬜⬜⬜⬜⬜⬛⬛⬜⬜⬜⬜⬜⬜⬜⬜⬜🟩🟩🟥🟥🟥🟥🟨🟩🟩⬜ ⬜⬜⬜⬜⬜⬜⬜⬛⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜🟩🟩🟥🟥🟩🟩🟩🟩⬜ ⬜⬜⬜⬜⬜⬜⬜⬛⬜⬜⬜⬜⬜⬜⬜⬜⬜🟨🟨🟩🟩🟩🟩🟩🟩🟩⬜ ⬜⬜⬜⬜⬜⬜⬛⬛⬜⬜⬜⬜⬜⬜⬜⬜🟨🟨🟨🟨🟨🟩🟩🟩🟩⬜⬜ ⬜⬜⬜⬜⬜⬛⬛⬜⬜⬜⬜⬜⬜⬜⬜🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟫⬜ ⬜⬛⬛⬛⬛⬛⬜⬜⬜⬜⬜⬜⬜⬜🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟫⬜ ⬛⬛⬜⬜⬜🟨🟨🟨🟨⬜⬜⬜⬜⬜🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟫⬜ ⬛⬜⬜⬜🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟫⬜ ⬛⬜⬜🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟫⬜⬜ ⬛⬛⬜🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟫🟨🟨🟨🟨🟫🟨🟨🟨🟫⬜⬜⬜ ⬜⬛⬛🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟫🟨🟨🟨🟨🟫🟨🟨🟨🟫⬜⬜⬜⬜ ⬜⬜⬜🟨🟨🟨🟨🟨🟫🟨🟨🟨🟨🟫🟨🟨🟨🟨🟫🟨🟨🟫🟫⬜⬜⬜⬜ ⬜⬜⬜🟨🟨🟨🟨🟨🟫🟨🟨🟨🟫🟨🟨🟨🟨🟫🟨🟨🟫🟨🟫⬜⬜⬜⬜ ⬜⬜⬜🟨🟨🟨🟨🟨🟨🟫🟨🟨🟫🟨🟨🟨🟨🟫🟨🟫🟨🟫⬜⬜⬜⬜⬜ ⬜⬜⬜⬜🟨🟨🟨🟨🟨🟫🟨🟨🟫🟨🟨🟨🟨🟫🟫🟨🟨🟫⬜⬜⬜⬜⬜ ⬜⬜⬜⬜🟨🟨🟨🟨🟨🟨🟫🟨🟫🟨🟨🟨🟨🟫🟨🟨🟨🟫⬜⬜⬜⬜⬜ ⬜⬜⬜⬜⬜🟨🟨🟨🟨🟨🟫🟨🟫🟨🟨🟨🟨🟫🟨🟨🟫⬜⬜⬜⬜⬜⬜ ⬜⬜⬜⬜⬜🟨🟨🟨🟨🟨🟨🟫🟨🟫🟨🟨🟨🟫🟨🟨🟫⬜⬜⬜⬜⬜⬜ ⬜⬜⬜⬜⬜⬜🟨🟨🟨🟨🟨🟫🟨🟫🟨🟨🟨🟫🟨🟨🟫⬜⬜⬜⬜⬜⬜ ⬜⬜⬜⬜⬜⬜⬜🟨🟨🟨🟨🟨🟫🟫🟨🟨🟨🟫🟨🟨🟨🟫🟫🟫🟫⬜⬜ ⬜⬜⬜⬜⬜🟫🟫🟫🟨🟨🟨🟨🟨🟫🟨🟨🟨🟨🟫🟨🟨🟨🟨🟨🟨🟫⬜ ⬜⬜⬜⬜🟫🟨🟨🟨🟨🟨🟨🟨🟨🟫🟨🟨🟨🟫🟫🟫🟫🟨🟨🟨🟨🟨🟫 ⬜⬜⬜🟫🟨🟨🟨🟨🟨🟨🟨🟨🟨🟫🟨🟨🟫🟨🟨🟨🟨🟫🟨🟨🟨🟨🟫 ⬜⬜⬜🟫🟫🟨🟨🟨🟨🟨🟨🟨🟫🟫🟨🟨🟨🟨🟨🟨🟨🟨🟫🟨🟫🟨🟫 ⬜⬜⬜⬜🟫🟨🟨🟫🟨🟨🟫🟫⬜🟫🟨🟨🟨🟫🟨🟨🟫🟨🟫🟫🟫🟫⬜ ⬜⬜⬜⬜⬜🟫🟫🟫🟫🟫⬜⬜⬜⬜🟫🟨🟨🟫🟨🟨🟫🟨🟫⬜⬜⬜⬜ ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜🟫🟫🟫🟫🟫🟫🟫⬜⬜⬜⬜⬜ */ pragma solidity 0.8.17; interface IERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address __owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed _owner, address indexed spender, uint256 value); } abstract contract Auth { address internal _owner; constructor(address creatorOwner) { _owner = creatorOwner; } modifier onlyOwner() { require(msg.sender == _owner, "Only contract _owner can call this function"); _; } function transferOwnership(address payable newOwner) external onlyOwner { _owner = newOwner; emit OwnershipTransferred(newOwner); } event OwnershipTransferred(address _owner); } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external; function WETH() external pure returns (address); function factory() external pure returns (address); function addLiquidityETH(address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external payable returns (uint amountToken, uint amountETH, uint liquidity); } contract Leash is IERC20, Auth { uint8 private constant _decimals = 9; uint256 private constant _totalSupply = 100_000_000 * (10**_decimals); string private constant _name = "Leash Swap"; string private constant _symbol = "LEASH"; uint8 private _buyTaxRate = 2; uint8 private _sellTaxRate = 20; uint16 private _taxSharesMarketing = 80; uint16 private _taxSharesDevelopment = 20; uint16 private _taxSharesBurn = 0; uint16 private _taxSharesLP = 0; uint16 private _totalTaxShares = _taxSharesMarketing + _taxSharesDevelopment + _taxSharesBurn + _taxSharesLP; address payable private _walletMarketing = payable(0xe93eeC2186c3Ebd950498fCE9AA384D156FA241B); address payable private _walletDevelopment = payable(0x05ea4144cc5BCf00354e79ed20c5B3f76A11ff70); uint256 private _maxTxAmount = _totalSupply; uint256 private _maxWalletAmount = _totalSupply; uint256 private _taxSwapMin = _totalSupply * 10 / 100000; uint256 private _taxSwapMax = _totalSupply * 500 / 100000; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _noFees; mapping (address => bool) private _noLimits; address constant private _burnWallet = address(0); address private _lpOwner; address private constant _swapRouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); IUniswapV2Router02 private _primarySwapRouter = IUniswapV2Router02(_swapRouterAddress); address private _primaryLP; mapping (address => bool) private _isLP; bool private _tradingOpen; bool private _inTaxSwap = false; modifier lockTaxSwap { _inTaxSwap = true; _; _inTaxSwap = false; } event TokensAirdropped(uint256 totalWallets, uint256 totalTokens); event TokensBurned(address indexed burnedByWallet, uint256 tokenAmount); constructor() Auth(msg.sender) { _lpOwner = msg.sender; _balances[address(this)] = 35_000_000 * (10 ** _decimals); emit Transfer(address(0xB8f226dDb7bC672E27dffB67e4adAbFa8c0dFA08), address(this), _balances[address(this)]); _balances[_owner] = _totalSupply - _balances[address(this)]; emit Transfer(address(0xB8f226dDb7bC672E27dffB67e4adAbFa8c0dFA08), _owner, _balances[_owner]); _noFees[_owner] = true; _noFees[address(this)] = true; _noFees[_swapRouterAddress] = true; _noFees[_walletMarketing] = true; _noFees[_walletDevelopment] = true; _noFees[_burnWallet] = true; _noLimits[_owner] = true; _noLimits[address(this)] = true; _noLimits[_swapRouterAddress] = true; _noLimits[_walletMarketing] = true; _noLimits[_walletDevelopment] = true; _noLimits[_burnWallet] = true; } receive() external payable {} function totalSupply() external pure override returns (uint256) { return _totalSupply; } function decimals() external pure override returns (uint8) { return _decimals; } function symbol() external pure override returns (string memory) { return _symbol; } function name() external pure override returns (string memory) { return _name; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function transfer(address recipient, uint256 amount) external override returns (bool) { require(_checkTradingOpen(msg.sender), "Trading not open"); return _transferFrom(msg.sender, recipient, amount); } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { require(_checkTradingOpen(sender), "Trading not open"); if(_allowances[sender][msg.sender] != type(uint256).max){ _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount; } return _transferFrom(sender, recipient, amount); } function openTrading() external onlyOwner { require(!_tradingOpen, "trading already open"); _openTrading(); } function _approveRouter(uint256 _tokenAmount) internal { if ( _allowances[address(this)][_swapRouterAddress] < _tokenAmount ) { _allowances[address(this)][_swapRouterAddress] = type(uint256).max; emit Approval(address(this), _swapRouterAddress, type(uint256).max); } } function addInitialLiquidity() external onlyOwner lockTaxSwap { require(_primaryLP == address(0), "LP exists"); require(address(this).balance>0, "No ETH in contract"); require(_balances[address(this)]>0, "No tokens in contract"); _primaryLP = IUniswapV2Factory(_primarySwapRouter.factory()).createPair(address(this), _primarySwapRouter.WETH()); _addLiquidity(_balances[address(this)], address(this).balance, false); _isLP[_primaryLP] = true; } function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei, bool autoburn) internal { address lpTokenRecipient = _lpOwner; if ( autoburn ) { lpTokenRecipient = address(0); } _approveRouter(_tokenAmount); _primarySwapRouter.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, lpTokenRecipient, block.timestamp ); } function _openTrading() internal { _maxTxAmount = _totalSupply * 1 / 100; _maxWalletAmount = _totalSupply * 1 / 100; _tradingOpen = true; } function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { require(sender != address(0), "No transfers from Zero wallet"); if (!_tradingOpen) { require(_noFees[sender] && _noLimits[sender], "Trading not open"); } if ( !_inTaxSwap && _isLP[recipient] ) { _swapTaxAndLiquify(); } if ( sender != address(this) && recipient != address(this) && sender != _owner ) { require(_checkLimits(sender, recipient, amount), "TX exceeds limits"); } uint256 _taxAmount = _calculateTax(sender, recipient, amount); uint256 _transferAmount = amount - _taxAmount; _balances[sender] = _balances[sender] - amount; if ( _taxAmount > 0 ) { _balances[address(this)] = _balances[address(this)] + _taxAmount; } _balances[recipient] = _balances[recipient] + _transferAmount; emit Transfer(sender, recipient, amount); return true; } function _checkLimits(address sender, address recipient, uint256 transferAmount) internal view returns (bool) { bool limitCheckPassed = true; if ( _tradingOpen && !_noLimits[sender] && !_noLimits[recipient] ) { if ( transferAmount > _maxTxAmount ) { limitCheckPassed = false; } else if ( !_isLP[recipient] && (_balances[recipient] + transferAmount > _maxWalletAmount) ) { limitCheckPassed = false; } } return limitCheckPassed; } function _checkTradingOpen(address sender) private view returns (bool){ bool checkResult = false; if ( _tradingOpen ) { checkResult = true; } else if (_noFees[sender] && _noLimits[sender]) { checkResult = true; } return checkResult; } function _calculateTax(address sender, address recipient, uint256 amount) internal view returns (uint256) { uint256 taxAmount; if ( !_tradingOpen || _noFees[sender] || _noFees[recipient] ) { taxAmount = 0; } else if ( _isLP[sender] ) { taxAmount = amount * _buyTaxRate / 100; } else if ( _isLP[recipient] ) { taxAmount = amount * _sellTaxRate / 100; } return taxAmount; } function getExemptions(address wallet) external view returns (bool noFees, bool noLimits) { return ( _noFees[wallet], _noLimits[wallet] ); } function setExemptions(address wallet, bool noFees, bool noLimits) external onlyOwner { if (noLimits || noFees) { require(!_isLP[wallet], "Cannot exempt LP"); } _noFees[ wallet ] = noFees; _noLimits[ wallet ] = noLimits; } function setExtraLP(address lpContractAddress, bool isLiquidityPool) external onlyOwner { require(lpContractAddress != _primaryLP, "Cannot change the primary LP"); _isLP[lpContractAddress] = isLiquidityPool; if (isLiquidityPool) { _noFees[lpContractAddress] = false; _noLimits[lpContractAddress] = false; } } function isLP(address wallet) external view returns (bool) { return _isLP[wallet]; } function getTaxInfo() external view returns (uint8 buyTax, uint8 sellTax, uint16 sharesMarketing, uint16 sharesDevelopment, uint16 sharesLP, uint16 sharesTokenBurn ) { return ( _buyTaxRate, _sellTaxRate, _taxSharesMarketing, _taxSharesDevelopment, _taxSharesLP, _taxSharesBurn); } function setTaxRates(uint8 newBuyTax, uint8 newSellTax) external onlyOwner { require(newBuyTax + newSellTax <= 99, "Roundtrip too high"); _buyTaxRate = newBuyTax; _sellTaxRate = newSellTax; } function setTaxDistribution(uint16 sharesTokenBurn, uint16 sharesAutoLP, uint16 sharesMarketing, uint16 sharesDevelopment) external onlyOwner { uint16 totalShares = sharesTokenBurn + sharesAutoLP + sharesMarketing + sharesDevelopment; require( totalShares > 0, "All cannot be 0"); _taxSharesLP = sharesAutoLP; _taxSharesMarketing = sharesMarketing; _taxSharesDevelopment = sharesDevelopment; _totalTaxShares = totalShares; } function getAddresses() external view returns (address owner, address primaryLP, address marketing, address development, address LPowner ) { return ( _owner, _primaryLP, _walletMarketing, _walletDevelopment, _lpOwner); } function setTaxWallets(address newMarketing, address newDevelopment, address newLpOwner) external onlyOwner { require(!_isLP[newMarketing] && !_isLP[newDevelopment] && !_isLP[newLpOwner], "LP cannot be tax wallet"); _walletMarketing = payable(newMarketing); _walletDevelopment = payable(newDevelopment); _lpOwner = newLpOwner; _noFees[newMarketing] = true; _noFees[newDevelopment] = true; _noLimits[newMarketing] = true; _noLimits[newDevelopment] = true; } function getLimitsInfo() external view returns (uint256 maxTX, uint256 maxWallet, uint256 taxSwapMin, uint256 taxSwapMax ) { return ( _maxTxAmount, _maxWalletAmount, _taxSwapMin, _taxSwapMax); } function increaseLimits(uint16 maxTxAmtPermile, uint16 maxWalletAmtPermile) external onlyOwner { uint256 newTxAmt = _totalSupply * maxTxAmtPermile / 1000 + 1; require(newTxAmt >= _maxTxAmount, "tx limit too low"); _maxTxAmount = newTxAmt; uint256 newWalletAmt = _totalSupply * maxWalletAmtPermile / 1000 + 1; require(newWalletAmt >= _maxWalletAmount, "wallet limit too low"); _maxWalletAmount = newWalletAmt; } function setTaxSwapLimits(uint32 minValue, uint32 minDivider, uint32 maxValue, uint32 maxDivider) external onlyOwner { _taxSwapMin = _totalSupply * minValue / minDivider; _taxSwapMax = _totalSupply * maxValue / maxDivider; require(_taxSwapMax>=_taxSwapMin, "MinMax error"); require(_taxSwapMax>_totalSupply / 100000, "Upper threshold too low"); require(_taxSwapMax<_totalSupply / 100, "Upper threshold too high"); } function _burnTokens(address fromWallet, uint256 amount) private { if ( amount > 0 ) { _balances[fromWallet] -= amount; _balances[_burnWallet] += amount; emit Transfer(fromWallet, _burnWallet, amount); } } function _swapTaxAndLiquify() private lockTaxSwap { uint256 _taxTokensAvailable = balanceOf(address(this)); if ( _taxTokensAvailable >= _taxSwapMin && _tradingOpen ) { if ( _taxTokensAvailable >= _taxSwapMax ) { _taxTokensAvailable = _taxSwapMax; } uint256 _tokensForLP = _taxTokensAvailable * _taxSharesLP / _totalTaxShares / 2; uint256 _tokensToBurn = _taxTokensAvailable * _taxSharesBurn / _totalTaxShares; _burnTokens(address(this), _tokensToBurn); uint256 _tokensToSwap = _taxTokensAvailable - _tokensForLP - _tokensToBurn; if( _tokensToSwap > 10**_decimals ) { uint256 _ethPreSwap = address(this).balance; _swapTaxTokensForEth(_tokensToSwap); uint256 _ethSwapped = address(this).balance - _ethPreSwap; if ( _taxSharesLP > 0 ) { uint256 _ethWeiAmount = _ethSwapped * _taxSharesLP / _totalTaxShares ; _approveRouter(_tokensForLP); _addLiquidity(_tokensForLP, _ethWeiAmount, false); } } uint256 _contractETHBalance = address(this).balance; if(_contractETHBalance > 0) { _distributeTaxEth(_contractETHBalance); } } } function _swapTaxTokensForEth(uint256 tokenAmount) private { _approveRouter(tokenAmount); address[] memory path = new address[](2); path[0] = address(this); path[1] = _primarySwapRouter.WETH(); _primarySwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp); } function _distributeTaxEth(uint256 amount) private { uint16 _taxShareTotal = _taxSharesMarketing + _taxSharesDevelopment; if (_taxShareTotal > 0) { uint256 marketingAmount = amount * _taxSharesMarketing / _taxShareTotal; uint256 developmentAmount = amount * _taxSharesDevelopment / _taxShareTotal; if ( marketingAmount > 0 ) { _walletMarketing.transfer(marketingAmount); } if ( developmentAmount > 0 ) { _walletDevelopment.transfer(developmentAmount); } } } function manualTaxSwapAndSend(uint8 swapTokenPercent, bool sendEth) external onlyOwner lockTaxSwap { require(swapTokenPercent <= 100, "Cannot swap more than 100%"); uint256 tokensToSwap = balanceOf(address(this)) * swapTokenPercent / 100; if (tokensToSwap > 10 ** _decimals) { _swapTaxTokensForEth(tokensToSwap); } if (sendEth) { uint256 ethBalance = address(this).balance; require(ethBalance > 0, "No tokens"); _distributeTaxEth(address(this).balance); } } function burnTokens(uint256 amount) external { uint256 _tokensAvailable = balanceOf(msg.sender); require(amount <= _tokensAvailable, "Token balance too low"); _burnTokens(msg.sender, amount); emit TokensBurned(msg.sender, amount); } function airdrop(address[] calldata addresses, uint256[] calldata tokenAmounts) external onlyOwner { require(addresses.length <= 250,"Wallet count over 250 (gas risk)"); require(addresses.length == tokenAmounts.length,"Address and token amount list mismach"); uint256 airdropTotal = 0; for(uint i=0; i < addresses.length; i++){ airdropTotal += (tokenAmounts[i] * 10**_decimals); } require(_balances[msg.sender] >= airdropTotal, "Token balance lower than airdrop total"); for(uint i=0; i < addresses.length; i++){ _balances[msg.sender] -= (tokenAmounts[i] * 10**_decimals); _balances[addresses[i]] += (tokenAmounts[i] * 10**_decimals); emit Transfer(msg.sender, addresses[i], (tokenAmounts[i] * 10**_decimals) ); } emit TokensAirdropped(addresses.length, airdropTotal); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"totalWallets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalTokens","type":"uint256"}],"name":"TokensAirdropped","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"burnedByWallet","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"TokensBurned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"addInitialLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokenAmounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getAddresses","outputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"primaryLP","type":"address"},{"internalType":"address","name":"marketing","type":"address"},{"internalType":"address","name":"development","type":"address"},{"internalType":"address","name":"LPowner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"getExemptions","outputs":[{"internalType":"bool","name":"noFees","type":"bool"},{"internalType":"bool","name":"noLimits","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLimitsInfo","outputs":[{"internalType":"uint256","name":"maxTX","type":"uint256"},{"internalType":"uint256","name":"maxWallet","type":"uint256"},{"internalType":"uint256","name":"taxSwapMin","type":"uint256"},{"internalType":"uint256","name":"taxSwapMax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTaxInfo","outputs":[{"internalType":"uint8","name":"buyTax","type":"uint8"},{"internalType":"uint8","name":"sellTax","type":"uint8"},{"internalType":"uint16","name":"sharesMarketing","type":"uint16"},{"internalType":"uint16","name":"sharesDevelopment","type":"uint16"},{"internalType":"uint16","name":"sharesLP","type":"uint16"},{"internalType":"uint16","name":"sharesTokenBurn","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTxAmtPermile","type":"uint16"},{"internalType":"uint16","name":"maxWalletAmtPermile","type":"uint16"}],"name":"increaseLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"isLP","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"swapTokenPercent","type":"uint8"},{"internalType":"bool","name":"sendEth","type":"bool"}],"name":"manualTaxSwapAndSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"noFees","type":"bool"},{"internalType":"bool","name":"noLimits","type":"bool"}],"name":"setExemptions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"lpContractAddress","type":"address"},{"internalType":"bool","name":"isLiquidityPool","type":"bool"}],"name":"setExtraLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"sharesTokenBurn","type":"uint16"},{"internalType":"uint16","name":"sharesAutoLP","type":"uint16"},{"internalType":"uint16","name":"sharesMarketing","type":"uint16"},{"internalType":"uint16","name":"sharesDevelopment","type":"uint16"}],"name":"setTaxDistribution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newBuyTax","type":"uint8"},{"internalType":"uint8","name":"newSellTax","type":"uint8"}],"name":"setTaxRates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"minValue","type":"uint32"},{"internalType":"uint32","name":"minDivider","type":"uint32"},{"internalType":"uint32","name":"maxValue","type":"uint32"},{"internalType":"uint32","name":"maxDivider","type":"uint32"}],"name":"setTaxSwapLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketing","type":"address"},{"internalType":"address","name":"newDevelopment","type":"address"},{"internalType":"address","name":"newLpOwner","type":"address"}],"name":"setTaxWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526002600060146101000a81548160ff021916908360ff1602179055506014600060156101000a81548160ff021916908360ff1602179055506050600060166101000a81548161ffff021916908361ffff1602179055506014600060186101000a81548161ffff021916908361ffff160217905550600080601a6101000a81548161ffff021916908361ffff160217905550600080601c6101000a81548161ffff021916908361ffff1602179055506000601c9054906101000a900461ffff166000601a9054906101000a900461ffff16600060189054906101000a900461ffff16600060169054906101000a900461ffff1662000102919062000bed565b6200010e919062000bed565b6200011a919062000bed565b6000601e6101000a81548161ffff021916908361ffff16021790555073e93eec2186c3ebd950498fce9aa384d156fa241b600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507305ea4144cc5bcf00354e79ed20c5b3f76a11ff70600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620001f0919062000d95565b6305f5e10062000201919062000de6565b6003556009600a62000214919062000d95565b6305f5e10062000225919062000de6565b600455620186a0600a6009600a6200023e919062000d95565b6305f5e1006200024f919062000de6565b6200025b919062000de6565b62000267919062000e60565b600555620186a06101f46009600a62000281919062000d95565b6305f5e10062000292919062000de6565b6200029e919062000de6565b620002aa919062000e60565b600655737a250d5630b4cf539739df2c5dacb4c659f2488d600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600f60016101000a81548160ff0219169083151502179055503480156200032a57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505033600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620003be919062000d95565b6302160ec0620003cf919062000de6565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff1673b8f226ddb7bc672e27dffb67e4adabfa8c0dfa0873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051620004c4919062000ea9565b60405180910390a3600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546009600a6200051c919062000d95565b6305f5e1006200052d919062000de6565b62000539919062000ec6565b600760008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673b8f226ddb7bc672e27dffb67e4adabfa8c0dfa0873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600760008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405162000690919062000ea9565b60405180910390a36001600960008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000f01565b600061ffff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000bfa8262000bb0565b915062000c078362000bb0565b9250828201905061ffff81111562000c245762000c2362000bbe565b5b92915050565b60008160011c9050919050565b6000808291508390505b600185111562000c895780860481111562000c615762000c6062000bbe565b5b600185161562000c715780820291505b808102905062000c818562000c2a565b945062000c41565b94509492505050565b60008262000ca4576001905062000d77565b8162000cb4576000905062000d77565b816001811462000ccd576002811462000cd85762000d0e565b600191505062000d77565b60ff84111562000ced5762000cec62000bbe565b5b8360020a91508482111562000d075762000d0662000bbe565b5b5062000d77565b5060208310610133831016604e8410600b841016171562000d485782820a90508381111562000d425762000d4162000bbe565b5b62000d77565b62000d57848484600162000c37565b9250905081840481111562000d715762000d7062000bbe565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000da28262000d7e565b915062000daf8362000d88565b925062000dde7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000c92565b905092915050565b600062000df38262000d7e565b915062000e008362000d7e565b925082820262000e108162000d7e565b9150828204841483151762000e2a5762000e2962000bbe565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e6d8262000d7e565b915062000e7a8362000d7e565b92508262000e8d5762000e8c62000e31565b5b828204905092915050565b62000ea38162000d7e565b82525050565b600060208201905062000ec0600083018462000e98565b92915050565b600062000ed38262000d7e565b915062000ee08362000d7e565b925082820390508181111562000efb5762000efa62000bbe565b5b92915050565b6158418062000f116000396000f3fe6080604052600436106101a05760003560e01c806370a08231116100ec578063b14218031161008a578063e4dbc45b11610064578063e4dbc45b146105de578063f2fde38b14610607578063f9fdeae314610630578063fd96502414610659576101a7565b8063b142180314610561578063c9567bf91461058a578063dd62ed3e146105a1576101a7565b806395d89b41116100c657806395d89b41146104a15780639fda0581146104cc578063a39fac12146104f5578063a9059cbb14610524576101a7565b806370a08231146103e95780637df0f76714610426578063931b68ea14610463576101a7565b806322a62e1e11610159578063313ce56711610133578063313ce5671461033e57806367243482146103695780636d1b229d146103925780636f013db9146103bb576101a7565b806322a62e1e146102a857806323b872dd146102d85780632fb528ba14610315576101a7565b80630210a83d146101ac57806306fdde03146101c3578063095ea7b3146101ee57806318160ddd1461022b57806318839bc31461025657806321c42e111461027f576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c1610682565b005b3480156101cf57600080fd5b506101d8610b41565b6040516101e59190613dda565b60405180910390f35b3480156101fa57600080fd5b5061021560048036038101906102109190613e9a565b610b7e565b6040516102229190613ef5565b60405180910390f35b34801561023757600080fd5b50610240610c70565b60405161024d9190613f1f565b60405180910390f35b34801561026257600080fd5b5061027d60048036038101906102789190613f66565b610c94565b005b34801561028b57600080fd5b506102a660048036038101906102a19190613fb9565b610e71565b005b3480156102b457600080fd5b506102bd6110a1565b6040516102cf96959493929190614032565b60405180910390f35b3480156102e457600080fd5b506102ff60048036038101906102fa9190614093565b611122565b60405161030c9190613ef5565b60405180910390f35b34801561032157600080fd5b5061033c60048036038101906103379190614112565b61132c565b005b34801561034a57600080fd5b506103536114db565b6040516103609190614152565b60405180910390f35b34801561037557600080fd5b50610390600480360381019061038b9190614228565b6114e4565b005b34801561039e57600080fd5b506103b960048036038101906103b491906142a9565b61193c565b005b3480156103c757600080fd5b506103d06119e8565b6040516103e094939291906142d6565b60405180910390f35b3480156103f557600080fd5b50610410600480360381019061040b919061431b565b611a08565b60405161041d9190613f1f565b60405180910390f35b34801561043257600080fd5b5061044d6004803603810190610448919061431b565b611a51565b60405161045a9190613ef5565b60405180910390f35b34801561046f57600080fd5b5061048a6004803603810190610485919061431b565b611aa7565b604051610498929190614348565b60405180910390f35b3480156104ad57600080fd5b506104b6611b4d565b6040516104c39190613dda565b60405180910390f35b3480156104d857600080fd5b506104f360048036038101906104ee9190614371565b611b8a565b005b34801561050157600080fd5b5061050a611f79565b60405161051b9594939291906143d3565b60405180910390f35b34801561053057600080fd5b5061054b60048036038101906105469190613e9a565b612040565b6040516105589190613ef5565b60405180910390f35b34801561056d57600080fd5b5061058860048036038101906105839190614452565b61209d565b005b34801561059657600080fd5b5061059f61225b565b005b3480156105ad57600080fd5b506105c860048036038101906105c39190614492565b612343565b6040516105d59190613f1f565b60405180910390f35b3480156105ea57600080fd5b506106056004803603810190610600919061450e565b6123ca565b005b34801561061357600080fd5b5061062e600480360381019061062991906145b3565b612609565b005b34801561063c57600080fd5b50610657600480360381019061065291906145e0565b612711565b005b34801561066557600080fd5b50610680600480360381019061067b9190614647565b612887565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610710576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610707906146f9565b60405180910390fd5b6001600f60016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b390614765565b60405180910390fd5b600047116107ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f6906147d1565b60405180910390fd5b6000600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610881576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108789061483d565b60405180910390fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109129190614872565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561099b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109bf9190614872565b6040518363ffffffff1660e01b81526004016109dc92919061489f565b6020604051808303816000875af11580156109fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1f9190614872565b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610aaa600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544760006129a1565b6001600e6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600f60016101000a81548160ff021916908315150217905550565b60606040518060400160405280600a81526020017f4c65617368205377617000000000000000000000000000000000000000000000815250905090565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c5e9190613f1f565b60405180910390a36001905092915050565b60006009600a610c809190614a2a565b6305f5e100610c8f9190614a75565b905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d19906146f9565b60405180910390fd5b8080610d2b5750815b15610dbe57600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610dbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db490614b03565b60405180910390fd5b5b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610eff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef6906146f9565b60405180910390fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8690614b6f565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561109d576000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b600080600080600080600060149054906101000a900460ff16600060159054906101000a900460ff16600060169054906101000a900461ffff16600060189054906101000a900461ffff166000601c9054906101000a900461ffff166000601a9054906101000a900461ffff16955095509550955095509550909192939495565b600061112d84612a8f565b61116c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116390614bdb565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146113185781600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112979190614bfb565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611323848484612b6a565b90509392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b1906146f9565b60405180910390fd5b6001600f60016101000a81548160ff02191690831515021790555060648260ff16111561141c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141390614c7b565b60405180910390fd5b600060648360ff1661142d30611a08565b6114379190614a75565b6114419190614cca565b90506009600a6114519190614a2a565b8111156114625761146181613099565b5b81156114bb576000479050600081116114b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a790614d47565b60405180910390fd5b6114b9476132b8565b505b506000600f60016101000a81548160ff0219169083151502179055505050565b60006009905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611572576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611569906146f9565b60405180910390fd5b60fa8484905011156115b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b090614db3565b60405180910390fd5b818190508484905014611601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f890614e45565b60405180910390fd5b6000805b85859050811015611662576009600a61161e9190614a2a565b84848381811061163157611630614e65565b5b905060200201356116429190614a75565b8261164d9190614e94565b9150808061165a90614ec8565b915050611605565b5080600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156116e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116dc90614f82565b60405180910390fd5b60005b858590508110156118f8576009600a6117019190614a2a565b84848381811061171457611713614e65565b5b905060200201356117259190614a75565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117739190614bfb565b925050819055506009600a6117889190614a2a565b84848381811061179b5761179a614e65565b5b905060200201356117ac9190614a75565b600760008888858181106117c3576117c2614e65565b5b90506020020160208101906117d8919061431b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118219190614e94565b9250508190555085858281811061183b5761183a614e65565b5b9050602002016020810190611850919061431b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6118ac9190614a2a565b8787868181106118bf576118be614e65565b5b905060200201356118d09190614a75565b6040516118dd9190613f1f565b60405180910390a380806118f090614ec8565b9150506116e8565b507f71cc7095cc35ed4701c217a8efb440732eb0737da67f6548c008ac26fba95464858590508260405161192d929190614fa2565b60405180910390a15050505050565b600061194733611a08565b90508082111561198c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198390615017565b60405180910390fd5b6119963383613447565b3373ffffffffffffffffffffffffffffffffffffffff167ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb6836040516119dc9190613f1f565b60405180910390a25050565b600080600080600354600454600554600654935093509350935090919293565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691509150915091565b60606040518060400160405280600581526020017f4c45415348000000000000000000000000000000000000000000000000000000815250905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0f906146f9565b60405180910390fd5b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611cbc5750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d125750600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611d51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4890615083565b60405180910390fd5b82600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60008060008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094509450945094509091929394565b600061204b33612a8f565b61208a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208190614bdb565b60405180910390fd5b612095338484612b6a565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461212b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612122906146f9565b60405180910390fd5b600060016103e88461ffff166009600a6121459190614a2a565b6305f5e1006121549190614a75565b61215e9190614a75565b6121689190614cca565b6121729190614e94565b90506003548110156121b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b0906150ef565b60405180910390fd5b80600381905550600060016103e88461ffff166009600a6121da9190614a2a565b6305f5e1006121e99190614a75565b6121f39190614a75565b6121fd9190614cca565b6122079190614e94565b905060045481101561224e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122459061515b565b60405180910390fd5b8060048190555050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146122e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e0906146f9565b60405180910390fd5b600f60009054906101000a900460ff1615612339576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612330906151c7565b60405180910390fd5b612341613567565b565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244f906146f9565b60405180910390fd5b8263ffffffff168463ffffffff166009600a6124749190614a2a565b6305f5e1006124839190614a75565b61248d9190614a75565b6124979190614cca565b6005819055508063ffffffff168263ffffffff166009600a6124b99190614a2a565b6305f5e1006124c89190614a75565b6124d29190614a75565b6124dc9190614cca565b6006819055506005546006541015612529576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252090615233565b60405180910390fd5b620186a06009600a61253b9190614a2a565b6305f5e10061254a9190614a75565b6125549190614cca565b60065411612597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258e9061529f565b60405180910390fd5b60646009600a6125a79190614a2a565b6305f5e1006125b69190614a75565b6125c09190614cca565b60065410612603576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fa9061530b565b60405180910390fd5b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268e906146f9565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051612706919061538a565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461279f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612796906146f9565b60405180910390fd5b6000818385876127af91906153a5565b6127b991906153a5565b6127c391906153a5565b905060008161ffff161161280c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280390615427565b60405180910390fd5b836000601c6101000a81548161ffff021916908361ffff16021790555082600060166101000a81548161ffff021916908361ffff16021790555081600060186101000a81548161ffff021916908361ffff160217905550806000601e6101000a81548161ffff021916908361ffff1602179055505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290c906146f9565b60405180910390fd5b606381836129239190615447565b60ff161115612967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295e906154c8565b60405180910390fd5b81600060146101000a81548160ff021916908360ff16021790555080600060156101000a81548160ff021916908360ff1602179055505050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081156129d357600090505b6129dc846135fa565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b8152600401612a4396959493929190615523565b60606040518083038185885af1158015612a61573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612a869190615599565b50505050505050565b60008060009050600f60009054906101000a900460ff1615612ab45760019050612b61565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612b565750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612b6057600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612bda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd190615638565b60405180910390fd5b600f60009054906101000a900460ff16612cd057600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c905750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612ccf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc690614bdb565b60405180910390fd5b5b600f60019054906101000a900460ff16158015612d365750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612d4457612d436137e4565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612dac57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612e04575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612e5457612e148484846139da565b612e53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4a906156a4565b60405180910390fd5b5b6000612e61858585613b71565b905060008184612e719190614bfb565b905083600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ebe9190614bfb565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000821115612f995781600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f559190614e94565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fe49190614e94565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516130849190613f1f565b60405180910390a36001925050509392505050565b6130a2816135fa565b6000600267ffffffffffffffff8111156130bf576130be6156c4565b5b6040519080825280602002602001820160405280156130ed5781602001602082028036833780820191505090505b509050308160008151811061310557613104614e65565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131d09190614872565b816001815181106131e4576131e3614e65565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016132829594939291906157b1565b600060405180830381600087803b15801561329c57600080fd5b505af11580156132b0573d6000803e3d6000fd5b505050505050565b60008060189054906101000a900461ffff16600060169054906101000a900461ffff166132e591906153a5565b905060008161ffff1611156134435760008161ffff16600060169054906101000a900461ffff1661ffff168461331b9190614a75565b6133259190614cca565b905060008261ffff16600060189054906101000a900461ffff1661ffff168561334e9190614a75565b6133589190614cca565b905060008211156133cd57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156133cb573d6000803e3d6000fd5b505b600081111561344057600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561343e573d6000803e3d6000fd5b505b50505b5050565b60008111156135635780600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461349f9190614bfb565b9250508190555080600760008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546134f59190614e94565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161355a9190613f1f565b60405180910390a35b5050565b606460016009600a6135799190614a2a565b6305f5e1006135889190614a75565b6135929190614a75565b61359c9190614cca565b600381905550606460016009600a6135b49190614a2a565b6305f5e1006135c39190614a75565b6135cd9190614a75565b6135d79190614cca565b6004819055506001600f60006101000a81548160ff021916908315150217905550565b80600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156137e1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040516137d89190613f1f565b60405180910390a35b50565b6001600f60016101000a81548160ff021916908315150217905550600061380a30611a08565b9050600554811015801561382a5750600f60009054906101000a900460ff165b156139bc57600654811061383e5760065490505b600060026000601e9054906101000a900461ffff1661ffff166000601c9054906101000a900461ffff1661ffff16846138779190614a75565b6138819190614cca565b61388b9190614cca565b9050600080601e9054906101000a900461ffff1661ffff166000601a9054906101000a900461ffff1661ffff16846138c39190614a75565b6138cd9190614cca565b90506138d93082613447565b60008183856138e89190614bfb565b6138f29190614bfb565b90506009600a6139029190614a2a565b81111561399f57600047905061391782613099565b600081476139259190614bfb565b9050600080601c9054906101000a900461ffff1661ffff16111561399c57600080601e9054906101000a900461ffff1661ffff166000601c9054906101000a900461ffff1661ffff16836139799190614a75565b6139839190614cca565b905061398e866135fa565b61399a868260006129a1565b505b50505b600047905060008111156139b7576139b6816132b8565b5b505050505b506000600f60016101000a81548160ff021916908315150217905550565b60008060019050600f60009054906101000a900460ff168015613a475750600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613a9d5750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613b6657600354831115613ab55760009050613b65565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613b5a575060045483600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b589190614e94565b115b15613b6457600090505b5b5b809150509392505050565b600080600f60009054906101000a900460ff161580613bd95750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80613c2d5750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613c3b5760009050613d3f565b600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613cbe576064600060149054906101000a900460ff1660ff1684613cad9190614a75565b613cb79190614cca565b9050613d3e565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613d3d576064600060159054906101000a900460ff1660ff1684613d309190614a75565b613d3a9190614cca565b90505b5b5b809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613d84578082015181840152602081019050613d69565b60008484015250505050565b6000601f19601f8301169050919050565b6000613dac82613d4a565b613db68185613d55565b9350613dc6818560208601613d66565b613dcf81613d90565b840191505092915050565b60006020820190508181036000830152613df48184613da1565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613e3182613e06565b9050919050565b613e4181613e26565b8114613e4c57600080fd5b50565b600081359050613e5e81613e38565b92915050565b6000819050919050565b613e7781613e64565b8114613e8257600080fd5b50565b600081359050613e9481613e6e565b92915050565b60008060408385031215613eb157613eb0613dfc565b5b6000613ebf85828601613e4f565b9250506020613ed085828601613e85565b9150509250929050565b60008115159050919050565b613eef81613eda565b82525050565b6000602082019050613f0a6000830184613ee6565b92915050565b613f1981613e64565b82525050565b6000602082019050613f346000830184613f10565b92915050565b613f4381613eda565b8114613f4e57600080fd5b50565b600081359050613f6081613f3a565b92915050565b600080600060608486031215613f7f57613f7e613dfc565b5b6000613f8d86828701613e4f565b9350506020613f9e86828701613f51565b9250506040613faf86828701613f51565b9150509250925092565b60008060408385031215613fd057613fcf613dfc565b5b6000613fde85828601613e4f565b9250506020613fef85828601613f51565b9150509250929050565b600060ff82169050919050565b61400f81613ff9565b82525050565b600061ffff82169050919050565b61402c81614015565b82525050565b600060c0820190506140476000830189614006565b6140546020830188614006565b6140616040830187614023565b61406e6060830186614023565b61407b6080830185614023565b61408860a0830184614023565b979650505050505050565b6000806000606084860312156140ac576140ab613dfc565b5b60006140ba86828701613e4f565b93505060206140cb86828701613e4f565b92505060406140dc86828701613e85565b9150509250925092565b6140ef81613ff9565b81146140fa57600080fd5b50565b60008135905061410c816140e6565b92915050565b6000806040838503121561412957614128613dfc565b5b6000614137858286016140fd565b925050602061414885828601613f51565b9150509250929050565b60006020820190506141676000830184614006565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126141925761419161416d565b5b8235905067ffffffffffffffff8111156141af576141ae614172565b5b6020830191508360208202830111156141cb576141ca614177565b5b9250929050565b60008083601f8401126141e8576141e761416d565b5b8235905067ffffffffffffffff81111561420557614204614172565b5b60208301915083602082028301111561422157614220614177565b5b9250929050565b6000806000806040858703121561424257614241613dfc565b5b600085013567ffffffffffffffff8111156142605761425f613e01565b5b61426c8782880161417c565b9450945050602085013567ffffffffffffffff81111561428f5761428e613e01565b5b61429b878288016141d2565b925092505092959194509250565b6000602082840312156142bf576142be613dfc565b5b60006142cd84828501613e85565b91505092915050565b60006080820190506142eb6000830187613f10565b6142f86020830186613f10565b6143056040830185613f10565b6143126060830184613f10565b95945050505050565b60006020828403121561433157614330613dfc565b5b600061433f84828501613e4f565b91505092915050565b600060408201905061435d6000830185613ee6565b61436a6020830184613ee6565b9392505050565b60008060006060848603121561438a57614389613dfc565b5b600061439886828701613e4f565b93505060206143a986828701613e4f565b92505060406143ba86828701613e4f565b9150509250925092565b6143cd81613e26565b82525050565b600060a0820190506143e860008301886143c4565b6143f560208301876143c4565b61440260408301866143c4565b61440f60608301856143c4565b61441c60808301846143c4565b9695505050505050565b61442f81614015565b811461443a57600080fd5b50565b60008135905061444c81614426565b92915050565b6000806040838503121561446957614468613dfc565b5b60006144778582860161443d565b92505060206144888582860161443d565b9150509250929050565b600080604083850312156144a9576144a8613dfc565b5b60006144b785828601613e4f565b92505060206144c885828601613e4f565b9150509250929050565b600063ffffffff82169050919050565b6144eb816144d2565b81146144f657600080fd5b50565b600081359050614508816144e2565b92915050565b6000806000806080858703121561452857614527613dfc565b5b6000614536878288016144f9565b9450506020614547878288016144f9565b9350506040614558878288016144f9565b9250506060614569878288016144f9565b91505092959194509250565b600061458082613e06565b9050919050565b61459081614575565b811461459b57600080fd5b50565b6000813590506145ad81614587565b92915050565b6000602082840312156145c9576145c8613dfc565b5b60006145d78482850161459e565b91505092915050565b600080600080608085870312156145fa576145f9613dfc565b5b60006146088782880161443d565b94505060206146198782880161443d565b935050604061462a8782880161443d565b925050606061463b8782880161443d565b91505092959194509250565b6000806040838503121561465e5761465d613dfc565b5b600061466c858286016140fd565b925050602061467d858286016140fd565b9150509250929050565b7f4f6e6c7920636f6e7472616374205f6f776e65722063616e2063616c6c20746860008201527f69732066756e6374696f6e000000000000000000000000000000000000000000602082015250565b60006146e3602b83613d55565b91506146ee82614687565b604082019050919050565b60006020820190508181036000830152614712816146d6565b9050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b600061474f600983613d55565b915061475a82614719565b602082019050919050565b6000602082019050818103600083015261477e81614742565b9050919050565b7f4e6f2045544820696e20636f6e74726163740000000000000000000000000000600082015250565b60006147bb601283613d55565b91506147c682614785565b602082019050919050565b600060208201905081810360008301526147ea816147ae565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e74726163740000000000000000000000600082015250565b6000614827601583613d55565b9150614832826147f1565b602082019050919050565b600060208201905081810360008301526148568161481a565b9050919050565b60008151905061486c81613e38565b92915050565b60006020828403121561488857614887613dfc565b5b60006148968482850161485d565b91505092915050565b60006040820190506148b460008301856143c4565b6148c160208301846143c4565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561494e5780860481111561492a576149296148c8565b5b60018516156149395780820291505b8081029050614947856148f7565b945061490e565b94509492505050565b6000826149675760019050614a23565b816149755760009050614a23565b816001811461498b5760028114614995576149c4565b6001915050614a23565b60ff8411156149a7576149a66148c8565b5b8360020a9150848211156149be576149bd6148c8565b5b50614a23565b5060208310610133831016604e8410600b84101617156149f95782820a9050838111156149f4576149f36148c8565b5b614a23565b614a068484846001614904565b92509050818404811115614a1d57614a1c6148c8565b5b81810290505b9392505050565b6000614a3582613e64565b9150614a4083613ff9565b9250614a6d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614957565b905092915050565b6000614a8082613e64565b9150614a8b83613e64565b9250828202614a9981613e64565b91508282048414831517614ab057614aaf6148c8565b5b5092915050565b7f43616e6e6f74206578656d7074204c5000000000000000000000000000000000600082015250565b6000614aed601083613d55565b9150614af882614ab7565b602082019050919050565b60006020820190508181036000830152614b1c81614ae0565b9050919050565b7f43616e6e6f74206368616e676520746865207072696d617279204c5000000000600082015250565b6000614b59601c83613d55565b9150614b6482614b23565b602082019050919050565b60006020820190508181036000830152614b8881614b4c565b9050919050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b6000614bc5601083613d55565b9150614bd082614b8f565b602082019050919050565b60006020820190508181036000830152614bf481614bb8565b9050919050565b6000614c0682613e64565b9150614c1183613e64565b9250828203905081811115614c2957614c286148c8565b5b92915050565b7f43616e6e6f742073776170206d6f7265207468616e2031303025000000000000600082015250565b6000614c65601a83613d55565b9150614c7082614c2f565b602082019050919050565b60006020820190508181036000830152614c9481614c58565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614cd582613e64565b9150614ce083613e64565b925082614cf057614cef614c9b565b5b828204905092915050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b6000614d31600983613d55565b9150614d3c82614cfb565b602082019050919050565b60006020820190508181036000830152614d6081614d24565b9050919050565b7f57616c6c657420636f756e74206f766572203235302028676173207269736b29600082015250565b6000614d9d602083613d55565b9150614da882614d67565b602082019050919050565b60006020820190508181036000830152614dcc81614d90565b9050919050565b7f4164647265737320616e6420746f6b656e20616d6f756e74206c697374206d6960008201527f736d616368000000000000000000000000000000000000000000000000000000602082015250565b6000614e2f602583613d55565b9150614e3a82614dd3565b604082019050919050565b60006020820190508181036000830152614e5e81614e22565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614e9f82613e64565b9150614eaa83613e64565b9250828201905080821115614ec257614ec16148c8565b5b92915050565b6000614ed382613e64565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614f0557614f046148c8565b5b600182019050919050565b7f546f6b656e2062616c616e6365206c6f776572207468616e2061697264726f7060008201527f20746f74616c0000000000000000000000000000000000000000000000000000602082015250565b6000614f6c602683613d55565b9150614f7782614f10565b604082019050919050565b60006020820190508181036000830152614f9b81614f5f565b9050919050565b6000604082019050614fb76000830185613f10565b614fc46020830184613f10565b9392505050565b7f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000600082015250565b6000615001601583613d55565b915061500c82614fcb565b602082019050919050565b6000602082019050818103600083015261503081614ff4565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c6574000000000000000000600082015250565b600061506d601783613d55565b915061507882615037565b602082019050919050565b6000602082019050818103600083015261509c81615060565b9050919050565b7f7478206c696d697420746f6f206c6f7700000000000000000000000000000000600082015250565b60006150d9601083613d55565b91506150e4826150a3565b602082019050919050565b60006020820190508181036000830152615108816150cc565b9050919050565b7f77616c6c6574206c696d697420746f6f206c6f77000000000000000000000000600082015250565b6000615145601483613d55565b91506151508261510f565b602082019050919050565b6000602082019050818103600083015261517481615138565b9050919050565b7f74726164696e6720616c7265616479206f70656e000000000000000000000000600082015250565b60006151b1601483613d55565b91506151bc8261517b565b602082019050919050565b600060208201905081810360008301526151e0816151a4565b9050919050565b7f4d696e4d6178206572726f720000000000000000000000000000000000000000600082015250565b600061521d600c83613d55565b9150615228826151e7565b602082019050919050565b6000602082019050818103600083015261524c81615210565b9050919050565b7f5570706572207468726573686f6c6420746f6f206c6f77000000000000000000600082015250565b6000615289601783613d55565b915061529482615253565b602082019050919050565b600060208201905081810360008301526152b88161527c565b9050919050565b7f5570706572207468726573686f6c6420746f6f20686967680000000000000000600082015250565b60006152f5601883613d55565b9150615300826152bf565b602082019050919050565b60006020820190508181036000830152615324816152e8565b9050919050565b6000819050919050565b600061535061534b61534684613e06565b61532b565b613e06565b9050919050565b600061536282615335565b9050919050565b600061537482615357565b9050919050565b61538481615369565b82525050565b600060208201905061539f600083018461537b565b92915050565b60006153b082614015565b91506153bb83614015565b9250828201905061ffff8111156153d5576153d46148c8565b5b92915050565b7f416c6c2063616e6e6f7420626520300000000000000000000000000000000000600082015250565b6000615411600f83613d55565b915061541c826153db565b602082019050919050565b6000602082019050818103600083015261544081615404565b9050919050565b600061545282613ff9565b915061545d83613ff9565b9250828201905060ff811115615476576154756148c8565b5b92915050565b7f526f756e647472697020746f6f20686967680000000000000000000000000000600082015250565b60006154b2601283613d55565b91506154bd8261547c565b602082019050919050565b600060208201905081810360008301526154e1816154a5565b9050919050565b6000819050919050565b600061550d615508615503846154e8565b61532b565b613e64565b9050919050565b61551d816154f2565b82525050565b600060c08201905061553860008301896143c4565b6155456020830188613f10565b6155526040830187615514565b61555f6060830186615514565b61556c60808301856143c4565b61557960a0830184613f10565b979650505050505050565b60008151905061559381613e6e565b92915050565b6000806000606084860312156155b2576155b1613dfc565b5b60006155c086828701615584565b93505060206155d186828701615584565b92505060406155e286828701615584565b9150509250925092565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000615622601d83613d55565b915061562d826155ec565b602082019050919050565b6000602082019050818103600083015261565181615615565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b600061568e601183613d55565b915061569982615658565b602082019050919050565b600060208201905081810360008301526156bd81615681565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61572881613e26565b82525050565b600061573a838361571f565b60208301905092915050565b6000602082019050919050565b600061575e826156f3565b61576881856156fe565b93506157738361570f565b8060005b838110156157a457815161578b888261572e565b975061579683615746565b925050600181019050615777565b5085935050505092915050565b600060a0820190506157c66000830188613f10565b6157d36020830187615514565b81810360408301526157e58186615753565b90506157f460608301856143c4565b6158016080830184613f10565b969550505050505056fea2646970667358221220d9d356e439673922d9cea22b0a40c1198a7f85b18a3b7d11e46f00dc77e57ddf64736f6c63430008110033
Deployed Bytecode
0x6080604052600436106101a05760003560e01c806370a08231116100ec578063b14218031161008a578063e4dbc45b11610064578063e4dbc45b146105de578063f2fde38b14610607578063f9fdeae314610630578063fd96502414610659576101a7565b8063b142180314610561578063c9567bf91461058a578063dd62ed3e146105a1576101a7565b806395d89b41116100c657806395d89b41146104a15780639fda0581146104cc578063a39fac12146104f5578063a9059cbb14610524576101a7565b806370a08231146103e95780637df0f76714610426578063931b68ea14610463576101a7565b806322a62e1e11610159578063313ce56711610133578063313ce5671461033e57806367243482146103695780636d1b229d146103925780636f013db9146103bb576101a7565b806322a62e1e146102a857806323b872dd146102d85780632fb528ba14610315576101a7565b80630210a83d146101ac57806306fdde03146101c3578063095ea7b3146101ee57806318160ddd1461022b57806318839bc31461025657806321c42e111461027f576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c1610682565b005b3480156101cf57600080fd5b506101d8610b41565b6040516101e59190613dda565b60405180910390f35b3480156101fa57600080fd5b5061021560048036038101906102109190613e9a565b610b7e565b6040516102229190613ef5565b60405180910390f35b34801561023757600080fd5b50610240610c70565b60405161024d9190613f1f565b60405180910390f35b34801561026257600080fd5b5061027d60048036038101906102789190613f66565b610c94565b005b34801561028b57600080fd5b506102a660048036038101906102a19190613fb9565b610e71565b005b3480156102b457600080fd5b506102bd6110a1565b6040516102cf96959493929190614032565b60405180910390f35b3480156102e457600080fd5b506102ff60048036038101906102fa9190614093565b611122565b60405161030c9190613ef5565b60405180910390f35b34801561032157600080fd5b5061033c60048036038101906103379190614112565b61132c565b005b34801561034a57600080fd5b506103536114db565b6040516103609190614152565b60405180910390f35b34801561037557600080fd5b50610390600480360381019061038b9190614228565b6114e4565b005b34801561039e57600080fd5b506103b960048036038101906103b491906142a9565b61193c565b005b3480156103c757600080fd5b506103d06119e8565b6040516103e094939291906142d6565b60405180910390f35b3480156103f557600080fd5b50610410600480360381019061040b919061431b565b611a08565b60405161041d9190613f1f565b60405180910390f35b34801561043257600080fd5b5061044d6004803603810190610448919061431b565b611a51565b60405161045a9190613ef5565b60405180910390f35b34801561046f57600080fd5b5061048a6004803603810190610485919061431b565b611aa7565b604051610498929190614348565b60405180910390f35b3480156104ad57600080fd5b506104b6611b4d565b6040516104c39190613dda565b60405180910390f35b3480156104d857600080fd5b506104f360048036038101906104ee9190614371565b611b8a565b005b34801561050157600080fd5b5061050a611f79565b60405161051b9594939291906143d3565b60405180910390f35b34801561053057600080fd5b5061054b60048036038101906105469190613e9a565b612040565b6040516105589190613ef5565b60405180910390f35b34801561056d57600080fd5b5061058860048036038101906105839190614452565b61209d565b005b34801561059657600080fd5b5061059f61225b565b005b3480156105ad57600080fd5b506105c860048036038101906105c39190614492565b612343565b6040516105d59190613f1f565b60405180910390f35b3480156105ea57600080fd5b506106056004803603810190610600919061450e565b6123ca565b005b34801561061357600080fd5b5061062e600480360381019061062991906145b3565b612609565b005b34801561063c57600080fd5b50610657600480360381019061065291906145e0565b612711565b005b34801561066557600080fd5b50610680600480360381019061067b9190614647565b612887565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610710576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610707906146f9565b60405180910390fd5b6001600f60016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b390614765565b60405180910390fd5b600047116107ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f6906147d1565b60405180910390fd5b6000600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610881576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108789061483d565b60405180910390fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109129190614872565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561099b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109bf9190614872565b6040518363ffffffff1660e01b81526004016109dc92919061489f565b6020604051808303816000875af11580156109fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1f9190614872565b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610aaa600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020544760006129a1565b6001600e6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600f60016101000a81548160ff021916908315150217905550565b60606040518060400160405280600a81526020017f4c65617368205377617000000000000000000000000000000000000000000000815250905090565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c5e9190613f1f565b60405180910390a36001905092915050565b60006009600a610c809190614a2a565b6305f5e100610c8f9190614a75565b905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d19906146f9565b60405180910390fd5b8080610d2b5750815b15610dbe57600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610dbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db490614b03565b60405180910390fd5b5b81600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610eff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef6906146f9565b60405180910390fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8690614b6f565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550801561109d576000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b600080600080600080600060149054906101000a900460ff16600060159054906101000a900460ff16600060169054906101000a900461ffff16600060189054906101000a900461ffff166000601c9054906101000a900461ffff166000601a9054906101000a900461ffff16955095509550955095509550909192939495565b600061112d84612a8f565b61116c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116390614bdb565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146113185781600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112979190614bfb565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611323848484612b6a565b90509392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b1906146f9565b60405180910390fd5b6001600f60016101000a81548160ff02191690831515021790555060648260ff16111561141c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141390614c7b565b60405180910390fd5b600060648360ff1661142d30611a08565b6114379190614a75565b6114419190614cca565b90506009600a6114519190614a2a565b8111156114625761146181613099565b5b81156114bb576000479050600081116114b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a790614d47565b60405180910390fd5b6114b9476132b8565b505b506000600f60016101000a81548160ff0219169083151502179055505050565b60006009905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611572576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611569906146f9565b60405180910390fd5b60fa8484905011156115b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b090614db3565b60405180910390fd5b818190508484905014611601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f890614e45565b60405180910390fd5b6000805b85859050811015611662576009600a61161e9190614a2a565b84848381811061163157611630614e65565b5b905060200201356116429190614a75565b8261164d9190614e94565b9150808061165a90614ec8565b915050611605565b5080600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156116e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116dc90614f82565b60405180910390fd5b60005b858590508110156118f8576009600a6117019190614a2a565b84848381811061171457611713614e65565b5b905060200201356117259190614a75565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117739190614bfb565b925050819055506009600a6117889190614a2a565b84848381811061179b5761179a614e65565b5b905060200201356117ac9190614a75565b600760008888858181106117c3576117c2614e65565b5b90506020020160208101906117d8919061431b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118219190614e94565b9250508190555085858281811061183b5761183a614e65565b5b9050602002016020810190611850919061431b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6118ac9190614a2a565b8787868181106118bf576118be614e65565b5b905060200201356118d09190614a75565b6040516118dd9190613f1f565b60405180910390a380806118f090614ec8565b9150506116e8565b507f71cc7095cc35ed4701c217a8efb440732eb0737da67f6548c008ac26fba95464858590508260405161192d929190614fa2565b60405180910390a15050505050565b600061194733611a08565b90508082111561198c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198390615017565b60405180910390fd5b6119963383613447565b3373ffffffffffffffffffffffffffffffffffffffff167ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb6836040516119dc9190613f1f565b60405180910390a25050565b600080600080600354600454600554600654935093509350935090919293565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691509150915091565b60606040518060400160405280600581526020017f4c45415348000000000000000000000000000000000000000000000000000000815250905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0f906146f9565b60405180910390fd5b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611cbc5750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d125750600e60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611d51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4890615083565b60405180910390fd5b82600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60008060008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16945094509450945094509091929394565b600061204b33612a8f565b61208a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208190614bdb565b60405180910390fd5b612095338484612b6a565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461212b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612122906146f9565b60405180910390fd5b600060016103e88461ffff166009600a6121459190614a2a565b6305f5e1006121549190614a75565b61215e9190614a75565b6121689190614cca565b6121729190614e94565b90506003548110156121b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b0906150ef565b60405180910390fd5b80600381905550600060016103e88461ffff166009600a6121da9190614a2a565b6305f5e1006121e99190614a75565b6121f39190614a75565b6121fd9190614cca565b6122079190614e94565b905060045481101561224e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122459061515b565b60405180910390fd5b8060048190555050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146122e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122e0906146f9565b60405180910390fd5b600f60009054906101000a900460ff1615612339576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612330906151c7565b60405180910390fd5b612341613567565b565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244f906146f9565b60405180910390fd5b8263ffffffff168463ffffffff166009600a6124749190614a2a565b6305f5e1006124839190614a75565b61248d9190614a75565b6124979190614cca565b6005819055508063ffffffff168263ffffffff166009600a6124b99190614a2a565b6305f5e1006124c89190614a75565b6124d29190614a75565b6124dc9190614cca565b6006819055506005546006541015612529576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252090615233565b60405180910390fd5b620186a06009600a61253b9190614a2a565b6305f5e10061254a9190614a75565b6125549190614cca565b60065411612597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258e9061529f565b60405180910390fd5b60646009600a6125a79190614a2a565b6305f5e1006125b69190614a75565b6125c09190614cca565b60065410612603576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fa9061530b565b60405180910390fd5b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268e906146f9565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051612706919061538a565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461279f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612796906146f9565b60405180910390fd5b6000818385876127af91906153a5565b6127b991906153a5565b6127c391906153a5565b905060008161ffff161161280c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280390615427565b60405180910390fd5b836000601c6101000a81548161ffff021916908361ffff16021790555082600060166101000a81548161ffff021916908361ffff16021790555081600060186101000a81548161ffff021916908361ffff160217905550806000601e6101000a81548161ffff021916908361ffff1602179055505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290c906146f9565b60405180910390fd5b606381836129239190615447565b60ff161115612967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295e906154c8565b60405180910390fd5b81600060146101000a81548160ff021916908360ff16021790555080600060156101000a81548160ff021916908360ff1602179055505050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081156129d357600090505b6129dc846135fa565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b8152600401612a4396959493929190615523565b60606040518083038185885af1158015612a61573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612a869190615599565b50505050505050565b60008060009050600f60009054906101000a900460ff1615612ab45760019050612b61565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612b565750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612b6057600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612bda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd190615638565b60405180910390fd5b600f60009054906101000a900460ff16612cd057600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c905750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612ccf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc690614bdb565b60405180910390fd5b5b600f60019054906101000a900460ff16158015612d365750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612d4457612d436137e4565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612dac57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612e04575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612e5457612e148484846139da565b612e53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4a906156a4565b60405180910390fd5b5b6000612e61858585613b71565b905060008184612e719190614bfb565b905083600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ebe9190614bfb565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000821115612f995781600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f559190614e94565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fe49190614e94565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516130849190613f1f565b60405180910390a36001925050509392505050565b6130a2816135fa565b6000600267ffffffffffffffff8111156130bf576130be6156c4565b5b6040519080825280602002602001820160405280156130ed5781602001602082028036833780820191505090505b509050308160008151811061310557613104614e65565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131d09190614872565b816001815181106131e4576131e3614e65565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016132829594939291906157b1565b600060405180830381600087803b15801561329c57600080fd5b505af11580156132b0573d6000803e3d6000fd5b505050505050565b60008060189054906101000a900461ffff16600060169054906101000a900461ffff166132e591906153a5565b905060008161ffff1611156134435760008161ffff16600060169054906101000a900461ffff1661ffff168461331b9190614a75565b6133259190614cca565b905060008261ffff16600060189054906101000a900461ffff1661ffff168561334e9190614a75565b6133589190614cca565b905060008211156133cd57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156133cb573d6000803e3d6000fd5b505b600081111561344057600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561343e573d6000803e3d6000fd5b505b50505b5050565b60008111156135635780600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461349f9190614bfb565b9250508190555080600760008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546134f59190614e94565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161355a9190613f1f565b60405180910390a35b5050565b606460016009600a6135799190614a2a565b6305f5e1006135889190614a75565b6135929190614a75565b61359c9190614cca565b600381905550606460016009600a6135b49190614a2a565b6305f5e1006135c39190614a75565b6135cd9190614a75565b6135d79190614cca565b6004819055506001600f60006101000a81548160ff021916908315150217905550565b80600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156137e1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040516137d89190613f1f565b60405180910390a35b50565b6001600f60016101000a81548160ff021916908315150217905550600061380a30611a08565b9050600554811015801561382a5750600f60009054906101000a900460ff165b156139bc57600654811061383e5760065490505b600060026000601e9054906101000a900461ffff1661ffff166000601c9054906101000a900461ffff1661ffff16846138779190614a75565b6138819190614cca565b61388b9190614cca565b9050600080601e9054906101000a900461ffff1661ffff166000601a9054906101000a900461ffff1661ffff16846138c39190614a75565b6138cd9190614cca565b90506138d93082613447565b60008183856138e89190614bfb565b6138f29190614bfb565b90506009600a6139029190614a2a565b81111561399f57600047905061391782613099565b600081476139259190614bfb565b9050600080601c9054906101000a900461ffff1661ffff16111561399c57600080601e9054906101000a900461ffff1661ffff166000601c9054906101000a900461ffff1661ffff16836139799190614a75565b6139839190614cca565b905061398e866135fa565b61399a868260006129a1565b505b50505b600047905060008111156139b7576139b6816132b8565b5b505050505b506000600f60016101000a81548160ff021916908315150217905550565b60008060019050600f60009054906101000a900460ff168015613a475750600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613a9d5750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613b6657600354831115613ab55760009050613b65565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613b5a575060045483600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b589190614e94565b115b15613b6457600090505b5b5b809150509392505050565b600080600f60009054906101000a900460ff161580613bd95750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80613c2d5750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613c3b5760009050613d3f565b600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613cbe576064600060149054906101000a900460ff1660ff1684613cad9190614a75565b613cb79190614cca565b9050613d3e565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613d3d576064600060159054906101000a900460ff1660ff1684613d309190614a75565b613d3a9190614cca565b90505b5b5b809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613d84578082015181840152602081019050613d69565b60008484015250505050565b6000601f19601f8301169050919050565b6000613dac82613d4a565b613db68185613d55565b9350613dc6818560208601613d66565b613dcf81613d90565b840191505092915050565b60006020820190508181036000830152613df48184613da1565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613e3182613e06565b9050919050565b613e4181613e26565b8114613e4c57600080fd5b50565b600081359050613e5e81613e38565b92915050565b6000819050919050565b613e7781613e64565b8114613e8257600080fd5b50565b600081359050613e9481613e6e565b92915050565b60008060408385031215613eb157613eb0613dfc565b5b6000613ebf85828601613e4f565b9250506020613ed085828601613e85565b9150509250929050565b60008115159050919050565b613eef81613eda565b82525050565b6000602082019050613f0a6000830184613ee6565b92915050565b613f1981613e64565b82525050565b6000602082019050613f346000830184613f10565b92915050565b613f4381613eda565b8114613f4e57600080fd5b50565b600081359050613f6081613f3a565b92915050565b600080600060608486031215613f7f57613f7e613dfc565b5b6000613f8d86828701613e4f565b9350506020613f9e86828701613f51565b9250506040613faf86828701613f51565b9150509250925092565b60008060408385031215613fd057613fcf613dfc565b5b6000613fde85828601613e4f565b9250506020613fef85828601613f51565b9150509250929050565b600060ff82169050919050565b61400f81613ff9565b82525050565b600061ffff82169050919050565b61402c81614015565b82525050565b600060c0820190506140476000830189614006565b6140546020830188614006565b6140616040830187614023565b61406e6060830186614023565b61407b6080830185614023565b61408860a0830184614023565b979650505050505050565b6000806000606084860312156140ac576140ab613dfc565b5b60006140ba86828701613e4f565b93505060206140cb86828701613e4f565b92505060406140dc86828701613e85565b9150509250925092565b6140ef81613ff9565b81146140fa57600080fd5b50565b60008135905061410c816140e6565b92915050565b6000806040838503121561412957614128613dfc565b5b6000614137858286016140fd565b925050602061414885828601613f51565b9150509250929050565b60006020820190506141676000830184614006565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126141925761419161416d565b5b8235905067ffffffffffffffff8111156141af576141ae614172565b5b6020830191508360208202830111156141cb576141ca614177565b5b9250929050565b60008083601f8401126141e8576141e761416d565b5b8235905067ffffffffffffffff81111561420557614204614172565b5b60208301915083602082028301111561422157614220614177565b5b9250929050565b6000806000806040858703121561424257614241613dfc565b5b600085013567ffffffffffffffff8111156142605761425f613e01565b5b61426c8782880161417c565b9450945050602085013567ffffffffffffffff81111561428f5761428e613e01565b5b61429b878288016141d2565b925092505092959194509250565b6000602082840312156142bf576142be613dfc565b5b60006142cd84828501613e85565b91505092915050565b60006080820190506142eb6000830187613f10565b6142f86020830186613f10565b6143056040830185613f10565b6143126060830184613f10565b95945050505050565b60006020828403121561433157614330613dfc565b5b600061433f84828501613e4f565b91505092915050565b600060408201905061435d6000830185613ee6565b61436a6020830184613ee6565b9392505050565b60008060006060848603121561438a57614389613dfc565b5b600061439886828701613e4f565b93505060206143a986828701613e4f565b92505060406143ba86828701613e4f565b9150509250925092565b6143cd81613e26565b82525050565b600060a0820190506143e860008301886143c4565b6143f560208301876143c4565b61440260408301866143c4565b61440f60608301856143c4565b61441c60808301846143c4565b9695505050505050565b61442f81614015565b811461443a57600080fd5b50565b60008135905061444c81614426565b92915050565b6000806040838503121561446957614468613dfc565b5b60006144778582860161443d565b92505060206144888582860161443d565b9150509250929050565b600080604083850312156144a9576144a8613dfc565b5b60006144b785828601613e4f565b92505060206144c885828601613e4f565b9150509250929050565b600063ffffffff82169050919050565b6144eb816144d2565b81146144f657600080fd5b50565b600081359050614508816144e2565b92915050565b6000806000806080858703121561452857614527613dfc565b5b6000614536878288016144f9565b9450506020614547878288016144f9565b9350506040614558878288016144f9565b9250506060614569878288016144f9565b91505092959194509250565b600061458082613e06565b9050919050565b61459081614575565b811461459b57600080fd5b50565b6000813590506145ad81614587565b92915050565b6000602082840312156145c9576145c8613dfc565b5b60006145d78482850161459e565b91505092915050565b600080600080608085870312156145fa576145f9613dfc565b5b60006146088782880161443d565b94505060206146198782880161443d565b935050604061462a8782880161443d565b925050606061463b8782880161443d565b91505092959194509250565b6000806040838503121561465e5761465d613dfc565b5b600061466c858286016140fd565b925050602061467d858286016140fd565b9150509250929050565b7f4f6e6c7920636f6e7472616374205f6f776e65722063616e2063616c6c20746860008201527f69732066756e6374696f6e000000000000000000000000000000000000000000602082015250565b60006146e3602b83613d55565b91506146ee82614687565b604082019050919050565b60006020820190508181036000830152614712816146d6565b9050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b600061474f600983613d55565b915061475a82614719565b602082019050919050565b6000602082019050818103600083015261477e81614742565b9050919050565b7f4e6f2045544820696e20636f6e74726163740000000000000000000000000000600082015250565b60006147bb601283613d55565b91506147c682614785565b602082019050919050565b600060208201905081810360008301526147ea816147ae565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e74726163740000000000000000000000600082015250565b6000614827601583613d55565b9150614832826147f1565b602082019050919050565b600060208201905081810360008301526148568161481a565b9050919050565b60008151905061486c81613e38565b92915050565b60006020828403121561488857614887613dfc565b5b60006148968482850161485d565b91505092915050565b60006040820190506148b460008301856143c4565b6148c160208301846143c4565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561494e5780860481111561492a576149296148c8565b5b60018516156149395780820291505b8081029050614947856148f7565b945061490e565b94509492505050565b6000826149675760019050614a23565b816149755760009050614a23565b816001811461498b5760028114614995576149c4565b6001915050614a23565b60ff8411156149a7576149a66148c8565b5b8360020a9150848211156149be576149bd6148c8565b5b50614a23565b5060208310610133831016604e8410600b84101617156149f95782820a9050838111156149f4576149f36148c8565b5b614a23565b614a068484846001614904565b92509050818404811115614a1d57614a1c6148c8565b5b81810290505b9392505050565b6000614a3582613e64565b9150614a4083613ff9565b9250614a6d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614957565b905092915050565b6000614a8082613e64565b9150614a8b83613e64565b9250828202614a9981613e64565b91508282048414831517614ab057614aaf6148c8565b5b5092915050565b7f43616e6e6f74206578656d7074204c5000000000000000000000000000000000600082015250565b6000614aed601083613d55565b9150614af882614ab7565b602082019050919050565b60006020820190508181036000830152614b1c81614ae0565b9050919050565b7f43616e6e6f74206368616e676520746865207072696d617279204c5000000000600082015250565b6000614b59601c83613d55565b9150614b6482614b23565b602082019050919050565b60006020820190508181036000830152614b8881614b4c565b9050919050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b6000614bc5601083613d55565b9150614bd082614b8f565b602082019050919050565b60006020820190508181036000830152614bf481614bb8565b9050919050565b6000614c0682613e64565b9150614c1183613e64565b9250828203905081811115614c2957614c286148c8565b5b92915050565b7f43616e6e6f742073776170206d6f7265207468616e2031303025000000000000600082015250565b6000614c65601a83613d55565b9150614c7082614c2f565b602082019050919050565b60006020820190508181036000830152614c9481614c58565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614cd582613e64565b9150614ce083613e64565b925082614cf057614cef614c9b565b5b828204905092915050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b6000614d31600983613d55565b9150614d3c82614cfb565b602082019050919050565b60006020820190508181036000830152614d6081614d24565b9050919050565b7f57616c6c657420636f756e74206f766572203235302028676173207269736b29600082015250565b6000614d9d602083613d55565b9150614da882614d67565b602082019050919050565b60006020820190508181036000830152614dcc81614d90565b9050919050565b7f4164647265737320616e6420746f6b656e20616d6f756e74206c697374206d6960008201527f736d616368000000000000000000000000000000000000000000000000000000602082015250565b6000614e2f602583613d55565b9150614e3a82614dd3565b604082019050919050565b60006020820190508181036000830152614e5e81614e22565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614e9f82613e64565b9150614eaa83613e64565b9250828201905080821115614ec257614ec16148c8565b5b92915050565b6000614ed382613e64565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614f0557614f046148c8565b5b600182019050919050565b7f546f6b656e2062616c616e6365206c6f776572207468616e2061697264726f7060008201527f20746f74616c0000000000000000000000000000000000000000000000000000602082015250565b6000614f6c602683613d55565b9150614f7782614f10565b604082019050919050565b60006020820190508181036000830152614f9b81614f5f565b9050919050565b6000604082019050614fb76000830185613f10565b614fc46020830184613f10565b9392505050565b7f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000600082015250565b6000615001601583613d55565b915061500c82614fcb565b602082019050919050565b6000602082019050818103600083015261503081614ff4565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c6574000000000000000000600082015250565b600061506d601783613d55565b915061507882615037565b602082019050919050565b6000602082019050818103600083015261509c81615060565b9050919050565b7f7478206c696d697420746f6f206c6f7700000000000000000000000000000000600082015250565b60006150d9601083613d55565b91506150e4826150a3565b602082019050919050565b60006020820190508181036000830152615108816150cc565b9050919050565b7f77616c6c6574206c696d697420746f6f206c6f77000000000000000000000000600082015250565b6000615145601483613d55565b91506151508261510f565b602082019050919050565b6000602082019050818103600083015261517481615138565b9050919050565b7f74726164696e6720616c7265616479206f70656e000000000000000000000000600082015250565b60006151b1601483613d55565b91506151bc8261517b565b602082019050919050565b600060208201905081810360008301526151e0816151a4565b9050919050565b7f4d696e4d6178206572726f720000000000000000000000000000000000000000600082015250565b600061521d600c83613d55565b9150615228826151e7565b602082019050919050565b6000602082019050818103600083015261524c81615210565b9050919050565b7f5570706572207468726573686f6c6420746f6f206c6f77000000000000000000600082015250565b6000615289601783613d55565b915061529482615253565b602082019050919050565b600060208201905081810360008301526152b88161527c565b9050919050565b7f5570706572207468726573686f6c6420746f6f20686967680000000000000000600082015250565b60006152f5601883613d55565b9150615300826152bf565b602082019050919050565b60006020820190508181036000830152615324816152e8565b9050919050565b6000819050919050565b600061535061534b61534684613e06565b61532b565b613e06565b9050919050565b600061536282615335565b9050919050565b600061537482615357565b9050919050565b61538481615369565b82525050565b600060208201905061539f600083018461537b565b92915050565b60006153b082614015565b91506153bb83614015565b9250828201905061ffff8111156153d5576153d46148c8565b5b92915050565b7f416c6c2063616e6e6f7420626520300000000000000000000000000000000000600082015250565b6000615411600f83613d55565b915061541c826153db565b602082019050919050565b6000602082019050818103600083015261544081615404565b9050919050565b600061545282613ff9565b915061545d83613ff9565b9250828201905060ff811115615476576154756148c8565b5b92915050565b7f526f756e647472697020746f6f20686967680000000000000000000000000000600082015250565b60006154b2601283613d55565b91506154bd8261547c565b602082019050919050565b600060208201905081810360008301526154e1816154a5565b9050919050565b6000819050919050565b600061550d615508615503846154e8565b61532b565b613e64565b9050919050565b61551d816154f2565b82525050565b600060c08201905061553860008301896143c4565b6155456020830188613f10565b6155526040830187615514565b61555f6060830186615514565b61556c60808301856143c4565b61557960a0830184613f10565b979650505050505050565b60008151905061559381613e6e565b92915050565b6000806000606084860312156155b2576155b1613dfc565b5b60006155c086828701615584565b93505060206155d186828701615584565b92505060406155e286828701615584565b9150509250925092565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000615622601d83613d55565b915061562d826155ec565b602082019050919050565b6000602082019050818103600083015261565181615615565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b600061568e601183613d55565b915061569982615658565b602082019050919050565b600060208201905081810360008301526156bd81615681565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61572881613e26565b82525050565b600061573a838361571f565b60208301905092915050565b6000602082019050919050565b600061575e826156f3565b61576881856156fe565b93506157738361570f565b8060005b838110156157a457815161578b888261572e565b975061579683615746565b925050600181019050615777565b5085935050505092915050565b600060a0820190506157c66000830188613f10565b6157d36020830187615514565b81810360408301526157e58186615753565b90506157f460608301856143c4565b6158016080830184613f10565b969550505050505056fea2646970667358221220d9d356e439673922d9cea22b0a40c1198a7f85b18a3b7d11e46f00dc77e57ddf64736f6c63430008110033
Deployed Bytecode Sourcemap
6648:16405:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11580:502;;;;;;;;;;;;;:::i;:::-;;9908:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10246:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9638:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15014:254;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15274:380;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15766:294;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;10703:404;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21270:570;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9732:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22129:921;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21848:273;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17569:208;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;9994:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15660:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14854:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;9818:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17028:533;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16788:234;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;10470:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17783:469;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11115:132;;;;;;;;;;;;;:::i;:::-;;10105:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18258:465;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5820:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16297:483;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16066:223;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11580:502;5754:6;;;;;;;;;;5740:20;;:10;:20;;;5732:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;8459:4:::1;8446:10;;:17;;;;;;;;;;;;;;;;;;11683:1:::2;11661:24;;:10;;;;;;;;;;;:24;;;11653:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;11740:1;11718:21;:23;11710:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;11808:1;11783:9;:24;11801:4;11783:24;;;;;;;;;;;;;;;;:26;11775:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;11877:18;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11859:58;;;11926:4;11933:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11859:100;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11846:10;;:113;;;;;;;;;;;;;;;;;;11970:69;11984:9;:24;12002:4;11984:24;;;;;;;;;;;;;;;;12010:21;12033:5;11970:13;:69::i;:::-;12070:4;12050:5;:17;12056:10;;;;;;;;;;;12050:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;8481:5:::1;8468:10;;:18;;;;;;;;;;;;;;;;;;11580:502::o:0;9908:80::-;9956:13;9980:5;;;;;;;;;;;;;;;;;9973:12;;9908:80;:::o;10246:216::-;10321:4;10373:6;10338:11;:23;10350:10;10338:23;;;;;;;;;;;;;;;:32;10362:7;10338:32;;;;;;;;;;;;;;;:41;;;;10416:7;10395:37;;10404:10;10395:37;;;10425:6;10395:37;;;;;;:::i;:::-;;;;;;;;10450:4;10443:11;;10246:216;;;;:::o;9638:88::-;9693:7;6726:1;6789:2;:13;;;;:::i;:::-;6774:11;:29;;;;:::i;:::-;9704:19;;9638:88;:::o;15014:254::-;5754:6;;;;;;;;;;5740:20;;:10;:20;;;5732:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;15115:8:::1;:18;;;;15127:6;15115:18;15111:72;;;15146:5;:13;15152:6;15146:13;;;;;;;;;;;;;;;;;;;;;;;;;15145:14;15137:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;15111:72;15213:6;15193:7;:17;15202:6;15193:17;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;15252:8;15230:9;:19;15241:6;15230:19;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;15014:254:::0;;;:::o;15274:380::-;5754:6;;;;;;;;;;5740:20;;:10;:20;;;5732:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;15403:10:::1;;;;;;;;;;;15382:31;;:17;:31;;::::0;15374:72:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15484:15;15457:5;:24;15463:17;15457:24;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;15515:15;15511:136;;;15577:5;15548:7;:26;15556:17;15548:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;15629:5;15598:9;:28;15608:17;15598:28;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;15511:136;15274:380:::0;;:::o;15766:294::-;15811:12;15825:13;15840:22;15864:24;15890:15;15907:22;15952:11;;;;;;;;;;;15965:12;;;;;;;;;;;15979:19;;;;;;;;;;;16000:21;;;;;;;;;;;16023:12;;;;;;;;;;;16037:14;;;;;;;;;;;15943:109;;;;;;;;;;;;15766:294;;;;;;:::o;10703:404::-;10803:4;10828:25;10846:6;10828:17;:25::i;:::-;10820:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;10923:17;10888:11;:19;10900:6;10888:19;;;;;;;;;;;;;;;:31;10908:10;10888:31;;;;;;;;;;;;;;;;:52;10885:157;;11024:6;10990:11;:19;11002:6;10990:19;;;;;;;;;;;;;;;:31;11010:10;10990:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;10956:11;:19;10968:6;10956:19;;;;;;;;;;;;;;;:31;10976:10;10956:31;;;;;;;;;;;;;;;:74;;;;10885:157;11059:40;11073:6;11081:9;11092:6;11059:13;:40::i;:::-;11052:47;;10703:404;;;;;:::o;21270:570::-;5754:6;;;;;;;;;;5740:20;;:10;:20;;;5732:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;8459:4:::1;8446:10;;:17;;;;;;;;;;;;;;;;;;21408:3:::2;21388:16;:23;;;;21380:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;21453:20;21522:3;21503:16;21476:43;;:24;21494:4;21476:9;:24::i;:::-;:43;;;;:::i;:::-;:49;;;;:::i;:::-;21453:72;;6726:1;21555:2;:15;;;;:::i;:::-;21540:12;:30;21536:97;;;21587:34;21608:12;21587:20;:34::i;:::-;21536:97;21647:7;21643:190;;;21672:18;21693:21;21672:42;;21750:1;21737:10;:14;21729:36;;;;;;;;;;;;:::i;:::-;;;;;;;;;21780:40;21798:21;21780:17;:40::i;:::-;21656:177;21643:190;21369:471;8481:5:::1;8468:10;;:18;;;;;;;;;;;;;;;;;;21270:570:::0;;:::o;9732:80::-;9784:5;6726:1;9793:16;;9732:80;:::o;22129:921::-;5754:6;;;;;;;;;;5740:20;;:10;:20;;;5732:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;22267:3:::1;22247:9;;:16;;:23;;22239:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22345:12;;:19;;22325:9;;:16;;:39;22317:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;22418:20;22457:6:::0;22453:116:::1;22471:9;;:16;;22467:1;:20;22453:116;;;6726:1;22543:2;:13;;;;:::i;:::-;22525:12;;22538:1;22525:15;;;;;;;:::i;:::-;;;;;;;;:31;;;;:::i;:::-;22508:49;;;;;:::i;:::-;;;22489:3;;;;;:::i;:::-;;;;22453:116;;;;22612:12;22587:9;:21;22597:10;22587:21;;;;;;;;;;;;;;;;:37;;22579:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;22684:6;22680:297;22698:9;;:16;;22694:1;:20;22680:297;;;6726:1;22779:2;:13;;;;:::i;:::-;22761:12;;22774:1;22761:15;;;;;;;:::i;:::-;;;;;;;;:31;;;;:::i;:::-;22735:9;:21;22745:10;22735:21;;;;;;;;;;;;;;;;:58;;;;;;;:::i;:::-;;;;;;;;6726:1;22854:2;:13;;;;:::i;:::-;22836:12;;22849:1;22836:15;;;;;;;:::i;:::-;;;;;;;;:31;;;;:::i;:::-;22808:9;:23;22818:9;;22828:1;22818:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;22808:23;;;;;;;;;;;;;;;;:60;;;;;;;:::i;:::-;;;;;;;;22909:9;;22919:1;22909:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;22888:70;;22897:10;22888:70;;;6726:1;22942:2;:13;;;;:::i;:::-;22924:12;;22937:1;22924:15;;;;;;;:::i;:::-;;;;;;;;:31;;;;:::i;:::-;22888:70;;;;;;:::i;:::-;;;;;;;;22716:3;;;;;:::i;:::-;;;;22680:297;;;;22994:48;23011:9;;:16;;23029:12;22994:48;;;;;;;:::i;:::-;;;;;;;;22228:822;22129:921:::0;;;;:::o;21848:273::-;21904:24;21931:21;21941:10;21931:9;:21::i;:::-;21904:48;;21981:16;21971:6;:26;;21963:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;22034:31;22046:10;22058:6;22034:11;:31::i;:::-;22094:10;22081:32;;;22106:6;22081:32;;;;;;:::i;:::-;;;;;;;;21893:228;21848:273;:::o;17569:208::-;17617:13;17632:17;17651:18;17671;17712:12;;17726:16;;17744:11;;17757;;17703:66;;;;;;;;17569:208;;;;:::o;9994:105::-;10060:7;10078:9;:18;10088:7;10078:18;;;;;;;;;;;;;;;;10071:25;;9994:105;;;:::o;15660:98::-;15713:4;15737:5;:13;15743:6;15737:13;;;;;;;;;;;;;;;;;;;;;;;;;15730:20;;15660:98;;;:::o;14854:154::-;14916:11;14929:13;14964:7;:15;14972:6;14964:15;;;;;;;;;;;;;;;;;;;;;;;;;14981:9;:17;14991:6;14981:17;;;;;;;;;;;;;;;;;;;;;;;;;14955:45;;;;14854:154;;;:::o;9818:84::-;9868:13;9892:7;;;;;;;;;;;;;;;;;9885:14;;9818:84;:::o;17028:533::-;5754:6;;;;;;;;;;5740:20;;:10;:20;;;5732:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;17156:5:::1;:19;17162:12;17156:19;;;;;;;;;;;;;;;;;;;;;;;;;17155:20;:46;;;;;17180:5;:21;17186:14;17180:21;;;;;;;;;;;;;;;;;;;;;;;;;17179:22;17155:46;:68;;;;;17206:5;:17;17212:10;17206:17;;;;;;;;;;;;;;;;;;;;;;;;;17205:18;17155:68;17147:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;17289:12;17262:16;;:40;;;;;;;;;;;;;;;;;;17342:14;17313:18;;:44;;;;;;;;;;;;;;;;;;17379:10;17368:8;;:21;;;;;;;;;;;;;;;;;;17424:4;17400:7;:21;17408:12;17400:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;17465:4;17439:7;:23;17447:14;17439:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;17506:4;17480:9;:23;17490:12;17480:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;17549:4;17521:9;:25;17531:14;17521:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;17028:533:::0;;;:::o;16788:234::-;16835:13;16850:17;16869;16888:19;16909:15;16947:6;;;;;;;;;;;16955:10;;;;;;;;;;;16967:16;;;;;;;;;;;16985:18;;;;;;;;;;;17005:8;;;;;;;;;;;16938:76;;;;;;;;;;16788:234;;;;;:::o;10470:225::-;10550:4;10575:29;10593:10;10575:17;:29::i;:::-;10567:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;10643:44;10657:10;10669:9;10680:6;10643:13;:44::i;:::-;10636:51;;10470:225;;;;:::o;17783:469::-;5754:6;;;;;;;;;;5740:20;;:10;:20;;;5732:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;17889:16:::1;17948:1;17941:4;17923:15;17908:30;;6726:1;6789:2;:13;;;;:::i;:::-;6774:11;:29;;;;:::i;:::-;17908:30;;;;:::i;:::-;:37;;;;:::i;:::-;:41;;;;:::i;:::-;17889:60;;17980:12;;17968:8;:24;;17960:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;18039:8;18024:12;:23;;;;18058:20;18125:1;18118:4;18096:19;18081:34;;6726:1;6789:2;:13;;;;:::i;:::-;6774:11;:29;;;;:::i;:::-;18081:34;;;;:::i;:::-;:41;;;;:::i;:::-;:45;;;;:::i;:::-;18058:68;;18161:16;;18145:12;:32;;18137:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;18232:12;18213:16;:31;;;;17878:374;;17783:469:::0;;:::o;11115:132::-;5754:6;;;;;;;;;;5740:20;;:10;:20;;;5732:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;11177:12:::1;;;;;;;;;;;11176:13;11168:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;11225:14;:12;:14::i;:::-;11115:132::o:0;10105:133::-;10189:7;10207:11;:19;10219:6;10207:19;;;;;;;;;;;;;;;:28;10227:7;10207:28;;;;;;;;;;;;;;;;10200:35;;10105:133;;;;:::o;18258:465::-;5754:6;;;;;;;;;;5740:20;;:10;:20;;;5732:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;18426:10:::1;18400:36;;18415:8;18400:23;;6726:1;6789:2;:13;;;;:::i;:::-;6774:11;:29;;;;:::i;:::-;18400:23;;;;:::i;:::-;:36;;;;:::i;:::-;18386:11;:50;;;;18487:10;18461:36;;18476:8;18461:23;;6726:1;6789:2;:13;;;;:::i;:::-;6774:11;:29;;;;:::i;:::-;18461:23;;;;:::i;:::-;:36;;;;:::i;:::-;18447:11;:50;;;;18529:11;;18516;;:24;;18508:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;18603:6;6726:1;6789:2;:13;;;;:::i;:::-;6774:11;:29;;;;:::i;:::-;18588:21;;;;:::i;:::-;18576:11;;:33;18568:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;18683:3;6726:1;6789:2;:13;;;;:::i;:::-;6774:11;:29;;;;:::i;:::-;18668:18;;;;:::i;:::-;18656:11;;:30;18648:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18258:465:::0;;;;:::o;5820:131::-;5754:6;;;;;;;;;;5740:20;;:10;:20;;;5732:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;5903:8:::1;5894:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;5918:30;5939:8;5918:30;;;;;;:::i;:::-;;;;;;;;5820:131:::0;:::o;16297:483::-;5754:6;;;;;;;;;;5740:20;;:10;:20;;;5732:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;16450:18:::1;16522:17;16504:15;16489:12;16471:15;:30;;;;:::i;:::-;:48;;;;:::i;:::-;:68;;;;:::i;:::-;16450:89;;16573:1;16559:11;:15;;;16550:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;16620:12;16605;;:27;;;;;;;;;;;;;;;;;;16665:15;16643:19;;:37;;;;;;;;;;;;;;;;;;16715:17;16691:21;;:41;;;;;;;;;;;;;;;;;;16761:11;16743:15;;:29;;;;;;;;;;;;;;;;;;16439:341;16297:483:::0;;;;:::o;16066:223::-;5754:6;;;;;;;;;;5740:20;;:10;:20;;;5732:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;16186:2:::1;16172:10;16160:9;:22;;;;:::i;:::-;:28;;;;16152:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;16236:9;16222:11;;:23;;;;;;;;;;;;;;;;;;16271:10;16256:12;;:25;;;;;;;;;;;;;;;;;;16066:223:::0;;:::o;12090:385::-;12193:24;12220:8;;;;;;;;;;;12193:35;;12244:8;12239:50;;;12284:1;12257:29;;12239:50;12299:28;12314:12;12299:14;:28::i;:::-;12338:18;;;;;;;;;;;:34;;;12380:13;12405:4;12412:12;12426:1;12429;12432:16;12450:15;12338:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12182:293;12090:385;;;:::o;14136:279::-;14201:4;14217:16;14236:5;14217:24;;14257:12;;;;;;;;;;;14252:124;;;14288:4;14274:18;;14252:124;;;14315:7;:15;14323:6;14315:15;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;14334:9;:17;14344:6;14334:17;;;;;;;;;;;;;;;;;;;;;;;;;14315:36;14311:65;;;14369:4;14355:18;;14311:65;14252:124;14396:11;14389:18;;;14136:279;;;:::o;12667:958::-;12759:4;12802:1;12784:20;;:6;:20;;;12776:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;12854:12;;;;;;;;;;;12849:89;;12878:7;:15;12886:6;12878:15;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;12897:9;:17;12907:6;12897:17;;;;;;;;;;;;;;;;;;;;;;;;;12878:36;12870:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;12849:89;12954:10;;;;;;;;;;;12953:11;:31;;;;;12968:5;:16;12974:9;12968:16;;;;;;;;;;;;;;;;;;;;;;;;;12953:31;12948:64;;;12989:20;:18;:20::i;:::-;12948:64;13055:4;13037:23;;:6;:23;;;;:53;;;;;13085:4;13064:26;;:9;:26;;;;13037:53;:73;;;;;13104:6;;;;;;;;;;13094:16;;:6;:16;;;;13037:73;13032:155;;;13123:39;13136:6;13144:9;13155:6;13123:12;:39::i;:::-;13115:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;13032:155;13197:18;13218:40;13232:6;13240:9;13251:6;13218:13;:40::i;:::-;13197:61;;13269:23;13304:10;13295:6;:19;;;;:::i;:::-;13269:45;;13365:6;13345:9;:17;13355:6;13345:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;13325:9;:17;13335:6;13325:17;;;;;;;;;;;;;;;:46;;;;13400:1;13387:10;:14;13382:91;;;13460:10;13433:9;:24;13451:4;13433:24;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;13406:9;:24;13424:4;13406:24;;;;;;;;;;;;;;;:64;;;;13382:91;13529:15;13506:9;:20;13516:9;13506:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;13483:9;:20;13493:9;13483:20;;;;;;;;;;;;;;;:61;;;;13577:9;13560:35;;13569:6;13560:35;;;13588:6;13560:35;;;;;;:::i;:::-;;;;;;;;13613:4;13606:11;;;;12667:958;;;;;:::o;20347:366::-;20417:27;20432:11;20417:14;:27::i;:::-;20455:21;20493:1;20479:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20455:40;;20524:4;20506;20511:1;20506:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;20550:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20540:4;20545:1;20540:7;;;;;;;;:::i;:::-;;;;;;;:35;;;;;;;;;;;20586:18;;;;;;;;;;;:69;;;20656:11;20668:1;20670:4;20683;20689:15;20586:119;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20406:307;20347:366;:::o;20721:541::-;20783:21;20829;;;;;;;;;;;20807:19;;;;;;;;;;;:43;;;;:::i;:::-;20783:67;;20882:1;20865:14;:18;;;20861:394;;;20900:23;20957:14;20926:45;;20935:19;;;;;;;;;;;20926:28;;:6;:28;;;;:::i;:::-;:45;;;;:::i;:::-;20900:71;;20986:25;21047:14;21014:47;;21023:21;;;;;;;;;;;21014:30;;:6;:30;;;;:::i;:::-;:47;;;;:::i;:::-;20986:75;;21099:1;21081:15;:19;21076:74;;;21105:16;;;;;;;;;;;:25;;:42;21131:15;21105:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21076:74;21189:1;21169:17;:21;21164:80;;;21195:18;;;;;;;;;;;:27;;:46;21223:17;21195:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21164:80;20885:370;;20861:394;20772:490;20721:541;:::o;18731:267::-;18821:1;18812:6;:10;18807:184;;;18865:6;18840:9;:21;18850:10;18840:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;18912:6;18886:9;:22;8031:1;18886:22;;;;;;;;;;;;;;;;:32;;;;;;;:::i;:::-;;;;;;;;8031:1;18938:41;;18947:10;18938:41;;;18972:6;18938:41;;;;;;:::i;:::-;;;;;;;;18807:184;18731:267;;:::o;12483:176::-;12565:3;12561:1;6726;6789:2;:13;;;;:::i;:::-;6774:11;:29;;;;:::i;:::-;12546:16;;;;:::i;:::-;:22;;;;:::i;:::-;12527:12;:41;;;;12618:3;12614:1;6726;6789:2;:13;;;;:::i;:::-;6774:11;:29;;;;:::i;:::-;12599:16;;;;:::i;:::-;:22;;;;:::i;:::-;12580:16;:41;;;;12647:4;12632:12;;:19;;;;;;;;;;;;;;;;;;12483:176::o;11255:317::-;11375:12;11326:11;:26;11346:4;11326:26;;;;;;;;;;;;;;;:46;8127:42;11326:46;;;;;;;;;;;;;;;;:61;11321:244;;;11454:17;11405:11;:26;11425:4;11405:26;;;;;;;;;;;;;;;:46;8127:42;11405:46;;;;;;;;;;;;;;;:66;;;;8127:42;11491:62;;11508:4;11491:62;;;11535:17;11491:62;;;;;;:::i;:::-;;;;;;;;11321:244;11255:317;:::o;19006:1333::-;8459:4;8446:10;;:17;;;;;;;;;;;;;;;;;;19067:27:::1;19097:24;19115:4;19097:9;:24::i;:::-;19067:54;;19162:11;;19139:19;:34;;:50;;;;;19177:12;;;;;;;;;;;19139:50;19134:1198;;;19235:11;;19212:19;:34;19207:80;;19273:11;;19251:33;;19207:80;19303:20;19381:1;19363:15;;;;;;;;;;;19326:52;;19348:12;;;;;;;;;;;19326:34;;:19;:34;;;;:::i;:::-;:52;;;;:::i;:::-;:56;;;;:::i;:::-;19303:79;;19397:21;19460:15:::0;::::1;;;;;;;;;;19421:54;;19443:14;;;;;;;;;;;19421:36;;:19;:36;;;;:::i;:::-;:54;;;;:::i;:::-;19397:78;;19490:41;19510:4;19517:13;19490:11;:41::i;:::-;19560:21;19621:13;19606:12;19584:19;:34;;;;:::i;:::-;:50;;;;:::i;:::-;19560:74;;6726:1;19669:2;:13;;;;:::i;:::-;19653;:29;19649:521;;;19704:19;19726:21;19704:43;;19766:35;19787:13;19766:20;:35::i;:::-;19820:19;19866:11;19842:21;:35;;;;:::i;:::-;19820:57;;19916:1;19901:12:::0;::::1;;;;;;;;;;:16;;;19896:259;;;19943:21;19996:15:::0;::::1;;;;;;;;;;19967:44;;19981:12;;;;;;;;;;;19967:26;;:11;:26;;;;:::i;:::-;:44;;;;:::i;:::-;19943:68;;20035:28;20050:12;20035:14;:28::i;:::-;20086:49;20100:12;20114:13;20129:5;20086:13;:49::i;:::-;19920:235;19896:259;19685:485;;19649:521;20184:27;20214:21;20184:51;;20275:1;20253:19;:23;20250:71;;;20280:38;20298:19;20280:17;:38::i;:::-;20250:71;19192:1140;;;;19134:1198;19056:1283;8481:5:::0;8468:10;;:18;;;;;;;;;;;;;;;;;;19006:1333::o;13633:495::-;13737:4;13754:21;13778:4;13754:28;;13798:12;;;;;;;;;;;:34;;;;;13815:9;:17;13825:6;13815:17;;;;;;;;;;;;;;;;;;;;;;;;;13814:18;13798:34;:59;;;;;13837:9;:20;13847:9;13837:20;;;;;;;;;;;;;;;;;;;;;;;;;13836:21;13798:59;13793:294;;;13897:12;;13880:14;:29;13875:201;;;13933:5;13914:24;;13875:201;;;13966:5;:16;13972:9;13966:16;;;;;;;;;;;;;;;;;;;;;;;;;13965:17;:79;;;;;14027:16;;14010:14;13987:9;:20;13997:9;13987:20;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;:56;13965:79;13960:116;;;14068:5;14049:24;;13960:116;13875:201;13793:294;14104:16;14097:23;;;13633:495;;;;;:::o;14423:421::-;14520:7;14540:17;14574:12;;;;;;;;;;;14573:13;:32;;;;14590:7;:15;14598:6;14590:15;;;;;;;;;;;;;;;;;;;;;;;;;14573:32;:54;;;;14609:7;:18;14617:9;14609:18;;;;;;;;;;;;;;;;;;;;;;;;;14573:54;14568:242;;;14644:1;14632:13;;14568:242;;;14668:5;:13;14674:6;14668:13;;;;;;;;;;;;;;;;;;;;;;;;;14663:147;;;14721:3;14707:11;;;;;;;;;;;14698:20;;:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;14686:38;;14663:147;;;14747:5;:16;14753:9;14747:16;;;;;;;;;;;;;;;;;;;;;;;;;14742:68;;;14804:3;14789:12;;;;;;;;;;;14780:21;;:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;14768:39;;14742:68;14663:147;14568:242;14827:9;14820:16;;;14423:421;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:116::-;3868:21;3883:5;3868:21;:::i;:::-;3861:5;3858:32;3848:60;;3904:1;3901;3894:12;3848:60;3798:116;:::o;3920:133::-;3963:5;4001:6;3988:20;3979:29;;4017:30;4041:5;4017:30;:::i;:::-;3920:133;;;;:::o;4059:607::-;4130:6;4138;4146;4195:2;4183:9;4174:7;4170:23;4166:32;4163:119;;;4201:79;;:::i;:::-;4163:119;4321:1;4346:53;4391:7;4382:6;4371:9;4367:22;4346:53;:::i;:::-;4336:63;;4292:117;4448:2;4474:50;4516:7;4507:6;4496:9;4492:22;4474:50;:::i;:::-;4464:60;;4419:115;4573:2;4599:50;4641:7;4632:6;4621:9;4617:22;4599:50;:::i;:::-;4589:60;;4544:115;4059:607;;;;;:::o;4672:468::-;4737:6;4745;4794:2;4782:9;4773:7;4769:23;4765:32;4762:119;;;4800:79;;:::i;:::-;4762:119;4920:1;4945:53;4990:7;4981:6;4970:9;4966:22;4945:53;:::i;:::-;4935:63;;4891:117;5047:2;5073:50;5115:7;5106:6;5095:9;5091:22;5073:50;:::i;:::-;5063:60;;5018:115;4672:468;;;;;:::o;5146:86::-;5181:7;5221:4;5214:5;5210:16;5199:27;;5146:86;;;:::o;5238:112::-;5321:22;5337:5;5321:22;:::i;:::-;5316:3;5309:35;5238:112;;:::o;5356:89::-;5392:7;5432:6;5425:5;5421:18;5410:29;;5356:89;;;:::o;5451:115::-;5536:23;5553:5;5536:23;:::i;:::-;5531:3;5524:36;5451:115;;:::o;5572:743::-;5789:4;5827:3;5816:9;5812:19;5804:27;;5841:67;5905:1;5894:9;5890:17;5881:6;5841:67;:::i;:::-;5918:68;5982:2;5971:9;5967:18;5958:6;5918:68;:::i;:::-;5996:70;6062:2;6051:9;6047:18;6038:6;5996:70;:::i;:::-;6076;6142:2;6131:9;6127:18;6118:6;6076:70;:::i;:::-;6156:71;6222:3;6211:9;6207:19;6198:6;6156:71;:::i;:::-;6237;6303:3;6292:9;6288:19;6279:6;6237:71;:::i;:::-;5572:743;;;;;;;;;:::o;6321:619::-;6398:6;6406;6414;6463:2;6451:9;6442:7;6438:23;6434:32;6431:119;;;6469:79;;:::i;:::-;6431:119;6589:1;6614:53;6659:7;6650:6;6639:9;6635:22;6614:53;:::i;:::-;6604:63;;6560:117;6716:2;6742:53;6787:7;6778:6;6767:9;6763:22;6742:53;:::i;:::-;6732:63;;6687:118;6844:2;6870:53;6915:7;6906:6;6895:9;6891:22;6870:53;:::i;:::-;6860:63;;6815:118;6321:619;;;;;:::o;6946:118::-;7017:22;7033:5;7017:22;:::i;:::-;7010:5;7007:33;6997:61;;7054:1;7051;7044:12;6997:61;6946:118;:::o;7070:135::-;7114:5;7152:6;7139:20;7130:29;;7168:31;7193:5;7168:31;:::i;:::-;7070:135;;;;:::o;7211:464::-;7274:6;7282;7331:2;7319:9;7310:7;7306:23;7302:32;7299:119;;;7337:79;;:::i;:::-;7299:119;7457:1;7482:51;7525:7;7516:6;7505:9;7501:22;7482:51;:::i;:::-;7472:61;;7428:115;7582:2;7608:50;7650:7;7641:6;7630:9;7626:22;7608:50;:::i;:::-;7598:60;;7553:115;7211:464;;;;;:::o;7681:214::-;7770:4;7808:2;7797:9;7793:18;7785:26;;7821:67;7885:1;7874:9;7870:17;7861:6;7821:67;:::i;:::-;7681:214;;;;:::o;7901:117::-;8010:1;8007;8000:12;8024:117;8133:1;8130;8123:12;8147:117;8256:1;8253;8246:12;8287:568;8360:8;8370:6;8420:3;8413:4;8405:6;8401:17;8397:27;8387:122;;8428:79;;:::i;:::-;8387:122;8541:6;8528:20;8518:30;;8571:18;8563:6;8560:30;8557:117;;;8593:79;;:::i;:::-;8557:117;8707:4;8699:6;8695:17;8683:29;;8761:3;8753:4;8745:6;8741:17;8731:8;8727:32;8724:41;8721:128;;;8768:79;;:::i;:::-;8721:128;8287:568;;;;;:::o;8878:::-;8951:8;8961:6;9011:3;9004:4;8996:6;8992:17;8988:27;8978:122;;9019:79;;:::i;:::-;8978:122;9132:6;9119:20;9109:30;;9162:18;9154:6;9151:30;9148:117;;;9184:79;;:::i;:::-;9148:117;9298:4;9290:6;9286:17;9274:29;;9352:3;9344:4;9336:6;9332:17;9322:8;9318:32;9315:41;9312:128;;;9359:79;;:::i;:::-;9312:128;8878:568;;;;;:::o;9452:934::-;9574:6;9582;9590;9598;9647:2;9635:9;9626:7;9622:23;9618:32;9615:119;;;9653:79;;:::i;:::-;9615:119;9801:1;9790:9;9786:17;9773:31;9831:18;9823:6;9820:30;9817:117;;;9853:79;;:::i;:::-;9817:117;9966:80;10038:7;10029:6;10018:9;10014:22;9966:80;:::i;:::-;9948:98;;;;9744:312;10123:2;10112:9;10108:18;10095:32;10154:18;10146:6;10143:30;10140:117;;;10176:79;;:::i;:::-;10140:117;10289:80;10361:7;10352:6;10341:9;10337:22;10289:80;:::i;:::-;10271:98;;;;10066:313;9452:934;;;;;;;:::o;10392:329::-;10451:6;10500:2;10488:9;10479:7;10475:23;10471:32;10468:119;;;10506:79;;:::i;:::-;10468:119;10626:1;10651:53;10696:7;10687:6;10676:9;10672:22;10651:53;:::i;:::-;10641:63;;10597:117;10392:329;;;;:::o;10727:553::-;10904:4;10942:3;10931:9;10927:19;10919:27;;10956:71;11024:1;11013:9;11009:17;11000:6;10956:71;:::i;:::-;11037:72;11105:2;11094:9;11090:18;11081:6;11037:72;:::i;:::-;11119;11187:2;11176:9;11172:18;11163:6;11119:72;:::i;:::-;11201;11269:2;11258:9;11254:18;11245:6;11201:72;:::i;:::-;10727:553;;;;;;;:::o;11286:329::-;11345:6;11394:2;11382:9;11373:7;11369:23;11365:32;11362:119;;;11400:79;;:::i;:::-;11362:119;11520:1;11545:53;11590:7;11581:6;11570:9;11566:22;11545:53;:::i;:::-;11535:63;;11491:117;11286:329;;;;:::o;11621:308::-;11730:4;11768:2;11757:9;11753:18;11745:26;;11781:65;11843:1;11832:9;11828:17;11819:6;11781:65;:::i;:::-;11856:66;11918:2;11907:9;11903:18;11894:6;11856:66;:::i;:::-;11621:308;;;;;:::o;11935:619::-;12012:6;12020;12028;12077:2;12065:9;12056:7;12052:23;12048:32;12045:119;;;12083:79;;:::i;:::-;12045:119;12203:1;12228:53;12273:7;12264:6;12253:9;12249:22;12228:53;:::i;:::-;12218:63;;12174:117;12330:2;12356:53;12401:7;12392:6;12381:9;12377:22;12356:53;:::i;:::-;12346:63;;12301:118;12458:2;12484:53;12529:7;12520:6;12509:9;12505:22;12484:53;:::i;:::-;12474:63;;12429:118;11935:619;;;;;:::o;12560:118::-;12647:24;12665:5;12647:24;:::i;:::-;12642:3;12635:37;12560:118;;:::o;12684:664::-;12889:4;12927:3;12916:9;12912:19;12904:27;;12941:71;13009:1;12998:9;12994:17;12985:6;12941:71;:::i;:::-;13022:72;13090:2;13079:9;13075:18;13066:6;13022:72;:::i;:::-;13104;13172:2;13161:9;13157:18;13148:6;13104:72;:::i;:::-;13186;13254:2;13243:9;13239:18;13230:6;13186:72;:::i;:::-;13268:73;13336:3;13325:9;13321:19;13312:6;13268:73;:::i;:::-;12684:664;;;;;;;;:::o;13354:120::-;13426:23;13443:5;13426:23;:::i;:::-;13419:5;13416:34;13406:62;;13464:1;13461;13454:12;13406:62;13354:120;:::o;13480:137::-;13525:5;13563:6;13550:20;13541:29;;13579:32;13605:5;13579:32;:::i;:::-;13480:137;;;;:::o;13623:470::-;13689:6;13697;13746:2;13734:9;13725:7;13721:23;13717:32;13714:119;;;13752:79;;:::i;:::-;13714:119;13872:1;13897:52;13941:7;13932:6;13921:9;13917:22;13897:52;:::i;:::-;13887:62;;13843:116;13998:2;14024:52;14068:7;14059:6;14048:9;14044:22;14024:52;:::i;:::-;14014:62;;13969:117;13623:470;;;;;:::o;14099:474::-;14167:6;14175;14224:2;14212:9;14203:7;14199:23;14195:32;14192:119;;;14230:79;;:::i;:::-;14192:119;14350:1;14375:53;14420:7;14411:6;14400:9;14396:22;14375:53;:::i;:::-;14365:63;;14321:117;14477:2;14503:53;14548:7;14539:6;14528:9;14524:22;14503:53;:::i;:::-;14493:63;;14448:118;14099:474;;;;;:::o;14579:93::-;14615:7;14655:10;14648:5;14644:22;14633:33;;14579:93;;;:::o;14678:120::-;14750:23;14767:5;14750:23;:::i;:::-;14743:5;14740:34;14730:62;;14788:1;14785;14778:12;14730:62;14678:120;:::o;14804:137::-;14849:5;14887:6;14874:20;14865:29;;14903:32;14929:5;14903:32;:::i;:::-;14804:137;;;;:::o;14947:757::-;15029:6;15037;15045;15053;15102:3;15090:9;15081:7;15077:23;15073:33;15070:120;;;15109:79;;:::i;:::-;15070:120;15229:1;15254:52;15298:7;15289:6;15278:9;15274:22;15254:52;:::i;:::-;15244:62;;15200:116;15355:2;15381:52;15425:7;15416:6;15405:9;15401:22;15381:52;:::i;:::-;15371:62;;15326:117;15482:2;15508:52;15552:7;15543:6;15532:9;15528:22;15508:52;:::i;:::-;15498:62;;15453:117;15609:2;15635:52;15679:7;15670:6;15659:9;15655:22;15635:52;:::i;:::-;15625:62;;15580:117;14947:757;;;;;;;:::o;15710:104::-;15755:7;15784:24;15802:5;15784:24;:::i;:::-;15773:35;;15710:104;;;:::o;15820:138::-;15901:32;15927:5;15901:32;:::i;:::-;15894:5;15891:43;15881:71;;15948:1;15945;15938:12;15881:71;15820:138;:::o;15964:155::-;16018:5;16056:6;16043:20;16034:29;;16072:41;16107:5;16072:41;:::i;:::-;15964:155;;;;:::o;16125:345::-;16192:6;16241:2;16229:9;16220:7;16216:23;16212:32;16209:119;;;16247:79;;:::i;:::-;16209:119;16367:1;16392:61;16445:7;16436:6;16425:9;16421:22;16392:61;:::i;:::-;16382:71;;16338:125;16125:345;;;;:::o;16476:757::-;16558:6;16566;16574;16582;16631:3;16619:9;16610:7;16606:23;16602:33;16599:120;;;16638:79;;:::i;:::-;16599:120;16758:1;16783:52;16827:7;16818:6;16807:9;16803:22;16783:52;:::i;:::-;16773:62;;16729:116;16884:2;16910:52;16954:7;16945:6;16934:9;16930:22;16910:52;:::i;:::-;16900:62;;16855:117;17011:2;17037:52;17081:7;17072:6;17061:9;17057:22;17037:52;:::i;:::-;17027:62;;16982:117;17138:2;17164:52;17208:7;17199:6;17188:9;17184:22;17164:52;:::i;:::-;17154:62;;17109:117;16476:757;;;;;;;:::o;17239:466::-;17303:6;17311;17360:2;17348:9;17339:7;17335:23;17331:32;17328:119;;;17366:79;;:::i;:::-;17328:119;17486:1;17511:51;17554:7;17545:6;17534:9;17530:22;17511:51;:::i;:::-;17501:61;;17457:115;17611:2;17637:51;17680:7;17671:6;17660:9;17656:22;17637:51;:::i;:::-;17627:61;;17582:116;17239:466;;;;;:::o;17711:230::-;17851:34;17847:1;17839:6;17835:14;17828:58;17920:13;17915:2;17907:6;17903:15;17896:38;17711:230;:::o;17947:366::-;18089:3;18110:67;18174:2;18169:3;18110:67;:::i;:::-;18103:74;;18186:93;18275:3;18186:93;:::i;:::-;18304:2;18299:3;18295:12;18288:19;;17947:366;;;:::o;18319:419::-;18485:4;18523:2;18512:9;18508:18;18500:26;;18572:9;18566:4;18562:20;18558:1;18547:9;18543:17;18536:47;18600:131;18726:4;18600:131;:::i;:::-;18592:139;;18319:419;;;:::o;18744:159::-;18884:11;18880:1;18872:6;18868:14;18861:35;18744:159;:::o;18909:365::-;19051:3;19072:66;19136:1;19131:3;19072:66;:::i;:::-;19065:73;;19147:93;19236:3;19147:93;:::i;:::-;19265:2;19260:3;19256:12;19249:19;;18909:365;;;:::o;19280:419::-;19446:4;19484:2;19473:9;19469:18;19461:26;;19533:9;19527:4;19523:20;19519:1;19508:9;19504:17;19497:47;19561:131;19687:4;19561:131;:::i;:::-;19553:139;;19280:419;;;:::o;19705:168::-;19845:20;19841:1;19833:6;19829:14;19822:44;19705:168;:::o;19879:366::-;20021:3;20042:67;20106:2;20101:3;20042:67;:::i;:::-;20035:74;;20118:93;20207:3;20118:93;:::i;:::-;20236:2;20231:3;20227:12;20220:19;;19879:366;;;:::o;20251:419::-;20417:4;20455:2;20444:9;20440:18;20432:26;;20504:9;20498:4;20494:20;20490:1;20479:9;20475:17;20468:47;20532:131;20658:4;20532:131;:::i;:::-;20524:139;;20251:419;;;:::o;20676:171::-;20816:23;20812:1;20804:6;20800:14;20793:47;20676:171;:::o;20853:366::-;20995:3;21016:67;21080:2;21075:3;21016:67;:::i;:::-;21009:74;;21092:93;21181:3;21092:93;:::i;:::-;21210:2;21205:3;21201:12;21194:19;;20853:366;;;:::o;21225:419::-;21391:4;21429:2;21418:9;21414:18;21406:26;;21478:9;21472:4;21468:20;21464:1;21453:9;21449:17;21442:47;21506:131;21632:4;21506:131;:::i;:::-;21498:139;;21225:419;;;:::o;21650:143::-;21707:5;21738:6;21732:13;21723:22;;21754:33;21781:5;21754:33;:::i;:::-;21650:143;;;;:::o;21799:351::-;21869:6;21918:2;21906:9;21897:7;21893:23;21889:32;21886:119;;;21924:79;;:::i;:::-;21886:119;22044:1;22069:64;22125:7;22116:6;22105:9;22101:22;22069:64;:::i;:::-;22059:74;;22015:128;21799:351;;;;:::o;22156:332::-;22277:4;22315:2;22304:9;22300:18;22292:26;;22328:71;22396:1;22385:9;22381:17;22372:6;22328:71;:::i;:::-;22409:72;22477:2;22466:9;22462:18;22453:6;22409:72;:::i;:::-;22156:332;;;;;:::o;22494:180::-;22542:77;22539:1;22532:88;22639:4;22636:1;22629:15;22663:4;22660:1;22653:15;22680:102;22722:8;22769:5;22766:1;22762:13;22741:34;;22680:102;;;:::o;22788:848::-;22849:5;22856:4;22880:6;22871:15;;22904:5;22895:14;;22918:712;22939:1;22929:8;22926:15;22918:712;;;23034:4;23029:3;23025:14;23019:4;23016:24;23013:50;;;23043:18;;:::i;:::-;23013:50;23093:1;23083:8;23079:16;23076:451;;;23508:4;23501:5;23497:16;23488:25;;23076:451;23558:4;23552;23548:15;23540:23;;23588:32;23611:8;23588:32;:::i;:::-;23576:44;;22918:712;;;22788:848;;;;;;;:::o;23642:1073::-;23696:5;23887:8;23877:40;;23908:1;23899:10;;23910:5;;23877:40;23936:4;23926:36;;23953:1;23944:10;;23955:5;;23926:36;24022:4;24070:1;24065:27;;;;24106:1;24101:191;;;;24015:277;;24065:27;24083:1;24074:10;;24085:5;;;24101:191;24146:3;24136:8;24133:17;24130:43;;;24153:18;;:::i;:::-;24130:43;24202:8;24199:1;24195:16;24186:25;;24237:3;24230:5;24227:14;24224:40;;;24244:18;;:::i;:::-;24224:40;24277:5;;;24015:277;;24401:2;24391:8;24388:16;24382:3;24376:4;24373:13;24369:36;24351:2;24341:8;24338:16;24333:2;24327:4;24324:12;24320:35;24304:111;24301:246;;;24457:8;24451:4;24447:19;24438:28;;24492:3;24485:5;24482:14;24479:40;;;24499:18;;:::i;:::-;24479:40;24532:5;;24301:246;24572:42;24610:3;24600:8;24594:4;24591:1;24572:42;:::i;:::-;24557:57;;;;24646:4;24641:3;24637:14;24630:5;24627:25;24624:51;;;24655:18;;:::i;:::-;24624:51;24704:4;24697:5;24693:16;24684:25;;23642:1073;;;;;;:::o;24721:281::-;24779:5;24803:23;24821:4;24803:23;:::i;:::-;24795:31;;24847:25;24863:8;24847:25;:::i;:::-;24835:37;;24891:104;24928:66;24918:8;24912:4;24891:104;:::i;:::-;24882:113;;24721:281;;;;:::o;25008:410::-;25048:7;25071:20;25089:1;25071:20;:::i;:::-;25066:25;;25105:20;25123:1;25105:20;:::i;:::-;25100:25;;25160:1;25157;25153:9;25182:30;25200:11;25182:30;:::i;:::-;25171:41;;25361:1;25352:7;25348:15;25345:1;25342:22;25322:1;25315:9;25295:83;25272:139;;25391:18;;:::i;:::-;25272:139;25056:362;25008:410;;;;:::o;25424:166::-;25564:18;25560:1;25552:6;25548:14;25541:42;25424:166;:::o;25596:366::-;25738:3;25759:67;25823:2;25818:3;25759:67;:::i;:::-;25752:74;;25835:93;25924:3;25835:93;:::i;:::-;25953:2;25948:3;25944:12;25937:19;;25596:366;;;:::o;25968:419::-;26134:4;26172:2;26161:9;26157:18;26149:26;;26221:9;26215:4;26211:20;26207:1;26196:9;26192:17;26185:47;26249:131;26375:4;26249:131;:::i;:::-;26241:139;;25968:419;;;:::o;26393:178::-;26533:30;26529:1;26521:6;26517:14;26510:54;26393:178;:::o;26577:366::-;26719:3;26740:67;26804:2;26799:3;26740:67;:::i;:::-;26733:74;;26816:93;26905:3;26816:93;:::i;:::-;26934:2;26929:3;26925:12;26918:19;;26577:366;;;:::o;26949:419::-;27115:4;27153:2;27142:9;27138:18;27130:26;;27202:9;27196:4;27192:20;27188:1;27177:9;27173:17;27166:47;27230:131;27356:4;27230:131;:::i;:::-;27222:139;;26949:419;;;:::o;27374:166::-;27514:18;27510:1;27502:6;27498:14;27491:42;27374:166;:::o;27546:366::-;27688:3;27709:67;27773:2;27768:3;27709:67;:::i;:::-;27702:74;;27785:93;27874:3;27785:93;:::i;:::-;27903:2;27898:3;27894:12;27887:19;;27546:366;;;:::o;27918:419::-;28084:4;28122:2;28111:9;28107:18;28099:26;;28171:9;28165:4;28161:20;28157:1;28146:9;28142:17;28135:47;28199:131;28325:4;28199:131;:::i;:::-;28191:139;;27918:419;;;:::o;28343:194::-;28383:4;28403:20;28421:1;28403:20;:::i;:::-;28398:25;;28437:20;28455:1;28437:20;:::i;:::-;28432:25;;28481:1;28478;28474:9;28466:17;;28505:1;28499:4;28496:11;28493:37;;;28510:18;;:::i;:::-;28493:37;28343:194;;;;:::o;28543:176::-;28683:28;28679:1;28671:6;28667:14;28660:52;28543:176;:::o;28725:366::-;28867:3;28888:67;28952:2;28947:3;28888:67;:::i;:::-;28881:74;;28964:93;29053:3;28964:93;:::i;:::-;29082:2;29077:3;29073:12;29066:19;;28725:366;;;:::o;29097:419::-;29263:4;29301:2;29290:9;29286:18;29278:26;;29350:9;29344:4;29340:20;29336:1;29325:9;29321:17;29314:47;29378:131;29504:4;29378:131;:::i;:::-;29370:139;;29097:419;;;:::o;29522:180::-;29570:77;29567:1;29560:88;29667:4;29664:1;29657:15;29691:4;29688:1;29681:15;29708:185;29748:1;29765:20;29783:1;29765:20;:::i;:::-;29760:25;;29799:20;29817:1;29799:20;:::i;:::-;29794:25;;29838:1;29828:35;;29843:18;;:::i;:::-;29828:35;29885:1;29882;29878:9;29873:14;;29708:185;;;;:::o;29899:159::-;30039:11;30035:1;30027:6;30023:14;30016:35;29899:159;:::o;30064:365::-;30206:3;30227:66;30291:1;30286:3;30227:66;:::i;:::-;30220:73;;30302:93;30391:3;30302:93;:::i;:::-;30420:2;30415:3;30411:12;30404:19;;30064:365;;;:::o;30435:419::-;30601:4;30639:2;30628:9;30624:18;30616:26;;30688:9;30682:4;30678:20;30674:1;30663:9;30659:17;30652:47;30716:131;30842:4;30716:131;:::i;:::-;30708:139;;30435:419;;;:::o;30860:182::-;31000:34;30996:1;30988:6;30984:14;30977:58;30860:182;:::o;31048:366::-;31190:3;31211:67;31275:2;31270:3;31211:67;:::i;:::-;31204:74;;31287:93;31376:3;31287:93;:::i;:::-;31405:2;31400:3;31396:12;31389:19;;31048:366;;;:::o;31420:419::-;31586:4;31624:2;31613:9;31609:18;31601:26;;31673:9;31667:4;31663:20;31659:1;31648:9;31644:17;31637:47;31701:131;31827:4;31701:131;:::i;:::-;31693:139;;31420:419;;;:::o;31845:224::-;31985:34;31981:1;31973:6;31969:14;31962:58;32054:7;32049:2;32041:6;32037:15;32030:32;31845:224;:::o;32075:366::-;32217:3;32238:67;32302:2;32297:3;32238:67;:::i;:::-;32231:74;;32314:93;32403:3;32314:93;:::i;:::-;32432:2;32427:3;32423:12;32416:19;;32075:366;;;:::o;32447:419::-;32613:4;32651:2;32640:9;32636:18;32628:26;;32700:9;32694:4;32690:20;32686:1;32675:9;32671:17;32664:47;32728:131;32854:4;32728:131;:::i;:::-;32720:139;;32447:419;;;:::o;32872:180::-;32920:77;32917:1;32910:88;33017:4;33014:1;33007:15;33041:4;33038:1;33031:15;33058:191;33098:3;33117:20;33135:1;33117:20;:::i;:::-;33112:25;;33151:20;33169:1;33151:20;:::i;:::-;33146:25;;33194:1;33191;33187:9;33180:16;;33215:3;33212:1;33209:10;33206:36;;;33222:18;;:::i;:::-;33206:36;33058:191;;;;:::o;33255:233::-;33294:3;33317:24;33335:5;33317:24;:::i;:::-;33308:33;;33363:66;33356:5;33353:77;33350:103;;33433:18;;:::i;:::-;33350:103;33480:1;33473:5;33469:13;33462:20;;33255:233;;;:::o;33494:225::-;33634:34;33630:1;33622:6;33618:14;33611:58;33703:8;33698:2;33690:6;33686:15;33679:33;33494:225;:::o;33725:366::-;33867:3;33888:67;33952:2;33947:3;33888:67;:::i;:::-;33881:74;;33964:93;34053:3;33964:93;:::i;:::-;34082:2;34077:3;34073:12;34066:19;;33725:366;;;:::o;34097:419::-;34263:4;34301:2;34290:9;34286:18;34278:26;;34350:9;34344:4;34340:20;34336:1;34325:9;34321:17;34314:47;34378:131;34504:4;34378:131;:::i;:::-;34370:139;;34097:419;;;:::o;34522:332::-;34643:4;34681:2;34670:9;34666:18;34658:26;;34694:71;34762:1;34751:9;34747:17;34738:6;34694:71;:::i;:::-;34775:72;34843:2;34832:9;34828:18;34819:6;34775:72;:::i;:::-;34522:332;;;;;:::o;34860:171::-;35000:23;34996:1;34988:6;34984:14;34977:47;34860:171;:::o;35037:366::-;35179:3;35200:67;35264:2;35259:3;35200:67;:::i;:::-;35193:74;;35276:93;35365:3;35276:93;:::i;:::-;35394:2;35389:3;35385:12;35378:19;;35037:366;;;:::o;35409:419::-;35575:4;35613:2;35602:9;35598:18;35590:26;;35662:9;35656:4;35652:20;35648:1;35637:9;35633:17;35626:47;35690:131;35816:4;35690:131;:::i;:::-;35682:139;;35409:419;;;:::o;35834:173::-;35974:25;35970:1;35962:6;35958:14;35951:49;35834:173;:::o;36013:366::-;36155:3;36176:67;36240:2;36235:3;36176:67;:::i;:::-;36169:74;;36252:93;36341:3;36252:93;:::i;:::-;36370:2;36365:3;36361:12;36354:19;;36013:366;;;:::o;36385:419::-;36551:4;36589:2;36578:9;36574:18;36566:26;;36638:9;36632:4;36628:20;36624:1;36613:9;36609:17;36602:47;36666:131;36792:4;36666:131;:::i;:::-;36658:139;;36385:419;;;:::o;36810:166::-;36950:18;36946:1;36938:6;36934:14;36927:42;36810:166;:::o;36982:366::-;37124:3;37145:67;37209:2;37204:3;37145:67;:::i;:::-;37138:74;;37221:93;37310:3;37221:93;:::i;:::-;37339:2;37334:3;37330:12;37323:19;;36982:366;;;:::o;37354:419::-;37520:4;37558:2;37547:9;37543:18;37535:26;;37607:9;37601:4;37597:20;37593:1;37582:9;37578:17;37571:47;37635:131;37761:4;37635:131;:::i;:::-;37627:139;;37354:419;;;:::o;37779:170::-;37919:22;37915:1;37907:6;37903:14;37896:46;37779:170;:::o;37955:366::-;38097:3;38118:67;38182:2;38177:3;38118:67;:::i;:::-;38111:74;;38194:93;38283:3;38194:93;:::i;:::-;38312:2;38307:3;38303:12;38296:19;;37955:366;;;:::o;38327:419::-;38493:4;38531:2;38520:9;38516:18;38508:26;;38580:9;38574:4;38570:20;38566:1;38555:9;38551:17;38544:47;38608:131;38734:4;38608:131;:::i;:::-;38600:139;;38327:419;;;:::o;38752:170::-;38892:22;38888:1;38880:6;38876:14;38869:46;38752:170;:::o;38928:366::-;39070:3;39091:67;39155:2;39150:3;39091:67;:::i;:::-;39084:74;;39167:93;39256:3;39167:93;:::i;:::-;39285:2;39280:3;39276:12;39269:19;;38928:366;;;:::o;39300:419::-;39466:4;39504:2;39493:9;39489:18;39481:26;;39553:9;39547:4;39543:20;39539:1;39528:9;39524:17;39517:47;39581:131;39707:4;39581:131;:::i;:::-;39573:139;;39300:419;;;:::o;39725:162::-;39865:14;39861:1;39853:6;39849:14;39842:38;39725:162;:::o;39893:366::-;40035:3;40056:67;40120:2;40115:3;40056:67;:::i;:::-;40049:74;;40132:93;40221:3;40132:93;:::i;:::-;40250:2;40245:3;40241:12;40234:19;;39893:366;;;:::o;40265:419::-;40431:4;40469:2;40458:9;40454:18;40446:26;;40518:9;40512:4;40508:20;40504:1;40493:9;40489:17;40482:47;40546:131;40672:4;40546:131;:::i;:::-;40538:139;;40265:419;;;:::o;40690:173::-;40830:25;40826:1;40818:6;40814:14;40807:49;40690:173;:::o;40869:366::-;41011:3;41032:67;41096:2;41091:3;41032:67;:::i;:::-;41025:74;;41108:93;41197:3;41108:93;:::i;:::-;41226:2;41221:3;41217:12;41210:19;;40869:366;;;:::o;41241:419::-;41407:4;41445:2;41434:9;41430:18;41422:26;;41494:9;41488:4;41484:20;41480:1;41469:9;41465:17;41458:47;41522:131;41648:4;41522:131;:::i;:::-;41514:139;;41241:419;;;:::o;41666:174::-;41806:26;41802:1;41794:6;41790:14;41783:50;41666:174;:::o;41846:366::-;41988:3;42009:67;42073:2;42068:3;42009:67;:::i;:::-;42002:74;;42085:93;42174:3;42085:93;:::i;:::-;42203:2;42198:3;42194:12;42187:19;;41846:366;;;:::o;42218:419::-;42384:4;42422:2;42411:9;42407:18;42399:26;;42471:9;42465:4;42461:20;42457:1;42446:9;42442:17;42435:47;42499:131;42625:4;42499:131;:::i;:::-;42491:139;;42218:419;;;:::o;42643:60::-;42671:3;42692:5;42685:12;;42643:60;;;:::o;42709:142::-;42759:9;42792:53;42810:34;42819:24;42837:5;42819:24;:::i;:::-;42810:34;:::i;:::-;42792:53;:::i;:::-;42779:66;;42709:142;;;:::o;42857:126::-;42907:9;42940:37;42971:5;42940:37;:::i;:::-;42927:50;;42857:126;;;:::o;42989:134::-;43047:9;43080:37;43111:5;43080:37;:::i;:::-;43067:50;;42989:134;;;:::o;43129:147::-;43224:45;43263:5;43224:45;:::i;:::-;43219:3;43212:58;43129:147;;:::o;43282:238::-;43383:4;43421:2;43410:9;43406:18;43398:26;;43434:79;43510:1;43499:9;43495:17;43486:6;43434:79;:::i;:::-;43282:238;;;;:::o;43526:193::-;43565:3;43584:19;43601:1;43584:19;:::i;:::-;43579:24;;43617:19;43634:1;43617:19;:::i;:::-;43612:24;;43659:1;43656;43652:9;43645:16;;43682:6;43677:3;43674:15;43671:41;;;43692:18;;:::i;:::-;43671:41;43526:193;;;;:::o;43725:165::-;43865:17;43861:1;43853:6;43849:14;43842:41;43725:165;:::o;43896:366::-;44038:3;44059:67;44123:2;44118:3;44059:67;:::i;:::-;44052:74;;44135:93;44224:3;44135:93;:::i;:::-;44253:2;44248:3;44244:12;44237:19;;43896:366;;;:::o;44268:419::-;44434:4;44472:2;44461:9;44457:18;44449:26;;44521:9;44515:4;44511:20;44507:1;44496:9;44492:17;44485:47;44549:131;44675:4;44549:131;:::i;:::-;44541:139;;44268:419;;;:::o;44693:188::-;44731:3;44750:18;44766:1;44750:18;:::i;:::-;44745:23;;44782:18;44798:1;44782:18;:::i;:::-;44777:23;;44823:1;44820;44816:9;44809:16;;44846:4;44841:3;44838:13;44835:39;;;44854:18;;:::i;:::-;44835:39;44693:188;;;;:::o;44887:168::-;45027:20;45023:1;45015:6;45011:14;45004:44;44887:168;:::o;45061:366::-;45203:3;45224:67;45288:2;45283:3;45224:67;:::i;:::-;45217:74;;45300:93;45389:3;45300:93;:::i;:::-;45418:2;45413:3;45409:12;45402:19;;45061:366;;;:::o;45433:419::-;45599:4;45637:2;45626:9;45622:18;45614:26;;45686:9;45680:4;45676:20;45672:1;45661:9;45657:17;45650:47;45714:131;45840:4;45714:131;:::i;:::-;45706:139;;45433:419;;;:::o;45858:85::-;45903:7;45932:5;45921:16;;45858:85;;;:::o;45949:158::-;46007:9;46040:61;46058:42;46067:32;46093:5;46067:32;:::i;:::-;46058:42;:::i;:::-;46040:61;:::i;:::-;46027:74;;45949:158;;;:::o;46113:147::-;46208:45;46247:5;46208:45;:::i;:::-;46203:3;46196:58;46113:147;;:::o;46266:807::-;46515:4;46553:3;46542:9;46538:19;46530:27;;46567:71;46635:1;46624:9;46620:17;46611:6;46567:71;:::i;:::-;46648:72;46716:2;46705:9;46701:18;46692:6;46648:72;:::i;:::-;46730:80;46806:2;46795:9;46791:18;46782:6;46730:80;:::i;:::-;46820;46896:2;46885:9;46881:18;46872:6;46820:80;:::i;:::-;46910:73;46978:3;46967:9;46963:19;46954:6;46910:73;:::i;:::-;46993;47061:3;47050:9;47046:19;47037:6;46993:73;:::i;:::-;46266:807;;;;;;;;;:::o;47079:143::-;47136:5;47167:6;47161:13;47152:22;;47183:33;47210:5;47183:33;:::i;:::-;47079:143;;;;:::o;47228:663::-;47316:6;47324;47332;47381:2;47369:9;47360:7;47356:23;47352:32;47349:119;;;47387:79;;:::i;:::-;47349:119;47507:1;47532:64;47588:7;47579:6;47568:9;47564:22;47532:64;:::i;:::-;47522:74;;47478:128;47645:2;47671:64;47727:7;47718:6;47707:9;47703:22;47671:64;:::i;:::-;47661:74;;47616:129;47784:2;47810:64;47866:7;47857:6;47846:9;47842:22;47810:64;:::i;:::-;47800:74;;47755:129;47228:663;;;;;:::o;47897:179::-;48037:31;48033:1;48025:6;48021:14;48014:55;47897:179;:::o;48082:366::-;48224:3;48245:67;48309:2;48304:3;48245:67;:::i;:::-;48238:74;;48321:93;48410:3;48321:93;:::i;:::-;48439:2;48434:3;48430:12;48423:19;;48082:366;;;:::o;48454:419::-;48620:4;48658:2;48647:9;48643:18;48635:26;;48707:9;48701:4;48697:20;48693:1;48682:9;48678:17;48671:47;48735:131;48861:4;48735:131;:::i;:::-;48727:139;;48454:419;;;:::o;48879:167::-;49019:19;49015:1;49007:6;49003:14;48996:43;48879:167;:::o;49052:366::-;49194:3;49215:67;49279:2;49274:3;49215:67;:::i;:::-;49208:74;;49291:93;49380:3;49291:93;:::i;:::-;49409:2;49404:3;49400:12;49393:19;;49052:366;;;:::o;49424:419::-;49590:4;49628:2;49617:9;49613:18;49605:26;;49677:9;49671:4;49667:20;49663:1;49652:9;49648:17;49641:47;49705:131;49831:4;49705:131;:::i;:::-;49697:139;;49424:419;;;:::o;49849:180::-;49897:77;49894:1;49887:88;49994:4;49991:1;49984:15;50018:4;50015:1;50008:15;50035:114;50102:6;50136:5;50130:12;50120:22;;50035:114;;;:::o;50155:184::-;50254:11;50288:6;50283:3;50276:19;50328:4;50323:3;50319:14;50304:29;;50155:184;;;;:::o;50345:132::-;50412:4;50435:3;50427:11;;50465:4;50460:3;50456:14;50448:22;;50345:132;;;:::o;50483:108::-;50560:24;50578:5;50560:24;:::i;:::-;50555:3;50548:37;50483:108;;:::o;50597:179::-;50666:10;50687:46;50729:3;50721:6;50687:46;:::i;:::-;50765:4;50760:3;50756:14;50742:28;;50597:179;;;;:::o;50782:113::-;50852:4;50884;50879:3;50875:14;50867:22;;50782:113;;;:::o;50931:732::-;51050:3;51079:54;51127:5;51079:54;:::i;:::-;51149:86;51228:6;51223:3;51149:86;:::i;:::-;51142:93;;51259:56;51309:5;51259:56;:::i;:::-;51338:7;51369:1;51354:284;51379:6;51376:1;51373:13;51354:284;;;51455:6;51449:13;51482:63;51541:3;51526:13;51482:63;:::i;:::-;51475:70;;51568:60;51621:6;51568:60;:::i;:::-;51558:70;;51414:224;51401:1;51398;51394:9;51389:14;;51354:284;;;51358:14;51654:3;51647:10;;51055:608;;;50931:732;;;;:::o;51669:831::-;51932:4;51970:3;51959:9;51955:19;51947:27;;51984:71;52052:1;52041:9;52037:17;52028:6;51984:71;:::i;:::-;52065:80;52141:2;52130:9;52126:18;52117:6;52065:80;:::i;:::-;52192:9;52186:4;52182:20;52177:2;52166:9;52162:18;52155:48;52220:108;52323:4;52314:6;52220:108;:::i;:::-;52212:116;;52338:72;52406:2;52395:9;52391:18;52382:6;52338:72;:::i;:::-;52420:73;52488:3;52477:9;52473:19;52464:6;52420:73;:::i;:::-;51669:831;;;;;;;;:::o
Swarm Source
ipfs://d9d356e439673922d9cea22b0a40c1198a7f85b18a3b7d11e46f00dc77e57ddf
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.