ETH Price: $3,289.98 (-0.69%)
Gas: 8 Gwei

Contract

0x96B1763a9F77805ABfFAd43351bfC352339545e2
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve152054742022-07-24 13:08:17737 days ago1658668097IN
0x96B1763a...2339545e2
0 ETH0.000365967.43680522
Approve151869952022-07-21 16:30:22740 days ago1658421022IN
0x96B1763a...2339545e2
0 ETH0.0019360339.34226175
Approve151797202022-07-20 13:18:24741 days ago1658323104IN
0x96B1763a...2339545e2
0 ETH0.0010396421.12670626
Approve151797012022-07-20 13:13:19741 days ago1658322799IN
0x96B1763a...2339545e2
0 ETH0.0010077820.4792383
Approve151717452022-07-19 7:36:07742 days ago1658216167IN
0x96B1763a...2339545e2
0 ETH0.0006889414
Approve151717432022-07-19 7:35:58742 days ago1658216158IN
0x96B1763a...2339545e2
0 ETH0.0007381515
Approve151717432022-07-19 7:35:58742 days ago1658216158IN
0x96B1763a...2339545e2
0 ETH0.0007381515
Approve151717432022-07-19 7:35:58742 days ago1658216158IN
0x96B1763a...2339545e2
0 ETH0.0007873616
Approve151717432022-07-19 7:35:58742 days ago1658216158IN
0x96B1763a...2339545e2
0 ETH0.0008365717
Approve151717272022-07-19 7:31:49742 days ago1658215909IN
0x96B1763a...2339545e2
0 ETH0.0007381515
Approve151717272022-07-19 7:31:49742 days ago1658215909IN
0x96B1763a...2339545e2
0 ETH0.0007381515
Approve151717272022-07-19 7:31:49742 days ago1658215909IN
0x96B1763a...2339545e2
0 ETH0.0007381515
Approve151717272022-07-19 7:31:49742 days ago1658215909IN
0x96B1763a...2339545e2
0 ETH0.0007873616
Approve151717272022-07-19 7:31:49742 days ago1658215909IN
0x96B1763a...2339545e2
0 ETH0.0008365717
Approve151699732022-07-19 1:00:27742 days ago1658192427IN
0x96B1763a...2339545e2
0 ETH0.0010334121
Approve151699732022-07-19 1:00:27742 days ago1658192427IN
0x96B1763a...2339545e2
0 ETH0.0010334121
Approve151699732022-07-19 1:00:27742 days ago1658192427IN
0x96B1763a...2339545e2
0 ETH0.0010334121
Approve151699732022-07-19 1:00:27742 days ago1658192427IN
0x96B1763a...2339545e2
0 ETH0.0010826222
Approve151699732022-07-19 1:00:27742 days ago1658192427IN
0x96B1763a...2339545e2
0 ETH0.0010826222
Approve151699732022-07-19 1:00:27742 days ago1658192427IN
0x96B1763a...2339545e2
0 ETH0.0010826222
Approve151699692022-07-19 1:00:01742 days ago1658192401IN
0x96B1763a...2339545e2
0 ETH0.0011318323
Approve151698862022-07-19 0:40:16742 days ago1658191216IN
0x96B1763a...2339545e2
0 ETH0.0012794626
Approve151698432022-07-19 0:31:21742 days ago1658190681IN
0x96B1763a...2339545e2
0 ETH0.0012794626
Approve151698342022-07-19 0:30:12742 days ago1658190612IN
0x96B1763a...2339545e2
0 ETH0.001476330
Approve151696462022-07-18 23:50:13742 days ago1658188213IN
0x96B1763a...2339545e2
0 ETH0.0008899618.08497763
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
151937532022-07-22 17:23:11739 days ago1658510591
0x96B1763a...2339545e2
0.00177116 ETH
151937532022-07-22 17:23:11739 days ago1658510591
0x96B1763a...2339545e2
0.00059038 ETH
151937532022-07-22 17:23:11739 days ago1658510591
0x96B1763a...2339545e2
0.00039268 ETH
151937532022-07-22 17:23:11739 days ago1658510591
0x96B1763a...2339545e2
0.00098442 ETH
151937532022-07-22 17:23:11739 days ago1658510591
0x96B1763a...2339545e2
0.00295328 ETH
151797052022-07-20 13:14:14741 days ago1658322854
0x96B1763a...2339545e2
0.00176092 ETH
151797052022-07-20 13:14:14741 days ago1658322854
0x96B1763a...2339545e2
0.00058697 ETH
151797052022-07-20 13:14:14741 days ago1658322854
0x96B1763a...2339545e2
0.0003904 ETH
151797052022-07-20 13:14:14741 days ago1658322854
0x96B1763a...2339545e2
0.00097874 ETH
151797052022-07-20 13:14:14741 days ago1658322854
0x96B1763a...2339545e2
0.00293624 ETH
151765072022-07-20 1:19:35741 days ago1658279975
0x96B1763a...2339545e2
0.00184299 ETH
151765072022-07-20 1:19:35741 days ago1658279975
0x96B1763a...2339545e2
0.00061433 ETH
151765072022-07-20 1:19:35741 days ago1658279975
0x96B1763a...2339545e2
0.00040861 ETH
151765072022-07-20 1:19:35741 days ago1658279975
0x96B1763a...2339545e2
0.00102435 ETH
151765072022-07-20 1:19:35741 days ago1658279975
0x96B1763a...2339545e2
0.00307307 ETH
151733322022-07-19 13:27:37742 days ago1658237257
0x96B1763a...2339545e2
0.00321044 ETH
151733322022-07-19 13:27:37742 days ago1658237257
0x96B1763a...2339545e2
0.00107014 ETH
151733322022-07-19 13:27:37742 days ago1658237257
0x96B1763a...2339545e2
0.00071252 ETH
151733322022-07-19 13:27:37742 days ago1658237257
0x96B1763a...2339545e2
0.00178403 ETH
151733322022-07-19 13:27:37742 days ago1658237257
0x96B1763a...2339545e2
0.00535211 ETH
151717502022-07-19 7:37:23742 days ago1658216243
0x96B1763a...2339545e2
0.00196465 ETH
151717502022-07-19 7:37:23742 days ago1658216243
0x96B1763a...2339545e2
0.00065488 ETH
151717502022-07-19 7:37:23742 days ago1658216243
0x96B1763a...2339545e2
0.0004356 ETH
151717502022-07-19 7:37:23742 days ago1658216243
0x96B1763a...2339545e2
0.00109196 ETH
151717502022-07-19 7:37:23742 days ago1658216243
0x96B1763a...2339545e2
0.0032759 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
RIDL

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-07-18
*/

/*

BEHIND THIS RIDDLE LAY A DOOR TO THE NEXT, 
ANSWER MY QUESTIONS TO PASS THIS TEST.

IN DEFI SPACE WHAT YOU SEEK WE BEAR, 
A SAFU PROJECT WHERE JEETS ARE RARE.

TO ENTER THE DOORWAY YOU MUST ANSWER RIGHT,
FAIL IT THREE TIMES AND YOU ARE OUT.

*/


//SPDX-License-Identifier: MIT
pragma solidity 0.8.15;

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 _owner) { owner = _owner; }
	modifier onlyOwner() { require(msg.sender == owner, "Only contract owner can call this function"); _; }
	function transferOwnership(address payable newOwner) external onlyOwner { owner = newOwner;	emit OwnershipTransferred(newOwner); }
	event OwnershipTransferred(address owner);
}

interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); }
interface IUniswapV2Router02 {
	function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
	function WETH() external pure returns (address);
	function factory() external pure returns (address);
	function addLiquidityETH(address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract RIDL is IERC20, Auth {
	string constant _name = "Riddler"; 
	string constant _symbol = "RIDL"; 
	uint8 constant _decimals = 9;
	uint256 constant _totalSupply = 100_000_000 * 10**_decimals;
	mapping (address => uint256) _balances;
	mapping (address => mapping (address => uint256)) _allowances;
	uint256 private _tradingOpenBlock;
	mapping (address => bool) private _isLiqPool;
	uint16 private _blacklistedWallets = 0;

	uint8 private fee_taxRateMaxLimit; uint8 private fee_taxRateBuy; uint8 private fee_taxRateSell; uint8 private fee_taxRateTransfer;
	uint16 private fee_sharesAutoLP; uint16 private fee_sharesFinderKeeper; uint16 private fee_sharesDevelopment; uint16 private fee_sharesTOTAL;

	uint256 private lim_maxTxAmount; uint256 private lim_maxWalletAmount;
	uint256 private lim_taxSwapMin; uint256 private lim_taxSwapMax;

	address payable private wlt_development;
	address payable private wlt_finderKeeper;
	address private _liquidityPool;

	mapping(address => bool) private exm_noFees;
	mapping(address => bool) private exm_noLimits;
	
	uint256 private _humanBlock = 0;
	mapping (address => bool) private _nonSniper;
	mapping (address => uint256) private _blacklistBlock;

	bool private _inTaxSwap = false;
	address private constant _uniswapV2RouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
	address private _wethAddress = address(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2);
	IUniswapV2Router02 private _uniswapV2Router;
	modifier lockTaxSwap { _inTaxSwap = true; _; _inTaxSwap = false; }

	event TokensBurned(address burnedFrom, uint256 tokenAmount);
	event TokensAirdropped(uint256 totalWallets, uint256 totalTokens);
	event TaxRatesChanged(uint8 taxRateBuy, uint8 taxRateSell, uint8 taxRateTransfer, bool buySupport);
	event TaxWalletsChanged(address development, address findersKeepers);
	event TaxDistributionChanged(uint16 autoLP, uint16 development, uint16 findersKeepers);
	event LimitsIncreased(uint256 maxTransaction, uint256 maxWalletSize);
	event TaxSwapSettingsChanged(uint256 taxSwapMin, uint256 taxSwapMax);
	event WalletExemptionsSet(address wallet, bool noFees, bool noLimits);


	constructor() Auth(msg.sender) {
		_tradingOpenBlock = type(uint256).max; 
		fee_taxRateMaxLimit = 10;
		lim_maxTxAmount = _totalSupply;
		lim_maxWalletAmount = _totalSupply;
		lim_taxSwapMin = _totalSupply * 10 / 10000;
		lim_taxSwapMax = _totalSupply * 50 / 10000;
		fee_sharesAutoLP = 200;
		fee_sharesDevelopment = 300;
		fee_sharesFinderKeeper = 100;
		fee_sharesTOTAL = fee_sharesAutoLP + fee_sharesDevelopment + fee_sharesFinderKeeper;
		_uniswapV2Router = IUniswapV2Router02(_uniswapV2RouterAddress);

		wlt_development = payable(0x9e413b8fb3A5b4AE6586F991a3D19BAF8d2b48A9);
		wlt_finderKeeper = payable(0x45C7fB4E0523796ea8e04b704DE7BCb07A647911);

		exm_noFees[owner] = true;
		exm_noFees[address(this)] = true;
		exm_noFees[_uniswapV2RouterAddress] = true;
		exm_noFees[wlt_development] = true;
		exm_noFees[wlt_finderKeeper] = true;

		exm_noLimits[owner] = true;
		exm_noLimits[address(this)] = true;
		exm_noLimits[_uniswapV2RouterAddress] = true;
		exm_noLimits[wlt_development] = true;
		exm_noLimits[wlt_finderKeeper] = true;

		_balances[address(this)] = _totalSupply;
		emit Transfer(address(0), address(this), _totalSupply);
	}
	
	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) {
		if ( _humanBlock > block.number && !_nonSniper[msg.sender] ) {
			_addBlacklist(msg.sender, block.number, true);
		}

		_allowances[msg.sender][spender] = amount;
		emit Approval(msg.sender, spender, amount);
		return true;
	}

	function transfer(address recipient, uint256 amount) external override returns (bool) {
		require(_checkTradingOpen(), "Trading not open");
		return _transferFrom(msg.sender, recipient, amount);
	}

	function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
		require(_checkTradingOpen(), "Trading not open");
		if (_allowances[sender][msg.sender] != type(uint256).max){
			_allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
		}
		return _transferFrom(sender, recipient, amount);
	}

	function addLP() external onlyOwner {
		require(!_tradingOpen(), "trading already open");
		require(_liquidityPool == address(0), "LP already added");

		_nonSniper[address(this)] = true;
		_nonSniper[owner] = true;
		_nonSniper[wlt_finderKeeper] = true;

		_wethAddress = _uniswapV2Router.WETH(); //override the WETH address from router
		_liquidityPool = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _wethAddress);

		_isLiqPool[_liquidityPool] = true;
		_nonSniper[_liquidityPool] = true;

		uint256 _contractETHBalance = address(this).balance;
		require(_contractETHBalance >= 0, "no eth");		
		uint256 _contractTokenBalance = balanceOf(address(this));
		require(_contractTokenBalance > 0, "no tokens");

