ETH Price: $3,635.49 (-1.97%)

Token

ERC-20: Al Rihla Inu (ARI)
 

Overview

Max Total Supply

1,000,000,000 ARI

Holders

75

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
9,400,000.232341299 ARI

Value
$0.00
0x0919e06e0face19e4b3ad9c7e09ba7298a9a0a0f
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
ARI

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-19
*/

// Telegram: https://t.me/alrihlainuerc
// Twitter : https://twitter.com/alrihlainuerc

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

interface IERC20 {
	function totalSupply() external view returns (uint256);
	function decimals() external view returns (uint8);
	function symbol() external view returns (string memory);
	function name() external view returns (string memory);
	function balanceOf(address account) external view returns (uint256);
	function transfer(address recipient, uint256 amount) external returns (bool);
	function allowance(address _owner, address spender) external view returns (uint256);
	function approve(address spender, uint256 amount) external returns (bool);
	function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
	event Transfer(address indexed from, address indexed to, uint256 value);
	event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); }
interface IUniswapV2Router02 {
	function getAmountsIn(uint amountOut, address[] memory path) external view returns (uint[] memory amounts);
	function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
	function factory() external pure returns (address);
	function addLiquidity(address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline) external returns (uint amountA, uint amountB, uint liquidity);
}

abstract contract OWNED {
	address internal _owner;
	event OwnershipTransferred(address owner);
	constructor(address contractOwner) { _owner = contractOwner; }
	modifier onlyOwner() { require(msg.sender == _owner, "Not the owner"); _; }
	// function owner() external view returns (address) { return _owner; }  // moved into addressList() function
	function renounceOwnership() external onlyOwner { _transferOwnership(address(0)); }
	function transferOwnership(address newOwner) external onlyOwner { _transferOwnership(newOwner); }
	function _transferOwnership(address _newOwner) internal {
		_owner = _newOwner; 
		emit OwnershipTransferred(_newOwner); 
	}
}

contract ARI_Sidecar {
	address private immutable _owner;
	constructor() { _owner = msg.sender; }
	function owner() external view returns (address) { return _owner; }
	function recoverErc20Tokens(address tokenCA) external returns (uint256) {
		require(msg.sender == _owner, "Not authorized");
		uint256 balance = IERC20(tokenCA).balanceOf(address(this));
		if (balance > 0) { IERC20(tokenCA).transfer(msg.sender, balance); }
		return balance;
	}
}