		_approveRouter(_contractTokenBalance);
		_addLiquidity(_contractTokenBalance, _contractETHBalance, false);
	}

	function _approveRouter(uint256 _tokenAmount) internal {
		if ( _allowances[address(this)][_uniswapV2RouterAddress] < _tokenAmount ) {
			_allowances[address(this)][_uniswapV2RouterAddress] = type(uint256).max;
			emit Approval(address(this), _uniswapV2RouterAddress, type(uint256).max);
		}
	}

	function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei, bool autoburn) internal {
		address lpTokenRecipient = address(0);
		if ( !autoburn ) { lpTokenRecipient = owner; }
		_uniswapV2Router.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, lpTokenRecipient, block.timestamp );
	}

	function preRiddle(uint16 ridAmnt) external onlyOwner {
		require(!_tradingOpen(), "trading already open");
		require(_liquidityPool != address(0), "LP not initialized");
		uint256 _riddleAmount = 7 * ridAmnt;
		_openTrading(_riddleAmount);
	}

	function _openTrading(uint256 riddleAmount) internal {
		lim_maxTxAmount     = 100 * _totalSupply / 10000 + 10**_decimals; 
		lim_maxWalletAmount = 100 * _totalSupply / 10000 + 10**_decimals;
		fee_taxRateBuy = 6;
		fee_taxRateSell = 6;
		fee_taxRateTransfer = 6; 
		_tradingOpenBlock = block.number + riddleAmount;
		_humanBlock = _tradingOpenBlock + 1;
	}

	function tradingOpen() external view returns (bool) {
		if (_tradingOpen() && block.number >= _humanBlock + 10) { return _tradingOpen(); }
		else { return false; }
	}

	function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
		require(sender!=address(0) && recipient!=address(0), "Zero address not allowed");
		if ( _humanBlock > block.number ) {
			if ( _blacklistBlock[sender] == 0 ) { _addBlacklist(recipient, block.number, true); }
			else { _addBlacklist(recipient, _blacklistBlock[sender], false); }
		} else {
			if ( _blacklistBlock[sender] != 0 ) { _addBlacklist(recipient, _blacklistBlock[sender], false); }
		}

		if ( _tradingOpen() && _blacklistBlock[sender] != 0 && _blacklistBlock[sender] < block.number ) { revert("blacklisted"); }

		if ( !_inTaxSwap && _isLiqPool[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 _addBlacklist(address wallet, uint256 blackBlockNum, bool addSniper) internal {
		if ( !_nonSniper[wallet] && _blacklistBlock[wallet] == 0 ) { 
			_blacklistBlock[wallet] = blackBlockNum; 
			if ( addSniper) { _blacklistedWallets ++; }
		}
	}
	
	function _checkLimits(address sender, address recipient, uint256 transferAmount) internal view returns (bool) {
		bool limitCheckPassed = true;
		if ( _tradingOpen() && !exm_noLimits[recipient] && !exm_noLimits[sender] ) {
			if ( transferAmount > lim_maxTxAmount ) { limitCheckPassed = false; }
			else if ( !_isLiqPool[recipient] && (_balances[recipient] + transferAmount > lim_maxWalletAmount) ) { limitCheckPassed = false; }
		}
		return limitCheckPassed;
	}

	function _tradingOpen() private view returns (bool) {
		bool result = false;
		if (block.number >= _tradingOpenBlock) { result = true; }
		return result;
	}

	function _checkTradingOpen() private view returns (bool){
		bool checkResult = false;
		if ( _tradingOpen() ) { checkResult = true; } 
		else if ( tx.origin == owner ) { checkResult = true; } 
		return checkResult;
	}

	function _calculateTax(address sender, address recipient, uint256 amount) internal view returns (uint256) {
		uint256 taxAmount;
		if ( !_tradingOpen() || exm_noFees[sender] || exm_noFees[recipient] ) { taxAmount = 0; }
		else if ( _isLiqPool[sender] ) { taxAmount = amount * fee_taxRateBuy / 100; }
		else if ( _isLiqPool[recipient] ) { taxAmount = amount * fee_taxRateSell / 100; }
		else { taxAmount = amount * fee_taxRateTransfer / 100; }
		return taxAmount;
	}

	function getBlacklistStatus(address wallet) external view returns(bool isBlacklisted, uint256 blacklistBlock, uint16 totalBlacklistedWallets) {
		bool _isBlacklisted;
		if ( _blacklistBlock[wallet] != 0 ) { _isBlacklisted = true; }
		return ( _isBlacklisted, _blacklistBlock[wallet], _blacklistedWallets);	
	}

	function getExemptions(address wallet) external view returns(bool noFees, bool noLimits) {
		return (exm_noFees[wallet], exm_noLimits[wallet]);
	}

	function setExemptions(address wallet, bool noFees, bool noLimits) external onlyOwner {
		exm_noFees[wallet] = noFees;
		exm_noLimits[wallet] = noLimits;
		emit WalletExemptionsSet(wallet, noFees, noLimits);
	}

	function getFeeSettings() external view returns(uint8 taxRateMaxLimit, uint8 taxRateBuy, uint8 taxRateSell, uint8 taxRateTransfer, uint16 sharesAutoLP, uint16 sharesDevelopment, uint16 sharesFindersKeepers ) {
		return (fee_taxRateMaxLimit, fee_taxRateBuy, fee_taxRateSell, fee_taxRateTransfer, fee_sharesAutoLP, fee_sharesDevelopment, fee_sharesFinderKeeper);
	}

	function setTaxRates(uint8 newBuyTax, uint8 newSellTax, uint8 newTxTax, bool enableBuySupport) external onlyOwner {
		if (enableBuySupport) {
			require( newSellTax > newBuyTax, "Sell tax must be > buy tax");
			require( newBuyTax+newSellTax <= 2*fee_taxRateMaxLimit, "Avg tax too high");
		} else {
			require(newBuyTax <= fee_taxRateMaxLimit && newSellTax <= fee_taxRateMaxLimit, "Tax too high");
		}
		require(newTxTax <= fee_taxRateMaxLimit, "Tax too high");
		fee_taxRateBuy = newBuyTax;
		fee_taxRateSell = newSellTax;
		fee_taxRateTransfer = newTxTax;
		emit TaxRatesChanged(newBuyTax, newSellTax, newTxTax, enableBuySupport);
	}

	function setTaxDistribution(uint16 sharesAutoLP, uint16 sharesFindersKeepers, uint16 sharesDevelopment) external onlyOwner {
		fee_sharesAutoLP = sharesAutoLP;
		fee_sharesDevelopment = sharesDevelopment;
		fee_sharesFinderKeeper = sharesFindersKeepers;
		fee_sharesTOTAL = fee_sharesAutoLP + fee_sharesDevelopment + fee_sharesFinderKeeper;
		emit TaxDistributionChanged(sharesAutoLP, sharesDevelopment, sharesFindersKeepers);
	}
	
	function getWallets() external view returns(address contractOwner, address liquidityPool, address development, address findersKeepers) {
		return (owner, _liquidityPool, wlt_development, wlt_finderKeeper);
	}

	function setTaxWallets(address newDevelopmentWallet, address newFindersKeepersWallet) external onlyOwner {
		wlt_development = payable(newDevelopmentWallet);
		wlt_finderKeeper = payable(newFindersKeepersWallet);
		exm_noFees[newDevelopmentWallet] = true;
		exm_noLimits[newDevelopmentWallet] = true;
		exm_noFees[newFindersKeepersWallet] = true;
		exm_noLimits[newFindersKeepersWallet] = true;
		emit TaxWalletsChanged(newDevelopmentWallet, newFindersKeepersWallet);
	}

	function getLimits() external view returns(uint256 maxTxAmount, uint256 maxWalletAmount, uint256 taxSwapMin, uint256 taxSwapMax) {
		return (lim_maxTxAmount, lim_maxWalletAmount, lim_taxSwapMin, lim_taxSwapMax);
	}

	function increaseLimits(uint16 maxTxAmtPermile, uint16 maxWalletAmtPermile) external onlyOwner {
		uint256 newTxAmt = _totalSupply * maxTxAmtPermile / 1000 + 1;
		require(newTxAmt >= lim_maxTxAmount, "tx limit too low");
		lim_maxTxAmount = newTxAmt;
		uint256 newWalletAmt = _totalSupply * maxWalletAmtPermile / 1000 + 1;
		require(newWalletAmt >= lim_maxWalletAmount, "wallet limit too low");
		lim_maxWalletAmount = newWalletAmt;
		emit LimitsIncreased(lim_maxTxAmount, lim_maxWalletAmount);
	}

	function setTaxSwapLimits(uint32 minValue, uint32 minDivider, uint32 maxValue, uint32 maxDivider) external onlyOwner {
		lim_taxSwapMin = _totalSupply * minValue / minDivider;
		lim_taxSwapMax = _totalSupply * maxValue / maxDivider;
		require(lim_taxSwapMax > lim_taxSwapMin);
		emit TaxSwapSettingsChanged(lim_taxSwapMin, lim_taxSwapMax);
	}

	function _swapTaxAndLiquify() private lockTaxSwap {
		uint256 _taxTokensAvailable = balanceOf(address(this));

		if ( _taxTokensAvailable >= lim_taxSwapMin && _tradingOpen() ) {
			if ( _taxTokensAvailable >= lim_taxSwapMax ) { _taxTokensAvailable = lim_taxSwapMax; }
			uint256 _tokensForLP = _taxTokensAvailable * fee_sharesAutoLP / fee_sharesTOTAL / 2;
			uint256 _tokensToSwap = _taxTokensAvailable - _tokensForLP;
			if (_tokensToSwap >= 10**_decimals) {
				uint256 _ethPreSwap = address(this).balance;
				_swapTaxTokensForEth(_tokensToSwap);
				uint256 _ethSwapped = address(this).balance - _ethPreSwap;
				if ( fee_sharesAutoLP > 0 ) {
					uint256 _ethWeiAmount = _ethSwapped * fee_sharesAutoLP / fee_sharesTOTAL ;
					_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] = _wethAddress;
		_uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(_tokenAmount,0,path,address(this),block.timestamp);
	}

	function _distributeTaxEth(uint256 _amount) private {
		uint16 _ethTaxShareTotal = fee_sharesFinderKeeper + fee_sharesDevelopment; 
		if ( fee_sharesFinderKeeper > 0 ) { wlt_finderKeeper.transfer(_amount * fee_sharesFinderKeeper / _ethTaxShareTotal); }
		if ( fee_sharesDevelopment > 0 ) { wlt_development.transfer(_amount * fee_sharesDevelopment / _ethTaxShareTotal); }
	}

	function taxManualSwapSend(bool swapTokens, bool sendEth) external onlyOwner {
		if (swapTokens) {
			uint256 taxTokenBalance = balanceOf(address(this));
			require(taxTokenBalance > 0, "No tokens");
			_swapTaxTokensForEth(taxTokenBalance);
		}
		
		if (sendEth) {
			_distributeTaxEth(address(this).balance); 
		}
	}

	function burnTokens(uint256 amount) external {
		uint256 _tokensAvailable = balanceOf(msg.sender);
		require(amount <= _tokensAvailable, "Token balance too low");
		_balances[msg.sender] -= amount;
		_balances[address(0)] += amount;
		emit Transfer(msg.sender, address(0), amount);
		emit TokensBurned(msg.sender, amount);
	}
}

Contract Security Audit

Contract ABI

[{"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":"uint256","name":"maxTransaction","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"LimitsIncreased","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"autoLP","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"development","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"findersKeepers","type":"uint16"}],"name":"TaxDistributionChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"taxRateBuy","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"taxRateSell","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"taxRateTransfer","type":"uint8"},{"indexed":false,"internalType":"bool","name":"buySupport","type":"bool"}],"name":"TaxRatesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"taxSwapMin","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"taxSwapMax","type":"uint256"}],"name":"TaxSwapSettingsChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"development","type":"address"},{"indexed":false,"internalType":"address","name":"findersKeepers","type":"address"}],"name":"TaxWalletsChanged","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":false,"internalType":"address","name":"burnedFrom","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"noFees","type":"bool"},{"indexed":false,"internalType":"bool","name":"noLimits","type":"bool"}],"name":"WalletExemptionsSet","type":"event"},{"inputs":[],"name":"addLP","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":[{"internalType":"address","name":"wallet","type":"address"}],"name":"getBlacklistStatus","outputs":[{"internalType":"bool","name":"isBlacklisted","type":"bool"},{"internalType":"uint256","name":"blacklistBlock","type":"uint256"},{"internalType":"uint16","name":"totalBlacklistedWallets","type":"uint16"}],"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":"getFeeSettings","outputs":[{"internalType":"uint8","name":"taxRateMaxLimit","type":"uint8"},{"internalType":"uint8","name":"taxRateBuy","type":"uint8"},{"internalType":"uint8","name":"taxRateSell","type":"uint8"},{"internalType":"uint8","name":"taxRateTransfer","type":"uint8"},{"internalType":"uint16","name":"sharesAutoLP","type":"uint16"},{"internalType":"uint16","name":"sharesDevelopment","type":"uint16"},{"internalType":"uint16","name":"sharesFindersKeepers","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLimits","outputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"},{"internalType":"uint256","name":"maxWalletAmount","type":"uint256"},{"internalType":"uint256","name":"taxSwapMin","type":"uint256"},{"internalType":"uint256","name":"taxSwapMax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWallets","outputs":[{"internalType":"address","name":"contractOwner","type":"address"},{"internalType":"address","name":"liquidityPool","type":"address"},{"internalType":"address","name":"development","type":"address"},{"internalType":"address","name":"findersKeepers","type":"address"}],"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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint16","name":"ridAmnt","type":"uint16"}],"name":"preRiddle","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":"uint16","name":"sharesAutoLP","type":"uint16"},{"internalType":"uint16","name":"sharesFindersKeepers","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"},{"internalType":"uint8","name":"newTxTax","type":"uint8"},{"internalType":"bool","name":"enableBuySupport","type":"bool"}],"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":"newDevelopmentWallet","type":"address"},{"internalType":"address","name":"newFindersKeepersWallet","type":"address"}],"name":"setTaxWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"swapTokens","type":"bool"},{"internalType":"bool","name":"sendEth","type":"bool"}],"name":"taxManualSwapSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600560006101000a81548161ffff021916908361ffff1602179055506000600f556000601260006101000a81548160ff02191690831515021790555073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2601260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000a457600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600381905550600a600560026101000a81548160ff021916908360ff1602179055506009600a6200013a919062000aaf565b6305f5e1006200014b919062000b00565b6006819055506009600a62000161919062000aaf565b6305f5e10062000172919062000b00565b600781905550612710600a6009600a6200018d919062000aaf565b6305f5e1006200019e919062000b00565b620001aa919062000b00565b620001b6919062000b90565b60088190555061271060326009600a620001d1919062000aaf565b6305f5e100620001e2919062000b00565b620001ee919062000b00565b620001fa919062000b90565b60098190555060c8600560066101000a81548161ffff021916908361ffff16021790555061012c6005600a6101000a81548161ffff021916908361ffff1602179055506064600560086101000a81548161ffff021916908361ffff160217905550600560089054906101000a900461ffff166005600a9054906101000a900461ffff16600560069054906101000a900461ffff166200029a919062000bd6565b620002a6919062000bd6565b6005600c6101000a81548161ffff021916908361ffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550739e413b8fb3a5b4ae6586f991a3d19baf8d2b48a9600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507345c7fb4e0523796ea8e04b704de7bcb07a647911600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009600a62000833919062000aaf565b6305f5e10062000844919062000b00565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a620008e7919062000aaf565b6305f5e100620008f8919062000b00565b60405162000907919062000c26565b60405180910390a362000c43565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620009a3578086048111156200097b576200097a62000915565b5b60018516156200098b5780820291505b80810290506200099b8562000944565b94506200095b565b94509492505050565b600082620009be576001905062000a91565b81620009ce576000905062000a91565b8160018114620009e75760028114620009f25762000a28565b600191505062000a91565b60ff84111562000a075762000a0662000915565b5b8360020a91508482111562000a215762000a2062000915565b5b5062000a91565b5060208310610133831016604e8410600b841016171562000a625782820a90508381111562000a5c5762000a5b62000915565b5b62000a91565b62000a71848484600162000951565b9250905081840481111562000a8b5762000a8a62000915565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000abc8262000a98565b915062000ac98362000aa2565b925062000af87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620009ac565b905092915050565b600062000b0d8262000a98565b915062000b1a8362000a98565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000b565762000b5562000915565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000b9d8262000a98565b915062000baa8362000a98565b92508262000bbd5762000bbc62000b61565b5b828204905092915050565b600061ffff82169050919050565b600062000be38262000bc8565b915062000bf08362000bc8565b92508261ffff0382111562000c0a5762000c0962000915565b5b828201905092915050565b62000c208162000a98565b82525050565b600060208201905062000c3d600083018462000c15565b92915050565b6152a38062000c536000396000f3fe6080604052600436106101855760003560e01c8063931b68ea116100d1578063dd62ed3e1161008a578063e4dbc45b11610064578063e4dbc45b146105ae578063f2fde38b146105d7578063fc38e48114610600578063ffb54a99146106295761018c565b8063dd62ed3e1461051f578063de1a356c1461055c578063de420ae1146105855761018c565b8063931b68ea1461040b57806395d89b4114610449578063a9059cbb14610474578063b1421803146104b1578063bc37e1a3146104da578063db7a4605146104f15761018c565b8063313ce5671161013e5780636f89e409116101185780636f89e4091461034e57806370a082311461037c578063740bf497146103b95780638c194bd9146103e25761018c565b8063313ce567146102bb57806358d2b4a5146102e65780636d1b229d146103255761018c565b806306fdde0314610191578063095ea7b3146101bc57806318160ddd146101f957806318839bc31461022457806323b872dd1461024d5780632b38400e1461028a5761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a6610654565b6040516101b39190613b66565b60405180910390f35b3480156101c857600080fd5b506101e360048036038101906101de9190613c21565b610691565b6040516101f09190613c7c565b60405180910390f35b34801561020557600080fd5b5061020e6107f0565b60405161021b9190613ca6565b60405180910390f35b34801561023057600080fd5b5061024b60048036038101906102469190613ced565b610814565b005b34801561025957600080fd5b50610274600480360381019061026f9190613d40565b610990565b6040516102819190613c7c565b60405180910390f35b34801561029657600080fd5b5061029f610b99565b6040516102b29796959493929190613dcc565b60405180910390f35b3480156102c757600080fd5b506102d0610c2c565b6040516102dd9190613e3b565b60405180910390f35b3480156102f257600080fd5b5061030d60048036038101906103089190613e56565b610c35565b60405161031c93929190613e83565b60405180910390f35b34801561033157600080fd5b5061034c60048036038101906103479190613eba565b610ce7565b005b34801561035a57600080fd5b50610363610e86565b6040516103739493929190613ee7565b60405180910390f35b34801561038857600080fd5b506103a3600480360381019061039e9190613e56565b610ea6565b6040516103b09190613ca6565b60405180910390f35b3480156103c557600080fd5b506103e060048036038101906103db9190613f2c565b610eef565b005b3480156103ee57600080fd5b5061040960048036038101906104049190613f6c565b61119c565b005b34801561041757600080fd5b50610432600480360381019061042d9190613e56565b61129f565b604051610440929190613fac565b60405180910390f35b34801561045557600080fd5b5061045e611345565b60405161046b9190613b66565b60405180910390f35b34801561048057600080fd5b5061049b60048036038101906104969190613c21565b611382565b6040516104a89190613c7c565b60405180910390f35b3480156104bd57600080fd5b506104d860048036038101906104d39190614001565b6113de565b005b3480156104e657600080fd5b506104ef6115d9565b005b3480156104fd57600080fd5b50610506611c72565b6040516105169493929190614050565b60405180910390f35b34801561052b57600080fd5b5061054660048036038101906105419190613f2c565b611d10565b6040516105539190613ca6565b60405180910390f35b34801561056857600080fd5b50610583600480360381019061057e9190614095565b611d97565b005b34801561059157600080fd5b506105ac60048036038101906105a791906140e8565b611f1f565b005b3480156105ba57600080fd5b506105d560048036038101906105d09190614151565b6120a8565b005b3480156105e357600080fd5b506105fe60048036038101906105f991906141f6565b612213565b005b34801561060c57600080fd5b506106276004803603810190610622919061424f565b61231b565b005b34801561063557600080fd5b5061063e6125d0565b60405161064b9190613c7c565b60405180910390f35b60606040518060400160405280600781526020017f526964646c657200000000000000000000000000000000000000000000000000815250905090565b600043600f541180156106ee5750601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610700576106ff33436001612610565b5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516107de9190613ca6565b60405180910390a36001905092915050565b60006009600a6108009190614418565b6305f5e10061080f9190614463565b905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108999061452f565b60405180910390fd5b81600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fd1210f82d8da3a4173d7d74f8a9f5c81b8f83b77529ac2684baff199241f4ed08383836040516109839392919061454f565b60405180910390a1505050565b600061099a61273a565b6109d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d0906145d2565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610b855781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b0491906145f2565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610b908484846127b7565b90509392505050565b6000806000806000806000600560029054906101000a900460ff16600560039054906101000a900460ff16600560049054906101000a900460ff1660058054906101000a900460ff16600560069054906101000a900461ffff166005600a9054906101000a900461ffff16600560089054906101000a900461ffff16965096509650965096509650965090919293949596565b60006009905090565b6000806000806000601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610c8757600190505b80601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600560009054906101000a900461ffff16935093509350509193909250565b6000610cf233610ea6565b905080821115610d37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2e90614672565b60405180910390fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d8691906145f2565b9250508190555081600160008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ddc9190614692565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e419190613ca6565b60405180910390a37ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb63383604051610e7a9291906146e8565b60405180910390a15050565b600080600080600654600754600854600954935093509350935090919293565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f749061452f565b60405180910390fd5b81600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507faf615d3dc2af9449e3a0d12d0ca4c7181c20469ae56e7b2ec5f91e04c31e27ba8282604051611190929190614711565b60405180910390a15050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461122a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112219061452f565b60405180910390fd5b811561128b57600061123b30610ea6565b905060008111611280576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127790614786565b60405180910390fd5b61128981612e4f565b505b801561129b5761129a47613000565b5b5050565b600080600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691509150915091565b60606040518060400160405280600481526020017f5249444c00000000000000000000000000000000000000000000000000000000815250905090565b600061138c61273a565b6113cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c2906145d2565b60405180910390fd5b6113d63384846127b7565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461146c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114639061452f565b60405180910390fd5b600060016103e88461ffff166009600a6114869190614418565b6305f5e1006114959190614463565b61149f9190614463565b6114a991906147d5565b6114b39190614692565b90506006548110156114fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f190614852565b60405180910390fd5b80600681905550600060016103e88461ffff166009600a61151b9190614418565b6305f5e10061152a9190614463565b6115349190614463565b61153e91906147d5565b6115489190614692565b905060075481101561158f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611586906148be565b60405180910390fd5b806007819055507f72c1c0546833bfc2a43408333cd18ef1d9c882e9d46f89002a3fd40bceffe5f76006546007546040516115cb9291906148de565b60405180910390a150505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165e9061452f565b60405180910390fd5b61166f61319e565b156116af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a690614953565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611740576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611737906149bf565b60405180910390fd5b6001601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191c91906149f4565b601260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ed91906149f4565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401611a49929190614711565b6020604051808303816000875af1158015611a68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8c91906149f4565b600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060004790506000811015611c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0090614a6d565b60405180910390fd5b6000611c1430610ea6565b905060008111611c59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5090614ad9565b60405180910390fd5b611c62816131ba565b611c6e818360006133a4565b5050565b60008060008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16935093509350935090919293565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1c9061452f565b60405180910390fd5b82600560066101000a81548161ffff021916908361ffff160217905550806005600a6101000a81548161ffff021916908361ffff16021790555081600560086101000a81548161ffff021916908361ffff160217905550600560089054906101000a900461ffff166005600a9054906101000a900461ffff16600560069054906101000a900461ffff16611eb99190614af9565b611ec39190614af9565b6005600c6101000a81548161ffff021916908361ffff1602179055507f09d1c6e0dc7290333e3eb301ba9b06f7ec15ce885a8a1efc702befd956c1bd93838284604051611f1293929190614b31565b60405180910390a1505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa49061452f565b60405180910390fd5b611fb561319e565b15611ff5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fec90614953565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207d90614bb4565b60405180910390fd5b60008160076120959190614bd4565b61ffff1690506120a481613482565b5050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612136576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212d9061452f565b60405180910390fd5b8263ffffffff168463ffffffff166009600a6121529190614418565b6305f5e1006121619190614463565b61216b9190614463565b61217591906147d5565b6008819055508063ffffffff168263ffffffff166009600a6121979190614418565b6305f5e1006121a69190614463565b6121b09190614463565b6121ba91906147d5565b600981905550600854600954116121d057600080fd5b7f325d25781eb858cfe3b3ede984fc8a66dd8e8be0b4a349189e05d0a35e6803bb6008546009546040516122059291906148de565b60405180910390a150505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146122a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122989061452f565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516123109190614c6f565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146123a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a09061452f565b60405180910390fd5b801561246b578360ff168360ff16116123f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ee90614cd6565b60405180910390fd5b600560029054906101000a900460ff1660026124139190614cf6565b60ff1683856124229190614d31565b60ff161115612466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245d90614db4565b60405180910390fd5b6124e5565b600560029054906101000a900460ff1660ff168460ff16111580156124a55750600560029054906101000a900460ff1660ff168360ff1611155b6124e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124db90614e20565b60405180910390fd5b5b600560029054906101000a900460ff1660ff168260ff16111561253d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253490614e20565b60405180910390fd5b83600560036101000a81548160ff021916908360ff16021790555082600560046101000a81548160ff021916908360ff160217905550816005806101000a81548160ff021916908360ff1602179055507fad5f92c9aca612d1d1b2c7afafd77c1b96e3d9b873cad916be28888672cf9193848484846040516125c29493929190614e40565b60405180910390a150505050565b60006125da61319e565b80156125f45750600a600f546125f09190614692565b4310155b156126085761260161319e565b905061260d565b600090505b90565b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156126a957506000601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b156127355781601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015612734576005600081819054906101000a900461ffff168092919061271890614e85565b91906101000a81548161ffff021916908361ffff160217905550505b5b505050565b6000806000905061274961319e565b1561275757600190506127b0565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16036127af57600190505b5b8091505090565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156128225750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b612861576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285890614efb565b60405180910390fd5b43600f541115612914576000601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036128c3576128be83436001612610565b61290f565b61290e83601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546000612610565b5b6129a8565b6000601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146129a7576129a683601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546000612610565b5b5b6129b061319e565b80156129fc57506000601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b8015612a46575043601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b15612a86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7d90614f67565b60405180910390fd5b601260009054906101000a900460ff16158015612aec5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612afa57612af96135a7565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612b6257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612bba575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612c0a57612bca84848461373e565b612c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0090614fd3565b60405180910390fd5b5b6000612c178585856138cd565b905060008184612c2791906145f2565b905083600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c7491906145f2565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000821115612d4f5781600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0b9190614692565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d9a9190614692565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612e3a9190613ca6565b60405180910390a36001925050509392505050565b612e58816131ba565b6000600267ffffffffffffffff811115612e7557612e74614ff3565b5b604051908082528060200260200182016040528015612ea35781602001602082028036833780820191505090505b5090503081600081518110612ebb57612eba615022565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612f2c57612f2b615022565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612fca95949392919061514a565b600060405180830381600087803b158015612fe457600080fd5b505af1158015612ff8573d6000803e3d6000fd5b505050505050565b60006005600a9054906101000a900461ffff16600560089054906101000a900461ffff1661302e9190614af9565b90506000600560089054906101000a900461ffff1661ffff1611156130e557600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8261ffff16600560089054906101000a900461ffff1661ffff16856130ae9190614463565b6130b891906147d5565b9081150290604051600060405180830381858888f193505050501580156130e3573d6000803e3d6000fd5b505b60006005600a9054906101000a900461ffff1661ffff16111561319a57600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8261ffff166005600a9054906101000a900461ffff1661ffff16856131639190614463565b61316d91906147d5565b9081150290604051600060405180830381858888f19350505050158015613198573d6000803e3d6000fd5b505b5050565b6000806000905060035443106131b357600190505b8091505090565b80600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156133a1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040516133989190613ca6565b60405180910390a35b50565b6000816133cf5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b8152600401613436969594939291906151a4565b60606040518083038185885af1158015613454573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613479919061521a565b50505050505050565b6009600a6134909190614418565b6127106009600a6134a19190614418565b6305f5e1006134b09190614463565b60646134bc9190614463565b6134c691906147d5565b6134d09190614692565b6006819055506009600a6134e49190614418565b6127106009600a6134f59190614418565b6305f5e1006135049190614463565b60646135109190614463565b61351a91906147d5565b6135249190614692565b6007819055506006600560036101000a81548160ff021916908360ff1602179055506006600560046101000a81548160ff021916908360ff16021790555060066005806101000a81548160ff021916908360ff16021790555080436135899190614692565b600381905550600160035461359e9190614692565b600f8190555050565b6001601260006101000a81548160ff02191690831515021790555060006135cd30610ea6565b905060085481101580156135e557506135e461319e565b5b156137205760095481106135f95760095490505b600060026005600c9054906101000a900461ffff1661ffff16600560069054906101000a900461ffff1661ffff16846136329190614463565b61363c91906147d5565b61364691906147d5565b90506000818361365691906145f2565b90506009600a6136669190614418565b811061370457600047905061367a82612e4f565b6000814761368891906145f2565b90506000600560069054906101000a900461ffff1661ffff1611156137015760006005600c9054906101000a900461ffff1661ffff16600560069054906101000a900461ffff1661ffff16836136de9190614463565b6136e891906147d5565b90506136f3856131ba565b6136ff858260006133a4565b505b50505b6000479050600081111561371c5761371b81613000565b5b5050505b506000601260006101000a81548160ff021916908315150217905550565b6000806001905061374d61319e565b80156137a35750600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137f95750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156138c25760065483111561381157600090506138c1565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156138b6575060075483600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138b49190614692565b115b156138c057600090505b5b5b809150509392505050565b6000806138d861319e565b158061392d5750600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806139815750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561398f5760009050613ac2565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613a12576064600560039054906101000a900460ff1660ff1684613a019190614463565b613a0b91906147d5565b9050613ac1565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613a95576064600560049054906101000a900460ff1660ff1684613a849190614463565b613a8e91906147d5565b9050613ac0565b606460058054906101000a900460ff1660ff1684613ab39190614463565b613abd91906147d5565b90505b5b5b809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613b07578082015181840152602081019050613aec565b83811115613b16576000848401525b50505050565b6000601f19601f8301169050919050565b6000613b3882613acd565b613b428185613ad8565b9350613b52818560208601613ae9565b613b5b81613b1c565b840191505092915050565b60006020820190508181036000830152613b808184613b2d565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613bb882613b8d565b9050919050565b613bc881613bad565b8114613bd357600080fd5b50565b600081359050613be581613bbf565b92915050565b6000819050919050565b613bfe81613beb565b8114613c0957600080fd5b50565b600081359050613c1b81613bf5565b92915050565b60008060408385031215613c3857613c37613b88565b5b6000613c4685828601613bd6565b9250506020613c5785828601613c0c565b9150509250929050565b60008115159050919050565b613c7681613c61565b82525050565b6000602082019050613c916000830184613c6d565b92915050565b613ca081613beb565b82525050565b6000602082019050613cbb6000830184613c97565b92915050565b613cca81613c61565b8114613cd557600080fd5b50565b600081359050613ce781613cc1565b92915050565b600080600060608486031215613d0657613d05613b88565b5b6000613d1486828701613bd6565b9350506020613d2586828701613cd8565b9250506040613d3686828701613cd8565b9150509250925092565b600080600060608486031215613d5957613d58613b88565b5b6000613d6786828701613bd6565b9350506020613d7886828701613bd6565b9250506040613d8986828701613c0c565b9150509250925092565b600060ff82169050919050565b613da981613d93565b82525050565b600061ffff82169050919050565b613dc681613daf565b82525050565b600060e082019050613de1600083018a613da0565b613dee6020830189613da0565b613dfb6040830188613da0565b613e086060830187613da0565b613e156080830186613dbd565b613e2260a0830185613dbd565b613e2f60c0830184613dbd565b98975050505050505050565b6000602082019050613e506000830184613da0565b92915050565b600060208284031215613e6c57613e6b613b88565b5b6000613e7a84828501613bd6565b91505092915050565b6000606082019050613e986000830186613c6d565b613ea56020830185613c97565b613eb26040830184613dbd565b949350505050565b600060208284031215613ed057613ecf613b88565b5b6000613ede84828501613c0c565b91505092915050565b6000608082019050613efc6000830187613c97565b613f096020830186613c97565b613f166040830185613c97565b613f236060830184613c97565b95945050505050565b60008060408385031215613f4357613f42613b88565b5b6000613f5185828601613bd6565b9250506020613f6285828601613bd6565b9150509250929050565b60008060408385031215613f8357613f82613b88565b5b6000613f9185828601613cd8565b9250506020613fa285828601613cd8565b9150509250929050565b6000604082019050613fc16000830185613c6d565b613fce6020830184613c6d565b9392505050565b613fde81613daf565b8114613fe957600080fd5b50565b600081359050613ffb81613fd5565b92915050565b6000806040838503121561401857614017613b88565b5b600061402685828601613fec565b925050602061403785828601613fec565b9150509250929050565b61404a81613bad565b82525050565b60006080820190506140656000830187614041565b6140726020830186614041565b61407f6040830185614041565b61408c6060830184614041565b95945050505050565b6000806000606084860312156140ae576140ad613b88565b5b60006140bc86828701613fec565b93505060206140cd86828701613fec565b92505060406140de86828701613fec565b9150509250925092565b6000602082840312156140fe576140fd613b88565b5b600061410c84828501613fec565b91505092915050565b600063ffffffff82169050919050565b61412e81614115565b811461413957600080fd5b50565b60008135905061414b81614125565b92915050565b6000806000806080858703121561416b5761416a613b88565b5b60006141798782880161413c565b945050602061418a8782880161413c565b935050604061419b8782880161413c565b92505060606141ac8782880161413c565b91505092959194509250565b60006141c382613b8d565b9050919050565b6141d3816141b8565b81146141de57600080fd5b50565b6000813590506141f0816141ca565b92915050565b60006020828403121561420c5761420b613b88565b5b600061421a848285016141e1565b91505092915050565b61422c81613d93565b811461423757600080fd5b50565b60008135905061424981614223565b92915050565b6000806000806080858703121561426957614268613b88565b5b60006142778782880161423a565b94505060206142888782880161423a565b93505060406142998782880161423a565b92505060606142aa87828801613cd8565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561433c57808604811115614318576143176142b6565b5b60018516156143275780820291505b8081029050614335856142e5565b94506142fc565b94509492505050565b6000826143555760019050614411565b816143635760009050614411565b81600181146143795760028114614383576143b2565b6001915050614411565b60ff841115614395576143946142b6565b5b8360020a9150848211156143ac576143ab6142b6565b5b50614411565b5060208310610133831016604e8410600b84101617156143e75782820a9050838111156143e2576143e16142b6565b5b614411565b6143f484848460016142f2565b9250905081840481111561440b5761440a6142b6565b5b81810290505b9392505050565b600061442382613beb565b915061442e83613d93565b925061445b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614345565b905092915050565b600061446e82613beb565b915061447983613beb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156144b2576144b16142b6565b5b828202905092915050565b7f4f6e6c7920636f6e7472616374206f776e65722063616e2063616c6c2074686960008201527f732066756e6374696f6e00000000000000000000000000000000000000000000602082015250565b6000614519602a83613ad8565b9150614524826144bd565b604082019050919050565b600060208201905081810360008301526145488161450c565b9050919050565b60006060820190506145646000830186614041565b6145716020830185613c6d565b61457e6040830184613c6d565b949350505050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b60006145bc601083613ad8565b91506145c782614586565b602082019050919050565b600060208201905081810360008301526145eb816145af565b9050919050565b60006145fd82613beb565b915061460883613beb565b92508282101561461b5761461a6142b6565b5b828203905092915050565b7f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000600082015250565b600061465c601583613ad8565b915061466782614626565b602082019050919050565b6000602082019050818103600083015261468b8161464f565b9050919050565b600061469d82613beb565b91506146a883613beb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156146dd576146dc6142b6565b5b828201905092915050565b60006040820190506146fd6000830185614041565b61470a6020830184613c97565b9392505050565b60006040820190506147266000830185614041565b6147336020830184614041565b9392505050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b6000614770600983613ad8565b915061477b8261473a565b602082019050919050565b6000602082019050818103600083015261479f81614763565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006147e082613beb565b91506147eb83613beb565b9250826147fb576147fa6147a6565b5b828204905092915050565b7f7478206c696d697420746f6f206c6f7700000000000000000000000000000000600082015250565b600061483c601083613ad8565b915061484782614806565b602082019050919050565b6000602082019050818103600083015261486b8161482f565b9050919050565b7f77616c6c6574206c696d697420746f6f206c6f77000000000000000000000000600082015250565b60006148a8601483613ad8565b91506148b382614872565b602082019050919050565b600060208201905081810360008301526148d78161489b565b9050919050565b60006040820190506148f36000830185613c97565b6149006020830184613c97565b9392505050565b7f74726164696e6720616c7265616479206f70656e000000000000000000000000600082015250565b600061493d601483613ad8565b915061494882614907565b602082019050919050565b6000602082019050818103600083015261496c81614930565b9050919050565b7f4c5020616c726561647920616464656400000000000000000000000000000000600082015250565b60006149a9601083613ad8565b91506149b482614973565b602082019050919050565b600060208201905081810360008301526149d88161499c565b9050919050565b6000815190506149ee81613bbf565b92915050565b600060208284031215614a0a57614a09613b88565b5b6000614a18848285016149df565b91505092915050565b7f6e6f206574680000000000000000000000000000000000000000000000000000600082015250565b6000614a57600683613ad8565b9150614a6282614a21565b602082019050919050565b60006020820190508181036000830152614a8681614a4a565b9050919050565b7f6e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b6000614ac3600983613ad8565b9150614ace82614a8d565b602082019050919050565b60006020820190508181036000830152614af281614ab6565b9050919050565b6000614b0482613daf565b9150614b0f83613daf565b92508261ffff03821115614b2657614b256142b6565b5b828201905092915050565b6000606082019050614b466000830186613dbd565b614b536020830185613dbd565b614b606040830184613dbd565b949350505050565b7f4c50206e6f7420696e697469616c697a65640000000000000000000000000000600082015250565b6000614b9e601283613ad8565b9150614ba982614b68565b602082019050919050565b60006020820190508181036000830152614bcd81614b91565b9050919050565b6000614bdf82613daf565b9150614bea83613daf565b92508161ffff0483118215151615614c0557614c046142b6565b5b828202905092915050565b6000819050919050565b6000614c35614c30614c2b84613b8d565b614c10565b613b8d565b9050919050565b6000614c4782614c1a565b9050919050565b6000614c5982614c3c565b9050919050565b614c6981614c4e565b82525050565b6000602082019050614c846000830184614c60565b92915050565b7f53656c6c20746178206d757374206265203e2062757920746178000000000000600082015250565b6000614cc0601a83613ad8565b9150614ccb82614c8a565b602082019050919050565b60006020820190508181036000830152614cef81614cb3565b9050919050565b6000614d0182613d93565b9150614d0c83613d93565b92508160ff0483118215151615614d2657614d256142b6565b5b828202905092915050565b6000614d3c82613d93565b9150614d4783613d93565b92508260ff03821115614d5d57614d5c6142b6565b5b828201905092915050565b7f4176672074617820746f6f206869676800000000000000000000000000000000600082015250565b6000614d9e601083613ad8565b9150614da982614d68565b602082019050919050565b60006020820190508181036000830152614dcd81614d91565b9050919050565b7f54617820746f6f20686967680000000000000000000000000000000000000000600082015250565b6000614e0a600c83613ad8565b9150614e1582614dd4565b602082019050919050565b60006020820190508181036000830152614e3981614dfd565b9050919050565b6000608082019050614e556000830187613da0565b614e626020830186613da0565b614e6f6040830185613da0565b614e7c6060830184613c6d565b95945050505050565b6000614e9082613daf565b915061ffff8203614ea457614ea36142b6565b5b600182019050919050565b7f5a65726f2061646472657373206e6f7420616c6c6f7765640000000000000000600082015250565b6000614ee5601883613ad8565b9150614ef082614eaf565b602082019050919050565b60006020820190508181036000830152614f1481614ed8565b9050919050565b7f626c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b6000614f51600b83613ad8565b9150614f5c82614f1b565b602082019050919050565b60006020820190508181036000830152614f8081614f44565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b6000614fbd601183613ad8565b9150614fc882614f87565b602082019050919050565b60006020820190508181036000830152614fec81614fb0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b600061507661507161506c84615051565b614c10565b613beb565b9050919050565b6150868161505b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6150c181613bad565b82525050565b60006150d383836150b8565b60208301905092915050565b6000602082019050919050565b60006150f78261508c565b6151018185615097565b935061510c836150a8565b8060005b8381101561513d57815161512488826150c7565b975061512f836150df565b925050600181019050615110565b5085935050505092915050565b600060a08201905061515f6000830188613c97565b61516c602083018761507d565b818103604083015261517e81866150ec565b905061518d6060830185614041565b61519a6080830184613c97565b9695505050505050565b600060c0820190506151b96000830189614041565b6151c66020830188613c97565b6151d3604083018761507d565b6151e0606083018661507d565b6151ed6080830185614041565b6151fa60a0830184613c97565b979650505050505050565b60008151905061521481613bf5565b92915050565b60008060006060848603121561523357615232613b88565b5b600061524186828701615205565b935050602061525286828701615205565b925050604061526386828701615205565b915050925092509256fea26469706673582212200f5a1a234500f92d1bdba36c09ddd1908e413c5682aae7651a49ec9247ba46e064736f6c634300080f0033

Deployed Bytecode

0x6080604052600436106101855760003560e01c8063931b68ea116100d1578063dd62ed3e1161008a578063e4dbc45b11610064578063e4dbc45b146105ae578063f2fde38b146105d7578063fc38e48114610600578063ffb54a99146106295761018c565b8063dd62ed3e1461051f578063de1a356c1461055c578063de420ae1146105855761018c565b8063931b68ea1461040b57806395d89b4114610449578063a9059cbb14610474578063b1421803146104b1578063bc37e1a3146104da578063db7a4605146104f15761018c565b8063313ce5671161013e5780636f89e409116101185780636f89e4091461034e57806370a082311461037c578063740bf497146103b95780638c194bd9146103e25761018c565b8063313ce567146102bb57806358d2b4a5146102e65780636d1b229d146103255761018c565b806306fdde0314610191578063095ea7b3146101bc57806318160ddd146101f957806318839bc31461022457806323b872dd1461024d5780632b38400e1461028a5761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a6610654565b6040516101b39190613b66565b60405180910390f35b3480156101c857600080fd5b506101e360048036038101906101de9190613c21565b610691565b6040516101f09190613c7c565b60405180910390f35b34801561020557600080fd5b5061020e6107f0565b60405161021b9190613ca6565b60405180910390f35b34801561023057600080fd5b5061024b60048036038101906102469190613ced565b610814565b005b34801561025957600080fd5b50610274600480360381019061026f9190613d40565b610990565b6040516102819190613c7c565b60405180910390f35b34801561029657600080fd5b5061029f610b99565b6040516102b29796959493929190613dcc565b60405180910390f35b3480156102c757600080fd5b506102d0610c2c565b6040516102dd9190613e3b565b60405180910390f35b3480156102f257600080fd5b5061030d60048036038101906103089190613e56565b610c35565b60405161031c93929190613e83565b60405180910390f35b34801561033157600080fd5b5061034c60048036038101906103479190613eba565b610ce7565b005b34801561035a57600080fd5b50610363610e86565b6040516103739493929190613ee7565b60405180910390f35b34801561038857600080fd5b506103a3600480360381019061039e9190613e56565b610ea6565b6040516103b09190613ca6565b60405180910390f35b3480156103c557600080fd5b506103e060048036038101906103db9190613f2c565b610eef565b005b3480156103ee57600080fd5b5061040960048036038101906104049190613f6c565b61119c565b005b34801561041757600080fd5b50610432600480360381019061042d9190613e56565b61129f565b604051610440929190613fac565b60405180910390f35b34801561045557600080fd5b5061045e611345565b60405161046b9190613b66565b60405180910390f35b34801561048057600080fd5b5061049b60048036038101906104969190613c21565b611382565b6040516104a89190613c7c565b60405180910390f35b3480156104bd57600080fd5b506104d860048036038101906104d39190614001565b6113de565b005b3480156104e657600080fd5b506104ef6115d9565b005b3480156104fd57600080fd5b50610506611c72565b6040516105169493929190614050565b60405180910390f35b34801561052b57600080fd5b5061054660048036038101906105419190613f2c565b611d10565b6040516105539190613ca6565b60405180910390f35b34801561056857600080fd5b50610583600480360381019061057e9190614095565b611d97565b005b34801561059157600080fd5b506105ac60048036038101906105a791906140e8565b611f1f565b005b3480156105ba57600080fd5b506105d560048036038101906105d09190614151565b6120a8565b005b3480156105e357600080fd5b506105fe60048036038101906105f991906141f6565b612213565b005b34801561060c57600080fd5b506106276004803603810190610622919061424f565b61231b565b005b34801561063557600080fd5b5061063e6125d0565b60405161064b9190613c7c565b60405180910390f35b60606040518060400160405280600781526020017f526964646c657200000000000000000000000000000000000000000000000000815250905090565b600043600f541180156106ee5750601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610700576106ff33436001612610565b5b81600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516107de9190613ca6565b60405180910390a36001905092915050565b60006009600a6108009190614418565b6305f5e10061080f9190614463565b905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108999061452f565b60405180910390fd5b81600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fd1210f82d8da3a4173d7d74f8a9f5c81b8f83b77529ac2684baff199241f4ed08383836040516109839392919061454f565b60405180910390a1505050565b600061099a61273a565b6109d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d0906145d2565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610b855781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b0491906145f2565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610b908484846127b7565b90509392505050565b6000806000806000806000600560029054906101000a900460ff16600560039054906101000a900460ff16600560049054906101000a900460ff1660058054906101000a900460ff16600560069054906101000a900461ffff166005600a9054906101000a900461ffff16600560089054906101000a900461ffff16965096509650965096509650965090919293949596565b60006009905090565b6000806000806000601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610c8757600190505b80601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600560009054906101000a900461ffff16935093509350509193909250565b6000610cf233610ea6565b905080821115610d37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2e90614672565b60405180910390fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d8691906145f2565b9250508190555081600160008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ddc9190614692565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e419190613ca6565b60405180910390a37ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb63383604051610e7a9291906146e8565b60405180910390a15050565b600080600080600654600754600854600954935093509350935090919293565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f749061452f565b60405180910390fd5b81600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507faf615d3dc2af9449e3a0d12d0ca4c7181c20469ae56e7b2ec5f91e04c31e27ba8282604051611190929190614711565b60405180910390a15050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461122a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112219061452f565b60405180910390fd5b811561128b57600061123b30610ea6565b905060008111611280576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127790614786565b60405180910390fd5b61128981612e4f565b505b801561129b5761129a47613000565b5b5050565b600080600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691509150915091565b60606040518060400160405280600481526020017f5249444c00000000000000000000000000000000000000000000000000000000815250905090565b600061138c61273a565b6113cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c2906145d2565b60405180910390fd5b6113d63384846127b7565b905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461146c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114639061452f565b60405180910390fd5b600060016103e88461ffff166009600a6114869190614418565b6305f5e1006114959190614463565b61149f9190614463565b6114a991906147d5565b6114b39190614692565b90506006548110156114fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f190614852565b60405180910390fd5b80600681905550600060016103e88461ffff166009600a61151b9190614418565b6305f5e10061152a9190614463565b6115349190614463565b61153e91906147d5565b6115489190614692565b905060075481101561158f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611586906148be565b60405180910390fd5b806007819055507f72c1c0546833bfc2a43408333cd18ef1d9c882e9d46f89002a3fd40bceffe5f76006546007546040516115cb9291906148de565b60405180910390a150505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165e9061452f565b60405180910390fd5b61166f61319e565b156116af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a690614953565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611740576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611737906149bf565b60405180910390fd5b6001601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191c91906149f4565b601260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ed91906149f4565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401611a49929190614711565b6020604051808303816000875af1158015611a68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8c91906149f4565b600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060004790506000811015611c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0090614a6d565b60405180910390fd5b6000611c1430610ea6565b905060008111611c59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5090614ad9565b60405180910390fd5b611c62816131ba565b611c6e818360006133a4565b5050565b60008060008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16935093509350935090919293565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1c9061452f565b60405180910390fd5b82600560066101000a81548161ffff021916908361ffff160217905550806005600a6101000a81548161ffff021916908361ffff16021790555081600560086101000a81548161ffff021916908361ffff160217905550600560089054906101000a900461ffff166005600a9054906101000a900461ffff16600560069054906101000a900461ffff16611eb99190614af9565b611ec39190614af9565b6005600c6101000a81548161ffff021916908361ffff1602179055507f09d1c6e0dc7290333e3eb301ba9b06f7ec15ce885a8a1efc702befd956c1bd93838284604051611f1293929190614b31565b60405180910390a1505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa49061452f565b60405180910390fd5b611fb561319e565b15611ff5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fec90614953565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612086576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207d90614bb4565b60405180910390fd5b60008160076120959190614bd4565b61ffff1690506120a481613482565b5050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612136576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212d9061452f565b60405180910390fd5b8263ffffffff168463ffffffff166009600a6121529190614418565b6305f5e1006121619190614463565b61216b9190614463565b61217591906147d5565b6008819055508063ffffffff168263ffffffff166009600a6121979190614418565b6305f5e1006121a69190614463565b6121b09190614463565b6121ba91906147d5565b600981905550600854600954116121d057600080fd5b7f325d25781eb858cfe3b3ede984fc8a66dd8e8be0b4a349189e05d0a35e6803bb6008546009546040516122059291906148de565b60405180910390a150505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146122a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122989061452f565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516123109190614c6f565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146123a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a09061452f565b60405180910390fd5b801561246b578360ff168360ff16116123f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ee90614cd6565b60405180910390fd5b600560029054906101000a900460ff1660026124139190614cf6565b60ff1683856124229190614d31565b60ff161115612466576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245d90614db4565b60405180910390fd5b6124e5565b600560029054906101000a900460ff1660ff168460ff16111580156124a55750600560029054906101000a900460ff1660ff168360ff1611155b6124e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124db90614e20565b60405180910390fd5b5b600560029054906101000a900460ff1660ff168260ff16111561253d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253490614e20565b60405180910390fd5b83600560036101000a81548160ff021916908360ff16021790555082600560046101000a81548160ff021916908360ff160217905550816005806101000a81548160ff021916908360ff1602179055507fad5f92c9aca612d1d1b2c7afafd77c1b96e3d9b873cad916be28888672cf9193848484846040516125c29493929190614e40565b60405180910390a150505050565b60006125da61319e565b80156125f45750600a600f546125f09190614692565b4310155b156126085761260161319e565b905061260d565b600090505b90565b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156126a957506000601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b156127355781601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015612734576005600081819054906101000a900461ffff168092919061271890614e85565b91906101000a81548161ffff021916908361ffff160217905550505b5b505050565b6000806000905061274961319e565b1561275757600190506127b0565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16036127af57600190505b5b8091505090565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156128225750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b612861576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285890614efb565b60405180910390fd5b43600f541115612914576000601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036128c3576128be83436001612610565b61290f565b61290e83601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546000612610565b5b6129a8565b6000601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146129a7576129a683601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546000612610565b5b5b6129b061319e565b80156129fc57506000601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b8015612a46575043601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b15612a86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7d90614f67565b60405180910390fd5b601260009054906101000a900460ff16158015612aec5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612afa57612af96135a7565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612b6257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612bba575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612c0a57612bca84848461373e565b612c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0090614fd3565b60405180910390fd5b5b6000612c178585856138cd565b905060008184612c2791906145f2565b905083600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c7491906145f2565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000821115612d4f5781600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d0b9190614692565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d9a9190614692565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051612e3a9190613ca6565b60405180910390a36001925050509392505050565b612e58816131ba565b6000600267ffffffffffffffff811115612e7557612e74614ff3565b5b604051908082528060200260200182016040528015612ea35781602001602082028036833780820191505090505b5090503081600081518110612ebb57612eba615022565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612f2c57612f2b615022565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612fca95949392919061514a565b600060405180830381600087803b158015612fe457600080fd5b505af1158015612ff8573d6000803e3d6000fd5b505050505050565b60006005600a9054906101000a900461ffff16600560089054906101000a900461ffff1661302e9190614af9565b90506000600560089054906101000a900461ffff1661ffff1611156130e557600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8261ffff16600560089054906101000a900461ffff1661ffff16856130ae9190614463565b6130b891906147d5565b9081150290604051600060405180830381858888f193505050501580156130e3573d6000803e3d6000fd5b505b60006005600a9054906101000a900461ffff1661ffff16111561319a57600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8261ffff166005600a9054906101000a900461ffff1661ffff16856131639190614463565b61316d91906147d5565b9081150290604051600060405180830381858888f19350505050158015613198573d6000803e3d6000fd5b505b5050565b6000806000905060035443106131b357600190505b8091505090565b80600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156133a1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040516133989190613ca6565b60405180910390a35b50565b6000816133cf5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b8152600401613436969594939291906151a4565b60606040518083038185885af1158015613454573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613479919061521a565b50505050505050565b6009600a6134909190614418565b6127106009600a6134a19190614418565b6305f5e1006134b09190614463565b60646134bc9190614463565b6134c691906147d5565b6134d09190614692565b6006819055506009600a6134e49190614418565b6127106009600a6134f59190614418565b6305f5e1006135049190614463565b60646135109190614463565b61351a91906147d5565b6135249190614692565b6007819055506006600560036101000a81548160ff021916908360ff1602179055506006600560046101000a81548160ff021916908360ff16021790555060066005806101000a81548160ff021916908360ff16021790555080436135899190614692565b600381905550600160035461359e9190614692565b600f8190555050565b6001601260006101000a81548160ff02191690831515021790555060006135cd30610ea6565b905060085481101580156135e557506135e461319e565b5b156137205760095481106135f95760095490505b600060026005600c9054906101000a900461ffff1661ffff16600560069054906101000a900461ffff1661ffff16846136329190614463565b61363c91906147d5565b61364691906147d5565b90506000818361365691906145f2565b90506009600a6136669190614418565b811061370457600047905061367a82612e4f565b6000814761368891906145f2565b90506000600560069054906101000a900461ffff1661ffff1611156137015760006005600c9054906101000a900461ffff1661ffff16600560069054906101000a900461ffff1661ffff16836136de9190614463565b6136e891906147d5565b90506136f3856131ba565b6136ff858260006133a4565b505b50505b6000479050600081111561371c5761371b81613000565b5b5050505b506000601260006101000a81548160ff021916908315150217905550565b6000806001905061374d61319e565b80156137a35750600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156137f95750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156138c25760065483111561381157600090506138c1565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156138b6575060075483600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138b49190614692565b115b156138c057600090505b5b5b809150509392505050565b6000806138d861319e565b158061392d5750600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806139815750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561398f5760009050613ac2565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613a12576064600560039054906101000a900460ff1660ff1684613a019190614463565b613a0b91906147d5565b9050613ac1565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613a95576064600560049054906101000a900460ff1660ff1684613a849190614463565b613a8e91906147d5565b9050613ac0565b606460058054906101000a900460ff1660ff1684613ab39190614463565b613abd91906147d5565b90505b5b5b809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613b07578082015181840152602081019050613aec565b83811115613b16576000848401525b50505050565b6000601f19601f8301169050919050565b6000613b3882613acd565b613b428185613ad8565b9350613b52818560208601613ae9565b613b5b81613b1c565b840191505092915050565b60006020820190508181036000830152613b808184613b2d565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613bb882613b8d565b9050919050565b613bc881613bad565b8114613bd357600080fd5b50565b600081359050613be581613bbf565b92915050565b6000819050919050565b613bfe81613beb565b8114613c0957600080fd5b50565b600081359050613c1b81613bf5565b92915050565b60008060408385031215613c3857613c37613b88565b5b6000613c4685828601613bd6565b9250506020613c5785828601613c0c565b9150509250929050565b60008115159050919050565b613c7681613c61565b82525050565b6000602082019050613c916000830184613c6d565b92915050565b613ca081613beb565b82525050565b6000602082019050613cbb6000830184613c97565b92915050565b613cca81613c61565b8114613cd557600080fd5b50565b600081359050613ce781613cc1565b92915050565b600080600060608486031215613d0657613d05613b88565b5b6000613d1486828701613bd6565b9350506020613d2586828701613cd8565b9250506040613d3686828701613cd8565b9150509250925092565b600080600060608486031215613d5957613d58613b88565b5b6000613d6786828701613bd6565b9350506020613d7886828701613bd6565b9250506040613d8986828701613c0c565b9150509250925092565b600060ff82169050919050565b613da981613d93565b82525050565b600061ffff82169050919050565b613dc681613daf565b82525050565b600060e082019050613de1600083018a613da0565b613dee6020830189613da0565b613dfb6040830188613da0565b613e086060830187613da0565b613e156080830186613dbd565b613e2260a0830185613dbd565b613e2f60c0830184613dbd565b98975050505050505050565b6000602082019050613e506000830184613da0565b92915050565b600060208284031215613e6c57613e6b613b88565b5b6000613e7a84828501613bd6565b91505092915050565b6000606082019050613e986000830186613c6d565b613ea56020830185613c97565b613eb26040830184613dbd565b949350505050565b600060208284031215613ed057613ecf613b88565b5b6000613ede84828501613c0c565b91505092915050565b6000608082019050613efc6000830187613c97565b613f096020830186613c97565b613f166040830185613c97565b613f236060830184613c97565b95945050505050565b60008060408385031215613f4357613f42613b88565b5b6000613f5185828601613bd6565b9250506020613f6285828601613bd6565b9150509250929050565b60008060408385031215613f8357613f82613b88565b5b6000613f9185828601613cd8565b9250506020613fa285828601613cd8565b9150509250929050565b6000604082019050613fc16000830185613c6d565b613fce6020830184613c6d565b9392505050565b613fde81613daf565b8114613fe957600080fd5b50565b600081359050613ffb81613fd5565b92915050565b6000806040838503121561401857614017613b88565b5b600061402685828601613fec565b925050602061403785828601613fec565b9150509250929050565b61404a81613bad565b82525050565b60006080820190506140656000830187614041565b6140726020830186614041565b61407f6040830185614041565b61408c6060830184614041565b95945050505050565b6000806000606084860312156140ae576140ad613b88565b5b60006140bc86828701613fec565b93505060206140cd86828701613fec565b92505060406140de86828701613fec565b9150509250925092565b6000602082840312156140fe576140fd613b88565b5b600061410c84828501613fec565b91505092915050565b600063ffffffff82169050919050565b61412e81614115565b811461413957600080fd5b50565b60008135905061414b81614125565b92915050565b6000806000806080858703121561416b5761416a613b88565b5b60006141798782880161413c565b945050602061418a8782880161413c565b935050604061419b8782880161413c565b92505060606141ac8782880161413c565b91505092959194509250565b60006141c382613b8d565b9050919050565b6141d3816141b8565b81146141de57600080fd5b50565b6000813590506141f0816141ca565b92915050565b60006020828403121561420c5761420b613b88565b5b600061421a848285016141e1565b91505092915050565b61422c81613d93565b811461423757600080fd5b50565b60008135905061424981614223565b92915050565b6000806000806080858703121561426957614268613b88565b5b60006142778782880161423a565b94505060206142888782880161423a565b93505060406142998782880161423a565b92505060606142aa87828801613cd8565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561433c57808604811115614318576143176142b6565b5b60018516156143275780820291505b8081029050614335856142e5565b94506142fc565b94509492505050565b6000826143555760019050614411565b816143635760009050614411565b81600181146143795760028114614383576143b2565b6001915050614411565b60ff841115614395576143946142b6565b5b8360020a9150848211156143ac576143ab6142b6565b5b50614411565b5060208310610133831016604e8410600b84101617156143e75782820a9050838111156143e2576143e16142b6565b5b614411565b6143f484848460016142f2565b9250905081840481111561440b5761440a6142b6565b5b81810290505b9392505050565b600061442382613beb565b915061442e83613d93565b925061445b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614345565b905092915050565b600061446e82613beb565b915061447983613beb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156144b2576144b16142b6565b5b828202905092915050565b7f4f6e6c7920636f6e7472616374206f776e65722063616e2063616c6c2074686960008201527f732066756e6374696f6e00000000000000000000000000000000000000000000602082015250565b6000614519602a83613ad8565b9150614524826144bd565b604082019050919050565b600060208201905081810360008301526145488161450c565b9050919050565b60006060820190506145646000830186614041565b6145716020830185613c6d565b61457e6040830184613c6d565b949350505050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b60006145bc601083613ad8565b91506145c782614586565b602082019050919050565b600060208201905081810360008301526145eb816145af565b9050919050565b60006145fd82613beb565b915061460883613beb565b92508282101561461b5761461a6142b6565b5b828203905092915050565b7f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000600082015250565b600061465c601583613ad8565b915061466782614626565b602082019050919050565b6000602082019050818103600083015261468b8161464f565b9050919050565b600061469d82613beb565b91506146a883613beb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156146dd576146dc6142b6565b5b828201905092915050565b60006040820190506146fd6000830185614041565b61470a6020830184613c97565b9392505050565b60006040820190506147266000830185614041565b6147336020830184614041565b9392505050565b7f4e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b6000614770600983613ad8565b915061477b8261473a565b602082019050919050565b6000602082019050818103600083015261479f81614763565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006147e082613beb565b91506147eb83613beb565b9250826147fb576147fa6147a6565b5b828204905092915050565b7f7478206c696d697420746f6f206c6f7700000000000000000000000000000000600082015250565b600061483c601083613ad8565b915061484782614806565b602082019050919050565b6000602082019050818103600083015261486b8161482f565b9050919050565b7f77616c6c6574206c696d697420746f6f206c6f77000000000000000000000000600082015250565b60006148a8601483613ad8565b91506148b382614872565b602082019050919050565b600060208201905081810360008301526148d78161489b565b9050919050565b60006040820190506148f36000830185613c97565b6149006020830184613c97565b9392505050565b7f74726164696e6720616c7265616479206f70656e000000000000000000000000600082015250565b600061493d601483613ad8565b915061494882614907565b602082019050919050565b6000602082019050818103600083015261496c81614930565b9050919050565b7f4c5020616c726561647920616464656400000000000000000000000000000000600082015250565b60006149a9601083613ad8565b91506149b482614973565b602082019050919050565b600060208201905081810360008301526149d88161499c565b9050919050565b6000815190506149ee81613bbf565b92915050565b600060208284031215614a0a57614a09613b88565b5b6000614a18848285016149df565b91505092915050565b7f6e6f206574680000000000000000000000000000000000000000000000000000600082015250565b6000614a57600683613ad8565b9150614a6282614a21565b602082019050919050565b60006020820190508181036000830152614a8681614a4a565b9050919050565b7f6e6f20746f6b656e730000000000000000000000000000000000000000000000600082015250565b6000614ac3600983613ad8565b9150614ace82614a8d565b602082019050919050565b60006020820190508181036000830152614af281614ab6565b9050919050565b6000614b0482613daf565b9150614b0f83613daf565b92508261ffff03821115614b2657614b256142b6565b5b828201905092915050565b6000606082019050614b466000830186613dbd565b614b536020830185613dbd565b614b606040830184613dbd565b949350505050565b7f4c50206e6f7420696e697469616c697a65640000000000000000000000000000600082015250565b6000614b9e601283613ad8565b9150614ba982614b68565b602082019050919050565b60006020820190508181036000830152614bcd81614b91565b9050919050565b6000614bdf82613daf565b9150614bea83613daf565b92508161ffff0483118215151615614c0557614c046142b6565b5b828202905092915050565b6000819050919050565b6000614c35614c30614c2b84613b8d565b614c10565b613b8d565b9050919050565b6000614c4782614c1a565b9050919050565b6000614c5982614c3c565b9050919050565b614c6981614c4e565b82525050565b6000602082019050614c846000830184614c60565b92915050565b7f53656c6c20746178206d757374206265203e2062757920746178000000000000600082015250565b6000614cc0601a83613ad8565b9150614ccb82614c8a565b602082019050919050565b60006020820190508181036000830152614cef81614cb3565b9050919050565b6000614d0182613d93565b9150614d0c83613d93565b92508160ff0483118215151615614d2657614d256142b6565b5b828202905092915050565b6000614d3c82613d93565b9150614d4783613d93565b92508260ff03821115614d5d57614d5c6142b6565b5b828201905092915050565b7f4176672074617820746f6f206869676800000000000000000000000000000000600082015250565b6000614d9e601083613ad8565b9150614da982614d68565b602082019050919050565b60006020820190508181036000830152614dcd81614d91565b9050919050565b7f54617820746f6f20686967680000000000000000000000000000000000000000600082015250565b6000614e0a600c83613ad8565b9150614e1582614dd4565b602082019050919050565b60006020820190508181036000830152614e3981614dfd565b9050919050565b6000608082019050614e556000830187613da0565b614e626020830186613da0565b614e6f6040830185613da0565b614e7c6060830184613c6d565b95945050505050565b6000614e9082613daf565b915061ffff8203614ea457614ea36142b6565b5b600182019050919050565b7f5a65726f2061646472657373206e6f7420616c6c6f7765640000000000000000600082015250565b6000614ee5601883613ad8565b9150614ef082614eaf565b602082019050919050565b60006020820190508181036000830152614f1481614ed8565b9050919050565b7f626c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b6000614f51600b83613ad8565b9150614f5c82614f1b565b602082019050919050565b60006020820190508181036000830152614f8081614f44565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b6000614fbd601183613ad8565b9150614fc882614f87565b602082019050919050565b60006020820190508181036000830152614fec81614fb0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b600061507661507161506c84615051565b614c10565b613beb565b9050919050565b6150868161505b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6150c181613bad565b82525050565b60006150d383836150b8565b60208301905092915050565b6000602082019050919050565b60006150f78261508c565b6151018185615097565b935061510c836150a8565b8060005b8381101561513d57815161512488826150c7565b975061512f836150df565b925050600181019050615110565b5085935050505092915050565b600060a08201905061515f6000830188613c97565b61516c602083018761507d565b818103604083015261517e81866150ec565b905061518d6060830185614041565b61519a6080830184613c97565b9695505050505050565b600060c0820190506151b96000830189614041565b6151c66020830188613c97565b6151d3604083018761507d565b6151e0606083018661507d565b6151ed6080830185614041565b6151fa60a0830184613c97565b979650505050505050565b60008151905061521481613bf5565b92915050565b60008060006060848603121561523357615232613b88565b5b600061524186828701615205565b935050602061525286828701615205565b925050604061526386828701615205565b915050925092509256fea26469706673582212200f5a1a234500f92d1bdba36c09ddd1908e413c5682aae7651a49ec9247ba46e064736f6c634300080f0033