contract ARI is IERC20, OWNED {
	mapping(address => uint256) private _balances;
	mapping(address => mapping(address => uint256)) private _allowances;
	uint8 private constant _decimals = 9;
	uint256 private constant _totalSupply = 1_000_000_000 * 10**_decimals;
	string private constant _name = "Al Rihla Inu";
	string private constant _symbol = "ARI";

	uint256 private _thresholdUSDC = 1000;  // tax tokens USD value threshold to trigger tax token swap, transfer and adding liquidity
	uint256 private _maxTx; 
	uint256 private _maxWallet;
	uint8 private immutable _usdcDecimals;

	uint256 private constant taxMcBracket1 = 8_000_000; // below this MC tax is 6% (2 LP, 2 WCILP, 2 Marketing)
	uint256 private constant taxMcBracket2 = 16_000_000; // below this MC tax is 4% (2 WCILP, 2 Marketing)
	uint256 private constant taxMcBracket3 = 100_000_000; // below this MC tax is 2% (only WCILP), above it tax is 0%

	mapping(address => bool) private _excluded;
	address private _marketingWallet = address(0x58D0A270B94fF1553FbAE4f34A687228Fb57352B);
	
	address private constant _WCI = address(0xC5a9BC46A7dbe1c6dE493E84A18f02E70E2c5A32); 
	address private constant _usdc = address(0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48); 
	
	address private immutable _sidecarAddress;
	ARI_Sidecar private immutable _sidecarContract;

	address private constant _swapRouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //Uniswap V2 Router
	IUniswapV2Router02 private constant _swapRouter = IUniswapV2Router02(_swapRouterAddress);
	address private _primaryLP;
	mapping(address => bool) private _isLP;
	
	uint256 private _openAt;
	uint256 private _addTime = 100; //trading opens 5m after adding liquidity
	uint256 private _protected;

	bool private swapLocked;
	modifier lockSwap { swapLocked = true; _; swapLocked = false; }

	constructor() OWNED(msg.sender)  {
		_balances[address(this)] = _totalSupply;
		emit Transfer(address(0), address(this), _balances[address(this)]);
		
		_sidecarContract = new ARI_Sidecar();
		_sidecarAddress = address(_sidecarContract);
		_usdcDecimals = IERC20(_usdc).decimals();

		_changeLimits(5,10); //set max TX to 0.5%, max wallet 1%

		_excluded[_owner] = true;
		_excluded[address(this)] = true;
		_excluded[_swapRouterAddress] = true;
		_excluded[_marketingWallet] = true;
		_excluded[_sidecarAddress] = true;
	}

	function addressList() external view returns (address owner, address sidecar, address marketing, address WCI, address usdc, address swapRouter, address primaryLP) {
		return (_owner, _sidecarAddress, _marketingWallet, _WCI, _usdc, _swapRouterAddress, _primaryLP);
	}

	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) external view override returns (uint256) { return _balances[account]; }
	function allowance(address owner, address spender) external view override returns (uint256) { return _allowances[owner][spender]; }
	function approve(address spender, uint256 amount) public override returns (bool) {
		require(_balances[msg.sender] > 0,"ERC20: Zero balance");
		_approve(msg.sender, spender, amount);
		return true;
	}
	function _approve(address owner, address spender, uint256 amount ) private {
		require(owner != address(0) && spender != address(0), "ERC20: Zero address");
		_allowances[owner][spender] = amount;
		emit Approval(owner, spender, amount);
	}
	function _checkAndApproveRouter(uint256 tokenAmount) private {
		if (_allowances[address(this)][_swapRouterAddress] < tokenAmount) { 
			_approve(address(this), _swapRouterAddress, type(uint256).max);
		}
	}

	function _checkAndApproveRouterForToken(address _token, uint256 amount) internal {
		uint256 tokenAllowance;
		if (_token == address(this)) {
			tokenAllowance = _allowances[address(this)][_swapRouterAddress];
			if (amount > tokenAllowance) {
				_allowances[address(this)][_swapRouterAddress] = type(uint256).max;
			}
		} else {
			tokenAllowance = IERC20(_token).allowance(address(this), _swapRouterAddress);
			if (amount > tokenAllowance) {
				IERC20(_token).approve(_swapRouterAddress, type(uint256).max);
			}
		}
    }

	function transfer(address to, uint256 amount) public returns (bool) {
		_transfer(msg.sender, to, amount);
		return true;
	}
	function transferFrom(address from, address to, uint256 amount) public returns (bool) {
		require(_allowances[from][msg.sender] >= amount,"ERC20: amount exceeds allowance");
		_allowances[from][msg.sender] -= amount;
		_transfer(from, to, amount);
		return true;
	}
	function _transfer(address from, address to, uint256 amount) private {
		require(from != address(0) && to != address(0), "ERC20: Zero address"); 
		require(_balances[from] >= amount, "ERC20: amount exceeds balance"); 
		require(_limitCheck(from, to, amount), "Limits exceeded");
		require(block.timestamp>_openAt, "Not enabled");

		if (block.timestamp>_openAt && block.timestamp<_protected && tx.gasprice>block.basefee) {
			uint256 _gpb = tx.gasprice - block.basefee;
			uint256 _gpm = 10 * (10**9);
			require(_gpb<_gpm,"Not enabled");
		}

		if ( !swapLocked && !_excluded[from] && _isLP[to] ) { _processTaxTokens(); }
		
		(uint256 WCILP, uint256 ariLP, uint256 marketing) = _getTaxTokens(from, to, amount);
		uint256 taxTokens = WCILP + ariLP + marketing;
		_balances[from] -= amount;
		_balances[address(this)] += taxTokens;
		_balances[to] += (amount - taxTokens);
		emit Transfer(from, to, amount);
	}
	function _limitCheck(address from, address to, uint256 amount) private view returns (bool) {
		bool txSize = true;
		if ( amount > _maxTx && !_excluded[from] && !_excluded[to] ) { txSize = false; }
		bool walletSize = true;
		uint256 newBalanceTo = _balances[to] + amount;
		if ( newBalanceTo > _maxWallet && !_excluded[from] && !_excluded[to] && !_isLP[to] ) { walletSize = false; } 
		return (txSize && walletSize);
	}

	function _getCurrentDilutedMcUSD() private view returns (uint256) {
		uint256 marketCap;
		if (_primaryLP != address(0)) {
			uint256 tokensInLP = _balances[_primaryLP];
			uint256 usdcInLP = IERC20(_usdc).balanceOf(_primaryLP) / (10**_usdcDecimals);
			marketCap = (usdcInLP * _totalSupply / tokensInLP);
		}
		return marketCap;
	}
	function _getTaxRates() private view returns (uint8 WCIRate, uint8 ariRate, uint8 marketingRate) {
		uint8 _WCIRate; uint8 _ariRate; uint8 _marketingRate;
		uint256 currentDilutedUsdMC = _getCurrentDilutedMcUSD();
		if (currentDilutedUsdMC < taxMcBracket1 ) {
			_WCIRate = 2; _ariRate = 2; _marketingRate = 2;
		} else if (currentDilutedUsdMC >= taxMcBracket1 && currentDilutedUsdMC < taxMcBracket2) {
			_WCIRate = 2; _ariRate = 0; _marketingRate = 2;
		} else if (currentDilutedUsdMC >= taxMcBracket2 && currentDilutedUsdMC < taxMcBracket3) {
			_WCIRate = 2; _ariRate = 0; _marketingRate = 0;
		} else { 
			_WCIRate = 0; _ariRate = 0; _marketingRate = 0;
		}
		return (_WCIRate, _ariRate, _marketingRate);
	}
	function _getTaxTokens(address from, address to, uint256 amount) private view returns (uint256 WCILP, uint256 ariLP, uint256 marketing) {
		uint256 _WCILP; uint256 _ariLP; uint256 _marketing;
		if ( (_isLP[from] && !_excluded[to]) || (_isLP[to] && !_excluded[from]) ) { 
			(uint8 WCIRate, uint8 ariRate, uint8 marketingRate) = _getTaxRates();
			_WCILP = amount * WCIRate / 100;
			_ariLP = amount * ariRate / 100;
			_marketing = amount * marketingRate / 100;
		}
		else { 
			_WCILP = 0;
			_ariLP = 0;
			_marketing = 0;
		}
		return (_WCILP, _ariLP, _marketing);
	}  

	function addInitialLiquidity() external onlyOwner {
		require(IERC20(_usdc).balanceOf(address(this))>0, "USDC value zero");
		require(_primaryLP == address(0), "LP exists");
		_primaryLP = IUniswapV2Factory(_swapRouter.factory()).createPair(address(this), _usdc);
		_isLP[_primaryLP] = true;
		_addLiquidity(address(this), _balances[address(this)], IERC20(_usdc).balanceOf(address(this)), false);
		_openAt = block.timestamp + _addTime;
		_protected = _openAt + 300;
	}

	function _addLiquidity(address _token, uint256 tokenAmount, uint256 usdcAmount, bool burnLpTokens) internal {
		require(IERC20(_token).balanceOf(address(this)) >= tokenAmount, "Not enough tokens");
		require(IERC20(_usdc).balanceOf(address(this)) >= usdcAmount, "Not enough USDC");
		_checkAndApproveRouterForToken(_token, tokenAmount);
		_checkAndApproveRouterForToken(_usdc, usdcAmount);
		address lpRecipient = _owner;
		if (burnLpTokens) { lpRecipient = address(0); }

		_swapRouter.addLiquidity(
			_usdc,  		// tokenA
			_token, 		// tokenB
			usdcAmount,     // amountADesired
			tokenAmount,    // amountBDesired
			0,      		// amountAMin -- allowing slippage
			0,      		// amountBMin -- allowing slippage
			lpRecipient, 	// to -- who gets the LP tokens
			block.timestamp // deadline
		);
	}

	function stats() external view returns (uint256 currentUsdMC, uint256 currentTaxUSD, uint256 swapThresholdUSD) { 
		uint256 currentMc = _getCurrentDilutedMcUSD();
		uint256 currentTaxValue = currentMc * _balances[address(this)] / _totalSupply;
		return (currentMc, currentTaxValue, _thresholdUSDC);
	}

	function tax() external view returns (uint8 LiquidityWCI, uint8 LiquidityARI, uint8 Marketing) { 
		(uint8 WCIRate, uint8 ariRate, uint8 marketingRate) = _getTaxRates();
		return (WCIRate, ariRate, marketingRate);
	}
	function limits() external view returns (uint256 maxTransaction, uint256 maxWallet) { return (_maxTx, _maxWallet); }
	function isExcluded(address wallet) external view returns (bool) { return _excluded[wallet]; }

	function changeLimits(uint16 maxTxPermille, uint16 maxWalletPermille) public onlyOwner { _changeLimits(maxTxPermille, maxWalletPermille); }
	function _changeLimits(uint16 _maxTxPermille, uint16 _maxWalletPermille) private {
		uint256 newMaxTx = (_totalSupply * _maxTxPermille / 1000) + (10 * 10**_decimals); //add 10 tokens to avoid rounding issues
		uint256 newMaxWallet = (_totalSupply * _maxWalletPermille / 1000) + (10 * 10**_decimals); //add 10 tokens to avoid rounding issues
		require(newMaxTx >= _maxTx && newMaxWallet >= _maxWallet, "Cannot decrease limits");
		if (newMaxTx > _totalSupply) { newMaxTx = _totalSupply; }
		if (newMaxWallet > _totalSupply) { newMaxWallet = _totalSupply; }
		_maxTx = newMaxTx;
		_maxWallet = newMaxWallet;
	}

	function changeTaxWallet(address walletMarketing) external onlyOwner {
		require(!_isLP[walletMarketing] && walletMarketing != _swapRouterAddress && walletMarketing != address(this) && walletMarketing != address(0));
		_excluded[walletMarketing] = true;
		_marketingWallet = walletMarketing;
	}	
	
	function _getThresholdTokenAmount() private view returns (uint256) {
		address[] memory path = new address[](2);
		path[0] = address(this);
		path[1] = _usdc;
		uint256[] memory amounts = _swapRouter.getAmountsIn(_thresholdUSDC * 10**_usdcDecimals, path); 
		return amounts[0];
	}
	function _processTaxTokens() private lockSwap {
		uint256 thresholdTokens = _getThresholdTokenAmount();
		(uint8 WCIRate, uint8 ariRate, uint8 marketingRate) = _getTaxRates();
		uint8 totalRate = WCIRate + ariRate + marketingRate;
		uint256 swapAmount = _balances[address(this)];
		if (totalRate>0 && swapAmount >= thresholdTokens) {
			swapAmount = thresholdTokens;

			uint256 tokensForWCI = (swapAmount * WCIRate / totalRate);
			uint256 tokensForWerLP = (swapAmount * ariRate / totalRate)/2;
			uint256 tokensForMarketing = swapAmount * marketingRate / totalRate;

			uint256 tokensToSwap = tokensForWCI + tokensForMarketing + tokensForWerLP;
			if (tokensToSwap >= 10**_decimals) {
				uint256 swappedOutputUSDC = _swapTokens(address(this), _usdc, tokensToSwap, true); //swap ARI for USDC, use sidecar contract
				uint256 usdcForWerLP = swappedOutputUSDC * tokensForWerLP / tokensToSwap; //calc USDC for ARI liquidity
				uint256 usdcToSpendOnWCI = (swappedOutputUSDC * tokensForWCI / tokensToSwap) / 2; //calc USDC for WCI liquidity
				uint256 usdcForMarketing = swappedOutputUSDC * tokensForMarketing / tokensToSwap; //calc USDC for marketing

				if (ariRate>0) { _addLiquidity(address(this), tokensForWerLP, usdcForWerLP, true); } //add ARI liquidity and burn LP tokens

				if (WCIRate>0) {
					uint256 WCIPurchased = _swapTokens(_usdc, _WCI, usdcToSpendOnWCI, false); //purchase WCI for liquidity, sidecar not used
					_addLiquidity(_WCI, WCIPurchased, usdcToSpendOnWCI, true); //add WCI liquidity and burn LP tokens
				}

				if (marketingRate>0) {
					uint256 remainingUsdcBalance = IERC20(_usdc).balanceOf(address(this));
					if (usdcForMarketing > remainingUsdcBalance) { usdcForMarketing = remainingUsdcBalance; } //added check to avoid risk of having insufficient balance
					if (usdcForMarketing > 0) { IERC20(_usdc).transfer(_marketingWallet, usdcForMarketing); } //transfer USDC to marketing wallet
				}
			}

		}
	}

	function _swapTokens(address inputToken, address outputToken, uint256 inputAmount, bool useSidecar) private returns(uint256 outputAmount) {		
		address swapFunctionRecipient = address(this);
		uint256 balanceBefore;
		uint256 swappedOutputTokens;
		
		if (useSidecar == true) { swapFunctionRecipient = _sidecarAddress; }
		else { balanceBefore = IERC20(outputToken).balanceOf(address(this)); }

		_checkAndApproveRouterForToken(inputToken, inputAmount);
		address[] memory path = new address[](2);
		path[0] = inputToken;
		path[1] = outputToken;
		_swapRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens(
			inputAmount,
			0,
			path,
			swapFunctionRecipient,
			block.timestamp
		);
		
		if (useSidecar == true) { swappedOutputTokens = _sidecarContract.recoverErc20Tokens(outputToken); }
		else { 
			uint256 balanceAfter = IERC20(outputToken).balanceOf(address(this));
			swappedOutputTokens = (balanceAfter - balanceBefore); 
		}

		return swappedOutputTokens; 
	}

	function recoverTokens(address tokenCa) external onlyOwner {
		require(tokenCa != address(this),"Not allowed");
		uint256 tokenBalance = IERC20(tokenCa).balanceOf(address(this));
		IERC20(tokenCa).transfer(msg.sender, tokenBalance);
	}

	function manualSwap() external onlyOwner { _processTaxTokens(); }
	function setExcluded(address wallet, bool exclude) external onlyOwner { 
		string memory notAllowedError = "Not allowed";
		require(!_isLP[wallet], notAllowedError);
		require(wallet != address(this), notAllowedError);
		require(wallet != _sidecarAddress, notAllowedError);
		require(wallet != _swapRouterAddress, notAllowedError);
	 	_excluded[wallet] = exclude; 
	}
	function setThreshold(uint256 amountUSD) external onlyOwner {
		require(amountUSD > 0, "Threshold cannot be 0");
		_thresholdUSDC = amountUSD;
	}

	function burn(uint256 amount) external {
		require(_balances[msg.sender] >= amount, "Low balance");
		_balances[msg.sender] -= amount;
		_balances[address(0)] += amount;
		emit Transfer(msg.sender, address(0), amount);
	}
	function setAdditionalLP(address lpAddress, bool isLiqPool) external onlyOwner {
		string memory notAllowedError = "Not allowed";
		require(!_excluded[lpAddress], notAllowedError);
		require(lpAddress != _primaryLP, notAllowedError);
		require(lpAddress != address(this), notAllowedError);
		require(lpAddress != _sidecarAddress, notAllowedError);
		require(lpAddress != _swapRouterAddress, notAllowedError);
		_isLP[lpAddress] = isLiqPool;
	}
	function isLP(address ca) external view returns (bool) { return _isLP[ca]; }
}

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":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"addInitialLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"addressList","outputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"sidecar","type":"address"},{"internalType":"address","name":"marketing","type":"address"},{"internalType":"address","name":"WCI","type":"address"},{"internalType":"address","name":"usdc","type":"address"},{"internalType":"address","name":"swapRouter","type":"address"},{"internalType":"address","name":"primaryLP","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTxPermille","type":"uint16"},{"internalType":"uint16","name":"maxWalletPermille","type":"uint16"}],"name":"changeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"walletMarketing","type":"address"}],"name":"changeTaxWallet","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":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"ca","type":"address"}],"name":"isLP","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limits","outputs":[{"internalType":"uint256","name":"maxTransaction","type":"uint256"},{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"tokenCa","type":"address"}],"name":"recoverTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"lpAddress","type":"address"},{"internalType":"bool","name":"isLiqPool","type":"bool"}],"name":"setAdditionalLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"setExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountUSD","type":"uint256"}],"name":"setThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stats","outputs":[{"internalType":"uint256","name":"currentUsdMC","type":"uint256"},{"internalType":"uint256","name":"currentTaxUSD","type":"uint256"},{"internalType":"uint256","name":"swapThresholdUSD","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tax","outputs":[{"internalType":"uint8","name":"LiquidityWCI","type":"uint8"},{"internalType":"uint8","name":"LiquidityARI","type":"uint8"},{"internalType":"uint8","name":"Marketing","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60e06040526103e86003557358d0a270b94ff1553fbae4f34a687228fb57352b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506064600b553480156200007157600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506009600a620000c491906200089d565b633b9aca00620000d59190620008ee565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051620001b791906200094a565b60405180910390a3604051620001cd90620006f5565b604051809103906000f080158015620001ea573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff168152505060c05173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff168152505073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002da91906200099d565b60ff1660808160ff1681525050620002fb6005600a6200051260201b60201c565b6001600660008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016006600060a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000af4565b60006009600a6200052491906200089d565b600a620005329190620008ee565b6103e88461ffff166009600a6200054a91906200089d565b633b9aca006200055b9190620008ee565b620005679190620008ee565b620005739190620009fe565b6200057f919062000a36565b905060006009600a6200059391906200089d565b600a620005a19190620008ee565b6103e88461ffff166009600a620005b991906200089d565b633b9aca00620005ca9190620008ee565b620005d69190620008ee565b620005e29190620009fe565b620005ee919062000a36565b905060045482101580156200060557506005548110155b62000647576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200063e9062000ad2565b60405180910390fd5b6009600a6200065791906200089d565b633b9aca00620006689190620008ee565b82111562000694576009600a6200068091906200089d565b633b9aca00620006919190620008ee565b91505b6009600a620006a491906200089d565b633b9aca00620006b59190620008ee565b811115620006e1576009600a620006cd91906200089d565b633b9aca00620006de9190620008ee565b90505b816004819055508060058190555050505050565b61053f8062005cfa83390190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620007915780860481111562000769576200076862000703565b5b6001851615620007795780820291505b8081029050620007898562000732565b945062000749565b94509492505050565b600082620007ac57600190506200087f565b81620007bc57600090506200087f565b8160018114620007d55760028114620007e05762000816565b60019150506200087f565b60ff841115620007f557620007f462000703565b5b8360020a9150848211156200080f576200080e62000703565b5b506200087f565b5060208310610133831016604e8410600b8410161715620008505782820a9050838111156200084a576200084962000703565b5b6200087f565b6200085f84848460016200073f565b9250905081840481111562000879576200087862000703565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620008aa8262000886565b9150620008b78362000890565b9250620008e67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200079a565b905092915050565b6000620008fb8262000886565b9150620009088362000886565b9250828202620009188162000886565b9150828204841483151762000932576200093162000703565b5b5092915050565b620009448162000886565b82525050565b600060208201905062000961600083018462000939565b92915050565b600080fd5b620009778162000890565b81146200098357600080fd5b50565b60008151905062000997816200096c565b92915050565b600060208284031215620009b657620009b562000967565b5b6000620009c68482850162000986565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000a0b8262000886565b915062000a188362000886565b92508262000a2b5762000a2a620009cf565b5b828204905092915050565b600062000a438262000886565b915062000a508362000886565b925082820190508082111562000a6b5762000a6a62000703565b5b92915050565b600082825260208201905092915050565b7f43616e6e6f74206465637265617365206c696d69747300000000000000000000600082015250565b600062000aba60168362000a71565b915062000ac78262000a82565b602082019050919050565b6000602082019050818103600083015262000aed8162000aab565b9050919050565b60805160a05160c0516151ba62000b406000396000613c9c015260008181610cd6015281816113a301528181611abb0152613a6d01526000818161302e015261399501526151ba6000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c8063715018a6116100de578063a9059cbb11610097578063cba0e99611610071578063cba0e99614610440578063d80528ae14610470578063dd62ed3e14610490578063f2fde38b146104c05761018e565b8063a9059cbb146103d0578063c1eb6dfd14610400578063cb711595146104245761018e565b8063715018a61461031d5780637df0f76714610327578063860aefcf1461035757806395d89b4114610376578063960bfe041461039457806399c8d556146103b05761018e565b806323b872dd1161014b57806342966c681161012557806342966c68146102ab57806351bc3c85146102c75780635c07c993146102d157806370a08231146102ed5761018e565b806323b872dd146102415780632836be2414610271578063313ce5671461028d5761018e565b80630210a83d1461019357806306fdde031461019d578063095ea7b3146101bb5780630a6a52b9146101eb57806316114acd1461020757806318160ddd14610223575b600080fd5b61019b6104dc565b005b6101a561099e565b6040516101b29190613e6a565b60405180910390f35b6101d560048036038101906101d09190613f34565b6109db565b6040516101e29190613f8f565b60405180910390f35b61020560048036038101906102009190613fd6565b610a73565b005b610221600480360381019061021c9190614016565b610e4a565b005b61022b611047565b6040516102389190614052565b60405180910390f35b61025b6004803603810190610256919061406d565b61106b565b6040516102689190613f8f565b60405180910390f35b61028b60048036038101906102869190613fd6565b6111d5565b005b610295611517565b6040516102a291906140dc565b60405180910390f35b6102c560048036038101906102c091906140f7565b611520565b005b6102cf6116b7565b005b6102eb60048036038101906102e6919061415e565b61174f565b005b61030760048036038101906103029190614016565b6117eb565b6040516103149190614052565b60405180910390f35b610325611834565b005b610341600480360381019061033c9190614016565b6118ce565b60405161034e9190613f8f565b60405180910390f35b61035f611924565b60405161036d92919061419e565b60405180910390f35b61037e611935565b60405161038b9190613e6a565b60405180910390f35b6103ae60048036038101906103a991906140f7565b611972565b005b6103b8611a4d565b6040516103c7939291906141c7565b60405180910390f35b6103ea60048036038101906103e59190613f34565b611a75565b6040516103f79190613f8f565b60405180910390f35b610408611a8c565b60405161041b979695949392919061420d565b60405180910390f35b61043e60048036038101906104399190614016565b611b76565b005b61045a60048036038101906104559190614016565b611db4565b6040516104679190613f8f565b60405180910390f35b610478611e0a565b6040516104879392919061427c565b60405180910390f35b6104aa60048036038101906104a591906142b3565b611ea2565b6040516104b79190614052565b60405180910390f35b6104da60048036038101906104d59190614016565b611f29565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461056a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105619061433f565b60405180910390fd5b600073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016105b9919061435f565b602060405180830381865afa1580156105d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105fa919061438f565b1161063a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063190614408565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c290614474565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561072a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074e91906144a9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb486040518363ffffffff1660e01b815260040161079c9291906144d6565b6020604051808303816000875af11580156107bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107df91906144a9565b600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061097230600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205473a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161092a919061435f565b602060405180830381865afa158015610947573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096b919061438f565b6000611fc3565b600b5442610980919061452e565b600a8190555061012c600a54610996919061452e565b600c81905550565b60606040518060400160405280600c81526020017f416c205269686c6120496e750000000000000000000000000000000000000000815250905090565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610a5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a55906145ae565b60405180910390fd5b610a69338484612265565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af89061433f565b60405180910390fd5b60006040518060400160405280600b81526020017f4e6f7420616c6c6f7765640000000000000000000000000000000000000000008152509050600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158190610bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc29190613e6a565b60405180910390fd5b50600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158190610c60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c579190613e6a565b60405180910390fd5b503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158190610cd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cca9190613e6a565b60405180910390fd5b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158190610d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5d9190613e6a565b60405180910390fd5b50737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158190610ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de49190613e6a565b60405180910390fd5b5081600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ed8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecf9061433f565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3d9061461a565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f81919061435f565b602060405180830381865afa158015610f9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc2919061438f565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610fff92919061463a565b6020604051808303816000875af115801561101e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110429190614678565b505050565b60006009600a61105791906147d8565b633b9aca006110669190614823565b905090565b600081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561112c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611123906148b1565b60405180910390fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111b891906148d1565b925050819055506111ca8484846123f9565b600190509392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125a9061433f565b60405180910390fd5b60006040518060400160405280600b81526020017f4e6f7420616c6c6f7765640000000000000000000000000000000000000000008152509050600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615819061132d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113249190613e6a565b60405180910390fd5b503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141581906113a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113979190613e6a565b60405180910390fd5b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158190611433576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142a9190613e6a565b60405180910390fd5b50737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141581906114ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b19190613e6a565b60405180910390fd5b5081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60006009905090565b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156115a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159990614951565b60405180910390fd5b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546115f191906148d1565b9250508190555080600160008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611647919061452e565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516116ac9190614052565b60405180910390a350565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173c9061433f565b60405180910390fd5b61174d6128a9565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d49061433f565b60405180910390fd5b6117e78282612c97565b5050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146118c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b99061433f565b60405180910390fd5b6118cc6000612e48565b565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080600454600554915091509091565b60606040518060400160405280600381526020017f4152490000000000000000000000000000000000000000000000000000000000815250905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f79061433f565b60405180910390fd5b60008111611a43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3a906149bd565b60405180910390fd5b8060038190555050565b600080600080600080611a5e612ec2565b925092509250828282955095509550505050909192565b6000611a823384846123f9565b6001905092915050565b60008060008060008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673c5a9bc46a7dbe1c6de493e84a18f02e70e2c5a3273a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48737a250d5630b4cf539739df2c5dacb4c659f2488d600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16965096509650965096509650965090919293949596565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfb9061433f565b60405180910390fd5b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611c9e5750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611cd657503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611d0f5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b611d1857600080fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080600080611e18612f6b565b905060006009600a611e2a91906147d8565b633b9aca00611e399190614823565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611e849190614823565b611e8e9190614a0c565b905081816003549450945094505050909192565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611fb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fae9061433f565b60405180910390fd5b611fc081612e48565b50565b828473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611ffd919061435f565b602060405180830381865afa15801561201a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061203e919061438f565b101561207f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207690614a89565b60405180910390fd5b8173a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016120cd919061435f565b602060405180830381865afa1580156120ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210e919061438f565b101561214f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214690614af5565b60405180910390fd5b6121598484613154565b61217773a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4883613154565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081156121a857600090505b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663e8e3370073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4887868860008088426040518963ffffffff1660e01b8152600401612218989796959493929190614b5a565b6060604051808303816000875af1158015612237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225b9190614bd8565b5050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156122cf5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61230e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230590614c77565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516123ec9190614052565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156124635750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6124a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249990614c77565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251b90614ce3565b60405180910390fd5b61252f838383613433565b61256e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256590614d4f565b60405180910390fd5b600a5442116125b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a990614dbb565b60405180910390fd5b600a54421180156125c45750600c5442105b80156125cf5750483a115b15612633576000483a6125e291906148d1565b905060006402540be4009050808210612630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262790614dbb565b60405180910390fd5b50505b600d60009054906101000a900460ff1615801561269a5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156126ef5750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156126fd576126fc6128a9565b5b600080600061270d868686613671565b9250925092506000818385612722919061452e565b61272c919061452e565b905084600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461277d91906148d1565b9250508190555080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127d3919061452e565b9250508190555080856127e691906148d1565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612834919061452e565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516128989190614052565b60405180910390a350505050505050565b6001600d60006101000a81548160ff02191690831515021790555060006128ce613860565b905060008060006128dd612ec2565b92509250925060008183856128f29190614ddb565b6128fc9190614ddb565b90506000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008260ff161180156129555750858110155b15612c745785905060008260ff168660ff16836129729190614823565b61297c9190614a0c565b9050600060028460ff168760ff16856129959190614823565b61299f9190614a0c565b6129a99190614a0c565b905060008460ff168660ff16856129c09190614823565b6129ca9190614a0c565b905060008282856129db919061452e565b6129e5919061452e565b90506009600a6129f591906147d8565b8110612c6f576000612a1e3073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48846001613a56565b90506000828583612a2f9190614823565b612a399190614a0c565b905060006002848885612a4c9190614823565b612a569190614a0c565b612a609190614a0c565b90506000848685612a719190614823565b612a7b9190614a0c565b905060008c60ff161115612a9757612a963088856001611fc3565b5b60008d60ff161115612aff576000612ada73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873c5a9bc46a7dbe1c6de493e84a18f02e70e2c5a32856000613a56565b9050612afd73c5a9bc46a7dbe1c6de493e84a18f02e70e2c5a3282856001611fc3565b505b60008b60ff161115612c6a57600073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612b5a919061435f565b602060405180830381865afa158015612b77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b9b919061438f565b905080821115612ba9578091505b6000821115612c685773a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401612c2392919061463a565b6020604051808303816000875af1158015612c42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c669190614678565b505b505b505050505b505050505b5050505050506000600d60006101000a81548160ff021916908315150217905550565b60006009600a612ca791906147d8565b600a612cb39190614823565b6103e88461ffff166009600a612cc991906147d8565b633b9aca00612cd89190614823565b612ce29190614823565b612cec9190614a0c565b612cf6919061452e565b905060006009600a612d0891906147d8565b600a612d149190614823565b6103e88461ffff166009600a612d2a91906147d8565b633b9aca00612d399190614823565b612d439190614823565b612d4d9190614a0c565b612d57919061452e565b90506004548210158015612d6d57506005548110155b612dac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612da390614e5c565b60405180910390fd5b6009600a612dba91906147d8565b633b9aca00612dc99190614823565b821115612df0576009600a612dde91906147d8565b633b9aca00612ded9190614823565b91505b6009600a612dfe91906147d8565b633b9aca00612e0d9190614823565b811115612e34576009600a612e2291906147d8565b633b9aca00612e319190614823565b90505b816004819055508060058190555050505050565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051612eb7919061435f565b60405180910390a150565b6000806000806000806000612ed5612f6b565b9050627a1200811015612ef357600293506002925060029150612f59565b627a12008110158015612f08575062f4240081105b15612f1e57600293506000925060029150612f58565b62f424008110158015612f3457506305f5e10081105b15612f4a57600293506000925060009150612f57565b6000935060009250600091505b5b5b83838396509650965050505050909192565b600080600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461314d57600060016000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060007f0000000000000000000000000000000000000000000000000000000000000000600a61305991906147d8565b73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016130c8919061435f565b602060405180830381865afa1580156130e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613109919061438f565b6131139190614a0c565b9050816009600a61312491906147d8565b633b9aca006131339190614823565b8261313e9190614823565b6131489190614a0c565b925050505b8091505090565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036132df57600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808211156132da577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61342e565b8273ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30737a250d5630b4cf539739df2c5dacb4c659f2488d6040518363ffffffff1660e01b815260040161332e9291906144d6565b602060405180830381865afa15801561334b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061336f919061438f565b90508082111561342d578273ffffffffffffffffffffffffffffffffffffffff1663095ea7b3737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016133e892919061463a565b6020604051808303816000875af1158015613407573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061342b9190614678565b505b5b505050565b60008060019050600454831180156134955750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134eb5750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156134f557600090505b600060019050600084600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613548919061452e565b9050600554811180156135a55750600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135fb5750600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156136515750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561365b57600091505b8280156136655750815b93505050509392505050565b600080600080600080600960008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561371d5750600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b806137c75750600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156137c65750600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b1561383e5760008060006137d9612ec2565b92509250925060648360ff168b6137f09190614823565b6137fa9190614a0c565b955060648260ff168b61380d9190614823565b6138179190614a0c565b945060648160ff168b61382a9190614823565b6138349190614a0c565b935050505061384b565b6000925060009150600090505b82828295509550955050505093509350939050565b600080600267ffffffffffffffff81111561387e5761387d614e7c565b5b6040519080825280602002602001820160405280156138ac5781602001602082028036833780820191505090505b50905030816000815181106138c4576138c3614eab565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb488160018151811061392757613926614eab565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16631f00ca747f0000000000000000000000000000000000000000000000000000000000000000600a6139c091906147d8565b6003546139cd9190614823565b846040518363ffffffff1660e01b81526004016139eb929190614f98565b600060405180830381865afa158015613a08573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190613a3191906150e1565b905080600081518110613a4757613a46614eab565b5b60200260200101519250505090565b6000803090506000806001151585151503613a93577f00000000000000000000000000000000000000000000000000000000000000009250613b10565b8673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613acc919061435f565b602060405180830381865afa158015613ae9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b0d919061438f565b91505b613b1a8887613154565b6000600267ffffffffffffffff811115613b3757613b36614e7c565b5b604051908082528060200260200182016040528015613b655781602001602082028036833780820191505090505b5090508881600081518110613b7d57613b7c614eab565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508781600181518110613bcc57613bcb614eab565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16635c11d7958860008488426040518663ffffffff1660e01b8152600401613c5c95949392919061512a565b600060405180830381600087803b158015613c7657600080fd5b505af1158015613c8a573d6000803e3d6000fd5b505050506001151586151503613d3d577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636433bbd7896040518263ffffffff1660e01b8152600401613cf3919061435f565b6020604051808303816000875af1158015613d12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d36919061438f565b9150613dcb565b60008873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613d78919061435f565b602060405180830381865afa158015613d95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613db9919061438f565b90508381613dc791906148d1565b9250505b81945050505050949350505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613e14578082015181840152602081019050613df9565b60008484015250505050565b6000601f19601f8301169050919050565b6000613e3c82613dda565b613e468185613de5565b9350613e56818560208601613df6565b613e5f81613e20565b840191505092915050565b60006020820190508181036000830152613e848184613e31565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613ecb82613ea0565b9050919050565b613edb81613ec0565b8114613ee657600080fd5b50565b600081359050613ef881613ed2565b92915050565b6000819050919050565b613f1181613efe565b8114613f1c57600080fd5b50565b600081359050613f2e81613f08565b92915050565b60008060408385031215613f4b57613f4a613e96565b5b6000613f5985828601613ee9565b9250506020613f6a85828601613f1f565b9150509250929050565b60008115159050919050565b613f8981613f74565b82525050565b6000602082019050613fa46000830184613f80565b92915050565b613fb381613f74565b8114613fbe57600080fd5b50565b600081359050613fd081613faa565b92915050565b60008060408385031215613fed57613fec613e96565b5b6000613ffb85828601613ee9565b925050602061400c85828601613fc1565b9150509250929050565b60006020828403121561402c5761402b613e96565b5b600061403a84828501613ee9565b91505092915050565b61404c81613efe565b82525050565b60006020820190506140676000830184614043565b92915050565b60008060006060848603121561408657614085613e96565b5b600061409486828701613ee9565b93505060206140a586828701613ee9565b92505060406140b686828701613f1f565b9150509250925092565b600060ff82169050919050565b6140d6816140c0565b82525050565b60006020820190506140f160008301846140cd565b92915050565b60006020828403121561410d5761410c613e96565b5b600061411b84828501613f1f565b91505092915050565b600061ffff82169050919050565b61413b81614124565b811461414657600080fd5b50565b60008135905061415881614132565b92915050565b6000806040838503121561417557614174613e96565b5b600061418385828601614149565b925050602061419485828601614149565b9150509250929050565b60006040820190506141b36000830185614043565b6141c06020830184614043565b9392505050565b60006060820190506141dc60008301866140cd565b6141e960208301856140cd565b6141f660408301846140cd565b949350505050565b61420781613ec0565b82525050565b600060e082019050614222600083018a6141fe565b61422f60208301896141fe565b61423c60408301886141fe565b61424960608301876141fe565b61425660808301866141fe565b61426360a08301856141fe565b61427060c08301846141fe565b98975050505050505050565b60006060820190506142916000830186614043565b61429e6020830185614043565b6142ab6040830184614043565b949350505050565b600080604083850312156142ca576142c9613e96565b5b60006142d885828601613ee9565b92505060206142e985828601613ee9565b9150509250929050565b7f4e6f7420746865206f776e657200000000000000000000000000000000000000600082015250565b6000614329600d83613de5565b9150614334826142f3565b602082019050919050565b600060208201905081810360008301526143588161431c565b9050919050565b600060208201905061437460008301846141fe565b92915050565b60008151905061438981613f08565b92915050565b6000602082840312156143a5576143a4613e96565b5b60006143b38482850161437a565b91505092915050565b7f555344432076616c7565207a65726f0000000000000000000000000000000000600082015250565b60006143f2600f83613de5565b91506143fd826143bc565b602082019050919050565b60006020820190508181036000830152614421816143e5565b9050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b600061445e600983613de5565b915061446982614428565b602082019050919050565b6000602082019050818103600083015261448d81614451565b9050919050565b6000815190506144a381613ed2565b92915050565b6000602082840312156144bf576144be613e96565b5b60006144cd84828501614494565b91505092915050565b60006040820190506144eb60008301856141fe565b6144f860208301846141fe565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061453982613efe565b915061454483613efe565b925082820190508082111561455c5761455b6144ff565b5b92915050565b7f45524332303a205a65726f2062616c616e636500000000000000000000000000600082015250565b6000614598601383613de5565b91506145a382614562565b602082019050919050565b600060208201905081810360008301526145c78161458b565b9050919050565b7f4e6f7420616c6c6f776564000000000000000000000000000000000000000000600082015250565b6000614604600b83613de5565b915061460f826145ce565b602082019050919050565b60006020820190508181036000830152614633816145f7565b9050919050565b600060408201905061464f60008301856141fe565b61465c6020830184614043565b9392505050565b60008151905061467281613faa565b92915050565b60006020828403121561468e5761468d613e96565b5b600061469c84828501614663565b91505092915050565b60008160011c9050919050565b6000808291508390505b60018511156146fc578086048111156146d8576146d76144ff565b5b60018516156146e75780820291505b80810290506146f5856146a5565b94506146bc565b94509492505050565b60008261471557600190506147d1565b8161472357600090506147d1565b8160018114614739576002811461474357614772565b60019150506147d1565b60ff841115614755576147546144ff565b5b8360020a91508482111561476c5761476b6144ff565b5b506147d1565b5060208310610133831016604e8410600b84101617156147a75782820a9050838111156147a2576147a16144ff565b5b6147d1565b6147b484848460016146b2565b925090508184048111156147cb576147ca6144ff565b5b81810290505b9392505050565b60006147e382613efe565b91506147ee836140c0565b925061481b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614705565b905092915050565b600061482e82613efe565b915061483983613efe565b925082820261484781613efe565b9150828204841483151761485e5761485d6144ff565b5b5092915050565b7f45524332303a20616d6f756e74206578636565647320616c6c6f77616e636500600082015250565b600061489b601f83613de5565b91506148a682614865565b602082019050919050565b600060208201905081810360008301526148ca8161488e565b9050919050565b60006148dc82613efe565b91506148e783613efe565b92508282039050818111156148ff576148fe6144ff565b5b92915050565b7f4c6f772062616c616e6365000000000000000000000000000000000000000000600082015250565b600061493b600b83613de5565b915061494682614905565b602082019050919050565b6000602082019050818103600083015261496a8161492e565b9050919050565b7f5468726573686f6c642063616e6e6f7420626520300000000000000000000000600082015250565b60006149a7601583613de5565b91506149b282614971565b602082019050919050565b600060208201905081810360008301526149d68161499a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614a1782613efe565b9150614a2283613efe565b925082614a3257614a316149dd565b5b828204905092915050565b7f4e6f7420656e6f75676820746f6b656e73000000000000000000000000000000600082015250565b6000614a73601183613de5565b9150614a7e82614a3d565b602082019050919050565b60006020820190508181036000830152614aa281614a66565b9050919050565b7f4e6f7420656e6f75676820555344430000000000000000000000000000000000600082015250565b6000614adf600f83613de5565b9150614aea82614aa9565b602082019050919050565b60006020820190508181036000830152614b0e81614ad2565b9050919050565b6000819050919050565b6000819050919050565b6000614b44614b3f614b3a84614b15565b614b1f565b613efe565b9050919050565b614b5481614b29565b82525050565b600061010082019050614b70600083018b6141fe565b614b7d602083018a6141fe565b614b8a6040830189614043565b614b976060830188614043565b614ba46080830187614b4b565b614bb160a0830186614b4b565b614bbe60c08301856141fe565b614bcb60e0830184614043565b9998505050505050505050565b600080600060608486031215614bf157614bf0613e96565b5b6000614bff8682870161437a565b9350506020614c108682870161437a565b9250506040614c218682870161437a565b9150509250925092565b7f45524332303a205a65726f206164647265737300000000000000000000000000600082015250565b6000614c61601383613de5565b9150614c6c82614c2b565b602082019050919050565b60006020820190508181036000830152614c9081614c54565b9050919050565b7f45524332303a20616d6f756e7420657863656564732062616c616e6365000000600082015250565b6000614ccd601d83613de5565b9150614cd882614c97565b602082019050919050565b60006020820190508181036000830152614cfc81614cc0565b9050919050565b7f4c696d6974732065786365656465640000000000000000000000000000000000600082015250565b6000614d39600f83613de5565b9150614d4482614d03565b602082019050919050565b60006020820190508181036000830152614d6881614d2c565b9050919050565b7f4e6f7420656e61626c6564000000000000000000000000000000000000000000600082015250565b6000614da5600b83613de5565b9150614db082614d6f565b602082019050919050565b60006020820190508181036000830152614dd481614d98565b9050919050565b6000614de6826140c0565b9150614df1836140c0565b9250828201905060ff811115614e0a57614e096144ff565b5b92915050565b7f43616e6e6f74206465637265617365206c696d69747300000000000000000000600082015250565b6000614e46601683613de5565b9150614e5182614e10565b602082019050919050565b60006020820190508181036000830152614e7581614e39565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614f0f81613ec0565b82525050565b6000614f218383614f06565b60208301905092915050565b6000602082019050919050565b6000614f4582614eda565b614f4f8185614ee5565b9350614f5a83614ef6565b8060005b83811015614f8b578151614f728882614f15565b9750614f7d83614f2d565b925050600181019050614f5e565b5085935050505092915050565b6000604082019050614fad6000830185614043565b8181036020830152614fbf8184614f3a565b90509392505050565b600080fd5b614fd682613e20565b810181811067ffffffffffffffff82111715614ff557614ff4614e7c565b5b80604052505050565b6000615008613e8c565b90506150148282614fcd565b919050565b600067ffffffffffffffff82111561503457615033614e7c565b5b602082029050602081019050919050565b600080fd5b600061505d61505884615019565b614ffe565b905080838252602082019050602084028301858111156150805761507f615045565b5b835b818110156150a95780615095888261437a565b845260208401935050602081019050615082565b5050509392505050565b600082601f8301126150c8576150c7614fc8565b5b81516150d884826020860161504a565b91505092915050565b6000602082840312156150f7576150f6613e96565b5b600082015167ffffffffffffffff81111561511557615114613e9b565b5b615121848285016150b3565b91505092915050565b600060a08201905061513f6000830188614043565b61514c6020830187614b4b565b818103604083015261515e8186614f3a565b905061516d60608301856141fe565b61517a6080830184614043565b969550505050505056fea2646970667358221220dd82cf8f8ba164f71a4a5ad548b3de97bc1d0514de8dc90212c02893bcb083bc64736f6c6343000811003360a060405234801561001057600080fd5b503373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506080516104d961006660003960008181608d015261022d01526104d96000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80636433bbd71461003b5780638da5cb5b1461006b575b600080fd5b610055600480360381019061005091906102b4565b610089565b60405161006291906102fa565b60405180910390f35b610073610229565b6040516100809190610324565b60405180910390f35b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610119576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101109061039c565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016101549190610324565b602060405180830381865afa158015610171573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061019591906103e8565b90506000811115610220578273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016101db929190610415565b6020604051808303816000875af11580156101fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021e9190610476565b505b80915050919050565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061028182610256565b9050919050565b61029181610276565b811461029c57600080fd5b50565b6000813590506102ae81610288565b92915050565b6000602082840312156102ca576102c9610251565b5b60006102d88482850161029f565b91505092915050565b6000819050919050565b6102f4816102e1565b82525050565b600060208201905061030f60008301846102eb565b92915050565b61031e81610276565b82525050565b60006020820190506103396000830184610315565b92915050565b600082825260208201905092915050565b7f4e6f7420617574686f72697a6564000000000000000000000000000000000000600082015250565b6000610386600e8361033f565b915061039182610350565b602082019050919050565b600060208201905081810360008301526103b581610379565b9050919050565b6103c5816102e1565b81146103d057600080fd5b50565b6000815190506103e2816103bc565b92915050565b6000602082840312156103fe576103fd610251565b5b600061040c848285016103d3565b91505092915050565b600060408201905061042a6000830185610315565b61043760208301846102eb565b9392505050565b60008115159050919050565b6104538161043e565b811461045e57600080fd5b50565b6000815190506104708161044a565b92915050565b60006020828403121561048c5761048b610251565b5b600061049a84828501610461565b9150509291505056fea264697066735822122097f5cf24748346e87b2bd9e4f10d0bce20ab96f2b05fe93f01897601ab4521f764736f6c63430008110033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061018e5760003560e01c8063715018a6116100de578063a9059cbb11610097578063cba0e99611610071578063cba0e99614610440578063d80528ae14610470578063dd62ed3e14610490578063f2fde38b146104c05761018e565b8063a9059cbb146103d0578063c1eb6dfd14610400578063cb711595146104245761018e565b8063715018a61461031d5780637df0f76714610327578063860aefcf1461035757806395d89b4114610376578063960bfe041461039457806399c8d556146103b05761018e565b806323b872dd1161014b57806342966c681161012557806342966c68146102ab57806351bc3c85146102c75780635c07c993146102d157806370a08231146102ed5761018e565b806323b872dd146102415780632836be2414610271578063313ce5671461028d5761018e565b80630210a83d1461019357806306fdde031461019d578063095ea7b3146101bb5780630a6a52b9146101eb57806316114acd1461020757806318160ddd14610223575b600080fd5b61019b6104dc565b005b6101a561099e565b6040516101b29190613e6a565b60405180910390f35b6101d560048036038101906101d09190613f34565b6109db565b6040516101e29190613f8f565b60405180910390f35b61020560048036038101906102009190613fd6565b610a73565b005b610221600480360381019061021c9190614016565b610e4a565b005b61022b611047565b6040516102389190614052565b60405180910390f35b61025b6004803603810190610256919061406d565b61106b565b6040516102689190613f8f565b60405180910390f35b61028b60048036038101906102869190613fd6565b6111d5565b005b610295611517565b6040516102a291906140dc565b60405180910390f35b6102c560048036038101906102c091906140f7565b611520565b005b6102cf6116b7565b005b6102eb60048036038101906102e6919061415e565b61174f565b005b61030760048036038101906103029190614016565b6117eb565b6040516103149190614052565b60405180910390f35b610325611834565b005b610341600480360381019061033c9190614016565b6118ce565b60405161034e9190613f8f565b60405180910390f35b61035f611924565b60405161036d92919061419e565b60405180910390f35b61037e611935565b60405161038b9190613e6a565b60405180910390f35b6103ae60048036038101906103a991906140f7565b611972565b005b6103b8611a4d565b6040516103c7939291906141c7565b60405180910390f35b6103ea60048036038101906103e59190613f34565b611a75565b6040516103f79190613f8f565b60405180910390f35b610408611a8c565b60405161041b979695949392919061420d565b60405180910390f35b61043e60048036038101906104399190614016565b611b76565b005b61045a60048036038101906104559190614016565b611db4565b6040516104679190613f8f565b60405180910390f35b610478611e0a565b6040516104879392919061427c565b60405180910390f35b6104aa60048036038101906104a591906142b3565b611ea2565b6040516104b79190614052565b60405180910390f35b6104da60048036038101906104d59190614016565b611f29565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461056a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105619061433f565b60405180910390fd5b600073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016105b9919061435f565b602060405180830381865afa1580156105d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105fa919061438f565b1161063a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063190614408565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c290614474565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561072a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074e91906144a9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb486040518363ffffffff1660e01b815260040161079c9291906144d6565b6020604051808303816000875af11580156107bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107df91906144a9565b600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160096000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061097230600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205473a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161092a919061435f565b602060405180830381865afa158015610947573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096b919061438f565b6000611fc3565b600b5442610980919061452e565b600a8190555061012c600a54610996919061452e565b600c81905550565b60606040518060400160405280600c81526020017f416c205269686c6120496e750000000000000000000000000000000000000000815250905090565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610a5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a55906145ae565b60405180910390fd5b610a69338484612265565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af89061433f565b60405180910390fd5b60006040518060400160405280600b81526020017f4e6f7420616c6c6f7765640000000000000000000000000000000000000000008152509050600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158190610bcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc29190613e6a565b60405180910390fd5b50600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158190610c60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c579190613e6a565b60405180910390fd5b503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158190610cd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cca9190613e6a565b60405180910390fd5b507f0000000000000000000000007062ecab81ee95e12dd1ba7699eeec814993c4f473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158190610d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5d9190613e6a565b60405180910390fd5b50737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158190610ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de49190613e6a565b60405180910390fd5b5081600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ed8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecf9061433f565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3d9061461a565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f81919061435f565b602060405180830381865afa158015610f9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc2919061438f565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610fff92919061463a565b6020604051808303816000875af115801561101e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110429190614678565b505050565b60006009600a61105791906147d8565b633b9aca006110669190614823565b905090565b600081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561112c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611123906148b1565b60405180910390fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111b891906148d1565b925050819055506111ca8484846123f9565b600190509392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125a9061433f565b60405180910390fd5b60006040518060400160405280600b81526020017f4e6f7420616c6c6f7765640000000000000000000000000000000000000000008152509050600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615819061132d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113249190613e6a565b60405180910390fd5b503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141581906113a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113979190613e6a565b60405180910390fd5b507f0000000000000000000000007062ecab81ee95e12dd1ba7699eeec814993c4f473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158190611433576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142a9190613e6a565b60405180910390fd5b50737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141581906114ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b19190613e6a565b60405180910390fd5b5081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60006009905090565b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156115a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159990614951565b60405180910390fd5b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546115f191906148d1565b9250508190555080600160008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611647919061452e565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516116ac9190614052565b60405180910390a350565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173c9061433f565b60405180910390fd5b61174d6128a9565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d49061433f565b60405180910390fd5b6117e78282612c97565b5050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146118c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b99061433f565b60405180910390fd5b6118cc6000612e48565b565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080600454600554915091509091565b60606040518060400160405280600381526020017f4152490000000000000000000000000000000000000000000000000000000000815250905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f79061433f565b60405180910390fd5b60008111611a43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3a906149bd565b60405180910390fd5b8060038190555050565b600080600080600080611a5e612ec2565b925092509250828282955095509550505050909192565b6000611a823384846123f9565b6001905092915050565b60008060008060008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167f0000000000000000000000007062ecab81ee95e12dd1ba7699eeec814993c4f4600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673c5a9bc46a7dbe1c6de493e84a18f02e70e2c5a3273a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48737a250d5630b4cf539739df2c5dacb4c659f2488d600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16965096509650965096509650965090919293949596565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfb9061433f565b60405180910390fd5b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611c9e5750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611cd657503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611d0f5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b611d1857600080fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080600080611e18612f6b565b905060006009600a611e2a91906147d8565b633b9aca00611e399190614823565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611e849190614823565b611e8e9190614a0c565b905081816003549450945094505050909192565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611fb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fae9061433f565b60405180910390fd5b611fc081612e48565b50565b828473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611ffd919061435f565b602060405180830381865afa15801561201a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061203e919061438f565b101561207f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207690614a89565b60405180910390fd5b8173a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016120cd919061435f565b602060405180830381865afa1580156120ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210e919061438f565b101561214f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214690614af5565b60405180910390fd5b6121598484613154565b61217773a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4883613154565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081156121a857600090505b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663e8e3370073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4887868860008088426040518963ffffffff1660e01b8152600401612218989796959493929190614b5a565b6060604051808303816000875af1158015612237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225b9190614bd8565b5050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156122cf5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b61230e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230590614c77565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516123ec9190614052565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156124635750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b6124a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249990614c77565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251b90614ce3565b60405180910390fd5b61252f838383613433565b61256e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256590614d4f565b60405180910390fd5b600a5442116125b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a990614dbb565b60405180910390fd5b600a54421180156125c45750600c5442105b80156125cf5750483a115b15612633576000483a6125e291906148d1565b905060006402540be4009050808210612630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262790614dbb565b60405180910390fd5b50505b600d60009054906101000a900460ff1615801561269a5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156126ef5750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156126fd576126fc6128a9565b5b600080600061270d868686613671565b9250925092506000818385612722919061452e565b61272c919061452e565b905084600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461277d91906148d1565b9250508190555080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127d3919061452e565b9250508190555080856127e691906148d1565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612834919061452e565b925050819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef876040516128989190614052565b60405180910390a350505050505050565b6001600d60006101000a81548160ff02191690831515021790555060006128ce613860565b905060008060006128dd612ec2565b92509250925060008183856128f29190614ddb565b6128fc9190614ddb565b90506000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008260ff161180156129555750858110155b15612c745785905060008260ff168660ff16836129729190614823565b61297c9190614a0c565b9050600060028460ff168760ff16856129959190614823565b61299f9190614a0c565b6129a99190614a0c565b905060008460ff168660ff16856129c09190614823565b6129ca9190614a0c565b905060008282856129db919061452e565b6129e5919061452e565b90506009600a6129f591906147d8565b8110612c6f576000612a1e3073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48846001613a56565b90506000828583612a2f9190614823565b612a399190614a0c565b905060006002848885612a4c9190614823565b612a569190614a0c565b612a609190614a0c565b90506000848685612a719190614823565b612a7b9190614a0c565b905060008c60ff161115612a9757612a963088856001611fc3565b5b60008d60ff161115612aff576000612ada73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873c5a9bc46a7dbe1c6de493e84a18f02e70e2c5a32856000613a56565b9050612afd73c5a9bc46a7dbe1c6de493e84a18f02e70e2c5a3282856001611fc3565b505b60008b60ff161115612c6a57600073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612b5a919061435f565b602060405180830381865afa158015612b77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b9b919061438f565b905080821115612ba9578091505b6000821115612c685773a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401612c2392919061463a565b6020604051808303816000875af1158015612c42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c669190614678565b505b505b505050505b505050505b5050505050506000600d60006101000a81548160ff021916908315150217905550565b60006009600a612ca791906147d8565b600a612cb39190614823565b6103e88461ffff166009600a612cc991906147d8565b633b9aca00612cd89190614823565b612ce29190614823565b612cec9190614a0c565b612cf6919061452e565b905060006009600a612d0891906147d8565b600a612d149190614823565b6103e88461ffff166009600a612d2a91906147d8565b633b9aca00612d399190614823565b612d439190614823565b612d4d9190614a0c565b612d57919061452e565b90506004548210158015612d6d57506005548110155b612dac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612da390614e5c565b60405180910390fd5b6009600a612dba91906147d8565b633b9aca00612dc99190614823565b821115612df0576009600a612dde91906147d8565b633b9aca00612ded9190614823565b91505b6009600a612dfe91906147d8565b633b9aca00612e0d9190614823565b811115612e34576009600a612e2291906147d8565b633b9aca00612e319190614823565b90505b816004819055508060058190555050505050565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051612eb7919061435f565b60405180910390a150565b6000806000806000806000612ed5612f6b565b9050627a1200811015612ef357600293506002925060029150612f59565b627a12008110158015612f08575062f4240081105b15612f1e57600293506000925060029150612f58565b62f424008110158015612f3457506305f5e10081105b15612f4a57600293506000925060009150612f57565b6000935060009250600091505b5b5b83838396509650965050505050909192565b600080600073ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461314d57600060016000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060007f0000000000000000000000000000000000000000000000000000000000000006600a61305991906147d8565b73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff166370a08231600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016130c8919061435f565b602060405180830381865afa1580156130e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613109919061438f565b6131139190614a0c565b9050816009600a61312491906147d8565b633b9aca006131339190614823565b8261313e9190614823565b6131489190614a0c565b925050505b8091505090565b60003073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036132df57600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808211156132da577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61342e565b8273ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30737a250d5630b4cf539739df2c5dacb4c659f2488d6040518363ffffffff1660e01b815260040161332e9291906144d6565b602060405180830381865afa15801561334b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061336f919061438f565b90508082111561342d578273ffffffffffffffffffffffffffffffffffffffff1663095ea7b3737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016133e892919061463a565b6020604051808303816000875af1158015613407573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061342b9190614678565b505b5b505050565b60008060019050600454831180156134955750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134eb5750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156134f557600090505b600060019050600084600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613548919061452e565b9050600554811180156135a55750600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156135fb5750600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156136515750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561365b57600091505b8280156136655750815b93505050509392505050565b600080600080600080600960008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561371d5750600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b806137c75750600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156137c65750600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b1561383e5760008060006137d9612ec2565b92509250925060648360ff168b6137f09190614823565b6137fa9190614a0c565b955060648260ff168b61380d9190614823565b6138179190614a0c565b945060648160ff168b61382a9190614823565b6138349190614a0c565b935050505061384b565b6000925060009150600090505b82828295509550955050505093509350939050565b600080600267ffffffffffffffff81111561387e5761387d614e7c565b5b6040519080825280602002602001820160405280156138ac5781602001602082028036833780820191505090505b50905030816000815181106138c4576138c3614eab565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb488160018151811061392757613926614eab565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16631f00ca747f0000000000000000000000000000000000000000000000000000000000000006600a6139c091906147d8565b6003546139cd9190614823565b846040518363ffffffff1660e01b81526004016139eb929190614f98565b600060405180830381865afa158015613a08573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190613a3191906150e1565b905080600081518110613a4757613a46614eab565b5b60200260200101519250505090565b6000803090506000806001151585151503613a93577f0000000000000000000000007062ecab81ee95e12dd1ba7699eeec814993c4f49250613b10565b8673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613acc919061435f565b602060405180830381865afa158015613ae9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b0d919061438f565b91505b613b1a8887613154565b6000600267ffffffffffffffff811115613b3757613b36614e7c565b5b604051908082528060200260200182016040528015613b655781602001602082028036833780820191505090505b5090508881600081518110613b7d57613b7c614eab565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508781600181518110613bcc57613bcb614eab565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16635c11d7958860008488426040518663ffffffff1660e01b8152600401613c5c95949392919061512a565b600060405180830381600087803b158015613c7657600080fd5b505af1158015613c8a573d6000803e3d6000fd5b505050506001151586151503613d3d577f0000000000000000000000007062ecab81ee95e12dd1ba7699eeec814993c4f473ffffffffffffffffffffffffffffffffffffffff16636433bbd7896040518263ffffffff1660e01b8152600401613cf3919061435f565b6020604051808303816000875af1158015613d12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d36919061438f565b9150613dcb565b60008873ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401613d78919061435f565b602060405180830381865afa158015613d95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613db9919061438f565b90508381613dc791906148d1565b9250505b81945050505050949350505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613e14578082015181840152602081019050613df9565b60008484015250505050565b6000601f19601f8301169050919050565b6000613e3c82613dda565b613e468185613de5565b9350613e56818560208601613df6565b613e5f81613e20565b840191505092915050565b60006020820190508181036000830152613e848184613e31565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613ecb82613ea0565b9050919050565b613edb81613ec0565b8114613ee657600080fd5b50565b600081359050613ef881613ed2565b92915050565b6000819050919050565b613f1181613efe565b8114613f1c57600080fd5b50565b600081359050613f2e81613f08565b92915050565b60008060408385031215613f4b57613f4a613e96565b5b6000613f5985828601613ee9565b9250506020613f6a85828601613f1f565b9150509250929050565b60008115159050919050565b613f8981613f74565b82525050565b6000602082019050613fa46000830184613f80565b92915050565b613fb381613f74565b8114613fbe57600080fd5b50565b600081359050613fd081613faa565b92915050565b60008060408385031215613fed57613fec613e96565b5b6000613ffb85828601613ee9565b925050602061400c85828601613fc1565b9150509250929050565b60006020828403121561402c5761402b613e96565b5b600061403a84828501613ee9565b91505092915050565b61404c81613efe565b82525050565b60006020820190506140676000830184614043565b92915050565b60008060006060848603121561408657614085613e96565b5b600061409486828701613ee9565b93505060206140a586828701613ee9565b92505060406140b686828701613f1f565b9150509250925092565b600060ff82169050919050565b6140d6816140c0565b82525050565b60006020820190506140f160008301846140cd565b92915050565b60006020828403121561410d5761410c613e96565b5b600061411b84828501613f1f565b91505092915050565b600061ffff82169050919050565b61413b81614124565b811461414657600080fd5b50565b60008135905061415881614132565b92915050565b6000806040838503121561417557614174613e96565b5b600061418385828601614149565b925050602061419485828601614149565b9150509250929050565b60006040820190506141b36000830185614043565b6141c06020830184614043565b9392505050565b60006060820190506141dc60008301866140cd565b6141e960208301856140cd565b6141f660408301846140cd565b949350505050565b61420781613ec0565b82525050565b600060e082019050614222600083018a6141fe565b61422f60208301896141fe565b61423c60408301886141fe565b61424960608301876141fe565b61425660808301866141fe565b61426360a08301856141fe565b61427060c08301846141fe565b98975050505050505050565b60006060820190506142916000830186614043565b61429e6020830185614043565b6142ab6040830184614043565b949350505050565b600080604083850312156142ca576142c9613e96565b5b60006142d885828601613ee9565b92505060206142e985828601613ee9565b9150509250929050565b7f4e6f7420746865206f776e657200000000000000000000000000000000000000600082015250565b6000614329600d83613de5565b9150614334826142f3565b602082019050919050565b600060208201905081810360008301526143588161431c565b9050919050565b600060208201905061437460008301846141fe565b92915050565b60008151905061438981613f08565b92915050565b6000602082840312156143a5576143a4613e96565b5b60006143b38482850161437a565b91505092915050565b7f555344432076616c7565207a65726f0000000000000000000000000000000000600082015250565b60006143f2600f83613de5565b91506143fd826143bc565b602082019050919050565b60006020820190508181036000830152614421816143e5565b9050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b600061445e600983613de5565b915061446982614428565b602082019050919050565b6000602082019050818103600083015261448d81614451565b9050919050565b6000815190506144a381613ed2565b92915050565b6000602082840312156144bf576144be613e96565b5b60006144cd84828501614494565b91505092915050565b60006040820190506144eb60008301856141fe565b6144f860208301846141fe565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061453982613efe565b915061454483613efe565b925082820190508082111561455c5761455b6144ff565b5b92915050565b7f45524332303a205a65726f2062616c616e636500000000000000000000000000600082015250565b6000614598601383613de5565b91506145a382614562565b602082019050919050565b600060208201905081810360008301526145c78161458b565b9050919050565b7f4e6f7420616c6c6f776564000000000000000000000000000000000000000000600082015250565b6000614604600b83613de5565b915061460f826145ce565b602082019050919050565b60006020820190508181036000830152614633816145f7565b9050919050565b600060408201905061464f60008301856141fe565b61465c6020830184614043565b9392505050565b60008151905061467281613faa565b92915050565b60006020828403121561468e5761468d613e96565b5b600061469c84828501614663565b91505092915050565b60008160011c9050919050565b6000808291508390505b60018511156146fc578086048111156146d8576146d76144ff565b5b60018516156146e75780820291505b80810290506146f5856146a5565b94506146bc565b94509492505050565b60008261471557600190506147d1565b8161472357600090506147d1565b8160018114614739576002811461474357614772565b60019150506147d1565b60ff841115614755576147546144ff565b5b8360020a91508482111561476c5761476b6144ff565b5b506147d1565b5060208310610133831016604e8410600b84101617156147a75782820a9050838111156147a2576147a16144ff565b5b6147d1565b6147b484848460016146b2565b925090508184048111156147cb576147ca6144ff565b5b81810290505b9392505050565b60006147e382613efe565b91506147ee836140c0565b925061481b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614705565b905092915050565b600061482e82613efe565b915061483983613efe565b925082820261484781613efe565b9150828204841483151761485e5761485d6144ff565b5b5092915050565b7f45524332303a20616d6f756e74206578636565647320616c6c6f77616e636500600082015250565b600061489b601f83613de5565b91506148a682614865565b602082019050919050565b600060208201905081810360008301526148ca8161488e565b9050919050565b60006148dc82613efe565b91506148e783613efe565b92508282039050818111156148ff576148fe6144ff565b5b92915050565b7f4c6f772062616c616e6365000000000000000000000000000000000000000000600082015250565b600061493b600b83613de5565b915061494682614905565b602082019050919050565b6000602082019050818103600083015261496a8161492e565b9050919050565b7f5468726573686f6c642063616e6e6f7420626520300000000000000000000000600082015250565b60006149a7601583613de5565b91506149b282614971565b602082019050919050565b600060208201905081810360008301526149d68161499a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614a1782613efe565b9150614a2283613efe565b925082614a3257614a316149dd565b5b828204905092915050565b7f4e6f7420656e6f75676820746f6b656e73000000000000000000000000000000600082015250565b6000614a73601183613de5565b9150614a7e82614a3d565b602082019050919050565b60006020820190508181036000830152614aa281614a66565b9050919050565b7f4e6f7420656e6f75676820555344430000000000000000000000000000000000600082015250565b6000614adf600f83613de5565b9150614aea82614aa9565b602082019050919050565b60006020820190508181036000830152614b0e81614ad2565b9050919050565b6000819050919050565b6000819050919050565b6000614b44614b3f614b3a84614b15565b614b1f565b613efe565b9050919050565b614b5481614b29565b82525050565b600061010082019050614b70600083018b6141fe565b614b7d602083018a6141fe565b614b8a6040830189614043565b614b976060830188614043565b614ba46080830187614b4b565b614bb160a0830186614b4b565b614bbe60c08301856141fe565b614bcb60e0830184614043565b9998505050505050505050565b600080600060608486031215614bf157614bf0613e96565b5b6000614bff8682870161437a565b9350506020614c108682870161437a565b9250506040614c218682870161437a565b9150509250925092565b7f45524332303a205a65726f206164647265737300000000000000000000000000600082015250565b6000614c61601383613de5565b9150614c6c82614c2b565b602082019050919050565b60006020820190508181036000830152614c9081614c54565b9050919050565b7f45524332303a20616d6f756e7420657863656564732062616c616e6365000000600082015250565b6000614ccd601d83613de5565b9150614cd882614c97565b602082019050919050565b60006020820190508181036000830152614cfc81614cc0565b9050919050565b7f4c696d6974732065786365656465640000000000000000000000000000000000600082015250565b6000614d39600f83613de5565b9150614d4482614d03565b602082019050919050565b60006020820190508181036000830152614d6881614d2c565b9050919050565b7f4e6f7420656e61626c6564000000000000000000000000000000000000000000600082015250565b6000614da5600b83613de5565b9150614db082614d6f565b602082019050919050565b60006020820190508181036000830152614dd481614d98565b9050919050565b6000614de6826140c0565b9150614df1836140c0565b9250828201905060ff811115614e0a57614e096144ff565b5b92915050565b7f43616e6e6f74206465637265617365206c696d69747300000000000000000000600082015250565b6000614e46601683613de5565b9150614e5182614e10565b602082019050919050565b60006020820190508181036000830152614e7581614e39565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614f0f81613ec0565b82525050565b6000614f218383614f06565b60208301905092915050565b6000602082019050919050565b6000614f4582614eda565b614f4f8185614ee5565b9350614f5a83614ef6565b8060005b83811015614f8b578151614f728882614f15565b9750614f7d83614f2d565b925050600181019050614f5e565b5085935050505092915050565b6000604082019050614fad6000830185614043565b8181036020830152614fbf8184614f3a565b90509392505050565b600080fd5b614fd682613e20565b810181811067ffffffffffffffff82111715614ff557614ff4614e7c565b5b80604052505050565b6000615008613e8c565b90506150148282614fcd565b919050565b600067ffffffffffffffff82111561503457615033614e7c565b5b602082029050602081019050919050565b600080fd5b600061505d61505884615019565b614ffe565b905080838252602082019050602084028301858111156150805761507f615045565b5b835b818110156150a95780615095888261437a565b845260208401935050602081019050615082565b5050509392505050565b600082601f8301126150c8576150c7614fc8565b5b81516150d884826020860161504a565b91505092915050565b6000602082840312156150f7576150f6613e96565b5b600082015167ffffffffffffffff81111561511557615114613e9b565b5b615121848285016150b3565b91505092915050565b600060a08201905061513f6000830188614043565b61514c6020830187614b4b565b818103604083015261515e8186614f3a565b905061516d60608301856141fe565b61517a6080830184614043565b969550505050505056fea2646970667358221220dd82cf8f8ba164f71a4a5ad548b3de97bc1d0514de8dc90212c02893bcb083bc64736f6c63430008110033

Deployed Bytecode Sourcemap

2811:15930:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10725:477;;;:::i;:::-;;5750:80;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6077:205;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18208:451;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17137:239;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5489:88;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7424:270;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17449:374;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5580:80;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17979:226;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17381:65;;;:::i;:::-;;12784:139;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5833:107;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2030:83;;;:::i;:::-;;18662:76;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12566:116;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;5663:84;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17826:148;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12344:219;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;7294:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5216:268;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;13547:298;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12685:94;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12034:305;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;5943:131;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2116:97;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10725:477;1886:6;;;;;;;;;;1872:20;;:10;:20;;;1864:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;10827:1:::1;4007:42;10788:23;;;10820:4;10788:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;10780:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10883:1;10861:24;;:10;;;;;;;;;;;:24;;;10853:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;4209:42;10935:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10917:51;;;10977:4;4007:42;10917:73;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10904:10;;:86;;;;;;;;;;;;;;;;;;11015:4;10995:5;:17;11001:10;;;;;;;;;;;10995:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;11024:101;11046:4;11053:9;:24;11071:4;11053:24;;;;;;;;;;;;;;;;4007:42;11079:23;;;11111:4;11079:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11119:5;11024:13;:101::i;:::-;11158:8;;11140:15;:26;;;;:::i;:::-;11130:7;:36;;;;11194:3;11184:7;;:13;;;;:::i;:::-;11171:10;:26;;;;10725:477::o:0;5750:80::-;5798:13;5822:5;;;;;;;;;;;;;;;;;5815:12;;5750:80;:::o;6077:205::-;6152:4;6195:1;6171:9;:21;6181:10;6171:21;;;;;;;;;;;;;;;;:25;6163:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;6224:37;6233:10;6245:7;6254:6;6224:8;:37::i;:::-;6273:4;6266:11;;6077:205;;;;:::o;18208:451::-;1886:6;;;;;;;;;;1872:20;;:10;:20;;;1864:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;18292:29:::1;:45;;;;;;;;;;;;;;;;::::0;::::1;;18351:9;:20;18361:9;18351:20;;;;;;;;;;;;;;;;;;;;;;;;;18350:21;18373:15;18342:47;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;18415:10;;;;;;;;;;;18402:23;;:9;:23;;;;18427:15;18394:49;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;18477:4;18456:26;;:9;:26;;;;18484:15;18448:52;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;18526:15;18513:28;;:9;:28;;;;18543:15;18505:54;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4209:42;18572:31;;:9;:31;;;;18605:15;18564:57;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;18645:9;18626:5;:16;18632:9;18626:16;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;18287:372;18208:451:::0;;:::o;17137:239::-;1886:6;;;;;;;;;;1872:20;;:10;:20;;;1864:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;17228:4:::1;17209:24;;:7;:24;;::::0;17201:47:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;17253:20;17283:7;17276:25;;;17310:4;17276:40;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17253:63;;17328:7;17321:24;;;17346:10;17358:12;17321:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17196:180;17137:239:::0;:::o;5489:88::-;5544:7;3000:1;3061:2;:13;;;;:::i;:::-;3045;:29;;;;:::i;:::-;5555:19;;5489:88;:::o;7424:270::-;7504:4;7556:6;7523:11;:17;7535:4;7523:17;;;;;;;;;;;;;;;:29;7541:10;7523:29;;;;;;;;;;;;;;;;:39;;7515:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;7635:6;7602:11;:17;7614:4;7602:17;;;;;;;;;;;;;;;:29;7620:10;7602:29;;;;;;;;;;;;;;;;:39;;;;;;;:::i;:::-;;;;;;;;7646:27;7656:4;7662:2;7666:6;7646:9;:27::i;:::-;7685:4;7678:11;;7424:270;;;;;:::o;17449:374::-;1886:6;;;;;;;;;;1872:20;;:10;:20;;;1864:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;17525:29:::1;:45;;;;;;;;;;;;;;;;::::0;::::1;;17584:5;:13;17590:6;17584:13;;;;;;;;;;;;;;;;;;;;;;;;;17583:14;17599:15;17575:40;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;17646:4;17628:23;;:6;:23;;;;17653:15;17620:49;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;17692:15;17682:25;;:6;:25;;;;17709:15;17674:51;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4209:42;17738:28;;:6;:28;;;;17768:15;17730:54;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;17810:7;17790:9;:17;17800:6;17790:17;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;17519:304;17449:374:::0;;:::o;5580:80::-;5632:5;3000:1;5641:16;;5580:80;:::o;17979:226::-;18056:6;18031:9;:21;18041:10;18031:21;;;;;;;;;;;;;;;;:31;;18023:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;18108:6;18083:9;:21;18093:10;18083:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;18144:6;18119:9;:21;18137:1;18119:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;18189:1;18160:40;;18169:10;18160:40;;;18193:6;18160:40;;;;;;:::i;:::-;;;;;;;;17979:226;:::o;17381:65::-;1886:6;;;;;;;;;;1872:20;;:10;:20;;;1864:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;17424:19:::1;:17;:19::i;:::-;17381:65::o:0;12784:139::-;1886:6;;;;;;;;;;1872:20;;:10;:20;;;1864:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;12873:47:::1;12887:13;12902:17;12873:13;:47::i;:::-;12784:139:::0;;:::o;5833:107::-;5901:7;5919:9;:18;5929:7;5919:18;;;;;;;;;;;;;;;;5912:25;;5833:107;;;:::o;2030:83::-;1886:6;;;;;;;;;;1872:20;;:10;:20;;;1864:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2080:30:::1;2107:1;2080:18;:30::i;:::-;2030:83::o:0;18662:76::-;18711:4;18726:5;:9;18732:2;18726:9;;;;;;;;;;;;;;;;;;;;;;;;;18719:16;;18662:76;;;:::o;12566:116::-;12607:22;12631:17;12660:6;;12668:10;;12652:27;;;;12566:116;;:::o;5663:84::-;5713:13;5737:7;;;;;;;;;;;;;;;;;5730:14;;5663:84;:::o;17826:148::-;1886:6;;;;;;;;;;1872:20;;:10;:20;;;1864:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;17911:1:::1;17899:9;:13;17891:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;17960:9;17943:14;:26;;;;17826:148:::0;:::o;12344:219::-;12382:18;12402;12422:15;12446:13;12461;12476:19;12499:14;:12;:14::i;:::-;12445:68;;;;;;12526:7;12535;12544:13;12518:40;;;;;;;;;12344:219;;;:::o;7294:127::-;7356:4;7367:33;7377:10;7389:2;7393:6;7367:9;:33::i;:::-;7412:4;7405:11;;7294:127;;;;:::o;5216:268::-;5262:13;5277:15;5294:17;5313:11;5326:12;5340:18;5360:17;5392:6;;;;;;;;;;;5400:15;5417:16;;;;;;;;;;;3918:42;4007;4209;5468:10;;;;;;;;;;;5384:95;;;;;;;;;;;;;;5216:268;;;;;;;:::o;13547:298::-;1886:6;;;;;;;;;;1872:20;;:10;:20;;;1864:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;13630:5:::1;:22;13636:15;13630:22;;;;;;;;;;;;;;;;;;;;;;;;;13629:23;:64;;;;;4209:42;13656:37;;:15;:37;;;;13629:64;:100;;;;;13724:4;13697:32;;:15;:32;;;;13629:100;:133;;;;;13760:1;13733:29;;:15;:29;;;;13629:133;13621:142;;;::::0;::::1;;13797:4;13768:9;:26;13778:15;13768:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;13825:15;13806:16;;:34;;;;;;;;;;;;;;;;;;13547:298:::0;:::o;12685:94::-;12744:4;12759:9;:17;12769:6;12759:17;;;;;;;;;;;;;;;;;;;;;;;;;12752:24;;12685:94;;;:::o;12034:305::-;12074:20;12096:21;12119:24;12151:17;12171:25;:23;:25::i;:::-;12151:45;;12201:23;3000:1;3061:2;:13;;;;:::i;:::-;3045;:29;;;;:::i;:::-;12239:9;:24;12257:4;12239:24;;;;;;;;;;;;;;;;12227:9;:36;;;;:::i;:::-;:51;;;;:::i;:::-;12201:77;;12291:9;12302:15;12319:14;;12283:51;;;;;;;;12034:305;;;:::o;5943:131::-;6026:7;6044:11;:18;6056:5;6044:18;;;;;;;;;;;;;;;:27;6063:7;6044:27;;;;;;;;;;;;;;;;6037:34;;5943:131;;;;:::o;2116:97::-;1886:6;;;;;;;;;;1872:20;;:10;:20;;;1864:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2182:28:::1;2201:8;2182:18;:28::i;:::-;2116:97:::0;:::o;11207:822::-;11371:11;11335:6;11328:24;;;11361:4;11328:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;;11320:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;11459:10;4007:42;11417:23;;;11449:4;11417:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:52;;11409:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;11494:51;11525:6;11533:11;11494:30;:51::i;:::-;11550:49;4007:42;11588:10;11550:30;:49::i;:::-;11604:19;11626:6;;;;;;;;;;;11604:28;;11641:12;11637:47;;;11679:1;11657:24;;11637:47;4209:42;11690:24;;;4007:42;11744:6;11768:10;11806:11;11844:1;11893;11942:11;11992:15;11690:334;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11315:714;11207:822;;;;:::o;6285:244::-;6390:1;6373:19;;:5;:19;;;;:44;;;;;6415:1;6396:21;;:7;:21;;;;6373:44;6365:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;6476:6;6446:11;:18;6458:5;6446:18;;;;;;;;;;;;;;;:27;6465:7;6446:27;;;;;;;;;;;;;;;:36;;;;6508:7;6492:32;;6501:5;6492:32;;;6517:6;6492:32;;;;;;:::i;:::-;;;;;;;;6285:244;;;:::o;7697:930::-;7795:1;7779:18;;:4;:18;;;;:38;;;;;7815:1;7801:16;;:2;:16;;;;7779:38;7771:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7874:6;7855:9;:15;7865:4;7855:15;;;;;;;;;;;;;;;;:25;;7847:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7928:29;7940:4;7946:2;7950:6;7928:11;:29::i;:::-;7920:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;8006:7;;7990:15;:23;7982:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;8056:7;;8040:15;:23;:53;;;;;8083:10;;8067:15;:26;8040:53;:82;;;;;8109:13;8097:11;:25;8040:82;8036:213;;;8130:12;8159:13;8145:11;:27;;;;:::i;:::-;8130:42;;8178:12;8193;8178:27;;8224:4;8219;:9;8211:32;;;;;;;;;;;;:::i;:::-;;;;;;;;;8124:125;;8036:213;8261:10;;;;;;;;;;;8260:11;:31;;;;;8276:9;:15;8286:4;8276:15;;;;;;;;;;;;;;;;;;;;;;;;;8275:16;8260:31;:44;;;;;8295:5;:9;8301:2;8295:9;;;;;;;;;;;;;;;;;;;;;;;;;8260:44;8255:76;;;8309:19;:17;:19::i;:::-;8255:76;8340:13;8355;8370:17;8391:31;8405:4;8411:2;8415:6;8391:13;:31::i;:::-;8339:83;;;;;;8427:17;8463:9;8455:5;8447;:13;;;;:::i;:::-;:25;;;;:::i;:::-;8427:45;;8496:6;8477:9;:15;8487:4;8477:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;8535:9;8507;:24;8525:4;8507:24;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;8576:9;8567:6;:18;;;;:::i;:::-;8549:9;:13;8559:2;8549:13;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;8611:2;8596:26;;8605:4;8596:26;;;8615:6;8596:26;;;;;;:::i;:::-;;;;;;;;7766:861;;;;7697:930;;;:::o;14141:1979::-;4638:4;4625:10;;:17;;;;;;;;;;;;;;;;;;14192:23:::1;14218:26;:24;:26::i;:::-;14192:52;;14250:13;14265::::0;14280:19:::1;14303:14;:12;:14::i;:::-;14249:68;;;;;;14322:15;14360:13;14350:7;14340;:17;;;;:::i;:::-;:33;;;;:::i;:::-;14322:51;;14378:18;14399:9;:24;14417:4;14399:24;;;;;;;;;;;;;;;;14378:45;;14442:1;14432:9;:11;;;:44;;;;;14461:15;14447:10;:29;;14432:44;14428:1688;;;14497:15;14484:28;;14520:20;14567:9;14544:32;;14557:7;14544:20;;:10;:20;;;;:::i;:::-;:32;;;;:::i;:::-;14520:57;;14583:22;14643:1;14632:9;14609:32;;14622:7;14609:20;;:10;:20;;;;:::i;:::-;:32;;;;:::i;:::-;14608:36;;;;:::i;:::-;14583:61;;14650:26;14708:9;14679:38;;14692:13;14679:26;;:10;:26;;;;:::i;:::-;:38;;;;:::i;:::-;14650:67;;14725:20;14784:14;14763:18;14748:12;:33;;;;:::i;:::-;:50;;;;:::i;:::-;14725:73;;3000:1;14824:2;:13;;;;:::i;:::-;14808:12;:29;14804:1305;;14846:25;14874:53;14894:4;4007:42;14908:12;14922:4;14874:11;:53::i;:::-;14846:81;;14976:20;15036:12;15019:14;14999:17;:34;;;;:::i;:::-;:49;;;;:::i;:::-;14976:72;;15085:24;15164:1;15148:12;15133;15113:17;:32;;;;:::i;:::-;:47;;;;:::i;:::-;15112:53;;;;:::i;:::-;15085:80;;15202:24;15270:12;15249:18;15229:17;:38;;;;:::i;:::-;:53;;;;:::i;:::-;15202:80;;15329:1;15321:7;:9;;;15317:84;;;15334:64;15356:4;15363:14;15379:12;15393:4;15334:13;:64::i;:::-;15317:84;15460:1;15452:7;:9;;;15448:254;;;15471:20;15494:49;4007:42;3918;15519:16;15537:5;15494:11;:49::i;:::-;15471:72;;15598:57;3918:42;15618:12;15632:16;15650:4;15598:13;:57::i;:::-;15463:239;15448:254;15728:1;15714:13;:15;;;15710:393;;;15739:28;4007:42;15770:23;;;15802:4;15770:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15739:69;;15839:20;15820:16;:39;15816:89;;;15882:20;15863:39;;15816:89;15994:1;15975:16;:20;15971:89;;;4007:42;15999:22;;;16022:16;;;;;;;;;;;16040;15999:58;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15971:89;15731:372;15710:393;14839:1270;;;;14804:1305;14478:1638;;;;14428:1688;14187:1933;;;;;;4660:5:::0;4647:10;;:18;;;;;;;;;;;;;;;;;;14141:1979::o;12926:616::-;13012:16;3000:1;13078:2;:13;;;;:::i;:::-;13073:2;:18;;;;:::i;:::-;13064:4;13047:14;13032:29;;3000:1;3061:2;:13;;;;:::i;:::-;3045;:29;;;;:::i;:::-;13032;;;;:::i;:::-;:36;;;;:::i;:::-;13031:61;;;;:::i;:::-;13012:80;;13138:20;3000:1;13212:2;:13;;;;:::i;:::-;13207:2;:18;;;;:::i;:::-;13198:4;13177:18;13162:33;;3000:1;3061:2;:13;;;;:::i;:::-;3045;:29;;;;:::i;:::-;13162:33;;;;:::i;:::-;:40;;;;:::i;:::-;13161:65;;;;:::i;:::-;13138:88;;13292:6;;13280:8;:18;;:48;;;;;13318:10;;13302:12;:26;;13280:48;13272:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;3000:1;3061:2;:13;;;;:::i;:::-;3045;:29;;;;:::i;:::-;13364:8;:23;13360:57;;;3000:1;3061:2;:13;;;;:::i;:::-;3045;:29;;;;:::i;:::-;13391:23;;13360:57;3000:1;3061:2;:13;;;;:::i;:::-;3045;:29;;;;:::i;:::-;13425:12;:27;13421:65;;;3000:1;3061:2;:13;;;;:::i;:::-;3045;:29;;;;:::i;:::-;13456:27;;13421:65;13499:8;13490:6;:17;;;;13525:12;13512:10;:25;;;;13007:535;;12926:616;;:::o;2216:127::-;2286:9;2277:6;;:18;;;;;;;;;;;;;;;;;;2306:31;2327:9;2306:31;;;;;;:::i;:::-;;;;;;;;2216:127;:::o;9405:726::-;9451:13;9466;9481:19;9507:14;9523;9539:20;9564:27;9594:25;:23;:25::i;:::-;9564:55;;3447:9;9628:19;:35;9624:455;;;9683:1;9672:12;;9697:1;9686:12;;9717:1;9700:18;;9624:455;;;3447:9;9734:19;:36;;:75;;;;;3557:10;9774:19;:35;9734:75;9730:349;;;9828:1;9817:12;;9842:1;9831:12;;9862:1;9845:18;;9730:349;;;3557:10;9879:19;:36;;:75;;;;;3662:11;9919:19;:35;9879:75;9875:204;;;9973:1;9962:12;;9987:1;9976:12;;10007:1;9990:18;;9875:204;;;10038:1;10027:12;;10052:1;10041:12;;10072:1;10055:18;;9875:204;9730:349;9624:455;10091:8;10101;10111:14;10083:43;;;;;;;;;;9405:726;;;:::o;9062:340::-;9119:7;9133:17;9181:1;9159:24;;:10;;;;;;;;;;;:24;;;9155:222;;9191:18;9212:9;:21;9222:10;;;;;;;;;;;9212:21;;;;;;;;;;;;;;;;9191:42;;9239:16;9301:13;9297:2;:17;;;;:::i;:::-;4007:42;9258:23;;;9282:10;;;;;;;;;;;9258:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:57;;;;:::i;:::-;9239:76;;9360:10;3000:1;3061:2;:13;;;;:::i;:::-;3045;:29;;;;:::i;:::-;9334:8;:23;;;;:::i;:::-;:36;;;;:::i;:::-;9321:50;;9185:192;;9155:222;9388:9;9381:16;;;9062:340;:::o;6748:541::-;6834:22;6883:4;6865:23;;:6;:23;;;6861:421;;6913:11;:26;6933:4;6913:26;;;;;;;;;;;;;;;:46;4209:42;6913:46;;;;;;;;;;;;;;;;6896:63;;6978:14;6969:6;:23;6965:109;;;7050:17;7001:11;:26;7021:4;7001:26;;;;;;;;;;;;;;;:46;4209:42;7001:46;;;;;;;;;;;;;;;:66;;;;6965:109;6861:421;;;7115:6;7108:24;;;7141:4;4209:42;7108:59;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7091:76;;7186:14;7177:6;:23;7173:104;;;7216:6;7209:22;;;4209:42;7252:17;7209:61;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7173:104;6861:421;6829:460;6748:541;;:::o;8630:427::-;8715:4;8726:11;8740:4;8726:18;;8763:6;;8754;:15;:35;;;;;8774:9;:15;8784:4;8774:15;;;;;;;;;;;;;;;;;;;;;;;;;8773:16;8754:35;:53;;;;;8794:9;:13;8804:2;8794:13;;;;;;;;;;;;;;;;;;;;;;;;;8793:14;8754:53;8749:80;;;8821:5;8812:14;;8749:80;8833:15;8851:4;8833:22;;8860:20;8899:6;8883:9;:13;8893:2;8883:13;;;;;;;;;;;;;;;;:22;;;;:::i;:::-;8860:45;;8930:10;;8915:12;:25;:45;;;;;8945:9;:15;8955:4;8945:15;;;;;;;;;;;;;;;;;;;;;;;;;8944:16;8915:45;:63;;;;;8965:9;:13;8975:2;8965:13;;;;;;;;;;;;;;;;;;;;;;;;;8964:14;8915:63;:77;;;;;8983:5;:9;8989:2;8983:9;;;;;;;;;;;;;;;;;;;;;;;;;8982:10;8915:77;8910:108;;;9010:5;8997:18;;8910:108;9031:6;:20;;;;;9041:10;9031:20;9023:29;;;;;8630:427;;;;;:::o;10134:584::-;10221:13;10236;10251:17;10275:14;10291;10307:18;10336:5;:11;10342:4;10336:11;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;;;10352:9;:13;10362:2;10352:13;;;;;;;;;;;;;;;;;;;;;;;;;10351:14;10336:29;10335:66;;;;10371:5;:9;10377:2;10371:9;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;;;10385:9;:15;10395:4;10385:15;;;;;;;;;;;;;;;;;;;;;;;;;10384:16;10371:29;10335:66;10330:344;;;10412:13;10427;10442:19;10465:14;:12;:14::i;:::-;10411:68;;;;;;10513:3;10503:7;10494:16;;:6;:16;;;;:::i;:::-;:22;;;;:::i;:::-;10485:31;;10550:3;10540:7;10531:16;;:6;:16;;;;:::i;:::-;:22;;;;:::i;:::-;10522:31;;10597:3;10581:13;10572:22;;:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;10559:41;;10404:202;;;10330:344;;;10631:1;10622:10;;10647:1;10638:10;;10667:1;10654:14;;10330:344;10686:6;10694;10702:10;10678:35;;;;;;;;;10134:584;;;;;;;:::o;13852:286::-;13910:7;13924:21;13962:1;13948:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13924:40;;13987:4;13969;13974:1;13969:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;4007:42;13997:4;14002:1;13997:7;;;;;;;;:::i;:::-;;;;;;;:15;;;;;;;;;;;14017:24;4209:42;14044:24;;;14090:13;14086:2;:17;;;;:::i;:::-;14069:14;;:34;;;;:::i;:::-;14105:4;14044:66;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14017:93;;14123:7;14131:1;14123:10;;;;;;;;:::i;:::-;;;;;;;;14116:17;;;;13852:286;:::o;16125:1007::-;16241:20;16270:29;16310:4;16270:45;;16320:21;16346:27;16400:4;16386:18;;:10;:18;;;16382:142;;16432:15;16408:39;;16382:142;;;16484:11;16477:29;;;16515:4;16477:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16461:60;;16382:142;16530:55;16561:10;16573:11;16530:30;:55::i;:::-;16590:21;16628:1;16614:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16590:40;;16645:10;16635:4;16640:1;16635:7;;;;;;;;:::i;:::-;;;;;;;:20;;;;;;;;;;;16670:11;16660:4;16665:1;16660:7;;;;;;;;:::i;:::-;;;;;;;:21;;;;;;;;;;;4209:42;16686:65;;;16757:11;16774:1;16781:4;16791:21;16818:15;16686:152;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16865:4;16851:18;;:10;:18;;;16847:247;;16895:16;:35;;;16931:11;16895:48;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16873:70;;16847:247;;;16962:20;16992:11;16985:29;;;17023:4;16985:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16962:67;;17073:13;17058:12;:28;;;;:::i;:::-;17035:52;;16955:139;16847:247;17107:19;17100:26;;;;;;16125:1007;;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:116::-;3516:21;3531:5;3516:21;:::i;:::-;3509:5;3506:32;3496:60;;3552:1;3549;3542:12;3496:60;3446:116;:::o;3568:133::-;3611:5;3649:6;3636:20;3627:29;;3665:30;3689:5;3665:30;:::i;:::-;3568:133;;;;:::o;3707:468::-;3772:6;3780;3829:2;3817:9;3808:7;3804:23;3800:32;3797:119;;;3835:79;;:::i;:::-;3797:119;3955:1;3980:53;4025:7;4016:6;4005:9;4001:22;3980:53;:::i;:::-;3970:63;;3926:117;4082:2;4108:50;4150:7;4141:6;4130:9;4126:22;4108:50;:::i;:::-;4098:60;;4053:115;3707:468;;;;;:::o;4181:329::-;4240:6;4289:2;4277:9;4268:7;4264:23;4260:32;4257:119;;;4295:79;;:::i;:::-;4257:119;4415:1;4440:53;4485:7;4476:6;4465:9;4461:22;4440:53;:::i;:::-;4430:63;;4386:117;4181:329;;;;:::o;4516:118::-;4603:24;4621:5;4603:24;:::i;:::-;4598:3;4591:37;4516:118;;:::o;4640:222::-;4733:4;4771:2;4760:9;4756:18;4748:26;;4784:71;4852:1;4841:9;4837:17;4828:6;4784:71;:::i;:::-;4640:222;;;;:::o;4868:619::-;4945:6;4953;4961;5010:2;4998:9;4989:7;4985:23;4981:32;4978:119;;;5016:79;;:::i;:::-;4978:119;5136:1;5161:53;5206:7;5197:6;5186:9;5182:22;5161:53;:::i;:::-;5151:63;;5107:117;5263:2;5289:53;5334:7;5325:6;5314:9;5310:22;5289:53;:::i;:::-;5279:63;;5234:118;5391:2;5417:53;5462:7;5453:6;5442:9;5438:22;5417:53;:::i;:::-;5407:63;;5362:118;4868:619;;;;;:::o;5493:86::-;5528:7;5568:4;5561:5;5557:16;5546:27;;5493:86;;;:::o;5585:112::-;5668:22;5684:5;5668:22;:::i;:::-;5663:3;5656:35;5585:112;;:::o;5703:214::-;5792:4;5830:2;5819:9;5815:18;5807:26;;5843:67;5907:1;5896:9;5892:17;5883:6;5843:67;:::i;:::-;5703:214;;;;:::o;5923:329::-;5982:6;6031:2;6019:9;6010:7;6006:23;6002:32;5999:119;;;6037:79;;:::i;:::-;5999:119;6157:1;6182:53;6227:7;6218:6;6207:9;6203:22;6182:53;:::i;:::-;6172:63;;6128:117;5923:329;;;;:::o;6258:89::-;6294:7;6334:6;6327:5;6323:18;6312:29;;6258:89;;;:::o;6353:120::-;6425:23;6442:5;6425:23;:::i;:::-;6418:5;6415:34;6405:62;;6463:1;6460;6453:12;6405:62;6353:120;:::o;6479:137::-;6524:5;6562:6;6549:20;6540:29;;6578:32;6604:5;6578:32;:::i;:::-;6479:137;;;;:::o;6622:470::-;6688:6;6696;6745:2;6733:9;6724:7;6720:23;6716:32;6713:119;;;6751:79;;:::i;:::-;6713:119;6871:1;6896:52;6940:7;6931:6;6920:9;6916:22;6896:52;:::i;:::-;6886:62;;6842:116;6997:2;7023:52;7067:7;7058:6;7047:9;7043:22;7023:52;:::i;:::-;7013:62;;6968:117;6622:470;;;;;:::o;7098:332::-;7219:4;7257:2;7246:9;7242:18;7234:26;;7270:71;7338:1;7327:9;7323:17;7314:6;7270:71;:::i;:::-;7351:72;7419:2;7408:9;7404:18;7395:6;7351:72;:::i;:::-;7098:332;;;;;:::o;7436:418::-;7573:4;7611:2;7600:9;7596:18;7588:26;;7624:67;7688:1;7677:9;7673:17;7664:6;7624:67;:::i;:::-;7701:68;7765:2;7754:9;7750:18;7741:6;7701:68;:::i;:::-;7779;7843:2;7832:9;7828:18;7819:6;7779:68;:::i;:::-;7436:418;;;;;;:::o;7860:118::-;7947:24;7965:5;7947:24;:::i;:::-;7942:3;7935:37;7860:118;;:::o;7984:886::-;8245:4;8283:3;8272:9;8268:19;8260:27;;8297:71;8365:1;8354:9;8350:17;8341:6;8297:71;:::i;:::-;8378:72;8446:2;8435:9;8431:18;8422:6;8378:72;:::i;:::-;8460;8528:2;8517:9;8513:18;8504:6;8460:72;:::i;:::-;8542;8610:2;8599:9;8595:18;8586:6;8542:72;:::i;:::-;8624:73;8692:3;8681:9;8677:19;8668:6;8624:73;:::i;:::-;8707;8775:3;8764:9;8760:19;8751:6;8707:73;:::i;:::-;8790;8858:3;8847:9;8843:19;8834:6;8790:73;:::i;:::-;7984:886;;;;;;;;;;:::o;8876:442::-;9025:4;9063:2;9052:9;9048:18;9040:26;;9076:71;9144:1;9133:9;9129:17;9120:6;9076:71;:::i;:::-;9157:72;9225:2;9214:9;9210:18;9201:6;9157:72;:::i;:::-;9239;9307:2;9296:9;9292:18;9283:6;9239:72;:::i;:::-;8876:442;;;;;;:::o;9324:474::-;9392:6;9400;9449:2;9437:9;9428:7;9424:23;9420:32;9417:119;;;9455:79;;:::i;:::-;9417:119;9575:1;9600:53;9645:7;9636:6;9625:9;9621:22;9600:53;:::i;:::-;9590:63;;9546:117;9702:2;9728:53;9773:7;9764:6;9753:9;9749:22;9728:53;:::i;:::-;9718:63;;9673:118;9324:474;;;;;:::o;9804:163::-;9944:15;9940:1;9932:6;9928:14;9921:39;9804:163;:::o;9973:366::-;10115:3;10136:67;10200:2;10195:3;10136:67;:::i;:::-;10129:74;;10212:93;10301:3;10212:93;:::i;:::-;10330:2;10325:3;10321:12;10314:19;;9973:366;;;:::o;10345:419::-;10511:4;10549:2;10538:9;10534:18;10526:26;;10598:9;10592:4;10588:20;10584:1;10573:9;10569:17;10562:47;10626:131;10752:4;10626:131;:::i;:::-;10618:139;;10345:419;;;:::o;10770:222::-;10863:4;10901:2;10890:9;10886:18;10878:26;;10914:71;10982:1;10971:9;10967:17;10958:6;10914:71;:::i;:::-;10770:222;;;;:::o;10998:143::-;11055:5;11086:6;11080:13;11071:22;;11102:33;11129:5;11102:33;:::i;:::-;10998:143;;;;:::o;11147:351::-;11217:6;11266:2;11254:9;11245:7;11241:23;11237:32;11234:119;;;11272:79;;:::i;:::-;11234:119;11392:1;11417:64;11473:7;11464:6;11453:9;11449:22;11417:64;:::i;:::-;11407:74;;11363:128;11147:351;;;;:::o;11504:165::-;11644:17;11640:1;11632:6;11628:14;11621:41;11504:165;:::o;11675:366::-;11817:3;11838:67;11902:2;11897:3;11838:67;:::i;:::-;11831:74;;11914:93;12003:3;11914:93;:::i;:::-;12032:2;12027:3;12023:12;12016:19;;11675:366;;;:::o;12047:419::-;12213:4;12251:2;12240:9;12236:18;12228:26;;12300:9;12294:4;12290:20;12286:1;12275:9;12271:17;12264:47;12328:131;12454:4;12328:131;:::i;:::-;12320:139;;12047:419;;;:::o;12472:159::-;12612:11;12608:1;12600:6;12596:14;12589:35;12472:159;:::o;12637:365::-;12779:3;12800:66;12864:1;12859:3;12800:66;:::i;:::-;12793:73;;12875:93;12964:3;12875:93;:::i;:::-;12993:2;12988:3;12984:12;12977:19;;12637:365;;;:::o;13008:419::-;13174:4;13212:2;13201:9;13197:18;13189:26;;13261:9;13255:4;13251:20;13247:1;13236:9;13232:17;13225:47;13289:131;13415:4;13289:131;:::i;:::-;13281:139;;13008:419;;;:::o;13433:143::-;13490:5;13521:6;13515:13;13506:22;;13537:33;13564:5;13537:33;:::i;:::-;13433:143;;;;:::o;13582:351::-;13652:6;13701:2;13689:9;13680:7;13676:23;13672:32;13669:119;;;13707:79;;:::i;:::-;13669:119;13827:1;13852:64;13908:7;13899:6;13888:9;13884:22;13852:64;:::i;:::-;13842:74;;13798:128;13582:351;;;;:::o;13939:332::-;14060:4;14098:2;14087:9;14083:18;14075:26;;14111:71;14179:1;14168:9;14164:17;14155:6;14111:71;:::i;:::-;14192:72;14260:2;14249:9;14245:18;14236:6;14192:72;:::i;:::-;13939:332;;;;;:::o;14277:180::-;14325:77;14322:1;14315:88;14422:4;14419:1;14412:15;14446:4;14443:1;14436:15;14463:191;14503:3;14522:20;14540:1;14522:20;:::i;:::-;14517:25;;14556:20;14574:1;14556:20;:::i;:::-;14551:25;;14599:1;14596;14592:9;14585:16;;14620:3;14617:1;14614:10;14611:36;;;14627:18;;:::i;:::-;14611:36;14463:191;;;;:::o;14660:169::-;14800:21;14796:1;14788:6;14784:14;14777:45;14660:169;:::o;14835:366::-;14977:3;14998:67;15062:2;15057:3;14998:67;:::i;:::-;14991:74;;15074:93;15163:3;15074:93;:::i;:::-;15192:2;15187:3;15183:12;15176:19;;14835:366;;;:::o;15207:419::-;15373:4;15411:2;15400:9;15396:18;15388:26;;15460:9;15454:4;15450:20;15446:1;15435:9;15431:17;15424:47;15488:131;15614:4;15488:131;:::i;:::-;15480:139;;15207:419;;;:::o;15632:161::-;15772:13;15768:1;15760:6;15756:14;15749:37;15632:161;:::o;15799:366::-;15941:3;15962:67;16026:2;16021:3;15962:67;:::i;:::-;15955:74;;16038:93;16127:3;16038:93;:::i;:::-;16156:2;16151:3;16147:12;16140:19;;15799:366;;;:::o;16171:419::-;16337:4;16375:2;16364:9;16360:18;16352:26;;16424:9;16418:4;16414:20;16410:1;16399:9;16395:17;16388:47;16452:131;16578:4;16452:131;:::i;:::-;16444:139;;16171:419;;;:::o;16596:332::-;16717:4;16755:2;16744:9;16740:18;16732:26;;16768:71;16836:1;16825:9;16821:17;16812:6;16768:71;:::i;:::-;16849:72;16917:2;16906:9;16902:18;16893:6;16849:72;:::i;:::-;16596:332;;;;;:::o;16934:137::-;16988:5;17019:6;17013:13;17004:22;;17035:30;17059:5;17035:30;:::i;:::-;16934:137;;;;:::o;17077:345::-;17144:6;17193:2;17181:9;17172:7;17168:23;17164:32;17161:119;;;17199:79;;:::i;:::-;17161:119;17319:1;17344:61;17397:7;17388:6;17377:9;17373:22;17344:61;:::i;:::-;17334:71;;17290:125;17077:345;;;;:::o;17428:102::-;17470:8;17517:5;17514:1;17510:13;17489:34;;17428:102;;;:::o;17536:848::-;17597:5;17604:4;17628:6;17619:15;;17652:5;17643:14;;17666:712;17687:1;17677:8;17674:15;17666:712;;;17782:4;17777:3;17773:14;17767:4;17764:24;17761:50;;;17791:18;;:::i;:::-;17761:50;17841:1;17831:8;17827:16;17824:451;;;18256:4;18249:5;18245:16;18236:25;;17824:451;18306:4;18300;18296:15;18288:23;;18336:32;18359:8;18336:32;:::i;:::-;18324:44;;17666:712;;;17536:848;;;;;;;:::o;18390:1073::-;18444:5;18635:8;18625:40;;18656:1;18647:10;;18658:5;;18625:40;18684:4;18674:36;;18701:1;18692:10;;18703:5;;18674:36;18770:4;18818:1;18813:27;;;;18854:1;18849:191;;;;18763:277;;18813:27;18831:1;18822:10;;18833:5;;;18849:191;18894:3;18884:8;18881:17;18878:43;;;18901:18;;:::i;:::-;18878:43;18950:8;18947:1;18943:16;18934:25;;18985:3;18978:5;18975:14;18972:40;;;18992:18;;:::i;:::-;18972:40;19025:5;;;18763:277;;19149:2;19139:8;19136:16;19130:3;19124:4;19121:13;19117:36;19099:2;19089:8;19086:16;19081:2;19075:4;19072:12;19068:35;19052:111;19049:246;;;19205:8;19199:4;19195:19;19186:28;;19240:3;19233:5;19230:14;19227:40;;;19247:18;;:::i;:::-;19227:40;19280:5;;19049:246;19320:42;19358:3;19348:8;19342:4;19339:1;19320:42;:::i;:::-;19305:57;;;;19394:4;19389:3;19385:14;19378:5;19375:25;19372:51;;;19403:18;;:::i;:::-;19372:51;19452:4;19445:5;19441:16;19432:25;;18390:1073;;;;;;:::o;19469:281::-;19527:5;19551:23;19569:4;19551:23;:::i;:::-;19543:31;;19595:25;19611:8;19595:25;:::i;:::-;19583:37;;19639:104;19676:66;19666:8;19660:4;19639:104;:::i;:::-;19630:113;;19469:281;;;;:::o;19756:410::-;19796:7;19819:20;19837:1;19819:20;:::i;:::-;19814:25;;19853:20;19871:1;19853:20;:::i;:::-;19848:25;;19908:1;19905;19901:9;19930:30;19948:11;19930:30;:::i;:::-;19919:41;;20109:1;20100:7;20096:15;20093:1;20090:22;20070:1;20063:9;20043:83;20020:139;;20139:18;;:::i;:::-;20020:139;19804:362;19756:410;;;;:::o;20172:181::-;20312:33;20308:1;20300:6;20296:14;20289:57;20172:181;:::o;20359:366::-;20501:3;20522:67;20586:2;20581:3;20522:67;:::i;:::-;20515:74;;20598:93;20687:3;20598:93;:::i;:::-;20716:2;20711:3;20707:12;20700:19;;20359:366;;;:::o;20731:419::-;20897:4;20935:2;20924:9;20920:18;20912:26;;20984:9;20978:4;20974:20;20970:1;20959:9;20955:17;20948:47;21012:131;21138:4;21012:131;:::i;:::-;21004:139;;20731:419;;;:::o;21156:194::-;21196:4;21216:20;21234:1;21216:20;:::i;:::-;21211:25;;21250:20;21268:1;21250:20;:::i;:::-;21245:25;;21294:1;21291;21287:9;21279:17;;21318:1;21312:4;21309:11;21306:37;;;21323:18;;:::i;:::-;21306:37;21156:194;;;;:::o;21356:161::-;21496:13;21492:1;21484:6;21480:14;21473:37;21356:161;:::o;21523:366::-;21665:3;21686:67;21750:2;21745:3;21686:67;:::i;:::-;21679:74;;21762:93;21851:3;21762:93;:::i;:::-;21880:2;21875:3;21871:12;21864:19;;21523:366;;;:::o;21895:419::-;22061:4;22099:2;22088:9;22084:18;22076:26;;22148:9;22142:4;22138:20;22134:1;22123:9;22119:17;22112:47;22176:131;22302:4;22176:131;:::i;:::-;22168:139;;21895:419;;;:::o;22320:171::-;22460:23;22456:1;22448:6;22444:14;22437:47;22320:171;:::o;22497:366::-;22639:3;22660:67;22724:2;22719:3;22660:67;:::i;:::-;22653:74;;22736:93;22825:3;22736:93;:::i;:::-;22854:2;22849:3;22845:12;22838:19;;22497:366;;;:::o;22869:419::-;23035:4;23073:2;23062:9;23058:18;23050:26;;23122:9;23116:4;23112:20;23108:1;23097:9;23093:17;23086:47;23150:131;23276:4;23150:131;:::i;:::-;23142:139;;22869:419;;;:::o;23294:180::-;23342:77;23339:1;23332:88;23439:4;23436:1;23429:15;23463:4;23460:1;23453:15;23480:185;23520:1;23537:20;23555:1;23537:20;:::i;:::-;23532:25;;23571:20;23589:1;23571:20;:::i;:::-;23566:25;;23610:1;23600:35;;23615:18;;:::i;:::-;23600:35;23657:1;23654;23650:9;23645:14;;23480:185;;;;:::o;23671:167::-;23811:19;23807:1;23799:6;23795:14;23788:43;23671:167;:::o;23844:366::-;23986:3;24007:67;24071:2;24066:3;24007:67;:::i;:::-;24000:74;;24083:93;24172:3;24083:93;:::i;:::-;24201:2;24196:3;24192:12;24185:19;;23844:366;;;:::o;24216:419::-;24382:4;24420:2;24409:9;24405:18;24397:26;;24469:9;24463:4;24459:20;24455:1;24444:9;24440:17;24433:47;24497:131;24623:4;24497:131;:::i;:::-;24489:139;;24216:419;;;:::o;24641:165::-;24781:17;24777:1;24769:6;24765:14;24758:41;24641:165;:::o;24812:366::-;24954:3;24975:67;25039:2;25034:3;24975:67;:::i;:::-;24968:74;;25051:93;25140:3;25051:93;:::i;:::-;25169:2;25164:3;25160:12;25153:19;;24812:366;;;:::o;25184:419::-;25350:4;25388:2;25377:9;25373:18;25365:26;;25437:9;25431:4;25427:20;25423:1;25412:9;25408:17;25401:47;25465:131;25591:4;25465:131;:::i;:::-;25457:139;;25184:419;;;:::o;25609:85::-;25654:7;25683:5;25672:16;;25609:85;;;:::o;25700:60::-;25728:3;25749:5;25742:12;;25700:60;;;:::o;25766:158::-;25824:9;25857:61;25875:42;25884:32;25910:5;25884:32;:::i;:::-;25875:42;:::i;:::-;25857:61;:::i;:::-;25844:74;;25766:158;;;:::o;25930:147::-;26025:45;26064:5;26025:45;:::i;:::-;26020:3;26013:58;25930:147;;:::o;26083:1029::-;26388:4;26426:3;26415:9;26411:19;26403:27;;26440:71;26508:1;26497:9;26493:17;26484:6;26440:71;:::i;:::-;26521:72;26589:2;26578:9;26574:18;26565:6;26521:72;:::i;:::-;26603;26671:2;26660:9;26656:18;26647:6;26603:72;:::i;:::-;26685;26753:2;26742:9;26738:18;26729:6;26685:72;:::i;:::-;26767:81;26843:3;26832:9;26828:19;26819:6;26767:81;:::i;:::-;26858;26934:3;26923:9;26919:19;26910:6;26858:81;:::i;:::-;26949:73;27017:3;27006:9;27002:19;26993:6;26949:73;:::i;:::-;27032;27100:3;27089:9;27085:19;27076:6;27032:73;:::i;:::-;26083:1029;;;;;;;;;;;:::o;27118:663::-;27206:6;27214;27222;27271:2;27259:9;27250:7;27246:23;27242:32;27239:119;;;27277:79;;:::i;:::-;27239:119;27397:1;27422:64;27478:7;27469:6;27458:9;27454:22;27422:64;:::i;:::-;27412:74;;27368:128;27535:2;27561:64;27617:7;27608:6;27597:9;27593:22;27561:64;:::i;:::-;27551:74;;27506:129;27674:2;27700:64;27756:7;27747:6;27736:9;27732:22;27700:64;:::i;:::-;27690:74;;27645:129;27118:663;;;;;:::o;27787:169::-;27927:21;27923:1;27915:6;27911:14;27904:45;27787:169;:::o;27962:366::-;28104:3;28125:67;28189:2;28184:3;28125:67;:::i;:::-;28118:74;;28201:93;28290:3;28201:93;:::i;:::-;28319:2;28314:3;28310:12;28303:19;;27962:366;;;:::o;28334:419::-;28500:4;28538:2;28527:9;28523:18;28515:26;;28587:9;28581:4;28577:20;28573:1;28562:9;28558:17;28551:47;28615:131;28741:4;28615:131;:::i;:::-;28607:139;;28334:419;;;:::o;28759:179::-;28899:31;28895:1;28887:6;28883:14;28876:55;28759:179;:::o;28944:366::-;29086:3;29107:67;29171:2;29166:3;29107:67;:::i;:::-;29100:74;;29183:93;29272:3;29183:93;:::i;:::-;29301:2;29296:3;29292:12;29285:19;;28944:366;;;:::o;29316:419::-;29482:4;29520:2;29509:9;29505:18;29497:26;;29569:9;29563:4;29559:20;29555:1;29544:9;29540:17;29533:47;29597:131;29723:4;29597:131;:::i;:::-;29589:139;;29316:419;;;:::o;29741:165::-;29881:17;29877:1;29869:6;29865:14;29858:41;29741:165;:::o;29912:366::-;30054:3;30075:67;30139:2;30134:3;30075:67;:::i;:::-;30068:74;;30151:93;30240:3;30151:93;:::i;:::-;30269:2;30264:3;30260:12;30253:19;;29912:366;;;:::o;30284:419::-;30450:4;30488:2;30477:9;30473:18;30465:26;;30537:9;30531:4;30527:20;30523:1;30512:9;30508:17;30501:47;30565:131;30691:4;30565:131;:::i;:::-;30557:139;;30284:419;;;:::o;30709:161::-;30849:13;30845:1;30837:6;30833:14;30826:37;30709:161;:::o;30876:366::-;31018:3;31039:67;31103:2;31098:3;31039:67;:::i;:::-;31032:74;;31115:93;31204:3;31115:93;:::i;:::-;31233:2;31228:3;31224:12;31217:19;;30876:366;;;:::o;31248:419::-;31414:4;31452:2;31441:9;31437:18;31429:26;;31501:9;31495:4;31491:20;31487:1;31476:9;31472:17;31465:47;31529:131;31655:4;31529:131;:::i;:::-;31521:139;;31248:419;;;:::o;31673:188::-;31711:3;31730:18;31746:1;31730:18;:::i;:::-;31725:23;;31762:18;31778:1;31762:18;:::i;:::-;31757:23;;31803:1;31800;31796:9;31789:16;;31826:4;31821:3;31818:13;31815:39;;;31834:18;;:::i;:::-;31815:39;31673:188;;;;:::o;31867:172::-;32007:24;32003:1;31995:6;31991:14;31984:48;31867:172;:::o;32045:366::-;32187:3;32208:67;32272:2;32267:3;32208:67;:::i;:::-;32201:74;;32284:93;32373:3;32284:93;:::i;:::-;32402:2;32397:3;32393:12;32386:19;;32045:366;;;:::o;32417:419::-;32583:4;32621:2;32610:9;32606:18;32598:26;;32670:9;32664:4;32660:20;32656:1;32645:9;32641:17;32634:47;32698:131;32824:4;32698:131;:::i;:::-;32690:139;;32417:419;;;:::o;32842:180::-;32890:77;32887:1;32880:88;32987:4;32984:1;32977:15;33011:4;33008:1;33001:15;33028:180;33076:77;33073:1;33066:88;33173:4;33170:1;33163:15;33197:4;33194:1;33187:15;33214:114;33281:6;33315:5;33309:12;33299:22;;33214:114;;;:::o;33334:184::-;33433:11;33467:6;33462:3;33455:19;33507:4;33502:3;33498:14;33483:29;;33334:184;;;;:::o;33524:132::-;33591:4;33614:3;33606:11;;33644:4;33639:3;33635:14;33627:22;;33524:132;;;:::o;33662:108::-;33739:24;33757:5;33739:24;:::i;:::-;33734:3;33727:37;33662:108;;:::o;33776:179::-;33845:10;33866:46;33908:3;33900:6;33866:46;:::i;:::-;33944:4;33939:3;33935:14;33921:28;;33776:179;;;;:::o;33961:113::-;34031:4;34063;34058:3;34054:14;34046:22;;33961:113;;;:::o;34110:732::-;34229:3;34258:54;34306:5;34258:54;:::i;:::-;34328:86;34407:6;34402:3;34328:86;:::i;:::-;34321:93;;34438:56;34488:5;34438:56;:::i;:::-;34517:7;34548:1;34533:284;34558:6;34555:1;34552:13;34533:284;;;34634:6;34628:13;34661:63;34720:3;34705:13;34661:63;:::i;:::-;34654:70;;34747:60;34800:6;34747:60;:::i;:::-;34737:70;;34593:224;34580:1;34577;34573:9;34568:14;;34533:284;;;34537:14;34833:3;34826:10;;34234:608;;;34110:732;;;;:::o;34848:483::-;35019:4;35057:2;35046:9;35042:18;35034:26;;35070:71;35138:1;35127:9;35123:17;35114:6;35070:71;:::i;:::-;35188:9;35182:4;35178:20;35173:2;35162:9;35158:18;35151:48;35216:108;35319:4;35310:6;35216:108;:::i;:::-;35208:116;;34848:483;;;;;:::o;35337:117::-;35446:1;35443;35436:12;35460:281;35543:27;35565:4;35543:27;:::i;:::-;35535:6;35531:40;35673:6;35661:10;35658:22;35637:18;35625:10;35622:34;35619:62;35616:88;;;35684:18;;:::i;:::-;35616:88;35724:10;35720:2;35713:22;35503:238;35460:281;;:::o;35747:129::-;35781:6;35808:20;;:::i;:::-;35798:30;;35837:33;35865:4;35857:6;35837:33;:::i;:::-;35747:129;;;:::o;35882:311::-;35959:4;36049:18;36041:6;36038:30;36035:56;;;36071:18;;:::i;:::-;36035:56;36121:4;36113:6;36109:17;36101:25;;36181:4;36175;36171:15;36163:23;;35882:311;;;:::o;36199:117::-;36308:1;36305;36298:12;36339:732;36446:5;36471:81;36487:64;36544:6;36487:64;:::i;:::-;36471:81;:::i;:::-;36462:90;;36572:5;36601:6;36594:5;36587:21;36635:4;36628:5;36624:16;36617:23;;36688:4;36680:6;36676:17;36668:6;36664:30;36717:3;36709:6;36706:15;36703:122;;;36736:79;;:::i;:::-;36703:122;36851:6;36834:231;36868:6;36863:3;36860:15;36834:231;;;36943:3;36972:48;37016:3;37004:10;36972:48;:::i;:::-;36967:3;36960:61;37050:4;37045:3;37041:14;37034:21;;36910:155;36894:4;36889:3;36885:14;36878:21;;36834:231;;;36838:21;36452:619;;36339:732;;;;;:::o;37094:385::-;37176:5;37225:3;37218:4;37210:6;37206:17;37202:27;37192:122;;37233:79;;:::i;:::-;37192:122;37343:6;37337:13;37368:105;37469:3;37461:6;37454:4;37446:6;37442:17;37368:105;:::i;:::-;37359:114;;37182:297;37094:385;;;;:::o;37485:554::-;37580:6;37629:2;37617:9;37608:7;37604:23;37600:32;37597:119;;;37635:79;;:::i;:::-;37597:119;37776:1;37765:9;37761:17;37755:24;37806:18;37798:6;37795:30;37792:117;;;37828:79;;:::i;:::-;37792:117;37933:89;38014:7;38005:6;37994:9;37990:22;37933:89;:::i;:::-;37923:99;;37726:306;37485:554;;;;:::o;38045:831::-;38308:4;38346:3;38335:9;38331:19;38323:27;;38360:71;38428:1;38417:9;38413:17;38404:6;38360:71;:::i;:::-;38441:80;38517:2;38506:9;38502:18;38493:6;38441:80;:::i;:::-;38568:9;38562:4;38558:20;38553:2;38542:9;38538:18;38531:48;38596:108;38699:4;38690:6;38596:108;:::i;:::-;38588:116;;38714:72;38782:2;38771:9;38767:18;38758:6;38714:72;:::i;:::-;38796:73;38864:3;38853:9;38849:19;38840:6;38796:73;:::i;:::-;38045:831;;;;;;;;:::o

Swarm Source

ipfs://97f5cf24748346e87b2bd9e4f10d0bce20ab96f2b05fe93f01897601ab4521f7
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.