Deployed Bytecode Sourcemap

2167:16364:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5830:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6159:319;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5569:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12696:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6688:363;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12915:365;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;5660:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12225:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;18196:332;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15077:216;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;5913:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14594:478;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17863:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12543:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;5743:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6483:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15298:505;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7056:868;;;;;;;;;;;;;:::i;:::-;;14379:210;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;6021:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13938:435;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8559:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15808:347;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1356:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13285:648;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9182:169;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5830:80;5878:13;5902:5;;;;;;;;;;;;;;;;;5895:12;;5830:80;:::o;6159:319::-;6234:4;6264:12;6250:11;;:26;:53;;;;;6281:10;:22;6292:10;6281:22;;;;;;;;;;;;;;;;;;;;;;;;;6280:23;6250:53;6245:118;;;6312:45;6326:10;6338:12;6352:4;6312:13;:45::i;:::-;6245:118;6404:6;6369:11;:23;6381:10;6369:23;;;;;;;;;;;;;;;:32;6393:7;6369:32;;;;;;;;;;;;;;;:41;;;;6441:7;6420:37;;6429:10;6420:37;;;6450:6;6420:37;;;;;;:::i;:::-;;;;;;;;6469:4;6462:11;;6159:319;;;;:::o;5569:88::-;5624:7;2303:1;2354:2;:13;;;;:::i;:::-;2340:11;:27;;;;:::i;:::-;5635:19;;5569:88;:::o;12696:214::-;1295:5;;;;;;;;;;1281:19;;:10;:19;;;1273:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12808:6:::1;12787:10;:18;12798:6;12787:18;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;12842:8;12819:12;:20;12832:6;12819:20;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;12860:45;12880:6;12888;12896:8;12860:45;;;;;;;;:::i;:::-;;;;;;;;12696:214:::0;;;:::o;6688:363::-;6788:4;6807:19;:17;:19::i;:::-;6799:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;6891:17;6856:11;:19;6868:6;6856:19;;;;;;;;;;;;;;;:31;6876:10;6856:31;;;;;;;;;;;;;;;;:52;6852:143;;6983:6;6949:11;:19;6961:6;6949:19;;;;;;;;;;;;;;;:31;6969:10;6949:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;6915:11;:19;6927:6;6915:19;;;;;;;;;;;;;;;:31;6935:10;6915:31;;;;;;;;;;;;;;;:74;;;;6852:143;7006:40;7020:6;7028:9;7039:6;7006:13;:40::i;:::-;6999:47;;6688:363;;;;;:::o;12915:365::-;12963:21;12986:16;13004:17;13023:21;13046:19;13067:24;13093:27;13136:19;;;;;;;;;;;13157:14;;;;;;;;;;;13173:15;;;;;;;;;;;13190:19;;;;;;;;;;13211:16;;;;;;;;;;;13229:21;;;;;;;;;;;13252:22;;;;;;;;;;;13128:147;;;;;;;;;;;;;;12915:365;;;;;;;:::o;5660:80::-;5712:5;2303:1;5721:16;;5660:80;:::o;12225:313::-;12291:18;12311:22;12335:30;12372:19;12428:1;12401:15;:23;12417:6;12401:23;;;;;;;;;;;;;;;;:28;12396:62;;12451:4;12434:21;;12396:62;12471:14;12487:15;:23;12503:6;12487:23;;;;;;;;;;;;;;;;12512:19;;;;;;;;;;;12462:70;;;;;;;12225:313;;;;;:::o;18196:332::-;18246:24;18273:21;18283:10;18273:9;:21::i;:::-;18246:48;;18317:16;18307:6;:26;;18299:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;18389:6;18364:9;:21;18374:10;18364:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;18425:6;18400:9;:21;18418:1;18400:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;18470:1;18441:40;;18450:10;18441:40;;;18474:6;18441:40;;;;;;:::i;:::-;;;;;;;;18491:32;18504:10;18516:6;18491:32;;;;;;;:::i;:::-;;;;;;;;18241:287;18196:332;:::o;15077:216::-;15120:19;15141:23;15166:18;15186;15219:15;;15236:19;;15257:14;;15273;;15211:77;;;;;;;;15077:216;;;;:::o;5913:105::-;5979:7;5997:9;:18;6007:7;5997:18;;;;;;;;;;;;;;;;5990:25;;5913:105;;;:::o;14594:478::-;1295:5;;;;;;;;;;1281:19;;:10;:19;;;1273:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14730:20:::1;14704:15;;:47;;;;;;;;;;;;;;;;;;14783:23;14756:16;;:51;;;;;;;;;;;;;;;;;;14847:4;14812:10;:32;14823:20;14812:32;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;14893:4;14856:12;:34;14869:20;14856:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;14940:4;14902:10;:35;14913:23;14902:35;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;14989:4;14949:12;:37;14962:23;14949:37;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;15003:64;15021:20;15043:23;15003:64;;;;;;;:::i;:::-;;;;;;;;14594:478:::0;;:::o;17863:328::-;1295:5;;;;;;;;;;1281:19;;:10;:19;;;1273:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;17949:10:::1;17945:168;;;17967:23;17993:24;18011:4;17993:9;:24::i;:::-;17967:50;;18049:1;18031:15;:19;18023:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;18070:37;18091:15;18070:20;:37::i;:::-;17961:152;17945:168;18125:7;18121:66;;;18140:40;18158:21;18140:17;:40::i;:::-;18121:66;17863:328:::0;;:::o;12543:148::-;12604:11;12617:13;12645:10;:18;12656:6;12645:18;;;;;;;;;;;;;;;;;;;;;;;;;12665:12;:20;12678:6;12665:20;;;;;;;;;;;;;;;;;;;;;;;;;12637:49;;;;12543:148;;;:::o;5743:84::-;5793:13;5817:7;;;;;;;;;;;;;;;;;5810:14;;5743:84;:::o;6483:200::-;6563:4;6582:19;:17;:19::i;:::-;6574:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;6634:44;6648:10;6660:9;6671:6;6634:13;:44::i;:::-;6627:51;;6483:200;;;;:::o;15298:505::-;1295:5;;;;;;;;;;1281:19;;:10;:19;;;1273:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;15398:16:::1;15457:1;15450:4;15432:15;15417:30;;2303:1;2354:2;:13;;;;:::i;:::-;2340:11;:27;;;;:::i;:::-;15417:30;;;;:::i;:::-;:37;;;;:::i;:::-;:41;;;;:::i;:::-;15398:60;;15483:15;;15471:8;:27;;15463:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;15542:8;15524:15;:26;;;;15555:20;15622:1;15615:4;15593:19;15578:34;;2303:1;2354:2;:13;;;;:::i;:::-;2340:11;:27;;;;:::i;:::-;15578:34;;;;:::i;:::-;:41;;;;:::i;:::-;:45;;;;:::i;:::-;15555:68;;15652:19;;15636:12;:35;;15628:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15723:12;15701:19;:34;;;;15745:53;15761:15;;15778:19;;15745:53;;;;;;;:::i;:::-;;;;;;;;15393:410;;15298:505:::0;;:::o;7056:868::-;1295:5;;;;;;;;;;1281:19;;:10;:19;;;1273:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;7106:14:::1;:12;:14::i;:::-;7105:15;7097:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;7184:1;7158:28;;:14;;;;;;;;;;;:28;;;7150:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;7242:4;7214:10;:25;7233:4;7214:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;7271:4;7251:10;:17;7262:5:::0;::::1;;;;;;;;;;7251:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;7311:4;7280:10;:28;7291:16;;;;;;;;;;;7280:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;7337:16;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7322:12;;:38;;;;;;;;;;;;;;;;;;7440:16;;;;;;;;;;;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7422:56;;;7487:4;7494:12;;;;;;;;;;;7422:85;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7405:14;;:102;;;;;;;;;;;;;;;;;;7543:4;7514:10;:26;7525:14;;;;;;;;;;;7514:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;7581:4;7552:10;:26;7563:14;;;;;;;;;;;7552:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;7592:27;7622:21;7592:51;;7679:1;7656:19;:24;;7648:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;7698:29;7730:24;7748:4;7730:9;:24::i;:::-;7698:56;;7791:1;7767:21;:25;7759:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;7813:37;7828:21;7813:14;:37::i;:::-;7855:64;7869:21;7892:19;7913:5;7855:13;:64::i;:::-;7092:832;;7056:868::o:0;14379:210::-;14423:21;14446;14469:19;14490:22;14527:5;;;;;;;;;;14534:14;;;;;;;;;;;14550:15;;;;;;;;;;;14567:16;;;;;;;;;;;14519:65;;;;;;;;14379:210;;;;:::o;6021:133::-;6105:7;6123:11;:19;6135:6;6123:19;;;;;;;;;;;;;;;:28;6143:7;6123:28;;;;;;;;;;;;;;;;6116:35;;6021:133;;;;:::o;13938:435::-;1295:5;;;;;;;;;;1281:19;;:10;:19;;;1273:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14085:12:::1;14066:16;;:31;;;;;;;;;;;;;;;;;;14126:17;14102:21;;:41;;;;;;;;;;;;;;;;;;14173:20;14148:22;;:45;;;;;;;;;;;;;;;;;;14259:22;;;;;;;;;;;14235:21;;;;;;;;;;;14216:16;;;;;;;;;;;:40;;;;:::i;:::-;:65;;;;:::i;:::-;14198:15;;:83;;;;;;;;;;;;;;;;;;14291:77;14314:12;14328:17;14347:20;14291:77;;;;;;;;:::i;:::-;;;;;;;;13938:435:::0;;;:::o;8559:248::-;1295:5;;;;;;;;;;1281:19;;:10;:19;;;1273:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;8627:14:::1;:12;:14::i;:::-;8626:15;8618:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;8705:1;8679:28;;:14;;;;;;;;;;;:28;;::::0;8671:59:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8735:21;8763:7;8759:1;:11;;;;:::i;:::-;8735:35;;;;8775:27;8788:13;8775:12;:27::i;:::-;8613:194;8559:248:::0;:::o;15808:347::-;1295:5;;;;;;;;;;1281:19;;:10;:19;;;1273:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;15973:10:::1;15947:36;;15962:8;15947:23;;2303:1;2354:2;:13;;;;:::i;:::-;2340:11;:27;;;;:::i;:::-;15947:23;;;;:::i;:::-;:36;;;;:::i;:::-;15930:14;:53;;;;16031:10;16005:36;;16020:8;16005:23;;2303:1;2354:2;:13;;;;:::i;:::-;2340:11;:27;;;;:::i;:::-;16005:23;;;;:::i;:::-;:36;;;;:::i;:::-;15988:14;:53;;;;16071:14;;16054;;:31;16046:40;;;::::0;::::1;;16096:54;16119:14;;16135;;16096:54;;;;;;;:::i;:::-;;;;;;;;15808:347:::0;;;;:::o;1356:130::-;1295:5;;;;;;;;;;1281:19;;:10;:19;;;1273:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;1438:8:::1;1430:5;::::0;:16:::1;;;;;;;;;;;;;;;;;;1453:30;1474:8;1453:30;;;;;;:::i;:::-;;;;;;;;1356:130:::0;:::o;13285:648::-;1295:5;;;;;;;;;;1281:19;;:10;:19;;;1273:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;13408:16:::1;13404:289;;;13454:9;13441:22;;:10;:22;;;13432:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;13535:19;;;;;;;;;;;13533:1;:21;;;;:::i;:::-;13509:45;;13519:10;13509:9;:20;;;;:::i;:::-;:45;;;;13500:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;13404:289;;;13614:19;;;;;;;;;;;13601:32;;:9;:32;;;;:69;;;;;13651:19;;;;;;;;;;;13637:33;;:10;:33;;;;13601:69;13593:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;13404:289;13717:19;;;;;;;;;;;13705:31;;:8;:31;;;;13697:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;13775:9;13758:14;;:26;;;;;;;;;;;;;;;;;;13807:10;13789:15;;:28;;;;;;;;;;;;;;;;;;13844:8;13822:19;::::0;:30:::1;;;;;;;;;;;;;;;;;;13862:66;13878:9;13889:10;13901:8;13911:16;13862:66;;;;;;;;;:::i;:::-;;;;;;;;13285:648:::0;;;;:::o;9182:169::-;9228:4;9243:14;:12;:14::i;:::-;:50;;;;;9291:2;9277:11;;:16;;;;:::i;:::-;9261:12;:32;;9243:50;9239:108;;;9304:14;:12;:14::i;:::-;9297:21;;;;9239:108;9339:5;9332:12;;9182:169;;:::o;10620:256::-;10718:10;:18;10729:6;10718:18;;;;;;;;;;;;;;;;;;;;;;;;;10717:19;:51;;;;;10767:1;10740:15;:23;10756:6;10740:23;;;;;;;;;;;;;;;;:28;10717:51;10712:160;;;10804:13;10778:15;:23;10794:6;10778:23;;;;;;;;;;;;;;;:39;;;;10829:9;10824:43;;;10842:19;;:22;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;10824:43;10712:160;10620:256;;;:::o;11521:222::-;11572:4;11582:16;11601:5;11582:24;;11616:14;:12;:14::i;:::-;11611:104;;;11649:4;11635:18;;11611:104;;;11684:5;;;;;;;;;;11671:18;;:9;:18;;;11666:49;;11708:4;11694:18;;11666:49;11611:104;11727:11;11720:18;;;11521:222;:::o;9356:1259::-;9448:4;9483:1;9467:18;;:6;:18;;;;:43;;;;;9508:1;9489:21;;:9;:21;;;;9467:43;9459:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;9563:12;9549:11;;:26;9544:315;;;9616:1;9589:15;:23;9605:6;9589:23;;;;;;;;;;;;;;;;:28;9584:156;;9622:44;9636:9;9647:12;9661:4;9622:13;:44::i;:::-;9584:156;;;9681:56;9695:9;9706:15;:23;9722:6;9706:23;;;;;;;;;;;;;;;;9731:5;9681:13;:56::i;:::-;9584:156;9544:315;;;9789:1;9762:15;:23;9778:6;9762:23;;;;;;;;;;;;;;;;:28;9757:97;;9795:56;9809:9;9820:15;:23;9836:6;9820:23;;;;;;;;;;;;;;;;9845:5;9795:13;:56::i;:::-;9757:97;9544:315;9870:14;:12;:14::i;:::-;:46;;;;;9915:1;9888:15;:23;9904:6;9888:23;;;;;;;;;;;;;;;;:28;;9870:46;:88;;;;;9946:12;9920:15;:23;9936:6;9920:23;;;;;;;;;;;;;;;;:38;9870:88;9865:122;;;9963:21;;;;;;;;;;:::i;:::-;;;;;;;;9865:122;9999:10;;;;;;;;;;;9998:11;:36;;;;;10013:10;:21;10024:9;10013:21;;;;;;;;;;;;;;;;;;;;;;;;;9998:36;9993:69;;;10039:20;:18;:20::i;:::-;9993:69;10091:4;10073:23;;:6;:23;;;;:53;;;;;10121:4;10100:26;;:9;:26;;;;10073:53;:72;;;;;10140:5;;;;;;;;;;10130:15;;:6;:15;;;;10073:72;10068:154;;;10158:39;10171:6;10179:9;10190:6;10158:12;:39::i;:::-;10150:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;10068:154;10226:18;10247:40;10261:6;10269:9;10280:6;10247:13;:40::i;:::-;10226:61;;10292:23;10327:10;10318:6;:19;;;;:::i;:::-;10292:45;;10382:6;10362:9;:17;10372:6;10362:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;10342:9;:17;10352:6;10342:17;;;;;;;;;;;;;;;:46;;;;10411:1;10398:10;:14;10393:91;;;10471:10;10444:9;:24;10462:4;10444:24;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;10417:9;:24;10435:4;10417:24;;;;;;;;;;;;;;;:64;;;;10393:91;10534:15;10511:9;:20;10521:9;10511:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;10488:9;:20;10498:9;10488:20;;;;;;;;;;;;;;;:61;;;;10576:9;10559:35;;10568:6;10559:35;;;10587:6;10559:35;;;;;;:::i;:::-;;;;;;;;10606:4;10599:11;;;;9356:1259;;;;;:::o;17155:321::-;17220:28;17235:12;17220:14;:28::i;:::-;17253:21;17291:1;17277:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17253:40;;17316:4;17298;17303:1;17298:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17336:12;;;;;;;;;;;17326:4;17331:1;17326:7;;;;;;;;:::i;:::-;;;;;;;:22;;;;;;;;;;;17353:16;;;;;;;;;;;:67;;;17421:12;17434:1;17436:4;17449;17455:15;17353:118;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17215:261;17155:321;:::o;17481:377::-;17538:24;17590:21;;;;;;;;;;;17565:22;;;;;;;;;;;:46;;;;:::i;:::-;17538:73;;17647:1;17622:22;;;;;;;;;;;:26;;;17617:118;;;17653:16;;;;;;;;;;;:25;;:79;17714:17;17679:52;;17689:22;;;;;;;;;;;17679:32;;:7;:32;;;;:::i;:::-;:52;;;;:::i;:::-;17653:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17617:118;17768:1;17744:21;;;;;;;;;;;:25;;;17739:115;;;17774:15;;;;;;;;;;;:24;;:77;17833:17;17799:51;;17809:21;;;;;;;;;;;17799:31;;:7;:31;;;;:::i;:::-;:51;;;;:::i;:::-;17774:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17739:115;17533:325;17481:377;:::o;11356:160::-;11402:4;11413:11;11427:5;11413:19;;11457:17;;11441:12;:33;11437:57;;11487:4;11478:13;;11437:57;11505:6;11498:13;;;11356:160;:::o;7929:299::-;8048:12;7994:11;:26;8014:4;7994:26;;;;;;;;;;;;;;;:51;3483:42;7994:51;;;;;;;;;;;;;;;;:66;7989:235;;;8123:17;8069:11;:26;8089:4;8069:26;;;;;;;;;;;;;;;:51;3483:42;8069:51;;;;;;;;;;;;;;;:71;;;;3483:42;8151:67;;8168:4;8151:67;;;8200:17;8151:67;;;;;;:::i;:::-;;;;;;;;7989:235;7929:299;:::o;8233:321::-;8330:24;8378:8;8372:46;;8410:5;;;;;;;;;;8391:24;;8372:46;8422:16;;;;;;;;;;;:32;;;8462:13;8487:4;8494:12;8508:1;8511;8514:16;8532:15;8422:127;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;8325:229;8233:321;;;:::o;8812:365::-;2303:1;8921:2;:13;;;;:::i;:::-;8913:5;2303:1;2354:2;:13;;;;:::i;:::-;2340:11;:27;;;;:::i;:::-;8892:3;:18;;;;:::i;:::-;:26;;;;:::i;:::-;:42;;;;:::i;:::-;8870:15;:64;;;;2303:1;8991:2;:13;;;;:::i;:::-;8983:5;2303:1;2354:2;:13;;;;:::i;:::-;2340:11;:27;;;;:::i;:::-;8962:3;:18;;;;:::i;:::-;:26;;;;:::i;:::-;:42;;;;:::i;:::-;8940:19;:64;;;;9026:1;9009:14;;:18;;;;;;;;;;;;;;;;;;9050:1;9032:15;;:19;;;;;;;;;;;;;;;;;;9078:1;9056:19;;:23;;;;;;;;;;;;;;;;;;9120:12;9105;:27;;;;:::i;:::-;9085:17;:47;;;;9171:1;9151:17;;:21;;;;:::i;:::-;9137:11;:35;;;;8812:365;:::o;16160:990::-;3699:4;3686:10;;:17;;;;;;;;;;;;;;;;;;16215:27:::1;16245:24;16263:4;16245:9;:24::i;:::-;16215:54;;16304:14;;16281:19;:37;;:55;;;;;16322:14;:12;:14::i;:::-;16281:55;16276:870;;;16373:14;;16350:19;:37;16345:86;;16414:14;;16392:36;;16345:86;16436:20;16518:1;16500:15;;;;;;;;;;;16459:56;;16481:16;;;;;;;;;;;16459:38;;:19;:38;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;16436:83;;16525:21;16571:12;16549:19;:34;;;;:::i;:::-;16525:58;;2303:1;16610:2;:13;;;;:::i;:::-;16593;:30;16589:415;;16632:19;16654:21;16632:43;;16682:35;16703:13;16682:20;:35::i;:::-;16724:19;16770:11;16746:21;:35;;;;:::i;:::-;16724:57;;16812:1;16793:16;;;;;;;;;;;:20;;;16788:210;;;16824:21;16881:15;;;;;;;;;;;16848:48;;16862:16;;;;;;;;;;;16848:30;;:11;:30;;;;:::i;:::-;:48;;;;:::i;:::-;16824:72;;16905:28;16920:12;16905:14;:28::i;:::-;16941:49;16955:12;16969:13;16984:5;16941:13;:49::i;:::-;16816:182;16788:210;16625:379;;16589:415;17009:27;17039:21;17009:51;;17095:1;17073:19;:23;17069:72;;;17100:38;17118:19;17100:17;:38::i;:::-;17069:72;16339:807;;;16276:870;16210:940;3721:5:::0;3708:10;;:18;;;;;;;;;;;;;;;;;;16160:990::o;10882:469::-;10986:4;10997:21;11021:4;10997:28;;11035:14;:12;:14::i;:::-;:42;;;;;11054:12;:23;11067:9;11054:23;;;;;;;;;;;;;;;;;;;;;;;;;11053:24;11035:42;:67;;;;;11082:12;:20;11095:6;11082:20;;;;;;;;;;;;;;;;;;;;;;;;;11081:21;11035:67;11030:289;;;11133:15;;11116:14;:32;11111:203;;;11172:5;11153:24;;11111:203;;;11196:10;:21;11207:9;11196:21;;;;;;;;;;;;;;;;;;;;;;;;;11195:22;:87;;;;;11262:19;;11245:14;11222:9;:20;11232:9;11222:20;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;:59;11195:87;11190:124;;;11306:5;11287:24;;11190:124;11111:203;11030:289;11330:16;11323:23;;;10882:469;;;;;:::o;11748:472::-;11845:7;11859:17;11887:14;:12;:14::i;:::-;11886:15;:37;;;;11905:10;:18;11916:6;11905:18;;;;;;;;;;;;;;;;;;;;;;;;;11886:37;:62;;;;11927:10;:21;11938:9;11927:21;;;;;;;;;;;;;;;;;;;;;;;;;11886:62;11881:314;;;11965:1;11953:13;;11881:314;;;11983:10;:18;11994:6;11983:18;;;;;;;;;;;;;;;;;;;;;;;;;11978:217;;;12044:3;12027:14;;;;;;;;;;;12018:23;;:6;:23;;;;:::i;:::-;:29;;;;:::i;:::-;12006:41;;11978:217;;;12064:10;:21;12075:9;12064:21;;;;;;;;;;;;;;;;;;;;;;;;;12059:136;;;12129:3;12111:15;;;;;;;;;;;12102:24;;:6;:24;;;;:::i;:::-;:30;;;;:::i;:::-;12090:42;;12059:136;;;12189:3;12167:19;;;;;;;;;;12158:28;;:6;:28;;;;:::i;:::-;:34;;;;:::i;:::-;12146:46;;12059:136;11978:217;11881:314;12206:9;12199:16;;;11748:472;;;;;:::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:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:116::-;3916:21;3931:5;3916:21;:::i;:::-;3909:5;3906:32;3896:60;;3952:1;3949;3942:12;3896:60;3846:116;:::o;3968:133::-;4011:5;4049:6;4036:20;4027:29;;4065:30;4089:5;4065:30;:::i;:::-;3968:133;;;;:::o;4107:607::-;4178:6;4186;4194;4243:2;4231:9;4222:7;4218:23;4214:32;4211:119;;;4249:79;;:::i;:::-;4211:119;4369:1;4394:53;4439:7;4430:6;4419:9;4415:22;4394:53;:::i;:::-;4384:63;;4340:117;4496:2;4522:50;4564:7;4555:6;4544:9;4540:22;4522:50;:::i;:::-;4512:60;;4467:115;4621:2;4647:50;4689:7;4680:6;4669:9;4665:22;4647:50;:::i;:::-;4637:60;;4592:115;4107:607;;;;;:::o;4720:619::-;4797:6;4805;4813;4862:2;4850:9;4841:7;4837:23;4833:32;4830:119;;;4868:79;;:::i;:::-;4830:119;4988:1;5013:53;5058:7;5049:6;5038:9;5034:22;5013:53;:::i;:::-;5003:63;;4959:117;5115:2;5141:53;5186:7;5177:6;5166:9;5162:22;5141:53;:::i;:::-;5131:63;;5086:118;5243:2;5269:53;5314:7;5305:6;5294:9;5290:22;5269:53;:::i;:::-;5259:63;;5214:118;4720:619;;;;;:::o;5345:86::-;5380:7;5420:4;5413:5;5409:16;5398:27;;5345:86;;;:::o;5437:112::-;5520:22;5536:5;5520:22;:::i;:::-;5515:3;5508:35;5437:112;;:::o;5555:89::-;5591:7;5631:6;5624:5;5620:18;5609:29;;5555:89;;;:::o;5650:115::-;5735:23;5752:5;5735:23;:::i;:::-;5730:3;5723:36;5650:115;;:::o;5771:842::-;6010:4;6048:3;6037:9;6033:19;6025:27;;6062:67;6126:1;6115:9;6111:17;6102:6;6062:67;:::i;:::-;6139:68;6203:2;6192:9;6188:18;6179:6;6139:68;:::i;:::-;6217;6281:2;6270:9;6266:18;6257:6;6217:68;:::i;:::-;6295;6359:2;6348:9;6344:18;6335:6;6295:68;:::i;:::-;6373:71;6439:3;6428:9;6424:19;6415:6;6373:71;:::i;:::-;6454;6520:3;6509:9;6505:19;6496:6;6454:71;:::i;:::-;6535;6601:3;6590:9;6586:19;6577:6;6535:71;:::i;:::-;5771:842;;;;;;;;;;:::o;6619:214::-;6708:4;6746:2;6735:9;6731:18;6723:26;;6759:67;6823:1;6812:9;6808:17;6799:6;6759:67;:::i;:::-;6619:214;;;;:::o;6839:329::-;6898:6;6947:2;6935:9;6926:7;6922:23;6918:32;6915:119;;;6953:79;;:::i;:::-;6915:119;7073:1;7098:53;7143:7;7134:6;7123:9;7119:22;7098:53;:::i;:::-;7088:63;;7044:117;6839:329;;;;:::o;7174:426::-;7315:4;7353:2;7342:9;7338:18;7330:26;;7366:65;7428:1;7417:9;7413:17;7404:6;7366:65;:::i;:::-;7441:72;7509:2;7498:9;7494:18;7485:6;7441:72;:::i;:::-;7523:70;7589:2;7578:9;7574:18;7565:6;7523:70;:::i;:::-;7174:426;;;;;;:::o;7606:329::-;7665:6;7714:2;7702:9;7693:7;7689:23;7685:32;7682:119;;;7720:79;;:::i;:::-;7682:119;7840:1;7865:53;7910:7;7901:6;7890:9;7886:22;7865:53;:::i;:::-;7855:63;;7811:117;7606:329;;;;:::o;7941:553::-;8118:4;8156:3;8145:9;8141:19;8133:27;;8170:71;8238:1;8227:9;8223:17;8214:6;8170:71;:::i;:::-;8251:72;8319:2;8308:9;8304:18;8295:6;8251:72;:::i;:::-;8333;8401:2;8390:9;8386:18;8377:6;8333:72;:::i;:::-;8415;8483:2;8472:9;8468:18;8459:6;8415:72;:::i;:::-;7941:553;;;;;;;:::o;8500:474::-;8568:6;8576;8625:2;8613:9;8604:7;8600:23;8596:32;8593:119;;;8631:79;;:::i;:::-;8593:119;8751:1;8776:53;8821:7;8812:6;8801:9;8797:22;8776:53;:::i;:::-;8766:63;;8722:117;8878:2;8904:53;8949:7;8940:6;8929:9;8925:22;8904:53;:::i;:::-;8894:63;;8849:118;8500:474;;;;;:::o;8980:462::-;9042:6;9050;9099:2;9087:9;9078:7;9074:23;9070:32;9067:119;;;9105:79;;:::i;:::-;9067:119;9225:1;9250:50;9292:7;9283:6;9272:9;9268:22;9250:50;:::i;:::-;9240:60;;9196:114;9349:2;9375:50;9417:7;9408:6;9397:9;9393:22;9375:50;:::i;:::-;9365:60;;9320:115;8980:462;;;;;:::o;9448:308::-;9557:4;9595:2;9584:9;9580:18;9572:26;;9608:65;9670:1;9659:9;9655:17;9646:6;9608:65;:::i;:::-;9683:66;9745:2;9734:9;9730:18;9721:6;9683:66;:::i;:::-;9448:308;;;;;:::o;9762:120::-;9834:23;9851:5;9834:23;:::i;:::-;9827:5;9824:34;9814:62;;9872:1;9869;9862:12;9814:62;9762:120;:::o;9888:137::-;9933:5;9971:6;9958:20;9949:29;;9987:32;10013:5;9987:32;:::i;:::-;9888:137;;;;:::o;10031:470::-;10097:6;10105;10154:2;10142:9;10133:7;10129:23;10125:32;10122:119;;;10160:79;;:::i;:::-;10122:119;10280:1;10305:52;10349:7;10340:6;10329:9;10325:22;10305:52;:::i;:::-;10295:62;;10251:116;10406:2;10432:52;10476:7;10467:6;10456:9;10452:22;10432:52;:::i;:::-;10422:62;;10377:117;10031:470;;;;;:::o;10507:118::-;10594:24;10612:5;10594:24;:::i;:::-;10589:3;10582:37;10507:118;;:::o;10631:553::-;10808:4;10846:3;10835:9;10831:19;10823:27;;10860:71;10928:1;10917:9;10913:17;10904:6;10860:71;:::i;:::-;10941:72;11009:2;10998:9;10994:18;10985:6;10941:72;:::i;:::-;11023;11091:2;11080:9;11076:18;11067:6;11023:72;:::i;:::-;11105;11173:2;11162:9;11158:18;11149:6;11105:72;:::i;:::-;10631:553;;;;;;;:::o;11190:613::-;11264:6;11272;11280;11329:2;11317:9;11308:7;11304:23;11300:32;11297:119;;;11335:79;;:::i;:::-;11297:119;11455:1;11480:52;11524:7;11515:6;11504:9;11500:22;11480:52;:::i;:::-;11470:62;;11426:116;11581:2;11607:52;11651:7;11642:6;11631:9;11627:22;11607:52;:::i;:::-;11597:62;;11552:117;11708:2;11734:52;11778:7;11769:6;11758:9;11754:22;11734:52;:::i;:::-;11724:62;;11679:117;11190:613;;;;;:::o;11809:327::-;11867:6;11916:2;11904:9;11895:7;11891:23;11887:32;11884:119;;;11922:79;;:::i;:::-;11884:119;12042:1;12067:52;12111:7;12102:6;12091:9;12087:22;12067:52;:::i;:::-;12057:62;;12013:116;11809:327;;;;:::o;12142:93::-;12178:7;12218:10;12211:5;12207:22;12196:33;;12142:93;;;:::o;12241:120::-;12313:23;12330:5;12313:23;:::i;:::-;12306:5;12303:34;12293:62;;12351:1;12348;12341:12;12293:62;12241:120;:::o;12367:137::-;12412:5;12450:6;12437:20;12428:29;;12466:32;12492:5;12466:32;:::i;:::-;12367:137;;;;:::o;12510:757::-;12592:6;12600;12608;12616;12665:3;12653:9;12644:7;12640:23;12636:33;12633:120;;;12672:79;;:::i;:::-;12633:120;12792:1;12817:52;12861:7;12852:6;12841:9;12837:22;12817:52;:::i;:::-;12807:62;;12763:116;12918:2;12944:52;12988:7;12979:6;12968:9;12964:22;12944:52;:::i;:::-;12934:62;;12889:117;13045:2;13071:52;13115:7;13106:6;13095:9;13091:22;13071:52;:::i;:::-;13061:62;;13016:117;13172:2;13198:52;13242:7;13233:6;13222:9;13218:22;13198:52;:::i;:::-;13188:62;;13143:117;12510:757;;;;;;;:::o;13273:104::-;13318:7;13347:24;13365:5;13347:24;:::i;:::-;13336:35;;13273:104;;;:::o;13383:138::-;13464:32;13490:5;13464:32;:::i;:::-;13457:5;13454:43;13444:71;;13511:1;13508;13501:12;13444:71;13383:138;:::o;13527:155::-;13581:5;13619:6;13606:20;13597:29;;13635:41;13670:5;13635:41;:::i;:::-;13527:155;;;;:::o;13688:345::-;13755:6;13804:2;13792:9;13783:7;13779:23;13775:32;13772:119;;;13810:79;;:::i;:::-;13772:119;13930:1;13955:61;14008:7;13999:6;13988:9;13984:22;13955:61;:::i;:::-;13945:71;;13901:125;13688:345;;;;:::o;14039:118::-;14110:22;14126:5;14110:22;:::i;:::-;14103:5;14100:33;14090:61;;14147:1;14144;14137:12;14090:61;14039:118;:::o;14163:135::-;14207:5;14245:6;14232:20;14223:29;;14261:31;14286:5;14261:31;:::i;:::-;14163:135;;;;:::o;14304:747::-;14381:6;14389;14397;14405;14454:3;14442:9;14433:7;14429:23;14425:33;14422:120;;;14461:79;;:::i;:::-;14422:120;14581:1;14606:51;14649:7;14640:6;14629:9;14625:22;14606:51;:::i;:::-;14596:61;;14552:115;14706:2;14732:51;14775:7;14766:6;14755:9;14751:22;14732:51;:::i;:::-;14722:61;;14677:116;14832:2;14858:51;14901:7;14892:6;14881:9;14877:22;14858:51;:::i;:::-;14848:61;;14803:116;14958:2;14984:50;15026:7;15017:6;15006:9;15002:22;14984:50;:::i;:::-;14974:60;;14929:115;14304:747;;;;;;;:::o;15057:180::-;15105:77;15102:1;15095:88;15202:4;15199:1;15192:15;15226:4;15223:1;15216:15;15243:102;15285:8;15332:5;15329:1;15325:13;15304:34;;15243:102;;;:::o;15351:848::-;15412:5;15419:4;15443:6;15434:15;;15467:5;15458:14;;15481:712;15502:1;15492:8;15489:15;15481:712;;;15597:4;15592:3;15588:14;15582:4;15579:24;15576:50;;;15606:18;;:::i;:::-;15576:50;15656:1;15646:8;15642:16;15639:451;;;16071:4;16064:5;16060:16;16051:25;;15639:451;16121:4;16115;16111:15;16103:23;;16151:32;16174:8;16151:32;:::i;:::-;16139:44;;15481:712;;;15351:848;;;;;;;:::o;16205:1073::-;16259:5;16450:8;16440:40;;16471:1;16462:10;;16473:5;;16440:40;16499:4;16489:36;;16516:1;16507:10;;16518:5;;16489:36;16585:4;16633:1;16628:27;;;;16669:1;16664:191;;;;16578:277;;16628:27;16646:1;16637:10;;16648:5;;;16664:191;16709:3;16699:8;16696:17;16693:43;;;16716:18;;:::i;:::-;16693:43;16765:8;16762:1;16758:16;16749:25;;16800:3;16793:5;16790:14;16787:40;;;16807:18;;:::i;:::-;16787:40;16840:5;;;16578:277;;16964:2;16954:8;16951:16;16945:3;16939:4;16936:13;16932:36;16914:2;16904:8;16901:16;16896:2;16890:4;16887:12;16883:35;16867:111;16864:246;;;17020:8;17014:4;17010:19;17001:28;;17055:3;17048:5;17045:14;17042:40;;;17062:18;;:::i;:::-;17042:40;17095:5;;16864:246;17135:42;17173:3;17163:8;17157:4;17154:1;17135:42;:::i;:::-;17120:57;;;;17209:4;17204:3;17200:14;17193:5;17190:25;17187:51;;;17218:18;;:::i;:::-;17187:51;17267:4;17260:5;17256:16;17247:25;;16205:1073;;;;;;:::o;17284:281::-;17342:5;17366:23;17384:4;17366:23;:::i;:::-;17358:31;;17410:25;17426:8;17410:25;:::i;:::-;17398:37;;17454:104;17491:66;17481:8;17475:4;17454:104;:::i;:::-;17445:113;;17284:281;;;;:::o;17571:348::-;17611:7;17634:20;17652:1;17634:20;:::i;:::-;17629:25;;17668:20;17686:1;17668:20;:::i;:::-;17663:25;;17856:1;17788:66;17784:74;17781:1;17778:81;17773:1;17766:9;17759:17;17755:105;17752:131;;;17863:18;;:::i;:::-;17752:131;17911:1;17908;17904:9;17893:20;;17571:348;;;;:::o;17925:229::-;18065:34;18061:1;18053:6;18049:14;18042:58;18134:12;18129:2;18121:6;18117:15;18110:37;17925:229;:::o;18160:366::-;18302:3;18323:67;18387:2;18382:3;18323:67;:::i;:::-;18316:74;;18399:93;18488:3;18399:93;:::i;:::-;18517:2;18512:3;18508:12;18501:19;;18160:366;;;:::o;18532:419::-;18698:4;18736:2;18725:9;18721:18;18713:26;;18785:9;18779:4;18775:20;18771:1;18760:9;18756:17;18749:47;18813:131;18939:4;18813:131;:::i;:::-;18805:139;;18532:419;;;:::o;18957:418::-;19094:4;19132:2;19121:9;19117:18;19109:26;;19145:71;19213:1;19202:9;19198:17;19189:6;19145:71;:::i;:::-;19226:66;19288:2;19277:9;19273:18;19264:6;19226:66;:::i;:::-;19302;19364:2;19353:9;19349:18;19340:6;19302:66;:::i;:::-;18957:418;;;;;;:::o;19381:166::-;19521:18;19517:1;19509:6;19505:14;19498:42;19381:166;:::o;19553:366::-;19695:3;19716:67;19780:2;19775:3;19716:67;:::i;:::-;19709:74;;19792:93;19881:3;19792:93;:::i;:::-;19910:2;19905:3;19901:12;19894:19;;19553:366;;;:::o;19925:419::-;20091:4;20129:2;20118:9;20114:18;20106:26;;20178:9;20172:4;20168:20;20164:1;20153:9;20149:17;20142:47;20206:131;20332:4;20206:131;:::i;:::-;20198:139;;19925:419;;;:::o;20350:191::-;20390:4;20410:20;20428:1;20410:20;:::i;:::-;20405:25;;20444:20;20462:1;20444:20;:::i;:::-;20439:25;;20483:1;20480;20477:8;20474:34;;;20488:18;;:::i;:::-;20474:34;20533:1;20530;20526:9;20518:17;;20350:191;;;;:::o;20547:171::-;20687:23;20683:1;20675:6;20671:14;20664:47;20547:171;:::o;20724:366::-;20866:3;20887:67;20951:2;20946:3;20887:67;:::i;:::-;20880:74;;20963:93;21052:3;20963:93;:::i;:::-;21081:2;21076:3;21072:12;21065:19;;20724:366;;;:::o;21096:419::-;21262:4;21300:2;21289:9;21285:18;21277:26;;21349:9;21343:4;21339:20;21335:1;21324:9;21320:17;21313:47;21377:131;21503:4;21377:131;:::i;:::-;21369:139;;21096:419;;;:::o;21521:305::-;21561:3;21580:20;21598:1;21580:20;:::i;:::-;21575:25;;21614:20;21632:1;21614:20;:::i;:::-;21609:25;;21768:1;21700:66;21696:74;21693:1;21690:81;21687:107;;;21774:18;;:::i;:::-;21687:107;21818:1;21815;21811:9;21804:16;;21521:305;;;;:::o;21832:332::-;21953:4;21991:2;21980:9;21976:18;21968:26;;22004:71;22072:1;22061:9;22057:17;22048:6;22004:71;:::i;:::-;22085:72;22153:2;22142:9;22138:18;22129:6;22085:72;:::i;:::-;21832:332;;;;;:::o;22170:::-;22291:4;22329:2;22318:9;22314:18;22306:26;;22342:71;22410:1;22399:9;22395:17;22386:6;22342:71;:::i;:::-;22423:72;22491:2;22480:9;22476:18;22467:6;22423:72;:::i;:::-;22170:332;;;;;:::o;22508:159::-;22648:11;22644:1;22636:6;22632:14;22625:35;22508:159;:::o;22673:365::-;22815:3;22836:66;22900:1;22895:3;22836:66;:::i;:::-;22829:73;;22911:93;23000:3;22911:93;:::i;:::-;23029:2;23024:3;23020:12;23013:19;;22673:365;;;:::o;23044:419::-;23210:4;23248:2;23237:9;23233:18;23225:26;;23297:9;23291:4;23287:20;23283:1;23272:9;23268:17;23261:47;23325:131;23451:4;23325:131;:::i;:::-;23317:139;;23044:419;;;:::o;23469:180::-;23517:77;23514:1;23507:88;23614:4;23611:1;23604:15;23638:4;23635:1;23628:15;23655:185;23695:1;23712:20;23730:1;23712:20;:::i;:::-;23707:25;;23746:20;23764:1;23746:20;:::i;:::-;23741:25;;23785:1;23775:35;;23790:18;;:::i;:::-;23775:35;23832:1;23829;23825:9;23820:14;;23655:185;;;;:::o;23846:166::-;23986:18;23982:1;23974:6;23970:14;23963:42;23846:166;:::o;24018:366::-;24160:3;24181:67;24245:2;24240:3;24181:67;:::i;:::-;24174:74;;24257:93;24346:3;24257:93;:::i;:::-;24375:2;24370:3;24366:12;24359:19;;24018:366;;;:::o;24390:419::-;24556:4;24594:2;24583:9;24579:18;24571:26;;24643:9;24637:4;24633:20;24629:1;24618:9;24614:17;24607:47;24671:131;24797:4;24671:131;:::i;:::-;24663:139;;24390:419;;;:::o;24815:170::-;24955:22;24951:1;24943:6;24939:14;24932:46;24815:170;:::o;24991:366::-;25133:3;25154:67;25218:2;25213:3;25154:67;:::i;:::-;25147:74;;25230:93;25319:3;25230:93;:::i;:::-;25348:2;25343:3;25339:12;25332:19;;24991:366;;;:::o;25363:419::-;25529:4;25567:2;25556:9;25552:18;25544:26;;25616:9;25610:4;25606:20;25602:1;25591:9;25587:17;25580:47;25644:131;25770:4;25644:131;:::i;:::-;25636:139;;25363:419;;;:::o;25788:332::-;25909:4;25947:2;25936:9;25932:18;25924:26;;25960:71;26028:1;26017:9;26013:17;26004:6;25960:71;:::i;:::-;26041:72;26109:2;26098:9;26094:18;26085:6;26041:72;:::i;:::-;25788:332;;;;;:::o;26126:170::-;26266:22;26262:1;26254:6;26250:14;26243:46;26126:170;:::o;26302:366::-;26444:3;26465:67;26529:2;26524:3;26465:67;:::i;:::-;26458:74;;26541:93;26630:3;26541:93;:::i;:::-;26659:2;26654:3;26650:12;26643:19;;26302:366;;;:::o;26674:419::-;26840:4;26878:2;26867:9;26863:18;26855:26;;26927:9;26921:4;26917:20;26913:1;26902:9;26898:17;26891:47;26955:131;27081:4;26955:131;:::i;:::-;26947:139;;26674:419;;;:::o;27099:166::-;27239:18;27235:1;27227:6;27223:14;27216:42;27099:166;:::o;27271:366::-;27413:3;27434:67;27498:2;27493:3;27434:67;:::i;:::-;27427:74;;27510:93;27599:3;27510:93;:::i;:::-;27628:2;27623:3;27619:12;27612:19;;27271:366;;;:::o;27643:419::-;27809:4;27847:2;27836:9;27832:18;27824:26;;27896:9;27890:4;27886:20;27882:1;27871:9;27867:17;27860:47;27924:131;28050:4;27924:131;:::i;:::-;27916:139;;27643:419;;;:::o;28068:143::-;28125:5;28156:6;28150:13;28141:22;;28172:33;28199:5;28172:33;:::i;:::-;28068:143;;;;:::o;28217:351::-;28287:6;28336:2;28324:9;28315:7;28311:23;28307:32;28304:119;;;28342:79;;:::i;:::-;28304:119;28462:1;28487:64;28543:7;28534:6;28523:9;28519:22;28487:64;:::i;:::-;28477:74;;28433:128;28217:351;;;;:::o;28574:156::-;28714:8;28710:1;28702:6;28698:14;28691:32;28574:156;:::o;28736:365::-;28878:3;28899:66;28963:1;28958:3;28899:66;:::i;:::-;28892:73;;28974:93;29063:3;28974:93;:::i;:::-;29092:2;29087:3;29083:12;29076:19;;28736:365;;;:::o;29107:419::-;29273:4;29311:2;29300:9;29296:18;29288:26;;29360:9;29354:4;29350:20;29346:1;29335:9;29331:17;29324:47;29388:131;29514:4;29388:131;:::i;:::-;29380:139;;29107:419;;;:::o;29532:159::-;29672:11;29668:1;29660:6;29656:14;29649:35;29532:159;:::o;29697:365::-;29839:3;29860:66;29924:1;29919:3;29860:66;:::i;:::-;29853:73;;29935:93;30024:3;29935:93;:::i;:::-;30053:2;30048:3;30044:12;30037:19;;29697:365;;;:::o;30068:419::-;30234:4;30272:2;30261:9;30257:18;30249:26;;30321:9;30315:4;30311:20;30307:1;30296:9;30292:17;30285:47;30349:131;30475:4;30349:131;:::i;:::-;30341:139;;30068:419;;;:::o;30493:242::-;30532:3;30551:19;30568:1;30551:19;:::i;:::-;30546:24;;30584:19;30601:1;30584:19;:::i;:::-;30579:24;;30677:1;30669:6;30665:14;30662:1;30659:21;30656:47;;;30683:18;;:::i;:::-;30656:47;30727:1;30724;30720:9;30713:16;;30493:242;;;;:::o;30741:430::-;30884:4;30922:2;30911:9;30907:18;30899:26;;30935:69;31001:1;30990:9;30986:17;30977:6;30935:69;:::i;:::-;31014:70;31080:2;31069:9;31065:18;31056:6;31014:70;:::i;:::-;31094;31160:2;31149:9;31145:18;31136:6;31094:70;:::i;:::-;30741:430;;;;;;:::o;31177:168::-;31317:20;31313:1;31305:6;31301:14;31294:44;31177:168;:::o;31351:366::-;31493:3;31514:67;31578:2;31573:3;31514:67;:::i;:::-;31507:74;;31590:93;31679:3;31590:93;:::i;:::-;31708:2;31703:3;31699:12;31692:19;;31351:366;;;:::o;31723:419::-;31889:4;31927:2;31916:9;31912:18;31904:26;;31976:9;31970:4;31966:20;31962:1;31951:9;31947:17;31940:47;32004:131;32130:4;32004:131;:::i;:::-;31996:139;;31723:419;;;:::o;32148:285::-;32187:7;32210:19;32227:1;32210:19;:::i;:::-;32205:24;;32243:19;32260:1;32243:19;:::i;:::-;32238:24;;32370:1;32362:6;32358:14;32355:1;32352:21;32347:1;32340:9;32333:17;32329:45;32326:71;;;32377:18;;:::i;:::-;32326:71;32425:1;32422;32418:9;32407:20;;32148:285;;;;:::o;32439:60::-;32467:3;32488:5;32481:12;;32439:60;;;:::o;32505:142::-;32555:9;32588:53;32606:34;32615:24;32633:5;32615:24;:::i;:::-;32606:34;:::i;:::-;32588:53;:::i;:::-;32575:66;;32505:142;;;:::o;32653:126::-;32703:9;32736:37;32767:5;32736:37;:::i;:::-;32723:50;;32653:126;;;:::o;32785:134::-;32843:9;32876:37;32907:5;32876:37;:::i;:::-;32863:50;;32785:134;;;:::o;32925:147::-;33020:45;33059:5;33020:45;:::i;:::-;33015:3;33008:58;32925:147;;:::o;33078:238::-;33179:4;33217:2;33206:9;33202:18;33194:26;;33230:79;33306:1;33295:9;33291:17;33282:6;33230:79;:::i;:::-;33078:238;;;;:::o;33322:176::-;33462:28;33458:1;33450:6;33446:14;33439:52;33322:176;:::o;33504:366::-;33646:3;33667:67;33731:2;33726:3;33667:67;:::i;:::-;33660:74;;33743:93;33832:3;33743:93;:::i;:::-;33861:2;33856:3;33852:12;33845:19;;33504:366;;;:::o;33876:419::-;34042:4;34080:2;34069:9;34065:18;34057:26;;34129:9;34123:4;34119:20;34115:1;34104:9;34100:17;34093:47;34157:131;34283:4;34157:131;:::i;:::-;34149:139;;33876:419;;;:::o;34301:280::-;34339:7;34362:18;34378:1;34362:18;:::i;:::-;34357:23;;34394:18;34410:1;34394:18;:::i;:::-;34389:23;;34518:1;34512:4;34508:12;34505:1;34502:19;34497:1;34490:9;34483:17;34479:43;34476:69;;;34525:18;;:::i;:::-;34476:69;34573:1;34570;34566:9;34555:20;;34301:280;;;;:::o;34587:237::-;34625:3;34644:18;34660:1;34644:18;:::i;:::-;34639:23;;34676:18;34692:1;34676:18;:::i;:::-;34671:23;;34766:1;34760:4;34756:12;34753:1;34750:19;34747:45;;;34772:18;;:::i;:::-;34747:45;34816:1;34813;34809:9;34802:16;;34587:237;;;;:::o;34830:166::-;34970:18;34966:1;34958:6;34954:14;34947:42;34830:166;:::o;35002:366::-;35144:3;35165:67;35229:2;35224:3;35165:67;:::i;:::-;35158:74;;35241:93;35330:3;35241:93;:::i;:::-;35359:2;35354:3;35350:12;35343:19;;35002:366;;;:::o;35374:419::-;35540:4;35578:2;35567:9;35563:18;35555:26;;35627:9;35621:4;35617:20;35613:1;35602:9;35598:17;35591:47;35655:131;35781:4;35655:131;:::i;:::-;35647:139;;35374:419;;;:::o;35799:162::-;35939:14;35935:1;35927:6;35923:14;35916:38;35799:162;:::o;35967:366::-;36109:3;36130:67;36194:2;36189:3;36130:67;:::i;:::-;36123:74;;36206:93;36295:3;36206:93;:::i;:::-;36324:2;36319:3;36315:12;36308:19;;35967:366;;;:::o;36339:419::-;36505:4;36543:2;36532:9;36528:18;36520:26;;36592:9;36586:4;36582:20;36578:1;36567:9;36563:17;36556:47;36620:131;36746:4;36620:131;:::i;:::-;36612:139;;36339:419;;;:::o;36764:517::-;36923:4;36961:3;36950:9;36946:19;36938:27;;36975:67;37039:1;37028:9;37024:17;37015:6;36975:67;:::i;:::-;37052:68;37116:2;37105:9;37101:18;37092:6;37052:68;:::i;:::-;37130;37194:2;37183:9;37179:18;37170:6;37130:68;:::i;:::-;37208:66;37270:2;37259:9;37255:18;37246:6;37208:66;:::i;:::-;36764:517;;;;;;;:::o;37287:171::-;37325:3;37348:23;37365:5;37348:23;:::i;:::-;37339:32;;37393:6;37386:5;37383:17;37380:43;;37403:18;;:::i;:::-;37380:43;37450:1;37443:5;37439:13;37432:20;;37287:171;;;:::o;37464:174::-;37604:26;37600:1;37592:6;37588:14;37581:50;37464:174;:::o;37644:366::-;37786:3;37807:67;37871:2;37866:3;37807:67;:::i;:::-;37800:74;;37883:93;37972:3;37883:93;:::i;:::-;38001:2;37996:3;37992:12;37985:19;;37644:366;;;:::o;38016:419::-;38182:4;38220:2;38209:9;38205:18;38197:26;;38269:9;38263:4;38259:20;38255:1;38244:9;38240:17;38233:47;38297:131;38423:4;38297:131;:::i;:::-;38289:139;;38016:419;;;:::o;38441:161::-;38581:13;38577:1;38569:6;38565:14;38558:37;38441:161;:::o;38608:366::-;38750:3;38771:67;38835:2;38830:3;38771:67;:::i;:::-;38764:74;;38847:93;38936:3;38847:93;:::i;:::-;38965:2;38960:3;38956:12;38949:19;;38608:366;;;:::o;38980:419::-;39146:4;39184:2;39173:9;39169:18;39161:26;;39233:9;39227:4;39223:20;39219:1;39208:9;39204:17;39197:47;39261:131;39387:4;39261:131;:::i;:::-;39253:139;;38980:419;;;:::o;39405:167::-;39545:19;39541:1;39533:6;39529:14;39522:43;39405:167;:::o;39578:366::-;39720:3;39741:67;39805:2;39800:3;39741:67;:::i;:::-;39734:74;;39817:93;39906:3;39817:93;:::i;:::-;39935:2;39930:3;39926:12;39919:19;;39578:366;;;:::o;39950:419::-;40116:4;40154:2;40143:9;40139:18;40131:26;;40203:9;40197:4;40193:20;40189:1;40178:9;40174:17;40167:47;40231:131;40357:4;40231:131;:::i;:::-;40223:139;;39950:419;;;:::o;40375:180::-;40423:77;40420:1;40413:88;40520:4;40517:1;40510:15;40544:4;40541:1;40534:15;40561:180;40609:77;40606:1;40599:88;40706:4;40703:1;40696:15;40730:4;40727:1;40720:15;40747:85;40792:7;40821:5;40810:16;;40747:85;;;:::o;40838:158::-;40896:9;40929:61;40947:42;40956:32;40982:5;40956:32;:::i;:::-;40947:42;:::i;:::-;40929:61;:::i;:::-;40916:74;;40838:158;;;:::o;41002:147::-;41097:45;41136:5;41097:45;:::i;:::-;41092:3;41085:58;41002:147;;:::o;41155:114::-;41222:6;41256:5;41250:12;41240:22;;41155:114;;;:::o;41275:184::-;41374:11;41408:6;41403:3;41396:19;41448:4;41443:3;41439:14;41424:29;;41275:184;;;;:::o;41465:132::-;41532:4;41555:3;41547:11;;41585:4;41580:3;41576:14;41568:22;;41465:132;;;:::o;41603:108::-;41680:24;41698:5;41680:24;:::i;:::-;41675:3;41668:37;41603:108;;:::o;41717:179::-;41786:10;41807:46;41849:3;41841:6;41807:46;:::i;:::-;41885:4;41880:3;41876:14;41862:28;;41717:179;;;;:::o;41902:113::-;41972:4;42004;41999:3;41995:14;41987:22;;41902:113;;;:::o;42051:732::-;42170:3;42199:54;42247:5;42199:54;:::i;:::-;42269:86;42348:6;42343:3;42269:86;:::i;:::-;42262:93;;42379:56;42429:5;42379:56;:::i;:::-;42458:7;42489:1;42474:284;42499:6;42496:1;42493:13;42474:284;;;42575:6;42569:13;42602:63;42661:3;42646:13;42602:63;:::i;:::-;42595:70;;42688:60;42741:6;42688:60;:::i;:::-;42678:70;;42534:224;42521:1;42518;42514:9;42509:14;;42474:284;;;42478:14;42774:3;42767:10;;42175:608;;;42051:732;;;;:::o;42789:831::-;43052:4;43090:3;43079:9;43075:19;43067:27;;43104:71;43172:1;43161:9;43157:17;43148:6;43104:71;:::i;:::-;43185:80;43261:2;43250:9;43246:18;43237:6;43185:80;:::i;:::-;43312:9;43306:4;43302:20;43297:2;43286:9;43282:18;43275:48;43340:108;43443:4;43434:6;43340:108;:::i;:::-;43332:116;;43458:72;43526:2;43515:9;43511:18;43502:6;43458:72;:::i;:::-;43540:73;43608:3;43597:9;43593:19;43584:6;43540:73;:::i;:::-;42789:831;;;;;;;;:::o;43626:807::-;43875:4;43913:3;43902:9;43898:19;43890:27;;43927:71;43995:1;43984:9;43980:17;43971:6;43927:71;:::i;:::-;44008:72;44076:2;44065:9;44061:18;44052:6;44008:72;:::i;:::-;44090:80;44166:2;44155:9;44151:18;44142:6;44090:80;:::i;:::-;44180;44256:2;44245:9;44241:18;44232:6;44180:80;:::i;:::-;44270:73;44338:3;44327:9;44323:19;44314:6;44270:73;:::i;:::-;44353;44421:3;44410:9;44406:19;44397:6;44353:73;:::i;:::-;43626:807;;;;;;;;;:::o;44439:143::-;44496:5;44527:6;44521:13;44512:22;;44543:33;44570:5;44543:33;:::i;:::-;44439:143;;;;:::o;44588:663::-;44676:6;44684;44692;44741:2;44729:9;44720:7;44716:23;44712:32;44709:119;;;44747:79;;:::i;:::-;44709:119;44867:1;44892:64;44948:7;44939:6;44928:9;44924:22;44892:64;:::i;:::-;44882:74;;44838:128;45005:2;45031:64;45087:7;45078:6;45067:9;45063:22;45031:64;:::i;:::-;45021:74;;44976:129;45144:2;45170:64;45226:7;45217:6;45206:9;45202:22;45170:64;:::i;:::-;45160:74;;45115:129;44588:663;;;;;:::o

Swarm Source

ipfs://0f5a1a234500f92d1bdba36c09ddd1908e413c5682aae7651a49ec9247ba46e0

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.