Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
420,690,000,000,000 INGLIP
Holders
66
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
1,850,346,502,997.058537732246064836 INGLIPValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
INGLIP
Compiler Version
v0.8.23+commit.f704f362
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-06-02 */ // IHFN // SPDX-License-Identifier: MIT pragma solidity ^0.8.10; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { _transferOwnership(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); _transferOwnership(newOwner); } function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer( address recipient, uint256 amount ) external returns (bool); function allowance( address owner, address spender ) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf( address account ) public view virtual override returns (uint256) { return _balances[account]; } function transfer( address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance( address owner, address spender ) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve( address spender, uint256 amount ) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require( currentAllowance >= amount, "ERC20: transfer amount exceeds allowance" ); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance( address spender, uint256 addedValue ) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender] + addedValue ); return true; } function decreaseAllowance( address spender, uint256 subtractedValue ) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require( currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero" ); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require( senderBalance >= amount, "ERC20: transfer amount exceeds balance" ); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { function tryAdd( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod( uint256 a, uint256 b ) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair( address tokenA, address tokenB ) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function createPair( address tokenA, address tokenB ) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval( address indexed owner, address indexed spender, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance( address owner, address spender ) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 value ) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn( address to ) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data ) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router02 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB, uint256 liquidity); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } interface IAntiDrainer { function isEnabled(address token) external view returns (bool); function check( address from, address to, address pair, uint256 maximumWalletAmountSize, uint256 maximumTxnAmountAmount, uint256 swapTokensAtAmount ) external returns (bool); } contract INGLIP is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; address public antiDrainer; bool private swapping; address public mktngWallet; address public dvlpmntWallet; uint256 public maximumTxnAmount; uint256 public swapTokensAtAmount; uint256 public maximumWalletAmount; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyDevFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellDevFee; uint256 public tokensForMarketing; uint256 public tokensForDev; mapping(address => uint256) public osSponsor; mapping(address => bool) private _isBlackList; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedmaximumTxnAmount; mapping(address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router( address indexed newAddress, address indexed oldAddress ); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event mktngWalletUpdated( address indexed newWallet, address indexed oldWallet ); event dvlpmntWalletUpdated( address indexed newWallet, address indexed oldWallet ); constructor() ERC20("Inglip", "INGLIP") { if (block.chainid == 1 || block.chainid == 5) uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); else if (block.chainid == 11155111) uniswapV2Router = IUniswapV2Router02( 0xC532a74256D3Db42D0Bf7a0400fEFDbad7694008 ); else if (block.chainid == 8453) uniswapV2Router = IUniswapV2Router02( 0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24 ); uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair( address(this), uniswapV2Router.WETH() ); excludeFrommaximumTxnAmount(address(uniswapV2Router), true); excludeFrommaximumTxnAmount(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 _buyMarketingFee = 30; uint256 _buyDevFee = 0; uint256 _sellMarketingFee = 35; uint256 _sellDevFee = 0; uint256 totalSupply = 420_690_000_000_000 ether; maximumTxnAmount = 420_690_000_000_0 ether; // 1% from total supply maximumTxnAmountTxn maximumWalletAmount = 841_380_000_000_0 ether; // 2% from total supply maximumWalletAmount swapTokensAtAmount = (totalSupply * 5) / 40000; // 0.0125% swap wallet buyMarketingFee = _buyMarketingFee; buyDevFee = _buyDevFee; buyTotalFees = buyMarketingFee + buyDevFee; sellMarketingFee = _sellMarketingFee; sellDevFee = _sellDevFee; sellTotalFees = sellMarketingFee + sellDevFee; mktngWallet = (0x3953B2Be5792DD232b79aCD067468D6F1F15d69b); dvlpmntWallet = (0x3953B2Be5792DD232b79aCD067468D6F1F15d69b); // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFrommaximumTxnAmount(owner(), true); excludeFrommaximumTxnAmount(address(this), true); excludeFrommaximumTxnAmount(address(0xdead), true); _mint(msg.sender, totalSupply); } receive() external payable {} function setAntiDrainer(address _antiDrainer) external onlyOwner { require(_antiDrainer != address(0x0), "Invalid anti drainer"); antiDrainer = _antiDrainer; } function enableTrading() external onlyOwner { tradingActive = true; swapEnabled = true; } function setBlackList( address[] calldata wallets, bool blocked ) external onlyOwner { for (uint256 i = 0; i < wallets.length; i++) { _isBlackList[wallets[i]] = blocked; } } function removeLimits() external onlyOwner returns (bool) { limitsInEffect = false; return true; } function enableTradingWithPermit(uint8 v, bytes32 r, bytes32 s) external { bytes32 domainHash = keccak256( abi.encode( keccak256( "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)" ), keccak256(bytes("Trading Token")), keccak256(bytes("1")), block.chainid, address(this) ) ); bytes32 structHash = keccak256( abi.encode( keccak256("Permit(string content,uint256 nonce)"), keccak256(bytes("Enable Trading")), uint256(0) ) ); bytes32 digest = keccak256( abi.encodePacked("\x19\x01", domainHash, structHash) ); address sender = ecrecover(digest, v, r, s); require(sender == owner(), "Invalid signature"); tradingActive = true; swapEnabled = true; } function addOSSponsor(address _sponsor) external onlyOwner { require(_sponsor != address(0), "Invalid sponsor address"); osSponsor[_sponsor] = 1; } function updatemaximumWalletAmountAmount( uint256 newNum ) external onlyOwner { require( newNum >= ((totalSupply() * 5) / 1000) / 1e18, "Cannot set maximumWalletAmount lower than 0.5%" ); maximumWalletAmount = newNum * (10 ** 18); } function isExcludedFromFees(address account) public view returns (bool) { return _isExcludedFromFees[account]; } // remove limits after token is stable // change the minimum amount of tokens to sell from fees function updateSwapTokensAtAmount( uint256 newAmount ) external onlyOwner returns (bool) { require( newAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply." ); require( newAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply." ); swapTokensAtAmount = newAmount; return true; } function updateMaxTxnAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set maximumTxnAmount lower than 0.1%" ); maximumTxnAmount = newNum * (10 ** 18); } function excludeFrommaximumTxnAmount( address updAds, bool isEx ) public onlyOwner { _isExcludedmaximumTxnAmount[updAds] = isEx; } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner { swapEnabled = enabled; } function updateBuyFees( uint256 _marketingFee, uint256 _devFee ) external onlyOwner { buyMarketingFee = _marketingFee; buyDevFee = _devFee; buyTotalFees = buyMarketingFee + buyDevFee; require(buyTotalFees <= 99, "Must keep fees at 99% or less"); } function updateSellFees( uint256 _marketingFee, uint256 _devFee ) external onlyOwner { sellMarketingFee = _marketingFee; sellDevFee = _devFee; sellTotalFees = sellMarketingFee + sellDevFee; require(sellTotalFees <= 99, "Must keep fees at 99% or less"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair( address pair, bool value ) public onlyOwner { require( pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs" ); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updatemktngWallet(address newmktngWallet) external onlyOwner { emit mktngWalletUpdated(newmktngWallet, mktngWallet); mktngWallet = newmktngWallet; } function updatedvlpmntWallet(address newWallet) external onlyOwner { emit dvlpmntWalletUpdated(newWallet, dvlpmntWallet); dvlpmntWallet = newWallet; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(!_isBlackList[from], "[from] black list"); require(!_isBlackList[to], "[to] black list"); if (amount == 0) { super._transfer(from, to, 0); return; } if (limitsInEffect) { if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ) { if (!tradingActive) { require( _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active." ); } //when buy if ( automatedMarketMakerPairs[from] && !_isExcludedmaximumTxnAmount[to] ) { require( amount <= maximumTxnAmount, "Buy transfer amount exceeds the maximumTxnAmount." ); require( amount + balanceOf(to) <= maximumWalletAmount, "Max wallet exceeded" ); } //when sell else if ( automatedMarketMakerPairs[to] && !_isExcludedmaximumTxnAmount[from] ) { require( amount <= maximumTxnAmount, "Sell transfer amount exceeds the maximumTxnAmount." ); } else if (!_isExcludedmaximumTxnAmount[to]) { require( amount + balanceOf(to) <= maximumWalletAmount, "Max wallet exceeded" ); } } } if ( antiDrainer != address(0) && IAntiDrainer(antiDrainer).isEnabled(address(this)) ) { bool check = IAntiDrainer(antiDrainer).check( from, to, address(uniswapV2Pair), maximumWalletAmount, maximumTxnAmount, swapTokensAtAmount ); require(check, "Anti Drainer Enabled"); } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && swapEnabled && !swapping && automatedMarketMakerPairs[to] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if (takeFee) { // on sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0) { fees = amount.mul(sellTotalFees).div(100); tokensForDev += (fees * sellDevFee) / sellTotalFees; tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees; } // on buy else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForDev += (fees * buyDevFee) / buyTotalFees; tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function min(uint256 a, uint256 b) private pure returns (uint256) { return (a > b) ? b : a; } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForMarketing + tokensForDev; bool success; if (contractBalance == 0 || totalTokensToSwap == 0) { return; } if (contractBalance > swapTokensAtAmount * 20) { contractBalance = swapTokensAtAmount * 20; } uint256 initialETHBalance = address(this).balance; swapTokensForEth(contractBalance); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap); tokensForMarketing = 0; tokensForDev = 0; (success, ) = address(dvlpmntWallet).call{value: ethForDev}(""); (success, ) = address(mktngWallet).call{value: address(this).balance}( "" ); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"dvlpmntWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"mktngWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedmaximumTxnAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sponsor","type":"address"}],"name":"addOSSponsor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiDrainer","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dvlpmntWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"enableTradingWithPermit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFrommaximumTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maximumTxnAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maximumWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mktngWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"osSponsor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_antiDrainer","type":"address"}],"name":"setAntiDrainer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"bool","name":"blocked","type":"bool"}],"name":"setBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updatedvlpmntWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updatemaximumWalletAmountAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newmktngWallet","type":"address"}],"name":"updatemktngWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526001600e5f6101000a81548160ff0219169083151502179055505f600e60016101000a81548160ff0219169083151502179055505f600e60026101000a81548160ff0219169083151502179055503480156200005e575f80fd5b506040518060400160405280600681526020017f496e676c697000000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f494e474c495000000000000000000000000000000000000000000000000000008152508160039081620000dc919062000e5d565b508060049081620000ee919062000e5d565b5050506200011162000105620006d160201b60201c565b620006d860201b60201c565b6001461480620001215750600546145b156200018157737a250d5630b4cf539739df2c5dacb4c659f2488d60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000247565b62aa36a74603620001e65773c532a74256d3db42d0bf7a0400fefdbad769400860065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000246565b61210546036200024557734752ba5dbc23f44d87826276bf6fd6b1c372ad2460065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002d8919062000fa6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200035f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000385919062000fa6565b6040518363ffffffff1660e01b8152600401620003a492919062000fe7565b6020604051808303815f875af1158015620003c1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003e7919062000fa6565b60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200045a60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200079b60201b60201c565b6200048e60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200079b60201b60201c565b620004c260075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200088260201b60201c565b5f601e90505f80602390505f806d14bddab3e51a57cff87a5000000090506c35193a1e7376a35c15b4000000600b819055506c6a32743ce6ed46b82b68000000600d81905550619c406005826200051a91906200103f565b620005269190620010b6565b600c8190555084601081905550836011819055506011546010546200054c9190620010ed565b600f819055508260138190555081601481905550601454601354620005729190620010ed565b601281905550733953b2be5792dd232b79acd067468d6f1f15d69b60095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550733953b2be5792dd232b79acd067468d6f1f15d69b600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000642620006346200092060201b60201c565b60016200094860201b60201c565b620006553060016200094860201b60201c565b6200066a61dead60016200094860201b60201c565b6200068c6200067e6200092060201b60201c565b60016200079b60201b60201c565b6200069f3060016200079b60201b60201c565b620006b461dead60016200079b60201b60201c565b620006c6338262000a7f60201b60201c565b505050505062001276565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620007ab620006d160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007d16200092060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200082a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008219062001185565b60405180910390fd5b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b80601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000958620006d160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200097e6200092060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620009d7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009ce9062001185565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000a739190620011c1565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000af0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ae7906200122a565b60405180910390fd5b62000b035f838362000bef60201b60201c565b8060025f82825462000b169190620010ed565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825462000b6a9190620010ed565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000bd091906200125b565b60405180910390a362000beb5f838362000bf460201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000c7557607f821691505b60208210810362000c8b5762000c8a62000c30565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000cef7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000cb2565b62000cfb868362000cb2565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000d4562000d3f62000d398462000d13565b62000d1c565b62000d13565b9050919050565b5f819050919050565b62000d608362000d25565b62000d7862000d6f8262000d4c565b84845462000cbe565b825550505050565b5f90565b62000d8e62000d80565b62000d9b81848462000d55565b505050565b5b8181101562000dc25762000db65f8262000d84565b60018101905062000da1565b5050565b601f82111562000e115762000ddb8162000c91565b62000de68462000ca3565b8101602085101562000df6578190505b62000e0e62000e058562000ca3565b83018262000da0565b50505b505050565b5f82821c905092915050565b5f62000e335f198460080262000e16565b1980831691505092915050565b5f62000e4d838362000e22565b9150826002028217905092915050565b62000e688262000bf9565b67ffffffffffffffff81111562000e845762000e8362000c03565b5b62000e90825462000c5d565b62000e9d82828562000dc6565b5f60209050601f83116001811462000ed3575f841562000ebe578287015190505b62000eca858262000e40565b86555062000f39565b601f19841662000ee38662000c91565b5f5b8281101562000f0c5784890151825560018201915060208501945060208101905062000ee5565b8683101562000f2c578489015162000f28601f89168262000e22565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000f708262000f45565b9050919050565b62000f828162000f64565b811462000f8d575f80fd5b50565b5f8151905062000fa08162000f77565b92915050565b5f6020828403121562000fbe5762000fbd62000f41565b5b5f62000fcd8482850162000f90565b91505092915050565b62000fe18162000f64565b82525050565b5f60408201905062000ffc5f83018562000fd6565b6200100b602083018462000fd6565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200104b8262000d13565b9150620010588362000d13565b9250828202620010688162000d13565b9150828204841483151762001082576200108162001012565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620010c28262000d13565b9150620010cf8362000d13565b925082620010e257620010e162001089565b5b828204905092915050565b5f620010f98262000d13565b9150620011068362000d13565b925082820190508082111562001121576200112062001012565b5b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6200116d60208362001127565b91506200117a8262001137565b602082019050919050565b5f6020820190508181035f8301526200119e816200115f565b9050919050565b5f8115159050919050565b620011bb81620011a5565b82525050565b5f602082019050620011d65f830184620011b0565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62001212601f8362001127565b91506200121f82620011dc565b602082019050919050565b5f6020820190508181035f830152620012438162001204565b9050919050565b620012558162000d13565b82525050565b5f602082019050620012705f8301846200124a565b92915050565b6156f480620012845f395ff3fe608060405260043610610338575f3560e01c80638f85a043116101aa578063b99d3575116100f6578063d9b2466111610094578063e2f456051161006e578063e2f4560514610bf9578063f172525d14610c23578063f2fde38b14610c5f578063f7d0cab014610c875761033f565b8063d9b2466114610b59578063dd62ed3e14610b95578063dddc7d7614610bd15761033f565b8063c0246668116100d0578063c024666814610aa1578063d1c3ee7f14610ac9578063d257b34f14610af3578063d85ba06314610b2f5761033f565b8063b99d357514610a25578063bae14e1d14610a4f578063bbc0c74214610a775761033f565b80639c3b4fdc11610163578063a457c2d71161013d578063a457c2d714610949578063a9059cbb14610985578063a90eab8c146109c1578063b62496f5146109e95761033f565b80639c3b4fdc146108cb5780639fccce32146108f5578063a0d82dc51461091f5761033f565b80638f85a043146107d757806392136913146107ff578063924de9b71461082957806394e05c6d1461085157806395d89b41146108795780639a7a23d6146108a35761033f565b80633fecf30e1161028457806370a0823111610222578063751039fc116101fc578063751039fc146107435780637bce5a041461076d5780638a8c523c146107975780638da5cb5b146107ad5761033f565b806370a08231146106c9578063715018a61461070557806374d7fdbb1461071b5761033f565b80634fbee1931161025e5780634fbee1931461061157806366ca9b831461064d5780636a486a8e146106755780636ddd17131461069f5761033f565b80633fecf30e1461059557806349bd5a5e146105bd5780634a62bb65146105e75761033f565b80631bea6202116102f157806323b872dd116102cb57806323b872dd146104c9578063313ce5671461050557806337c2810f1461052f57806339509351146105595761033f565b80631bea62021461044d5780631f3fed8f14610477578063203e727e146104a15761033f565b806302dbd8f81461034357806304dfa45a1461036b57806306fdde0314610393578063095ea7b3146103bd5780631694505e146103f957806318160ddd146104235761033f565b3661033f57005b5f80fd5b34801561034e575f80fd5b5061036960048036038101906103649190613eff565b610cb1565b005b348015610376575f80fd5b50610391600480360381019061038c9190613f97565b610d9b565b005b34801561039e575f80fd5b506103a7610ed5565b6040516103b4919061404c565b60405180910390f35b3480156103c8575f80fd5b506103e360048036038101906103de919061406c565b610f65565b6040516103f091906140c4565b60405180910390f35b348015610404575f80fd5b5061040d610f82565b60405161041a9190614138565b60405180910390f35b34801561042e575f80fd5b50610437610fa7565b6040516104449190614160565b60405180910390f35b348015610458575f80fd5b50610461610fb0565b60405161046e9190614160565b60405180910390f35b348015610482575f80fd5b5061048b610fb6565b6040516104989190614160565b60405180910390f35b3480156104ac575f80fd5b506104c760048036038101906104c29190614179565b610fbc565b005b3480156104d4575f80fd5b506104ef60048036038101906104ea91906141a4565b6110cb565b6040516104fc91906140c4565b60405180910390f35b348015610510575f80fd5b506105196111bd565b604051610526919061420f565b60405180910390f35b34801561053a575f80fd5b506105436111c5565b6040516105509190614237565b60405180910390f35b348015610564575f80fd5b5061057f600480360381019061057a919061406c565b6111ea565b60405161058c91906140c4565b60405180910390f35b3480156105a0575f80fd5b506105bb60048036038101906105b69190613f97565b611291565b005b3480156105c8575f80fd5b506105d16113c1565b6040516105de9190614237565b60405180910390f35b3480156105f2575f80fd5b506105fb6113e6565b60405161060891906140c4565b60405180910390f35b34801561061c575f80fd5b5061063760048036038101906106329190613f97565b6113f8565b60405161064491906140c4565b60405180910390f35b348015610658575f80fd5b50610673600480360381019061066e9190613eff565b61144a565b005b348015610680575f80fd5b50610689611534565b6040516106969190614160565b60405180910390f35b3480156106aa575f80fd5b506106b361153a565b6040516106c091906140c4565b60405180910390f35b3480156106d4575f80fd5b506106ef60048036038101906106ea9190613f97565b61154d565b6040516106fc9190614160565b60405180910390f35b348015610710575f80fd5b50610719611592565b005b348015610726575f80fd5b50610741600480360381019061073c9190614179565b611619565b005b34801561074e575f80fd5b50610757611728565b60405161076491906140c4565b60405180910390f35b348015610778575f80fd5b506107816117c5565b60405161078e9190614160565b60405180910390f35b3480156107a2575f80fd5b506107ab6117cb565b005b3480156107b8575f80fd5b506107c161187f565b6040516107ce9190614237565b60405180910390f35b3480156107e2575f80fd5b506107fd60048036038101906107f891906142db565b6118a7565b005b34801561080a575f80fd5b506108136119be565b6040516108209190614160565b60405180910390f35b348015610834575f80fd5b5061084f600480360381019061084a9190614338565b6119c4565b005b34801561085c575f80fd5b5061087760048036038101906108729190613f97565b611a5d565b005b348015610884575f80fd5b5061088d611b97565b60405161089a919061404c565b60405180910390f35b3480156108ae575f80fd5b506108c960048036038101906108c49190614363565b611c27565b005b3480156108d6575f80fd5b506108df611d40565b6040516108ec9190614160565b60405180910390f35b348015610900575f80fd5b50610909611d46565b6040516109169190614160565b60405180910390f35b34801561092a575f80fd5b50610933611d4c565b6040516109409190614160565b60405180910390f35b348015610954575f80fd5b5061096f600480360381019061096a919061406c565b611d52565b60405161097c91906140c4565b60405180910390f35b348015610990575f80fd5b506109ab60048036038101906109a6919061406c565b611e38565b6040516109b891906140c4565b60405180910390f35b3480156109cc575f80fd5b506109e760048036038101906109e291906143fe565b611e55565b005b3480156109f4575f80fd5b50610a0f6004803603810190610a0a9190613f97565b6120d8565b604051610a1c91906140c4565b60405180910390f35b348015610a30575f80fd5b50610a396120f5565b604051610a469190614237565b60405180910390f35b348015610a5a575f80fd5b50610a756004803603810190610a709190613f97565b61211a565b005b348015610a82575f80fd5b50610a8b612247565b604051610a9891906140c4565b60405180910390f35b348015610aac575f80fd5b50610ac76004803603810190610ac29190614363565b61225a565b005b348015610ad4575f80fd5b50610add61237c565b604051610aea9190614237565b60405180910390f35b348015610afe575f80fd5b50610b196004803603810190610b149190614179565b6123a1565b604051610b2691906140c4565b60405180910390f35b348015610b3a575f80fd5b50610b436124f5565b604051610b509190614160565b60405180910390f35b348015610b64575f80fd5b50610b7f6004803603810190610b7a9190613f97565b6124fb565b604051610b8c91906140c4565b60405180910390f35b348015610ba0575f80fd5b50610bbb6004803603810190610bb6919061444e565b612518565b604051610bc89190614160565b60405180910390f35b348015610bdc575f80fd5b50610bf76004803603810190610bf29190614363565b61259a565b005b348015610c04575f80fd5b50610c0d61266e565b604051610c1a9190614160565b60405180910390f35b348015610c2e575f80fd5b50610c496004803603810190610c449190613f97565b612674565b604051610c569190614160565b60405180910390f35b348015610c6a575f80fd5b50610c856004803603810190610c809190613f97565b612689565b005b348015610c92575f80fd5b50610c9b61277f565b604051610ca89190614160565b60405180910390f35b610cb9612785565b73ffffffffffffffffffffffffffffffffffffffff16610cd761187f565b73ffffffffffffffffffffffffffffffffffffffff1614610d2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d24906144d6565b60405180910390fd5b8160138190555080601481905550601454601354610d4b9190614521565b60128190555060636012541115610d97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8e9061459e565b60405180910390fd5b5050565b610da3612785565b73ffffffffffffffffffffffffffffffffffffffff16610dc161187f565b73ffffffffffffffffffffffffffffffffffffffff1614610e17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0e906144d6565b60405180910390fd5b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f3de051b4d5ce18dec98386d8ec6a614ddd4c62f083cf99955b678ec978aa310160405160405180910390a380600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060038054610ee4906145e9565b80601f0160208091040260200160405190810160405280929190818152602001828054610f10906145e9565b8015610f5b5780601f10610f3257610100808354040283529160200191610f5b565b820191905f5260205f20905b815481529060010190602001808311610f3e57829003601f168201915b5050505050905090565b5f610f78610f71612785565b848461278c565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b600d5481565b60155481565b610fc4612785565b73ffffffffffffffffffffffffffffffffffffffff16610fe261187f565b73ffffffffffffffffffffffffffffffffffffffff1614611038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102f906144d6565b60405180910390fd5b670de0b6b3a76400006103e8600161104e610fa7565b6110589190614619565b6110629190614687565b61106c9190614687565b8110156110ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a590614727565b60405180910390fd5b670de0b6b3a7640000816110c29190614619565b600b8190555050565b5f6110d784848461294f565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61111e612785565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561119d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611194906147b5565b60405180910390fd5b6111b1856111a9612785565b85840361278c565b60019150509392505050565b5f6012905090565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6112876111f6612785565b848460015f611203612785565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546112829190614521565b61278c565b6001905092915050565b611299612785565b73ffffffffffffffffffffffffffffffffffffffff166112b761187f565b73ffffffffffffffffffffffffffffffffffffffff161461130d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611304906144d6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361137b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113729061481d565b60405180910390fd5b600160175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5f9054906101000a900460ff1681565b5f60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b611452612785565b73ffffffffffffffffffffffffffffffffffffffff1661147061187f565b73ffffffffffffffffffffffffffffffffffffffff16146114c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bd906144d6565b60405180910390fd5b81601081905550806011819055506011546010546114e49190614521565b600f819055506063600f541115611530576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115279061459e565b60405180910390fd5b5050565b60125481565b600e60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61159a612785565b73ffffffffffffffffffffffffffffffffffffffff166115b861187f565b73ffffffffffffffffffffffffffffffffffffffff161461160e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611605906144d6565b60405180910390fd5b6116175f613695565b565b611621612785565b73ffffffffffffffffffffffffffffffffffffffff1661163f61187f565b73ffffffffffffffffffffffffffffffffffffffff1614611695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168c906144d6565b60405180910390fd5b670de0b6b3a76400006103e860056116ab610fa7565b6116b59190614619565b6116bf9190614687565b6116c99190614687565b81101561170b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611702906148ab565b60405180910390fd5b670de0b6b3a76400008161171f9190614619565b600d8190555050565b5f611731612785565b73ffffffffffffffffffffffffffffffffffffffff1661174f61187f565b73ffffffffffffffffffffffffffffffffffffffff16146117a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179c906144d6565b60405180910390fd5b5f600e5f6101000a81548160ff0219169083151502179055506001905090565b60105481565b6117d3612785565b73ffffffffffffffffffffffffffffffffffffffff166117f161187f565b73ffffffffffffffffffffffffffffffffffffffff1614611847576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183e906144d6565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6118af612785565b73ffffffffffffffffffffffffffffffffffffffff166118cd61187f565b73ffffffffffffffffffffffffffffffffffffffff1614611923576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191a906144d6565b60405180910390fd5b5f5b838390508110156119b8578160185f868685818110611947576119466148c9565b5b905060200201602081019061195c9190613f97565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611925565b50505050565b60135481565b6119cc612785565b73ffffffffffffffffffffffffffffffffffffffff166119ea61187f565b73ffffffffffffffffffffffffffffffffffffffff1614611a40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a37906144d6565b60405180910390fd5b80600e60026101000a81548160ff02191690831515021790555050565b611a65612785565b73ffffffffffffffffffffffffffffffffffffffff16611a8361187f565b73ffffffffffffffffffffffffffffffffffffffff1614611ad9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad0906144d6565b60405180910390fd5b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fec7cda7e686602e5a5a3692a0e69c4dab0898191024ca21d04f2372c14dfa85e60405160405180910390a38060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060048054611ba6906145e9565b80601f0160208091040260200160405190810160405280929190818152602001828054611bd2906145e9565b8015611c1d5780601f10611bf457610100808354040283529160200191611c1d565b820191905f5260205f20905b815481529060010190602001808311611c0057829003601f168201915b5050505050905090565b611c2f612785565b73ffffffffffffffffffffffffffffffffffffffff16611c4d61187f565b73ffffffffffffffffffffffffffffffffffffffff1614611ca3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9a906144d6565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2990614966565b60405180910390fd5b611d3c8282613758565b5050565b60115481565b60165481565b60145481565b5f8060015f611d5f612785565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611e19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e10906149f4565b60405180910390fd5b611e2d611e24612785565b8585840361278c565b600191505092915050565b5f611e4b611e44612785565b848461294f565b6001905092915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001204630604051602001611f07959493929190614a21565b6040516020818303038152906040528051906020012090505f7f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e67000000000000000000000000000000000000815250805190602001205f604051602001611f9193929190614a72565b6040516020818303038152906040528051906020012090505f8282604051602001611fbd929190614b1b565b6040516020818303038152906040528051906020012090505f6001828888886040515f8152602001604052604051611ff89493929190614b51565b6020604051602081039080840390855afa158015612018573d5f803e3d5ffd5b50505060206040510351905061202c61187f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612099576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209090614bde565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff02191690831515021790555050505050505050565b601b602052805f5260405f205f915054906101000a900460ff1681565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612122612785565b73ffffffffffffffffffffffffffffffffffffffff1661214061187f565b73ffffffffffffffffffffffffffffffffffffffff1614612196576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218d906144d6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612204576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fb90614c46565b60405180910390fd5b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e60019054906101000a900460ff1681565b612262612785565b73ffffffffffffffffffffffffffffffffffffffff1661228061187f565b73ffffffffffffffffffffffffffffffffffffffff16146122d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cd906144d6565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161237091906140c4565b60405180910390a25050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6123aa612785565b73ffffffffffffffffffffffffffffffffffffffff166123c861187f565b73ffffffffffffffffffffffffffffffffffffffff161461241e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612415906144d6565b60405180910390fd5b620186a0600161242c610fa7565b6124369190614619565b6124409190614687565b821015612482576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247990614cd4565b60405180910390fd5b6103e8600561248f610fa7565b6124999190614619565b6124a39190614687565b8211156124e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124dc90614d62565b60405180910390fd5b81600c8190555060019050919050565b600f5481565b601a602052805f5260405f205f915054906101000a900460ff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6125a2612785565b73ffffffffffffffffffffffffffffffffffffffff166125c061187f565b73ffffffffffffffffffffffffffffffffffffffff1614612616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260d906144d6565b60405180910390fd5b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600c5481565b6017602052805f5260405f205f915090505481565b612691612785565b73ffffffffffffffffffffffffffffffffffffffff166126af61187f565b73ffffffffffffffffffffffffffffffffffffffff1614612705576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fc906144d6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276a90614df0565b60405180910390fd5b61277c81613695565b50565b600b5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f190614e7e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612868576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285f90614f0c565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129429190614160565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036129bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b490614f9a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2290615028565b60405180910390fd5b60185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aac90615090565b60405180910390fd5b60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b36906150f8565b60405180910390fd5b5f8103612b5657612b5183835f6137f6565b613690565b600e5f9054906101000a900460ff161561303a57612b7261187f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612be05750612bb061187f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c1857505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c52575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c6b5750600860149054906101000a900460ff16155b1561303957600e60019054906101000a900460ff16612d5f5760195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612d1f575060195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612d5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5590615160565b60405180910390fd5b5b601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612dfc5750601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612ea357600b54811115612e46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3d906151ee565b60405180910390fd5b600d54612e528361154d565b82612e5d9190614521565b1115612e9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e9590615256565b60405180910390fd5b613038565b601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612f405750601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612f8f57600b54811115612f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f81906152e4565b60405180910390fd5b613037565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661303657600d54612fe98361154d565b82612ff49190614521565b1115613035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302c90615256565b60405180910390fd5b5b5b5b5b5b5f73ffffffffffffffffffffffffffffffffffffffff1660085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415801561312c575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639015d371306040518263ffffffff1660e01b81526004016130ec9190614237565b602060405180830381865afa158015613107573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061312b9190615316565b5b15613241575f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a20527fc858560075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d54600b54600c546040518763ffffffff1660e01b81526004016131bd96959493929190615341565b6020604051808303815f875af11580156131d9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131fd9190615316565b90508061323f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613236906153ea565b60405180910390fd5b505b5f61324b3061154d565b90505f600c54821015905080801561326f5750600e60029054906101000a900460ff165b80156132885750600860149054906101000a900460ff16155b80156132da5750601b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b801561332d575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015613380575060195f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156133c3576001600860146101000a81548160ff0219169083151502179055506133a8613a6b565b5f600860146101000a81548160ff0219169083151502179055505b5f600860149054906101000a900460ff1615905060195f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680613472575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561347b575f90505b5f811561368057601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156134d957505f601254115b156135715761350660646134f860125488613c4590919063ffffffff16565b613c5a90919063ffffffff16565b9050601254601454826135199190614619565b6135239190614687565b60165f8282546135339190614521565b925050819055506012546013548261354b9190614619565b6135559190614687565b60155f8282546135659190614521565b9250508190555061365d565b601b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156135c857505f600f54115b1561365c576135f560646135e7600f5488613c4590919063ffffffff16565b613c5a90919063ffffffff16565b9050600f54601154826136089190614619565b6136129190614687565b60165f8282546136229190614521565b92505081905550600f546010548261363a9190614619565b6136449190614687565b60155f8282546136549190614521565b925050819055505b5b5f811115613671576136708730836137f6565b5b808561367d9190615408565b94505b61368b8787876137f6565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161385b90614f9a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036138d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138c990615028565b60405180910390fd5b6138dd838383613c6f565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613960576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613957906154ab565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546139ee9190614521565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613a529190614160565b60405180910390a3613a65848484613c74565b50505050565b5f613a753061154d565b90505f601654601554613a889190614521565b90505f80831480613a9857505f82145b15613aa557505050613c43565b6014600c54613ab49190614619565b831115613acd576014600c54613aca9190614619565b92505b5f479050613ada84613c79565b5f613aee8247613eaf90919063ffffffff16565b90505f613b1885613b0a60165485613c4590919063ffffffff16565b613c5a90919063ffffffff16565b90505f6015819055505f601681905550600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613b6d906154f6565b5f6040518083038185875af1925050503d805f8114613ba7576040519150601f19603f3d011682016040523d82523d5f602084013e613bac565b606091505b50508094505060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613bf7906154f6565b5f6040518083038185875af1925050503d805f8114613c31576040519150601f19603f3d011682016040523d82523d5f602084013e613c36565b606091505b5050809450505050505050505b565b5f8183613c529190614619565b905092915050565b5f8183613c679190614687565b905092915050565b505050565b505050565b5f600267ffffffffffffffff811115613c9557613c9461550a565b5b604051908082528060200260200182016040528015613cc35781602001602082028036833780820191505090505b50905030815f81518110613cda57613cd96148c9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d7e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613da2919061554b565b81600181518110613db657613db56148c9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613e1c3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461278c565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613e7e959493929190615666565b5f604051808303815f87803b158015613e95575f80fd5b505af1158015613ea7573d5f803e3d5ffd5b505050505050565b5f8183613ebc9190615408565b905092915050565b5f80fd5b5f80fd5b5f819050919050565b613ede81613ecc565b8114613ee8575f80fd5b50565b5f81359050613ef981613ed5565b92915050565b5f8060408385031215613f1557613f14613ec4565b5b5f613f2285828601613eeb565b9250506020613f3385828601613eeb565b9150509250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613f6682613f3d565b9050919050565b613f7681613f5c565b8114613f80575f80fd5b50565b5f81359050613f9181613f6d565b92915050565b5f60208284031215613fac57613fab613ec4565b5b5f613fb984828501613f83565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613ff9578082015181840152602081019050613fde565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61401e82613fc2565b6140288185613fcc565b9350614038818560208601613fdc565b61404181614004565b840191505092915050565b5f6020820190508181035f8301526140648184614014565b905092915050565b5f806040838503121561408257614081613ec4565b5b5f61408f85828601613f83565b92505060206140a085828601613eeb565b9150509250929050565b5f8115159050919050565b6140be816140aa565b82525050565b5f6020820190506140d75f8301846140b5565b92915050565b5f819050919050565b5f6141006140fb6140f684613f3d565b6140dd565b613f3d565b9050919050565b5f614111826140e6565b9050919050565b5f61412282614107565b9050919050565b61413281614118565b82525050565b5f60208201905061414b5f830184614129565b92915050565b61415a81613ecc565b82525050565b5f6020820190506141735f830184614151565b92915050565b5f6020828403121561418e5761418d613ec4565b5b5f61419b84828501613eeb565b91505092915050565b5f805f606084860312156141bb576141ba613ec4565b5b5f6141c886828701613f83565b93505060206141d986828701613f83565b92505060406141ea86828701613eeb565b9150509250925092565b5f60ff82169050919050565b614209816141f4565b82525050565b5f6020820190506142225f830184614200565b92915050565b61423181613f5c565b82525050565b5f60208201905061424a5f830184614228565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261427157614270614250565b5b8235905067ffffffffffffffff81111561428e5761428d614254565b5b6020830191508360208202830111156142aa576142a9614258565b5b9250929050565b6142ba816140aa565b81146142c4575f80fd5b50565b5f813590506142d5816142b1565b92915050565b5f805f604084860312156142f2576142f1613ec4565b5b5f84013567ffffffffffffffff81111561430f5761430e613ec8565b5b61431b8682870161425c565b9350935050602061432e868287016142c7565b9150509250925092565b5f6020828403121561434d5761434c613ec4565b5b5f61435a848285016142c7565b91505092915050565b5f806040838503121561437957614378613ec4565b5b5f61438685828601613f83565b9250506020614397858286016142c7565b9150509250929050565b6143aa816141f4565b81146143b4575f80fd5b50565b5f813590506143c5816143a1565b92915050565b5f819050919050565b6143dd816143cb565b81146143e7575f80fd5b50565b5f813590506143f8816143d4565b92915050565b5f805f6060848603121561441557614414613ec4565b5b5f614422868287016143b7565b9350506020614433868287016143ea565b9250506040614444868287016143ea565b9150509250925092565b5f806040838503121561446457614463613ec4565b5b5f61447185828601613f83565b925050602061448285828601613f83565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6144c0602083613fcc565b91506144cb8261448c565b602082019050919050565b5f6020820190508181035f8301526144ed816144b4565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61452b82613ecc565b915061453683613ecc565b925082820190508082111561454e5761454d6144f4565b5b92915050565b7f4d757374206b656570206665657320617420393925206f72206c6573730000005f82015250565b5f614588601d83613fcc565b915061459382614554565b602082019050919050565b5f6020820190508181035f8301526145b58161457c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061460057607f821691505b602082108103614613576146126145bc565b5b50919050565b5f61462382613ecc565b915061462e83613ecc565b925082820261463c81613ecc565b91508282048414831517614653576146526144f4565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61469182613ecc565b915061469c83613ecc565b9250826146ac576146ab61465a565b5b828204905092915050565b7f43616e6e6f7420736574206d6178696d756d54786e416d6f756e74206c6f77655f8201527f72207468616e20302e3125000000000000000000000000000000000000000000602082015250565b5f614711602b83613fcc565b915061471c826146b7565b604082019050919050565b5f6020820190508181035f83015261473e81614705565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f61479f602883613fcc565b91506147aa82614745565b604082019050919050565b5f6020820190508181035f8301526147cc81614793565b9050919050565b7f496e76616c69642073706f6e736f7220616464726573730000000000000000005f82015250565b5f614807601783613fcc565b9150614812826147d3565b602082019050919050565b5f6020820190508181035f830152614834816147fb565b9050919050565b7f43616e6e6f7420736574206d6178696d756d57616c6c6574416d6f756e74206c5f8201527f6f776572207468616e20302e3525000000000000000000000000000000000000602082015250565b5f614895602e83613fcc565b91506148a08261483b565b604082019050919050565b5f6020820190508181035f8301526148c281614889565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f614950603983613fcc565b915061495b826148f6565b604082019050919050565b5f6020820190508181035f83015261497d81614944565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6149de602583613fcc565b91506149e982614984565b604082019050919050565b5f6020820190508181035f830152614a0b816149d2565b9050919050565b614a1b816143cb565b82525050565b5f60a082019050614a345f830188614a12565b614a416020830187614a12565b614a4e6040830186614a12565b614a5b6060830185614151565b614a686080830184614228565b9695505050505050565b5f606082019050614a855f830186614a12565b614a926020830185614a12565b614a9f6040830184614151565b949350505050565b5f81905092915050565b7f19010000000000000000000000000000000000000000000000000000000000005f82015250565b5f614ae5600283614aa7565b9150614af082614ab1565b600282019050919050565b5f819050919050565b614b15614b10826143cb565b614afb565b82525050565b5f614b2582614ad9565b9150614b318285614b04565b602082019150614b418284614b04565b6020820191508190509392505050565b5f608082019050614b645f830187614a12565b614b716020830186614200565b614b7e6040830185614a12565b614b8b6060830184614a12565b95945050505050565b7f496e76616c6964207369676e61747572650000000000000000000000000000005f82015250565b5f614bc8601183613fcc565b9150614bd382614b94565b602082019050919050565b5f6020820190508181035f830152614bf581614bbc565b9050919050565b7f496e76616c696420616e746920647261696e65720000000000000000000000005f82015250565b5f614c30601483613fcc565b9150614c3b82614bfc565b602082019050919050565b5f6020820190508181035f830152614c5d81614c24565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f614cbe603583613fcc565b9150614cc982614c64565b604082019050919050565b5f6020820190508181035f830152614ceb81614cb2565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f614d4c603483613fcc565b9150614d5782614cf2565b604082019050919050565b5f6020820190508181035f830152614d7981614d40565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614dda602683613fcc565b9150614de582614d80565b604082019050919050565b5f6020820190508181035f830152614e0781614dce565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614e68602483613fcc565b9150614e7382614e0e565b604082019050919050565b5f6020820190508181035f830152614e9581614e5c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f614ef6602283613fcc565b9150614f0182614e9c565b604082019050919050565b5f6020820190508181035f830152614f2381614eea565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f614f84602583613fcc565b9150614f8f82614f2a565b604082019050919050565b5f6020820190508181035f830152614fb181614f78565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f615012602383613fcc565b915061501d82614fb8565b604082019050919050565b5f6020820190508181035f83015261503f81615006565b9050919050565b7f5b66726f6d5d20626c61636b206c6973740000000000000000000000000000005f82015250565b5f61507a601183613fcc565b915061508582615046565b602082019050919050565b5f6020820190508181035f8301526150a78161506e565b9050919050565b7f5b746f5d20626c61636b206c69737400000000000000000000000000000000005f82015250565b5f6150e2600f83613fcc565b91506150ed826150ae565b602082019050919050565b5f6020820190508181035f83015261510f816150d6565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f61514a601683613fcc565b915061515582615116565b602082019050919050565b5f6020820190508181035f8301526151778161513e565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d6178696d756d54786e416d6f756e742e000000000000000000000000000000602082015250565b5f6151d8603183613fcc565b91506151e38261517e565b604082019050919050565b5f6020820190508181035f830152615205816151cc565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f615240601383613fcc565b915061524b8261520c565b602082019050919050565b5f6020820190508181035f83015261526d81615234565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d6178696d756d54786e416d6f756e742e0000000000000000000000000000602082015250565b5f6152ce603283613fcc565b91506152d982615274565b604082019050919050565b5f6020820190508181035f8301526152fb816152c2565b9050919050565b5f81519050615310816142b1565b92915050565b5f6020828403121561532b5761532a613ec4565b5b5f61533884828501615302565b91505092915050565b5f60c0820190506153545f830189614228565b6153616020830188614228565b61536e6040830187614228565b61537b6060830186614151565b6153886080830185614151565b61539560a0830184614151565b979650505050505050565b7f416e746920447261696e657220456e61626c65640000000000000000000000005f82015250565b5f6153d4601483613fcc565b91506153df826153a0565b602082019050919050565b5f6020820190508181035f830152615401816153c8565b9050919050565b5f61541282613ecc565b915061541d83613ecc565b9250828203905081811115615435576154346144f4565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f615495602683613fcc565b91506154a08261543b565b604082019050919050565b5f6020820190508181035f8301526154c281615489565b9050919050565b5f81905092915050565b50565b5f6154e15f836154c9565b91506154ec826154d3565b5f82019050919050565b5f615500826154d6565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061554581613f6d565b92915050565b5f602082840312156155605761555f613ec4565b5b5f61556d84828501615537565b91505092915050565b5f819050919050565b5f61559961559461558f84615576565b6140dd565b613ecc565b9050919050565b6155a98161557f565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6155e181613f5c565b82525050565b5f6155f283836155d8565b60208301905092915050565b5f602082019050919050565b5f615614826155af565b61561e81856155b9565b9350615629836155c9565b805f5b8381101561565957815161564088826155e7565b975061564b836155fe565b92505060018101905061562c565b5085935050505092915050565b5f60a0820190506156795f830188614151565b61568660208301876155a0565b8181036040830152615698818661560a565b90506156a76060830185614228565b6156b46080830184614151565b969550505050505056fea26469706673582212202e3b7031defd7cbbaf076bca4115570c7549271889243217405b73c4b769af1164736f6c63430008170033
Deployed Bytecode
0x608060405260043610610338575f3560e01c80638f85a043116101aa578063b99d3575116100f6578063d9b2466111610094578063e2f456051161006e578063e2f4560514610bf9578063f172525d14610c23578063f2fde38b14610c5f578063f7d0cab014610c875761033f565b8063d9b2466114610b59578063dd62ed3e14610b95578063dddc7d7614610bd15761033f565b8063c0246668116100d0578063c024666814610aa1578063d1c3ee7f14610ac9578063d257b34f14610af3578063d85ba06314610b2f5761033f565b8063b99d357514610a25578063bae14e1d14610a4f578063bbc0c74214610a775761033f565b80639c3b4fdc11610163578063a457c2d71161013d578063a457c2d714610949578063a9059cbb14610985578063a90eab8c146109c1578063b62496f5146109e95761033f565b80639c3b4fdc146108cb5780639fccce32146108f5578063a0d82dc51461091f5761033f565b80638f85a043146107d757806392136913146107ff578063924de9b71461082957806394e05c6d1461085157806395d89b41146108795780639a7a23d6146108a35761033f565b80633fecf30e1161028457806370a0823111610222578063751039fc116101fc578063751039fc146107435780637bce5a041461076d5780638a8c523c146107975780638da5cb5b146107ad5761033f565b806370a08231146106c9578063715018a61461070557806374d7fdbb1461071b5761033f565b80634fbee1931161025e5780634fbee1931461061157806366ca9b831461064d5780636a486a8e146106755780636ddd17131461069f5761033f565b80633fecf30e1461059557806349bd5a5e146105bd5780634a62bb65146105e75761033f565b80631bea6202116102f157806323b872dd116102cb57806323b872dd146104c9578063313ce5671461050557806337c2810f1461052f57806339509351146105595761033f565b80631bea62021461044d5780631f3fed8f14610477578063203e727e146104a15761033f565b806302dbd8f81461034357806304dfa45a1461036b57806306fdde0314610393578063095ea7b3146103bd5780631694505e146103f957806318160ddd146104235761033f565b3661033f57005b5f80fd5b34801561034e575f80fd5b5061036960048036038101906103649190613eff565b610cb1565b005b348015610376575f80fd5b50610391600480360381019061038c9190613f97565b610d9b565b005b34801561039e575f80fd5b506103a7610ed5565b6040516103b4919061404c565b60405180910390f35b3480156103c8575f80fd5b506103e360048036038101906103de919061406c565b610f65565b6040516103f091906140c4565b60405180910390f35b348015610404575f80fd5b5061040d610f82565b60405161041a9190614138565b60405180910390f35b34801561042e575f80fd5b50610437610fa7565b6040516104449190614160565b60405180910390f35b348015610458575f80fd5b50610461610fb0565b60405161046e9190614160565b60405180910390f35b348015610482575f80fd5b5061048b610fb6565b6040516104989190614160565b60405180910390f35b3480156104ac575f80fd5b506104c760048036038101906104c29190614179565b610fbc565b005b3480156104d4575f80fd5b506104ef60048036038101906104ea91906141a4565b6110cb565b6040516104fc91906140c4565b60405180910390f35b348015610510575f80fd5b506105196111bd565b604051610526919061420f565b60405180910390f35b34801561053a575f80fd5b506105436111c5565b6040516105509190614237565b60405180910390f35b348015610564575f80fd5b5061057f600480360381019061057a919061406c565b6111ea565b60405161058c91906140c4565b60405180910390f35b3480156105a0575f80fd5b506105bb60048036038101906105b69190613f97565b611291565b005b3480156105c8575f80fd5b506105d16113c1565b6040516105de9190614237565b60405180910390f35b3480156105f2575f80fd5b506105fb6113e6565b60405161060891906140c4565b60405180910390f35b34801561061c575f80fd5b5061063760048036038101906106329190613f97565b6113f8565b60405161064491906140c4565b60405180910390f35b348015610658575f80fd5b50610673600480360381019061066e9190613eff565b61144a565b005b348015610680575f80fd5b50610689611534565b6040516106969190614160565b60405180910390f35b3480156106aa575f80fd5b506106b361153a565b6040516106c091906140c4565b60405180910390f35b3480156106d4575f80fd5b506106ef60048036038101906106ea9190613f97565b61154d565b6040516106fc9190614160565b60405180910390f35b348015610710575f80fd5b50610719611592565b005b348015610726575f80fd5b50610741600480360381019061073c9190614179565b611619565b005b34801561074e575f80fd5b50610757611728565b60405161076491906140c4565b60405180910390f35b348015610778575f80fd5b506107816117c5565b60405161078e9190614160565b60405180910390f35b3480156107a2575f80fd5b506107ab6117cb565b005b3480156107b8575f80fd5b506107c161187f565b6040516107ce9190614237565b60405180910390f35b3480156107e2575f80fd5b506107fd60048036038101906107f891906142db565b6118a7565b005b34801561080a575f80fd5b506108136119be565b6040516108209190614160565b60405180910390f35b348015610834575f80fd5b5061084f600480360381019061084a9190614338565b6119c4565b005b34801561085c575f80fd5b5061087760048036038101906108729190613f97565b611a5d565b005b348015610884575f80fd5b5061088d611b97565b60405161089a919061404c565b60405180910390f35b3480156108ae575f80fd5b506108c960048036038101906108c49190614363565b611c27565b005b3480156108d6575f80fd5b506108df611d40565b6040516108ec9190614160565b60405180910390f35b348015610900575f80fd5b50610909611d46565b6040516109169190614160565b60405180910390f35b34801561092a575f80fd5b50610933611d4c565b6040516109409190614160565b60405180910390f35b348015610954575f80fd5b5061096f600480360381019061096a919061406c565b611d52565b60405161097c91906140c4565b60405180910390f35b348015610990575f80fd5b506109ab60048036038101906109a6919061406c565b611e38565b6040516109b891906140c4565b60405180910390f35b3480156109cc575f80fd5b506109e760048036038101906109e291906143fe565b611e55565b005b3480156109f4575f80fd5b50610a0f6004803603810190610a0a9190613f97565b6120d8565b604051610a1c91906140c4565b60405180910390f35b348015610a30575f80fd5b50610a396120f5565b604051610a469190614237565b60405180910390f35b348015610a5a575f80fd5b50610a756004803603810190610a709190613f97565b61211a565b005b348015610a82575f80fd5b50610a8b612247565b604051610a9891906140c4565b60405180910390f35b348015610aac575f80fd5b50610ac76004803603810190610ac29190614363565b61225a565b005b348015610ad4575f80fd5b50610add61237c565b604051610aea9190614237565b60405180910390f35b348015610afe575f80fd5b50610b196004803603810190610b149190614179565b6123a1565b604051610b2691906140c4565b60405180910390f35b348015610b3a575f80fd5b50610b436124f5565b604051610b509190614160565b60405180910390f35b348015610b64575f80fd5b50610b7f6004803603810190610b7a9190613f97565b6124fb565b604051610b8c91906140c4565b60405180910390f35b348015610ba0575f80fd5b50610bbb6004803603810190610bb6919061444e565b612518565b604051610bc89190614160565b60405180910390f35b348015610bdc575f80fd5b50610bf76004803603810190610bf29190614363565b61259a565b005b348015610c04575f80fd5b50610c0d61266e565b604051610c1a9190614160565b60405180910390f35b348015610c2e575f80fd5b50610c496004803603810190610c449190613f97565b612674565b604051610c569190614160565b60405180910390f35b348015610c6a575f80fd5b50610c856004803603810190610c809190613f97565b612689565b005b348015610c92575f80fd5b50610c9b61277f565b604051610ca89190614160565b60405180910390f35b610cb9612785565b73ffffffffffffffffffffffffffffffffffffffff16610cd761187f565b73ffffffffffffffffffffffffffffffffffffffff1614610d2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d24906144d6565b60405180910390fd5b8160138190555080601481905550601454601354610d4b9190614521565b60128190555060636012541115610d97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8e9061459e565b60405180910390fd5b5050565b610da3612785565b73ffffffffffffffffffffffffffffffffffffffff16610dc161187f565b73ffffffffffffffffffffffffffffffffffffffff1614610e17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0e906144d6565b60405180910390fd5b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f3de051b4d5ce18dec98386d8ec6a614ddd4c62f083cf99955b678ec978aa310160405160405180910390a380600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060038054610ee4906145e9565b80601f0160208091040260200160405190810160405280929190818152602001828054610f10906145e9565b8015610f5b5780601f10610f3257610100808354040283529160200191610f5b565b820191905f5260205f20905b815481529060010190602001808311610f3e57829003601f168201915b5050505050905090565b5f610f78610f71612785565b848461278c565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b600d5481565b60155481565b610fc4612785565b73ffffffffffffffffffffffffffffffffffffffff16610fe261187f565b73ffffffffffffffffffffffffffffffffffffffff1614611038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102f906144d6565b60405180910390fd5b670de0b6b3a76400006103e8600161104e610fa7565b6110589190614619565b6110629190614687565b61106c9190614687565b8110156110ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a590614727565b60405180910390fd5b670de0b6b3a7640000816110c29190614619565b600b8190555050565b5f6110d784848461294f565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61111e612785565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561119d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611194906147b5565b60405180910390fd5b6111b1856111a9612785565b85840361278c565b60019150509392505050565b5f6012905090565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6112876111f6612785565b848460015f611203612785565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546112829190614521565b61278c565b6001905092915050565b611299612785565b73ffffffffffffffffffffffffffffffffffffffff166112b761187f565b73ffffffffffffffffffffffffffffffffffffffff161461130d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611304906144d6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361137b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113729061481d565b60405180910390fd5b600160175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5f9054906101000a900460ff1681565b5f60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b611452612785565b73ffffffffffffffffffffffffffffffffffffffff1661147061187f565b73ffffffffffffffffffffffffffffffffffffffff16146114c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bd906144d6565b60405180910390fd5b81601081905550806011819055506011546010546114e49190614521565b600f819055506063600f541115611530576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115279061459e565b60405180910390fd5b5050565b60125481565b600e60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61159a612785565b73ffffffffffffffffffffffffffffffffffffffff166115b861187f565b73ffffffffffffffffffffffffffffffffffffffff161461160e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611605906144d6565b60405180910390fd5b6116175f613695565b565b611621612785565b73ffffffffffffffffffffffffffffffffffffffff1661163f61187f565b73ffffffffffffffffffffffffffffffffffffffff1614611695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168c906144d6565b60405180910390fd5b670de0b6b3a76400006103e860056116ab610fa7565b6116b59190614619565b6116bf9190614687565b6116c99190614687565b81101561170b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611702906148ab565b60405180910390fd5b670de0b6b3a76400008161171f9190614619565b600d8190555050565b5f611731612785565b73ffffffffffffffffffffffffffffffffffffffff1661174f61187f565b73ffffffffffffffffffffffffffffffffffffffff16146117a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179c906144d6565b60405180910390fd5b5f600e5f6101000a81548160ff0219169083151502179055506001905090565b60105481565b6117d3612785565b73ffffffffffffffffffffffffffffffffffffffff166117f161187f565b73ffffffffffffffffffffffffffffffffffffffff1614611847576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183e906144d6565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff021916908315150217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6118af612785565b73ffffffffffffffffffffffffffffffffffffffff166118cd61187f565b73ffffffffffffffffffffffffffffffffffffffff1614611923576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191a906144d6565b60405180910390fd5b5f5b838390508110156119b8578160185f868685818110611947576119466148c9565b5b905060200201602081019061195c9190613f97565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611925565b50505050565b60135481565b6119cc612785565b73ffffffffffffffffffffffffffffffffffffffff166119ea61187f565b73ffffffffffffffffffffffffffffffffffffffff1614611a40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a37906144d6565b60405180910390fd5b80600e60026101000a81548160ff02191690831515021790555050565b611a65612785565b73ffffffffffffffffffffffffffffffffffffffff16611a8361187f565b73ffffffffffffffffffffffffffffffffffffffff1614611ad9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad0906144d6565b60405180910390fd5b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fec7cda7e686602e5a5a3692a0e69c4dab0898191024ca21d04f2372c14dfa85e60405160405180910390a38060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060048054611ba6906145e9565b80601f0160208091040260200160405190810160405280929190818152602001828054611bd2906145e9565b8015611c1d5780601f10611bf457610100808354040283529160200191611c1d565b820191905f5260205f20905b815481529060010190602001808311611c0057829003601f168201915b5050505050905090565b611c2f612785565b73ffffffffffffffffffffffffffffffffffffffff16611c4d61187f565b73ffffffffffffffffffffffffffffffffffffffff1614611ca3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9a906144d6565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2990614966565b60405180910390fd5b611d3c8282613758565b5050565b60115481565b60165481565b60145481565b5f8060015f611d5f612785565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611e19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e10906149f4565b60405180910390fd5b611e2d611e24612785565b8585840361278c565b600191505092915050565b5f611e4b611e44612785565b848461294f565b6001905092915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001204630604051602001611f07959493929190614a21565b6040516020818303038152906040528051906020012090505f7f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e67000000000000000000000000000000000000815250805190602001205f604051602001611f9193929190614a72565b6040516020818303038152906040528051906020012090505f8282604051602001611fbd929190614b1b565b6040516020818303038152906040528051906020012090505f6001828888886040515f8152602001604052604051611ff89493929190614b51565b6020604051602081039080840390855afa158015612018573d5f803e3d5ffd5b50505060206040510351905061202c61187f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612099576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209090614bde565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055506001600e60026101000a81548160ff02191690831515021790555050505050505050565b601b602052805f5260405f205f915054906101000a900460ff1681565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612122612785565b73ffffffffffffffffffffffffffffffffffffffff1661214061187f565b73ffffffffffffffffffffffffffffffffffffffff1614612196576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218d906144d6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612204576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fb90614c46565b60405180910390fd5b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e60019054906101000a900460ff1681565b612262612785565b73ffffffffffffffffffffffffffffffffffffffff1661228061187f565b73ffffffffffffffffffffffffffffffffffffffff16146122d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cd906144d6565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161237091906140c4565b60405180910390a25050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6123aa612785565b73ffffffffffffffffffffffffffffffffffffffff166123c861187f565b73ffffffffffffffffffffffffffffffffffffffff161461241e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612415906144d6565b60405180910390fd5b620186a0600161242c610fa7565b6124369190614619565b6124409190614687565b821015612482576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247990614cd4565b60405180910390fd5b6103e8600561248f610fa7565b6124999190614619565b6124a39190614687565b8211156124e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124dc90614d62565b60405180910390fd5b81600c8190555060019050919050565b600f5481565b601a602052805f5260405f205f915054906101000a900460ff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6125a2612785565b73ffffffffffffffffffffffffffffffffffffffff166125c061187f565b73ffffffffffffffffffffffffffffffffffffffff1614612616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260d906144d6565b60405180910390fd5b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600c5481565b6017602052805f5260405f205f915090505481565b612691612785565b73ffffffffffffffffffffffffffffffffffffffff166126af61187f565b73ffffffffffffffffffffffffffffffffffffffff1614612705576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fc906144d6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612773576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276a90614df0565b60405180910390fd5b61277c81613695565b50565b600b5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f190614e7e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612868576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285f90614f0c565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129429190614160565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036129bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129b490614f9a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2290615028565b60405180910390fd5b60185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612ab5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aac90615090565b60405180910390fd5b60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b36906150f8565b60405180910390fd5b5f8103612b5657612b5183835f6137f6565b613690565b600e5f9054906101000a900460ff161561303a57612b7261187f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612be05750612bb061187f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c1857505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c52575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612c6b5750600860149054906101000a900460ff16155b1561303957600e60019054906101000a900460ff16612d5f5760195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612d1f575060195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612d5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d5590615160565b60405180910390fd5b5b601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612dfc5750601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612ea357600b54811115612e46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3d906151ee565b60405180910390fd5b600d54612e528361154d565b82612e5d9190614521565b1115612e9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e9590615256565b60405180910390fd5b613038565b601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612f405750601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612f8f57600b54811115612f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f81906152e4565b60405180910390fd5b613037565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661303657600d54612fe98361154d565b82612ff49190614521565b1115613035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302c90615256565b60405180910390fd5b5b5b5b5b5b5f73ffffffffffffffffffffffffffffffffffffffff1660085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415801561312c575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639015d371306040518263ffffffff1660e01b81526004016130ec9190614237565b602060405180830381865afa158015613107573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061312b9190615316565b5b15613241575f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a20527fc858560075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d54600b54600c546040518763ffffffff1660e01b81526004016131bd96959493929190615341565b6020604051808303815f875af11580156131d9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131fd9190615316565b90508061323f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613236906153ea565b60405180910390fd5b505b5f61324b3061154d565b90505f600c54821015905080801561326f5750600e60029054906101000a900460ff165b80156132885750600860149054906101000a900460ff16155b80156132da5750601b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b801561332d575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015613380575060195f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156133c3576001600860146101000a81548160ff0219169083151502179055506133a8613a6b565b5f600860146101000a81548160ff0219169083151502179055505b5f600860149054906101000a900460ff1615905060195f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680613472575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561347b575f90505b5f811561368057601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156134d957505f601254115b156135715761350660646134f860125488613c4590919063ffffffff16565b613c5a90919063ffffffff16565b9050601254601454826135199190614619565b6135239190614687565b60165f8282546135339190614521565b925050819055506012546013548261354b9190614619565b6135559190614687565b60155f8282546135659190614521565b9250508190555061365d565b601b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156135c857505f600f54115b1561365c576135f560646135e7600f5488613c4590919063ffffffff16565b613c5a90919063ffffffff16565b9050600f54601154826136089190614619565b6136129190614687565b60165f8282546136229190614521565b92505081905550600f546010548261363a9190614619565b6136449190614687565b60155f8282546136549190614521565b925050819055505b5b5f811115613671576136708730836137f6565b5b808561367d9190615408565b94505b61368b8787876137f6565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161385b90614f9a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036138d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016138c990615028565b60405180910390fd5b6138dd838383613c6f565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613960576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613957906154ab565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546139ee9190614521565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613a529190614160565b60405180910390a3613a65848484613c74565b50505050565b5f613a753061154d565b90505f601654601554613a889190614521565b90505f80831480613a9857505f82145b15613aa557505050613c43565b6014600c54613ab49190614619565b831115613acd576014600c54613aca9190614619565b92505b5f479050613ada84613c79565b5f613aee8247613eaf90919063ffffffff16565b90505f613b1885613b0a60165485613c4590919063ffffffff16565b613c5a90919063ffffffff16565b90505f6015819055505f601681905550600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613b6d906154f6565b5f6040518083038185875af1925050503d805f8114613ba7576040519150601f19603f3d011682016040523d82523d5f602084013e613bac565b606091505b50508094505060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051613bf7906154f6565b5f6040518083038185875af1925050503d805f8114613c31576040519150601f19603f3d011682016040523d82523d5f602084013e613c36565b606091505b5050809450505050505050505b565b5f8183613c529190614619565b905092915050565b5f8183613c679190614687565b905092915050565b505050565b505050565b5f600267ffffffffffffffff811115613c9557613c9461550a565b5b604051908082528060200260200182016040528015613cc35781602001602082028036833780820191505090505b50905030815f81518110613cda57613cd96148c9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d7e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613da2919061554b565b81600181518110613db657613db56148c9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613e1c3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461278c565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613e7e959493929190615666565b5f604051808303815f87803b158015613e95575f80fd5b505af1158015613ea7573d5f803e3d5ffd5b505050505050565b5f8183613ebc9190615408565b905092915050565b5f80fd5b5f80fd5b5f819050919050565b613ede81613ecc565b8114613ee8575f80fd5b50565b5f81359050613ef981613ed5565b92915050565b5f8060408385031215613f1557613f14613ec4565b5b5f613f2285828601613eeb565b9250506020613f3385828601613eeb565b9150509250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613f6682613f3d565b9050919050565b613f7681613f5c565b8114613f80575f80fd5b50565b5f81359050613f9181613f6d565b92915050565b5f60208284031215613fac57613fab613ec4565b5b5f613fb984828501613f83565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613ff9578082015181840152602081019050613fde565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61401e82613fc2565b6140288185613fcc565b9350614038818560208601613fdc565b61404181614004565b840191505092915050565b5f6020820190508181035f8301526140648184614014565b905092915050565b5f806040838503121561408257614081613ec4565b5b5f61408f85828601613f83565b92505060206140a085828601613eeb565b9150509250929050565b5f8115159050919050565b6140be816140aa565b82525050565b5f6020820190506140d75f8301846140b5565b92915050565b5f819050919050565b5f6141006140fb6140f684613f3d565b6140dd565b613f3d565b9050919050565b5f614111826140e6565b9050919050565b5f61412282614107565b9050919050565b61413281614118565b82525050565b5f60208201905061414b5f830184614129565b92915050565b61415a81613ecc565b82525050565b5f6020820190506141735f830184614151565b92915050565b5f6020828403121561418e5761418d613ec4565b5b5f61419b84828501613eeb565b91505092915050565b5f805f606084860312156141bb576141ba613ec4565b5b5f6141c886828701613f83565b93505060206141d986828701613f83565b92505060406141ea86828701613eeb565b9150509250925092565b5f60ff82169050919050565b614209816141f4565b82525050565b5f6020820190506142225f830184614200565b92915050565b61423181613f5c565b82525050565b5f60208201905061424a5f830184614228565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261427157614270614250565b5b8235905067ffffffffffffffff81111561428e5761428d614254565b5b6020830191508360208202830111156142aa576142a9614258565b5b9250929050565b6142ba816140aa565b81146142c4575f80fd5b50565b5f813590506142d5816142b1565b92915050565b5f805f604084860312156142f2576142f1613ec4565b5b5f84013567ffffffffffffffff81111561430f5761430e613ec8565b5b61431b8682870161425c565b9350935050602061432e868287016142c7565b9150509250925092565b5f6020828403121561434d5761434c613ec4565b5b5f61435a848285016142c7565b91505092915050565b5f806040838503121561437957614378613ec4565b5b5f61438685828601613f83565b9250506020614397858286016142c7565b9150509250929050565b6143aa816141f4565b81146143b4575f80fd5b50565b5f813590506143c5816143a1565b92915050565b5f819050919050565b6143dd816143cb565b81146143e7575f80fd5b50565b5f813590506143f8816143d4565b92915050565b5f805f6060848603121561441557614414613ec4565b5b5f614422868287016143b7565b9350506020614433868287016143ea565b9250506040614444868287016143ea565b9150509250925092565b5f806040838503121561446457614463613ec4565b5b5f61447185828601613f83565b925050602061448285828601613f83565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6144c0602083613fcc565b91506144cb8261448c565b602082019050919050565b5f6020820190508181035f8301526144ed816144b4565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61452b82613ecc565b915061453683613ecc565b925082820190508082111561454e5761454d6144f4565b5b92915050565b7f4d757374206b656570206665657320617420393925206f72206c6573730000005f82015250565b5f614588601d83613fcc565b915061459382614554565b602082019050919050565b5f6020820190508181035f8301526145b58161457c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061460057607f821691505b602082108103614613576146126145bc565b5b50919050565b5f61462382613ecc565b915061462e83613ecc565b925082820261463c81613ecc565b91508282048414831517614653576146526144f4565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61469182613ecc565b915061469c83613ecc565b9250826146ac576146ab61465a565b5b828204905092915050565b7f43616e6e6f7420736574206d6178696d756d54786e416d6f756e74206c6f77655f8201527f72207468616e20302e3125000000000000000000000000000000000000000000602082015250565b5f614711602b83613fcc565b915061471c826146b7565b604082019050919050565b5f6020820190508181035f83015261473e81614705565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f61479f602883613fcc565b91506147aa82614745565b604082019050919050565b5f6020820190508181035f8301526147cc81614793565b9050919050565b7f496e76616c69642073706f6e736f7220616464726573730000000000000000005f82015250565b5f614807601783613fcc565b9150614812826147d3565b602082019050919050565b5f6020820190508181035f830152614834816147fb565b9050919050565b7f43616e6e6f7420736574206d6178696d756d57616c6c6574416d6f756e74206c5f8201527f6f776572207468616e20302e3525000000000000000000000000000000000000602082015250565b5f614895602e83613fcc565b91506148a08261483b565b604082019050919050565b5f6020820190508181035f8301526148c281614889565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f614950603983613fcc565b915061495b826148f6565b604082019050919050565b5f6020820190508181035f83015261497d81614944565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6149de602583613fcc565b91506149e982614984565b604082019050919050565b5f6020820190508181035f830152614a0b816149d2565b9050919050565b614a1b816143cb565b82525050565b5f60a082019050614a345f830188614a12565b614a416020830187614a12565b614a4e6040830186614a12565b614a5b6060830185614151565b614a686080830184614228565b9695505050505050565b5f606082019050614a855f830186614a12565b614a926020830185614a12565b614a9f6040830184614151565b949350505050565b5f81905092915050565b7f19010000000000000000000000000000000000000000000000000000000000005f82015250565b5f614ae5600283614aa7565b9150614af082614ab1565b600282019050919050565b5f819050919050565b614b15614b10826143cb565b614afb565b82525050565b5f614b2582614ad9565b9150614b318285614b04565b602082019150614b418284614b04565b6020820191508190509392505050565b5f608082019050614b645f830187614a12565b614b716020830186614200565b614b7e6040830185614a12565b614b8b6060830184614a12565b95945050505050565b7f496e76616c6964207369676e61747572650000000000000000000000000000005f82015250565b5f614bc8601183613fcc565b9150614bd382614b94565b602082019050919050565b5f6020820190508181035f830152614bf581614bbc565b9050919050565b7f496e76616c696420616e746920647261696e65720000000000000000000000005f82015250565b5f614c30601483613fcc565b9150614c3b82614bfc565b602082019050919050565b5f6020820190508181035f830152614c5d81614c24565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f614cbe603583613fcc565b9150614cc982614c64565b604082019050919050565b5f6020820190508181035f830152614ceb81614cb2565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f614d4c603483613fcc565b9150614d5782614cf2565b604082019050919050565b5f6020820190508181035f830152614d7981614d40565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614dda602683613fcc565b9150614de582614d80565b604082019050919050565b5f6020820190508181035f830152614e0781614dce565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614e68602483613fcc565b9150614e7382614e0e565b604082019050919050565b5f6020820190508181035f830152614e9581614e5c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f614ef6602283613fcc565b9150614f0182614e9c565b604082019050919050565b5f6020820190508181035f830152614f2381614eea565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f614f84602583613fcc565b9150614f8f82614f2a565b604082019050919050565b5f6020820190508181035f830152614fb181614f78565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f615012602383613fcc565b915061501d82614fb8565b604082019050919050565b5f6020820190508181035f83015261503f81615006565b9050919050565b7f5b66726f6d5d20626c61636b206c6973740000000000000000000000000000005f82015250565b5f61507a601183613fcc565b915061508582615046565b602082019050919050565b5f6020820190508181035f8301526150a78161506e565b9050919050565b7f5b746f5d20626c61636b206c69737400000000000000000000000000000000005f82015250565b5f6150e2600f83613fcc565b91506150ed826150ae565b602082019050919050565b5f6020820190508181035f83015261510f816150d6565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f61514a601683613fcc565b915061515582615116565b602082019050919050565b5f6020820190508181035f8301526151778161513e565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d6178696d756d54786e416d6f756e742e000000000000000000000000000000602082015250565b5f6151d8603183613fcc565b91506151e38261517e565b604082019050919050565b5f6020820190508181035f830152615205816151cc565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f615240601383613fcc565b915061524b8261520c565b602082019050919050565b5f6020820190508181035f83015261526d81615234565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d6178696d756d54786e416d6f756e742e0000000000000000000000000000602082015250565b5f6152ce603283613fcc565b91506152d982615274565b604082019050919050565b5f6020820190508181035f8301526152fb816152c2565b9050919050565b5f81519050615310816142b1565b92915050565b5f6020828403121561532b5761532a613ec4565b5b5f61533884828501615302565b91505092915050565b5f60c0820190506153545f830189614228565b6153616020830188614228565b61536e6040830187614228565b61537b6060830186614151565b6153886080830185614151565b61539560a0830184614151565b979650505050505050565b7f416e746920447261696e657220456e61626c65640000000000000000000000005f82015250565b5f6153d4601483613fcc565b91506153df826153a0565b602082019050919050565b5f6020820190508181035f830152615401816153c8565b9050919050565b5f61541282613ecc565b915061541d83613ecc565b9250828203905081811115615435576154346144f4565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f615495602683613fcc565b91506154a08261543b565b604082019050919050565b5f6020820190508181035f8301526154c281615489565b9050919050565b5f81905092915050565b50565b5f6154e15f836154c9565b91506154ec826154d3565b5f82019050919050565b5f615500826154d6565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061554581613f6d565b92915050565b5f602082840312156155605761555f613ec4565b5b5f61556d84828501615537565b91505092915050565b5f819050919050565b5f61559961559461558f84615576565b6140dd565b613ecc565b9050919050565b6155a98161557f565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6155e181613f5c565b82525050565b5f6155f283836155d8565b60208301905092915050565b5f602082019050919050565b5f615614826155af565b61561e81856155b9565b9350615629836155c9565b805f5b8381101561565957815161564088826155e7565b975061564b836155fe565b92505060018101905061562c565b5085935050505092915050565b5f60a0820190506156795f830188614151565b61568660208301876155a0565b8181036040830152615698818661560a565b90506156a76060830185614228565b6156b46080830184614151565b969550505050505056fea26469706673582212202e3b7031defd7cbbaf076bca4115570c7549271889243217405b73c4b769af1164736f6c63430008170033
Deployed Bytecode Sourcemap
15680:15196:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23505:318;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24717:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2780:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3760:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15756:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3101:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16052:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16426:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22538:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3962:529;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3000:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15839:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4499:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21317:170;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15804:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16095:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21807:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23186:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16319:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16175:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3217:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;807:103;;;;;;;;;;;;;:::i;:::-;;21495:304;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20160:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16249:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19800:112;;;;;;;;;;;;;:::i;:::-;;584:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19920:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16354:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23078:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24529:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2888:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24021:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16286:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16466:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16392:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4797:475;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3368:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20289:1020;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16732:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15904:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19610:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16135:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23831:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15937:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22049:481;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16215:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16664:59;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3576:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22815:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16012:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16502:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;918:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15974:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23505:318;730:12;:10;:12::i;:::-;719:23;;:7;:5;:7::i;:::-;:23;;;711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23643:13:::1;23624:16;:32;;;;23680:7;23667:10;:20;;;;23733:10;;23714:16;;:29;;;;:::i;:::-;23698:13;:45;;;;23779:2;23762:13;;:19;;23754:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;23505:318:::0;;:::o;24717:173::-;730:12;:10;:12::i;:::-;719:23;;:7;:5;:7::i;:::-;:23;;;711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24832:13:::1;;;;;;;;;;;24800:46;;24821:9;24800:46;;;;;;;;;;;;24873:9;24857:13;;:25;;;;;;;;;;;;;;;;;;24717:173:::0;:::o;2780:100::-;2834:13;2867:5;2860:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2780:100;:::o;3760:194::-;3868:4;3885:39;3894:12;:10;:12::i;:::-;3908:7;3917:6;3885:8;:39::i;:::-;3942:4;3935:11;;3760:194;;;;:::o;15756:41::-;;;;;;;;;;;;;:::o;3101:108::-;3162:7;3189:12;;3182:19;;3101:108;:::o;16052:34::-;;;;:::o;16426:33::-;;;;:::o;22538:269::-;730:12;:10;:12::i;:::-;719:23;;:7;:5;:7::i;:::-;:23;;;711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22675:4:::1;22667;22662:1;22646:13;:11;:13::i;:::-;:17;;;;:::i;:::-;22645:26;;;;:::i;:::-;22644:35;;;;:::i;:::-;22634:6;:45;;22612:138;;;;;;;;;;;;:::i;:::-;;;;;;;;;22790:8;22780:6;:19;;;;:::i;:::-;22761:16;:38;;;;22538:269:::0;:::o;3962:529::-;4102:4;4119:36;4129:6;4137:9;4148:6;4119:9;:36::i;:::-;4168:24;4195:11;:19;4207:6;4195:19;;;;;;;;;;;;;;;:33;4215:12;:10;:12::i;:::-;4195:33;;;;;;;;;;;;;;;;4168:60;;4281:6;4261:16;:26;;4239:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;4391:57;4400:6;4408:12;:10;:12::i;:::-;4441:6;4422:16;:25;4391:8;:57::i;:::-;4479:4;4472:11;;;3962:529;;;;;:::o;3000:93::-;3058:5;3083:2;3076:9;;3000:93;:::o;15839:26::-;;;;;;;;;;;;;:::o;4499:290::-;4612:4;4629:130;4652:12;:10;:12::i;:::-;4679:7;4738:10;4701:11;:25;4713:12;:10;:12::i;:::-;4701:25;;;;;;;;;;;;;;;:34;4727:7;4701:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4629:8;:130::i;:::-;4777:4;4770:11;;4499:290;;;;:::o;21317:170::-;730:12;:10;:12::i;:::-;719:23;;:7;:5;:7::i;:::-;:23;;;711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21415:1:::1;21395:22;;:8;:22;;::::0;21387:58:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;21478:1;21456:9;:19;21466:8;21456:19;;;;;;;;;;;;;;;:23;;;;21317:170:::0;:::o;15804:28::-;;;;;;;;;;;;;:::o;16095:33::-;;;;;;;;;;;;;:::o;21807:126::-;21873:4;21897:19;:28;21917:7;21897:28;;;;;;;;;;;;;;;;;;;;;;;;;21890:35;;21807:126;;;:::o;23186:311::-;730:12;:10;:12::i;:::-;719:23;;:7;:5;:7::i;:::-;:23;;;711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23322:13:::1;23304:15;:31;;;;23358:7;23346:9;:19;;;;23409:9;;23391:15;;:27;;;;:::i;:::-;23376:12;:42;;;;23453:2;23437:12;;:18;;23429:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;23186:311:::0;;:::o;16319:28::-;;;;:::o;16175:31::-;;;;;;;;;;;;;:::o;3217:143::-;3307:7;3334:9;:18;3344:7;3334:18;;;;;;;;;;;;;;;;3327:25;;3217:143;;;:::o;807:103::-;730:12;:10;:12::i;:::-;719:23;;:7;:5;:7::i;:::-;:23;;;711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;872:30:::1;899:1;872:18;:30::i;:::-;807:103::o:0;21495:304::-;730:12;:10;:12::i;:::-;719:23;;:7;:5;:7::i;:::-;:23;;;711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21661:4:::1;21653;21648:1;21632:13;:11;:13::i;:::-;:17;;;;:::i;:::-;21631:26;;;;:::i;:::-;21630:35;;;;:::i;:::-;21620:6;:45;;21598:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;21782:8;21772:6;:19;;;;:::i;:::-;21750;:41;;;;21495:304:::0;:::o;20160:121::-;20212:4;730:12;:10;:12::i;:::-;719:23;;:7;:5;:7::i;:::-;:23;;;711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20246:5:::1;20229:14;;:22;;;;;;;;;;;;;;;;;;20269:4;20262:11;;20160:121:::0;:::o;16249:30::-;;;;:::o;19800:112::-;730:12;:10;:12::i;:::-;719:23;;:7;:5;:7::i;:::-;:23;;;711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19871:4:::1;19855:13;;:20;;;;;;;;;;;;;;;;;;19900:4;19886:11;;:18;;;;;;;;;;;;;;;;;;19800:112::o:0;584:87::-;630:7;657:6;;;;;;;;;;;650:13;;584:87;:::o;19920:232::-;730:12;:10;:12::i;:::-;719:23;;:7;:5;:7::i;:::-;:23;;;711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20044:9:::1;20039:106;20063:7;;:14;;20059:1;:18;20039:106;;;20126:7;20099:12;:24;20112:7;;20120:1;20112:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;20099:24;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;20079:3;;;;;;;20039:106;;;;19920:232:::0;;;:::o;16354:31::-;;;;:::o;23078:100::-;730:12;:10;:12::i;:::-;719:23;;:7;:5;:7::i;:::-;:23;;;711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23163:7:::1;23149:11;;:21;;;;;;;;;;;;;;;;;;23078:100:::0;:::o;24529:180::-;730:12;:10;:12::i;:::-;719:23;;:7;:5;:7::i;:::-;:23;;;711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24650:11:::1;;;;;;;;;;;24615:47;;24634:14;24615:47;;;;;;;;;;;;24687:14;24673:11;;:28;;;;;;;;;;;;;;;;;;24529:180:::0;:::o;2888:104::-;2944:13;2977:7;2970:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2888:104;:::o;24021:306::-;730:12;:10;:12::i;:::-;719:23;;:7;:5;:7::i;:::-;:23;;;711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24167:13:::1;;;;;;;;;;;24159:21;;:4;:21;;::::0;24137:128:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;24278:41;24307:4;24313:5;24278:28;:41::i;:::-;24021:306:::0;;:::o;16286:24::-;;;;:::o;16466:27::-;;;;:::o;16392:25::-;;;;:::o;4797:475::-;4915:4;4932:24;4959:11;:25;4971:12;:10;:12::i;:::-;4959:25;;;;;;;;;;;;;;;:34;4985:7;4959:34;;;;;;;;;;;;;;;;4932:61;;5046:15;5026:16;:35;;5004:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;5162:67;5171:12;:10;:12::i;:::-;5185:7;5213:15;5194:16;:34;5162:8;:67::i;:::-;5260:4;5253:11;;;4797:475;;;;:::o;3368:200::-;3479:4;3496:42;3506:12;:10;:12::i;:::-;3520:9;3531:6;3496:9;:42::i;:::-;3556:4;3549:11;;3368:200;;;;:::o;20289:1020::-;20373:18;20447:135;20611:22;;;;;;;;;;;;;;;;;20601:33;;;;;;20663:10;;;;;;;;;;;;;;;;;20653:21;;;;;;20693:13;20733:4;20418:335;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;20394:370;;;;;;20373:391;;20777:18;20851:49;20929:23;;;;;;;;;;;;;;;;;20919:34;;;;;;20980:1;20822:175;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;20798:210;;;;;;20777:231;;21021:14;21091:10;21103;21062:52;;;;;;;;;:::i;:::-;;;;;;;;;;;;;21038:87;;;;;;21021:104;;21138:14;21155:26;21165:6;21173:1;21176;21179;21155:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21138:43;;21210:7;:5;:7::i;:::-;21200:17;;:6;:17;;;21192:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;21268:4;21252:13;;:20;;;;;;;;;;;;;;;;;;21297:4;21283:11;;:18;;;;;;;;;;;;;;;;;;20362:947;;;;20289:1020;;;:::o;16732:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;15904:26::-;;;;;;;;;;;;;:::o;19610:182::-;730:12;:10;:12::i;:::-;719:23;;:7;:5;:7::i;:::-;:23;;;711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19718:3:::1;19694:28;;:12;:28;;::::0;19686:61:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19772:12;19758:11;;:26;;;;;;;;;;;;;;;;;;19610:182:::0;:::o;16135:33::-;;;;;;;;;;;;;:::o;23831:182::-;730:12;:10;:12::i;:::-;719:23;;:7;:5;:7::i;:::-;:23;;;711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23947:8:::1;23916:19;:28;23936:7;23916:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;23987:7;23971:34;;;23996:8;23971:34;;;;;;:::i;:::-;;;;;;;;23831:182:::0;;:::o;15937:28::-;;;;;;;;;;;;;:::o;22049:481::-;22146:4;730:12;:10;:12::i;:::-;719:23;;:7;:5;:7::i;:::-;:23;;;711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22220:6:::1;22215:1;22199:13;:11;:13::i;:::-;:17;;;;:::i;:::-;22198:28;;;;:::i;:::-;22185:9;:41;;22163:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;22375:4;22370:1;22354:13;:11;:13::i;:::-;:17;;;;:::i;:::-;22353:26;;;;:::i;:::-;22340:9;:39;;22318:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;22491:9;22470:18;:30;;;;22518:4;22511:11;;22049:481:::0;;;:::o;16215:27::-;;;;:::o;16664:59::-;;;;;;;;;;;;;;;;;;;;;;:::o;3576:176::-;3690:7;3717:11;:18;3729:5;3717:18;;;;;;;;;;;;;;;:27;3736:7;3717:27;;;;;;;;;;;;;;;;3710:34;;3576:176;;;;:::o;22815:167::-;730:12;:10;:12::i;:::-;719:23;;:7;:5;:7::i;:::-;:23;;;711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22970:4:::1;22932:27;:35;22960:6;22932:35;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;22815:167:::0;;:::o;16012:33::-;;;;:::o;16502:44::-;;;;;;;;;;;;;;;;;:::o;918:238::-;730:12;:10;:12::i;:::-;719:23;;:7;:5;:7::i;:::-;:23;;;711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1041:1:::1;1021:22;;:8;:22;;::::0;999:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1120:28;1139:8;1120:18;:28::i;:::-;918:238:::0;:::o;15974:31::-;;;;:::o;105:98::-;158:7;185:10;178:17;;105:98;:::o;7064:380::-;7217:1;7200:19;;:5;:19;;;7192:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7298:1;7279:21;;:7;:21;;;7271:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7382:6;7352:11;:18;7364:5;7352:18;;;;;;;;;;;;;;;:27;7371:7;7352:27;;;;;;;;;;;;;;;:36;;;;7420:7;7404:32;;7413:5;7404:32;;;7429:6;7404:32;;;;;;:::i;:::-;;;;;;;;7064:380;;;:::o;24898:4327::-;25046:1;25030:18;;:4;:18;;;25022:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25123:1;25109:16;;:2;:16;;;25101:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;25185:12;:18;25198:4;25185:18;;;;;;;;;;;;;;;;;;;;;;;;;25184:19;25176:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;25245:12;:16;25258:2;25245:16;;;;;;;;;;;;;;;;;;;;;;;;;25244:17;25236:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;25308:1;25298:6;:11;25294:93;;25326:28;25342:4;25348:2;25352:1;25326:15;:28::i;:::-;25369:7;;25294:93;25403:14;;;;;;;;;;;25399:1686;;;25464:7;:5;:7::i;:::-;25456:15;;:4;:15;;;;:49;;;;;25498:7;:5;:7::i;:::-;25492:13;;:2;:13;;;;25456:49;:86;;;;;25540:1;25526:16;;:2;:16;;;;25456:86;:128;;;;;25577:6;25563:21;;:2;:21;;;;25456:128;:158;;;;;25606:8;;;;;;;;;;;25605:9;25456:158;25434:1640;;;25654:13;;;;;;;;;;;25649:223;;25726:19;:25;25746:4;25726:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;25755:19;:23;25775:2;25755:23;;;;;;;;;;;;;;;;;;;;;;;;;25726:52;25692:160;;;;;;;;;;;;:::i;:::-;;;;;;;;;25649:223;25946:25;:31;25972:4;25946:31;;;;;;;;;;;;;;;;;;;;;;;;;:88;;;;;26003:27;:31;26031:2;26003:31;;;;;;;;;;;;;;;;;;;;;;;;;26002:32;25946:88;25920:1139;;;26121:16;;26111:6;:26;;26077:161;;;;;;;;;;;;:::i;:::-;;;;;;;;;26321:19;;26304:13;26314:2;26304:9;:13::i;:::-;26295:6;:22;;;;:::i;:::-;:45;;26261:150;;;;;;;;;;;;:::i;:::-;;;;;;;;;25920:1139;;;26509:25;:29;26535:2;26509:29;;;;;;;;;;;;;;;;;;;;;;;;;:88;;;;;26564:27;:33;26592:4;26564:33;;;;;;;;;;;;;;;;;;;;;;;;;26563:34;26509:88;26483:576;;;26684:16;;26674:6;:26;;26640:162;;;;;;;;;;;;:::i;:::-;;;;;;;;;26483:576;;;26833:27;:31;26861:2;26833:31;;;;;;;;;;;;;;;;;;;;;;;;;26828:231;;26949:19;;26932:13;26942:2;26932:9;:13::i;:::-;26923:6;:22;;;;:::i;:::-;:45;;26889:150;;;;;;;;;;;;:::i;:::-;;;;;;;;;26828:231;26483:576;25920:1139;25434:1640;25399:1686;27138:1;27115:25;;:11;;;;;;;;;;;:25;;;;:92;;;;;27170:11;;;;;;;;;;;27157:35;;;27201:4;27157:50;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27115:92;27097:456;;;27234:10;27260:11;;;;;;;;;;;27247:31;;;27297:4;27320:2;27349:13;;;;;;;;;;;27382:19;;27420:16;;27455:18;;27247:241;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27234:254;;27511:5;27503:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;27219:334;27097:456;27565:28;27596:24;27614:4;27596:9;:24::i;:::-;27565:55;;27631:12;27670:18;;27646:20;:42;;27631:57;;27717:7;:35;;;;;27741:11;;;;;;;;;;;27717:35;:61;;;;;27770:8;;;;;;;;;;;27769:9;27717:61;:107;;;;;27795:25;:29;27821:2;27795:29;;;;;;;;;;;;;;;;;;;;;;;;;27717:107;:150;;;;;27842:19;:25;27862:4;27842:25;;;;;;;;;;;;;;;;;;;;;;;;;27841:26;27717:150;:191;;;;;27885:19;:23;27905:2;27885:23;;;;;;;;;;;;;;;;;;;;;;;;;27884:24;27717:191;27699:319;;;27946:4;27935:8;;:15;;;;;;;;;;;;;;;;;;27965:10;:8;:10::i;:::-;28001:5;27990:8;;:16;;;;;;;;;;;;;;;;;;27699:319;28030:12;28046:8;;;;;;;;;;;28045:9;28030:24;;28156:19;:25;28176:4;28156:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;28185:19;:23;28205:2;28185:23;;;;;;;;;;;;;;;;;;;;;;;;;28156:52;28152:100;;;28235:5;28225:15;;28152:100;28264:12;28369:7;28365:807;;;28421:25;:29;28447:2;28421:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;28470:1;28454:13;;:17;28421:50;28417:606;;;28499:34;28529:3;28499:25;28510:13;;28499:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;28492:41;;28590:13;;28576:10;;28569:4;:17;;;;:::i;:::-;28568:35;;;;:::i;:::-;28552:12;;:51;;;;;;;:::i;:::-;;;;;;;;28672:13;;28652:16;;28645:4;:23;;;;:::i;:::-;28644:41;;;;:::i;:::-;28622:18;;:63;;;;;;;:::i;:::-;;;;;;;;28417:606;;;28747:25;:31;28773:4;28747:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;28797:1;28782:12;;:16;28747:51;28743:280;;;28826:33;28855:3;28826:24;28837:12;;28826:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;28819:40;;28915:12;;28902:9;;28895:4;:16;;;;:::i;:::-;28894:33;;;;:::i;:::-;28878:12;;:49;;;;;;;:::i;:::-;;;;;;;;28995:12;;28976:15;;28969:4;:22;;;;:::i;:::-;28968:39;;;;:::i;:::-;28946:18;;:61;;;;;;;:::i;:::-;;;;;;;;28743:280;28417:606;29050:1;29043:4;:8;29039:91;;;29072:42;29088:4;29102;29109;29072:15;:42::i;:::-;29039:91;29156:4;29146:14;;;;;:::i;:::-;;;28365:807;29184:33;29200:4;29206:2;29210:6;29184:15;:33::i;:::-;25011:4214;;;;24898:4327;;;;:::o;1164:191::-;1238:16;1257:6;;;;;;;;;;;1238:25;;1283:8;1274:6;;:17;;;;;;;;;;;;;;;;;;1338:8;1307:40;;1328:8;1307:40;;;;;;;;;;;;1227:128;1164:191;:::o;24335:186::-;24452:5;24418:25;:31;24444:4;24418:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;24507:5;24473:40;;24501:4;24473:40;;;;;;;;;;;;24335:186;;:::o;5280:770::-;5438:1;5420:20;;:6;:20;;;5412:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5522:1;5501:23;;:9;:23;;;5493:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5577:47;5598:6;5606:9;5617:6;5577:20;:47::i;:::-;5637:21;5661:9;:17;5671:6;5661:17;;;;;;;;;;;;;;;;5637:41;;5728:6;5711:13;:23;;5689:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;5872:6;5856:13;:22;5836:9;:17;5846:6;5836:17;;;;;;;;;;;;;;;:42;;;;5924:6;5900:9;:20;5910:9;5900:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5965:9;5948:35;;5957:6;5948:35;;;5976:6;5948:35;;;;;;:::i;:::-;;;;;;;;5996:46;6016:6;6024:9;6035:6;5996:19;:46::i;:::-;5401:649;5280:770;;;:::o;29945:928::-;29984:23;30010:24;30028:4;30010:9;:24::i;:::-;29984:50;;30045:25;30094:12;;30073:18;;:33;;;;:::i;:::-;30045:61;;30117:12;30165:1;30146:15;:20;:46;;;;30191:1;30170:17;:22;30146:46;30142:85;;;30209:7;;;;;30142:85;30282:2;30261:18;;:23;;;;:::i;:::-;30243:15;:41;30239:115;;;30340:2;30319:18;;:23;;;;:::i;:::-;30301:41;;30239:115;30366:25;30394:21;30366:49;;30426:33;30443:15;30426:16;:33::i;:::-;30472:18;30493:44;30519:17;30493:21;:25;;:44;;;;:::i;:::-;30472:65;;30548:17;30568:51;30601:17;30568:28;30583:12;;30568:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;30548:71;;30653:1;30632:18;:22;;;;30680:1;30665:12;:16;;;;30716:13;;;;;;;;;;;30708:27;;30743:9;30708:49;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30694:63;;;;;30790:11;;;;;;;;;;;30782:25;;30815:21;30782:83;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30768:97;;;;;29973:900;;;;;;29945:928;:::o;9193:98::-;9251:7;9282:1;9278;:5;;;;:::i;:::-;9271:12;;9193:98;;;;:::o;9299:::-;9357:7;9388:1;9384;:5;;;;:::i;:::-;9377:12;;9299:98;;;;:::o;7452:125::-;;;;:::o;7585:124::-;;;;:::o;29348:589::-;29474:21;29512:1;29498:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29474:40;;29543:4;29525;29530:1;29525:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;29569:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29559:4;29564:1;29559:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;29604:62;29621:4;29636:15;;;;;;;;;;;29654:11;29604:8;:62::i;:::-;29705:15;;;;;;;;;;;:66;;;29786:11;29812:1;29856:4;29883;29903:15;29705:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29403:534;29348:589;:::o;9087:98::-;9145:7;9176:1;9172;:5;;;;:::i;:::-;9165:12;;9087:98;;;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:126::-;1207:7;1247:42;1240:5;1236:54;1225:65;;1170:126;;;:::o;1302:96::-;1339:7;1368:24;1386:5;1368:24;:::i;:::-;1357:35;;1302:96;;;:::o;1404:122::-;1477:24;1495:5;1477:24;:::i;:::-;1470:5;1467:35;1457:63;;1516:1;1513;1506:12;1457:63;1404:122;:::o;1532:139::-;1578:5;1616:6;1603:20;1594:29;;1632:33;1659:5;1632:33;:::i;:::-;1532:139;;;;:::o;1677:329::-;1736:6;1785:2;1773:9;1764:7;1760:23;1756:32;1753:119;;;1791:79;;:::i;:::-;1753:119;1911:1;1936:53;1981:7;1972:6;1961:9;1957:22;1936:53;:::i;:::-;1926:63;;1882:117;1677:329;;;;:::o;2012:99::-;2064:6;2098:5;2092:12;2082:22;;2012:99;;;:::o;2117:169::-;2201:11;2235:6;2230:3;2223:19;2275:4;2270:3;2266:14;2251:29;;2117:169;;;;:::o;2292:246::-;2373:1;2383:113;2397:6;2394:1;2391:13;2383:113;;;2482:1;2477:3;2473:11;2467:18;2463:1;2458:3;2454:11;2447:39;2419:2;2416:1;2412:10;2407:15;;2383:113;;;2530:1;2521:6;2516:3;2512:16;2505:27;2354:184;2292:246;;;:::o;2544:102::-;2585:6;2636:2;2632:7;2627:2;2620:5;2616:14;2612:28;2602:38;;2544:102;;;:::o;2652:377::-;2740:3;2768:39;2801:5;2768:39;:::i;:::-;2823:71;2887:6;2882:3;2823:71;:::i;:::-;2816:78;;2903:65;2961:6;2956:3;2949:4;2942:5;2938:16;2903:65;:::i;:::-;2993:29;3015:6;2993:29;:::i;:::-;2988:3;2984:39;2977:46;;2744:285;2652:377;;;;:::o;3035:313::-;3148:4;3186:2;3175:9;3171:18;3163:26;;3235:9;3229:4;3225:20;3221:1;3210:9;3206:17;3199:47;3263:78;3336:4;3327:6;3263:78;:::i;:::-;3255:86;;3035:313;;;;:::o;3354:474::-;3422:6;3430;3479:2;3467:9;3458:7;3454:23;3450:32;3447:119;;;3485:79;;:::i;:::-;3447:119;3605:1;3630:53;3675:7;3666:6;3655:9;3651:22;3630:53;:::i;:::-;3620:63;;3576:117;3732:2;3758:53;3803:7;3794:6;3783:9;3779:22;3758:53;:::i;:::-;3748:63;;3703:118;3354:474;;;;;:::o;3834:90::-;3868:7;3911:5;3904:13;3897:21;3886:32;;3834:90;;;:::o;3930:109::-;4011:21;4026:5;4011:21;:::i;:::-;4006:3;3999:34;3930:109;;:::o;4045:210::-;4132:4;4170:2;4159:9;4155:18;4147:26;;4183:65;4245:1;4234:9;4230:17;4221:6;4183:65;:::i;:::-;4045:210;;;;:::o;4261:60::-;4289:3;4310:5;4303:12;;4261:60;;;:::o;4327:142::-;4377:9;4410:53;4428:34;4437:24;4455:5;4437:24;:::i;:::-;4428:34;:::i;:::-;4410:53;:::i;:::-;4397:66;;4327:142;;;:::o;4475:126::-;4525:9;4558:37;4589:5;4558:37;:::i;:::-;4545:50;;4475:126;;;:::o;4607:153::-;4684:9;4717:37;4748:5;4717:37;:::i;:::-;4704:50;;4607:153;;;:::o;4766:185::-;4880:64;4938:5;4880:64;:::i;:::-;4875:3;4868:77;4766:185;;:::o;4957:276::-;5077:4;5115:2;5104:9;5100:18;5092:26;;5128:98;5223:1;5212:9;5208:17;5199:6;5128:98;:::i;:::-;4957:276;;;;:::o;5239:118::-;5326:24;5344:5;5326:24;:::i;:::-;5321:3;5314:37;5239:118;;:::o;5363:222::-;5456:4;5494:2;5483:9;5479:18;5471:26;;5507:71;5575:1;5564:9;5560:17;5551:6;5507:71;:::i;:::-;5363:222;;;;:::o;5591:329::-;5650:6;5699:2;5687:9;5678:7;5674:23;5670:32;5667:119;;;5705:79;;:::i;:::-;5667:119;5825:1;5850:53;5895:7;5886:6;5875:9;5871:22;5850:53;:::i;:::-;5840:63;;5796:117;5591:329;;;;:::o;5926:619::-;6003:6;6011;6019;6068:2;6056:9;6047:7;6043:23;6039:32;6036:119;;;6074:79;;:::i;:::-;6036:119;6194:1;6219:53;6264:7;6255:6;6244:9;6240:22;6219:53;:::i;:::-;6209:63;;6165:117;6321:2;6347:53;6392:7;6383:6;6372:9;6368:22;6347:53;:::i;:::-;6337:63;;6292:118;6449:2;6475:53;6520:7;6511:6;6500:9;6496:22;6475:53;:::i;:::-;6465:63;;6420:118;5926:619;;;;;:::o;6551:86::-;6586:7;6626:4;6619:5;6615:16;6604:27;;6551:86;;;:::o;6643:112::-;6726:22;6742:5;6726:22;:::i;:::-;6721:3;6714:35;6643:112;;:::o;6761:214::-;6850:4;6888:2;6877:9;6873:18;6865:26;;6901:67;6965:1;6954:9;6950:17;6941:6;6901:67;:::i;:::-;6761:214;;;;:::o;6981:118::-;7068:24;7086:5;7068:24;:::i;:::-;7063:3;7056:37;6981:118;;:::o;7105:222::-;7198:4;7236:2;7225:9;7221:18;7213:26;;7249:71;7317:1;7306:9;7302:17;7293:6;7249:71;:::i;:::-;7105:222;;;;:::o;7333:117::-;7442:1;7439;7432:12;7456:117;7565:1;7562;7555:12;7579:117;7688:1;7685;7678:12;7719:568;7792:8;7802:6;7852:3;7845:4;7837:6;7833:17;7829:27;7819:122;;7860:79;;:::i;:::-;7819:122;7973:6;7960:20;7950:30;;8003:18;7995:6;7992:30;7989:117;;;8025:79;;:::i;:::-;7989:117;8139:4;8131:6;8127:17;8115:29;;8193:3;8185:4;8177:6;8173:17;8163:8;8159:32;8156:41;8153:128;;;8200:79;;:::i;:::-;8153:128;7719:568;;;;;:::o;8293:116::-;8363:21;8378:5;8363:21;:::i;:::-;8356:5;8353:32;8343:60;;8399:1;8396;8389:12;8343:60;8293:116;:::o;8415:133::-;8458:5;8496:6;8483:20;8474:29;;8512:30;8536:5;8512:30;:::i;:::-;8415:133;;;;:::o;8554:698::-;8646:6;8654;8662;8711:2;8699:9;8690:7;8686:23;8682:32;8679:119;;;8717:79;;:::i;:::-;8679:119;8865:1;8854:9;8850:17;8837:31;8895:18;8887:6;8884:30;8881:117;;;8917:79;;:::i;:::-;8881:117;9030:80;9102:7;9093:6;9082:9;9078:22;9030:80;:::i;:::-;9012:98;;;;8808:312;9159:2;9185:50;9227:7;9218:6;9207:9;9203:22;9185:50;:::i;:::-;9175:60;;9130:115;8554:698;;;;;:::o;9258:323::-;9314:6;9363:2;9351:9;9342:7;9338:23;9334:32;9331:119;;;9369:79;;:::i;:::-;9331:119;9489:1;9514:50;9556:7;9547:6;9536:9;9532:22;9514:50;:::i;:::-;9504:60;;9460:114;9258:323;;;;:::o;9587:468::-;9652:6;9660;9709:2;9697:9;9688:7;9684:23;9680:32;9677:119;;;9715:79;;:::i;:::-;9677:119;9835:1;9860:53;9905:7;9896:6;9885:9;9881:22;9860:53;:::i;:::-;9850:63;;9806:117;9962:2;9988:50;10030:7;10021:6;10010:9;10006:22;9988:50;:::i;:::-;9978:60;;9933:115;9587:468;;;;;:::o;10061:118::-;10132:22;10148:5;10132:22;:::i;:::-;10125:5;10122:33;10112:61;;10169:1;10166;10159:12;10112:61;10061:118;:::o;10185:135::-;10229:5;10267:6;10254:20;10245:29;;10283:31;10308:5;10283:31;:::i;:::-;10185:135;;;;:::o;10326:77::-;10363:7;10392:5;10381:16;;10326:77;;;:::o;10409:122::-;10482:24;10500:5;10482:24;:::i;:::-;10475:5;10472:35;10462:63;;10521:1;10518;10511:12;10462:63;10409:122;:::o;10537:139::-;10583:5;10621:6;10608:20;10599:29;;10637:33;10664:5;10637:33;:::i;:::-;10537:139;;;;:::o;10682:615::-;10757:6;10765;10773;10822:2;10810:9;10801:7;10797:23;10793:32;10790:119;;;10828:79;;:::i;:::-;10790:119;10948:1;10973:51;11016:7;11007:6;10996:9;10992:22;10973:51;:::i;:::-;10963:61;;10919:115;11073:2;11099:53;11144:7;11135:6;11124:9;11120:22;11099:53;:::i;:::-;11089:63;;11044:118;11201:2;11227:53;11272:7;11263:6;11252:9;11248:22;11227:53;:::i;:::-;11217:63;;11172:118;10682:615;;;;;:::o;11303:474::-;11371:6;11379;11428:2;11416:9;11407:7;11403:23;11399:32;11396:119;;;11434:79;;:::i;:::-;11396:119;11554:1;11579:53;11624:7;11615:6;11604:9;11600:22;11579:53;:::i;:::-;11569:63;;11525:117;11681:2;11707:53;11752:7;11743:6;11732:9;11728:22;11707:53;:::i;:::-;11697:63;;11652:118;11303:474;;;;;:::o;11783:182::-;11923:34;11919:1;11911:6;11907:14;11900:58;11783:182;:::o;11971:366::-;12113:3;12134:67;12198:2;12193:3;12134:67;:::i;:::-;12127:74;;12210:93;12299:3;12210:93;:::i;:::-;12328:2;12323:3;12319:12;12312:19;;11971:366;;;:::o;12343:419::-;12509:4;12547:2;12536:9;12532:18;12524:26;;12596:9;12590:4;12586:20;12582:1;12571:9;12567:17;12560:47;12624:131;12750:4;12624:131;:::i;:::-;12616:139;;12343:419;;;:::o;12768:180::-;12816:77;12813:1;12806:88;12913:4;12910:1;12903:15;12937:4;12934:1;12927:15;12954:191;12994:3;13013:20;13031:1;13013:20;:::i;:::-;13008:25;;13047:20;13065:1;13047:20;:::i;:::-;13042:25;;13090:1;13087;13083:9;13076:16;;13111:3;13108:1;13105:10;13102:36;;;13118:18;;:::i;:::-;13102:36;12954:191;;;;:::o;13151:179::-;13291:31;13287:1;13279:6;13275:14;13268:55;13151:179;:::o;13336:366::-;13478:3;13499:67;13563:2;13558:3;13499:67;:::i;:::-;13492:74;;13575:93;13664:3;13575:93;:::i;:::-;13693:2;13688:3;13684:12;13677:19;;13336:366;;;:::o;13708:419::-;13874:4;13912:2;13901:9;13897:18;13889:26;;13961:9;13955:4;13951:20;13947:1;13936:9;13932:17;13925:47;13989:131;14115:4;13989:131;:::i;:::-;13981:139;;13708:419;;;:::o;14133:180::-;14181:77;14178:1;14171:88;14278:4;14275:1;14268:15;14302:4;14299:1;14292:15;14319:320;14363:6;14400:1;14394:4;14390:12;14380:22;;14447:1;14441:4;14437:12;14468:18;14458:81;;14524:4;14516:6;14512:17;14502:27;;14458:81;14586:2;14578:6;14575:14;14555:18;14552:38;14549:84;;14605:18;;:::i;:::-;14549:84;14370:269;14319:320;;;:::o;14645:410::-;14685:7;14708:20;14726:1;14708:20;:::i;:::-;14703:25;;14742:20;14760:1;14742:20;:::i;:::-;14737:25;;14797:1;14794;14790:9;14819:30;14837:11;14819:30;:::i;:::-;14808:41;;14998:1;14989:7;14985:15;14982:1;14979:22;14959:1;14952:9;14932:83;14909:139;;15028:18;;:::i;:::-;14909:139;14693:362;14645:410;;;;:::o;15061:180::-;15109:77;15106:1;15099:88;15206:4;15203:1;15196:15;15230:4;15227:1;15220:15;15247:185;15287:1;15304:20;15322:1;15304:20;:::i;:::-;15299:25;;15338:20;15356:1;15338:20;:::i;:::-;15333:25;;15377:1;15367:35;;15382:18;;:::i;:::-;15367:35;15424:1;15421;15417:9;15412:14;;15247:185;;;;:::o;15438:230::-;15578:34;15574:1;15566:6;15562:14;15555:58;15647:13;15642:2;15634:6;15630:15;15623:38;15438:230;:::o;15674:366::-;15816:3;15837:67;15901:2;15896:3;15837:67;:::i;:::-;15830:74;;15913:93;16002:3;15913:93;:::i;:::-;16031:2;16026:3;16022:12;16015:19;;15674:366;;;:::o;16046:419::-;16212:4;16250:2;16239:9;16235:18;16227:26;;16299:9;16293:4;16289:20;16285:1;16274:9;16270:17;16263:47;16327:131;16453:4;16327:131;:::i;:::-;16319:139;;16046:419;;;:::o;16471:227::-;16611:34;16607:1;16599:6;16595:14;16588:58;16680:10;16675:2;16667:6;16663:15;16656:35;16471:227;:::o;16704:366::-;16846:3;16867:67;16931:2;16926:3;16867:67;:::i;:::-;16860:74;;16943:93;17032:3;16943:93;:::i;:::-;17061:2;17056:3;17052:12;17045:19;;16704:366;;;:::o;17076:419::-;17242:4;17280:2;17269:9;17265:18;17257:26;;17329:9;17323:4;17319:20;17315:1;17304:9;17300:17;17293:47;17357:131;17483:4;17357:131;:::i;:::-;17349:139;;17076:419;;;:::o;17501:173::-;17641:25;17637:1;17629:6;17625:14;17618:49;17501:173;:::o;17680:366::-;17822:3;17843:67;17907:2;17902:3;17843:67;:::i;:::-;17836:74;;17919:93;18008:3;17919:93;:::i;:::-;18037:2;18032:3;18028:12;18021:19;;17680:366;;;:::o;18052:419::-;18218:4;18256:2;18245:9;18241:18;18233:26;;18305:9;18299:4;18295:20;18291:1;18280:9;18276:17;18269:47;18333:131;18459:4;18333:131;:::i;:::-;18325:139;;18052:419;;;:::o;18477:233::-;18617:34;18613:1;18605:6;18601:14;18594:58;18686:16;18681:2;18673:6;18669:15;18662:41;18477:233;:::o;18716:366::-;18858:3;18879:67;18943:2;18938:3;18879:67;:::i;:::-;18872:74;;18955:93;19044:3;18955:93;:::i;:::-;19073:2;19068:3;19064:12;19057:19;;18716:366;;;:::o;19088:419::-;19254:4;19292:2;19281:9;19277:18;19269:26;;19341:9;19335:4;19331:20;19327:1;19316:9;19312:17;19305:47;19369:131;19495:4;19369:131;:::i;:::-;19361:139;;19088:419;;;:::o;19513:180::-;19561:77;19558:1;19551:88;19658:4;19655:1;19648:15;19682:4;19679:1;19672:15;19699:244;19839:34;19835:1;19827:6;19823:14;19816:58;19908:27;19903:2;19895:6;19891:15;19884:52;19699:244;:::o;19949:366::-;20091:3;20112:67;20176:2;20171:3;20112:67;:::i;:::-;20105:74;;20188:93;20277:3;20188:93;:::i;:::-;20306:2;20301:3;20297:12;20290:19;;19949:366;;;:::o;20321:419::-;20487:4;20525:2;20514:9;20510:18;20502:26;;20574:9;20568:4;20564:20;20560:1;20549:9;20545:17;20538:47;20602:131;20728:4;20602:131;:::i;:::-;20594:139;;20321:419;;;:::o;20746:224::-;20886:34;20882:1;20874:6;20870:14;20863:58;20955:7;20950:2;20942:6;20938:15;20931:32;20746:224;:::o;20976:366::-;21118:3;21139:67;21203:2;21198:3;21139:67;:::i;:::-;21132:74;;21215:93;21304:3;21215:93;:::i;:::-;21333:2;21328:3;21324:12;21317:19;;20976:366;;;:::o;21348:419::-;21514:4;21552:2;21541:9;21537:18;21529:26;;21601:9;21595:4;21591:20;21587:1;21576:9;21572:17;21565:47;21629:131;21755:4;21629:131;:::i;:::-;21621:139;;21348:419;;;:::o;21773:118::-;21860:24;21878:5;21860:24;:::i;:::-;21855:3;21848:37;21773:118;;:::o;21897:664::-;22102:4;22140:3;22129:9;22125:19;22117:27;;22154:71;22222:1;22211:9;22207:17;22198:6;22154:71;:::i;:::-;22235:72;22303:2;22292:9;22288:18;22279:6;22235:72;:::i;:::-;22317;22385:2;22374:9;22370:18;22361:6;22317:72;:::i;:::-;22399;22467:2;22456:9;22452:18;22443:6;22399:72;:::i;:::-;22481:73;22549:3;22538:9;22534:19;22525:6;22481:73;:::i;:::-;21897:664;;;;;;;;:::o;22567:442::-;22716:4;22754:2;22743:9;22739:18;22731:26;;22767:71;22835:1;22824:9;22820:17;22811:6;22767:71;:::i;:::-;22848:72;22916:2;22905:9;22901:18;22892:6;22848:72;:::i;:::-;22930;22998:2;22987:9;22983:18;22974:6;22930:72;:::i;:::-;22567:442;;;;;;:::o;23015:148::-;23117:11;23154:3;23139:18;;23015:148;;;;:::o;23169:214::-;23309:66;23305:1;23297:6;23293:14;23286:90;23169:214;:::o;23389:400::-;23549:3;23570:84;23652:1;23647:3;23570:84;:::i;:::-;23563:91;;23663:93;23752:3;23663:93;:::i;:::-;23781:1;23776:3;23772:11;23765:18;;23389:400;;;:::o;23795:79::-;23834:7;23863:5;23852:16;;23795:79;;;:::o;23880:157::-;23985:45;24005:24;24023:5;24005:24;:::i;:::-;23985:45;:::i;:::-;23980:3;23973:58;23880:157;;:::o;24043:663::-;24284:3;24306:148;24450:3;24306:148;:::i;:::-;24299:155;;24464:75;24535:3;24526:6;24464:75;:::i;:::-;24564:2;24559:3;24555:12;24548:19;;24577:75;24648:3;24639:6;24577:75;:::i;:::-;24677:2;24672:3;24668:12;24661:19;;24697:3;24690:10;;24043:663;;;;;:::o;24712:545::-;24885:4;24923:3;24912:9;24908:19;24900:27;;24937:71;25005:1;24994:9;24990:17;24981:6;24937:71;:::i;:::-;25018:68;25082:2;25071:9;25067:18;25058:6;25018:68;:::i;:::-;25096:72;25164:2;25153:9;25149:18;25140:6;25096:72;:::i;:::-;25178;25246:2;25235:9;25231:18;25222:6;25178:72;:::i;:::-;24712:545;;;;;;;:::o;25263:167::-;25403:19;25399:1;25391:6;25387:14;25380:43;25263:167;:::o;25436:366::-;25578:3;25599:67;25663:2;25658:3;25599:67;:::i;:::-;25592:74;;25675:93;25764:3;25675:93;:::i;:::-;25793:2;25788:3;25784:12;25777:19;;25436:366;;;:::o;25808:419::-;25974:4;26012:2;26001:9;25997:18;25989:26;;26061:9;26055:4;26051:20;26047:1;26036:9;26032:17;26025:47;26089:131;26215:4;26089:131;:::i;:::-;26081:139;;25808:419;;;:::o;26233:170::-;26373:22;26369:1;26361:6;26357:14;26350:46;26233:170;:::o;26409:366::-;26551:3;26572:67;26636:2;26631:3;26572:67;:::i;:::-;26565:74;;26648:93;26737:3;26648:93;:::i;:::-;26766:2;26761:3;26757:12;26750:19;;26409:366;;;:::o;26781:419::-;26947:4;26985:2;26974:9;26970:18;26962:26;;27034:9;27028:4;27024:20;27020:1;27009:9;27005:17;26998:47;27062:131;27188:4;27062:131;:::i;:::-;27054:139;;26781:419;;;:::o;27206:240::-;27346:34;27342:1;27334:6;27330:14;27323:58;27415:23;27410:2;27402:6;27398:15;27391:48;27206:240;:::o;27452:366::-;27594:3;27615:67;27679:2;27674:3;27615:67;:::i;:::-;27608:74;;27691:93;27780:3;27691:93;:::i;:::-;27809:2;27804:3;27800:12;27793:19;;27452:366;;;:::o;27824:419::-;27990:4;28028:2;28017:9;28013:18;28005:26;;28077:9;28071:4;28067:20;28063:1;28052:9;28048:17;28041:47;28105:131;28231:4;28105:131;:::i;:::-;28097:139;;27824:419;;;:::o;28249:239::-;28389:34;28385:1;28377:6;28373:14;28366:58;28458:22;28453:2;28445:6;28441:15;28434:47;28249:239;:::o;28494:366::-;28636:3;28657:67;28721:2;28716:3;28657:67;:::i;:::-;28650:74;;28733:93;28822:3;28733:93;:::i;:::-;28851:2;28846:3;28842:12;28835:19;;28494:366;;;:::o;28866:419::-;29032:4;29070:2;29059:9;29055:18;29047:26;;29119:9;29113:4;29109:20;29105:1;29094:9;29090:17;29083:47;29147:131;29273:4;29147:131;:::i;:::-;29139:139;;28866:419;;;:::o;29291:225::-;29431:34;29427:1;29419:6;29415:14;29408:58;29500:8;29495:2;29487:6;29483:15;29476:33;29291:225;:::o;29522:366::-;29664:3;29685:67;29749:2;29744:3;29685:67;:::i;:::-;29678:74;;29761:93;29850:3;29761:93;:::i;:::-;29879:2;29874:3;29870:12;29863:19;;29522:366;;;:::o;29894:419::-;30060:4;30098:2;30087:9;30083:18;30075:26;;30147:9;30141:4;30137:20;30133:1;30122:9;30118:17;30111:47;30175:131;30301:4;30175:131;:::i;:::-;30167:139;;29894:419;;;:::o;30319:223::-;30459:34;30455:1;30447:6;30443:14;30436:58;30528:6;30523:2;30515:6;30511:15;30504:31;30319:223;:::o;30548:366::-;30690:3;30711:67;30775:2;30770:3;30711:67;:::i;:::-;30704:74;;30787:93;30876:3;30787:93;:::i;:::-;30905:2;30900:3;30896:12;30889:19;;30548:366;;;:::o;30920:419::-;31086:4;31124:2;31113:9;31109:18;31101:26;;31173:9;31167:4;31163:20;31159:1;31148:9;31144:17;31137:47;31201:131;31327:4;31201:131;:::i;:::-;31193:139;;30920:419;;;:::o;31345:221::-;31485:34;31481:1;31473:6;31469:14;31462:58;31554:4;31549:2;31541:6;31537:15;31530:29;31345:221;:::o;31572:366::-;31714:3;31735:67;31799:2;31794:3;31735:67;:::i;:::-;31728:74;;31811:93;31900:3;31811:93;:::i;:::-;31929:2;31924:3;31920:12;31913:19;;31572:366;;;:::o;31944:419::-;32110:4;32148:2;32137:9;32133:18;32125:26;;32197:9;32191:4;32187:20;32183:1;32172:9;32168:17;32161:47;32225:131;32351:4;32225:131;:::i;:::-;32217:139;;31944:419;;;:::o;32369:224::-;32509:34;32505:1;32497:6;32493:14;32486:58;32578:7;32573:2;32565:6;32561:15;32554:32;32369:224;:::o;32599:366::-;32741:3;32762:67;32826:2;32821:3;32762:67;:::i;:::-;32755:74;;32838:93;32927:3;32838:93;:::i;:::-;32956:2;32951:3;32947:12;32940:19;;32599:366;;;:::o;32971:419::-;33137:4;33175:2;33164:9;33160:18;33152:26;;33224:9;33218:4;33214:20;33210:1;33199:9;33195:17;33188:47;33252:131;33378:4;33252:131;:::i;:::-;33244:139;;32971:419;;;:::o;33396:222::-;33536:34;33532:1;33524:6;33520:14;33513:58;33605:5;33600:2;33592:6;33588:15;33581:30;33396:222;:::o;33624:366::-;33766:3;33787:67;33851:2;33846:3;33787:67;:::i;:::-;33780:74;;33863:93;33952:3;33863:93;:::i;:::-;33981:2;33976:3;33972:12;33965:19;;33624:366;;;:::o;33996:419::-;34162:4;34200:2;34189:9;34185:18;34177:26;;34249:9;34243:4;34239:20;34235:1;34224:9;34220:17;34213:47;34277:131;34403:4;34277:131;:::i;:::-;34269:139;;33996:419;;;:::o;34421:167::-;34561:19;34557:1;34549:6;34545:14;34538:43;34421:167;:::o;34594:366::-;34736:3;34757:67;34821:2;34816:3;34757:67;:::i;:::-;34750:74;;34833:93;34922:3;34833:93;:::i;:::-;34951:2;34946:3;34942:12;34935:19;;34594:366;;;:::o;34966:419::-;35132:4;35170:2;35159:9;35155:18;35147:26;;35219:9;35213:4;35209:20;35205:1;35194:9;35190:17;35183:47;35247:131;35373:4;35247:131;:::i;:::-;35239:139;;34966:419;;;:::o;35391:165::-;35531:17;35527:1;35519:6;35515:14;35508:41;35391:165;:::o;35562:366::-;35704:3;35725:67;35789:2;35784:3;35725:67;:::i;:::-;35718:74;;35801:93;35890:3;35801:93;:::i;:::-;35919:2;35914:3;35910:12;35903:19;;35562:366;;;:::o;35934:419::-;36100:4;36138:2;36127:9;36123:18;36115:26;;36187:9;36181:4;36177:20;36173:1;36162:9;36158:17;36151:47;36215:131;36341:4;36215:131;:::i;:::-;36207:139;;35934:419;;;:::o;36359:172::-;36499:24;36495:1;36487:6;36483:14;36476:48;36359:172;:::o;36537:366::-;36679:3;36700:67;36764:2;36759:3;36700:67;:::i;:::-;36693:74;;36776:93;36865:3;36776:93;:::i;:::-;36894:2;36889:3;36885:12;36878:19;;36537:366;;;:::o;36909:419::-;37075:4;37113:2;37102:9;37098:18;37090:26;;37162:9;37156:4;37152:20;37148:1;37137:9;37133:17;37126:47;37190:131;37316:4;37190:131;:::i;:::-;37182:139;;36909:419;;;:::o;37334:236::-;37474:34;37470:1;37462:6;37458:14;37451:58;37543:19;37538:2;37530:6;37526:15;37519:44;37334:236;:::o;37576:366::-;37718:3;37739:67;37803:2;37798:3;37739:67;:::i;:::-;37732:74;;37815:93;37904:3;37815:93;:::i;:::-;37933:2;37928:3;37924:12;37917:19;;37576:366;;;:::o;37948:419::-;38114:4;38152:2;38141:9;38137:18;38129:26;;38201:9;38195:4;38191:20;38187:1;38176:9;38172:17;38165:47;38229:131;38355:4;38229:131;:::i;:::-;38221:139;;37948:419;;;:::o;38373:169::-;38513:21;38509:1;38501:6;38497:14;38490:45;38373:169;:::o;38548:366::-;38690:3;38711:67;38775:2;38770:3;38711:67;:::i;:::-;38704:74;;38787:93;38876:3;38787:93;:::i;:::-;38905:2;38900:3;38896:12;38889:19;;38548:366;;;:::o;38920:419::-;39086:4;39124:2;39113:9;39109:18;39101:26;;39173:9;39167:4;39163:20;39159:1;39148:9;39144:17;39137:47;39201:131;39327:4;39201:131;:::i;:::-;39193:139;;38920:419;;;:::o;39345:237::-;39485:34;39481:1;39473:6;39469:14;39462:58;39554:20;39549:2;39541:6;39537:15;39530:45;39345:237;:::o;39588:366::-;39730:3;39751:67;39815:2;39810:3;39751:67;:::i;:::-;39744:74;;39827:93;39916:3;39827:93;:::i;:::-;39945:2;39940:3;39936:12;39929:19;;39588:366;;;:::o;39960:419::-;40126:4;40164:2;40153:9;40149:18;40141:26;;40213:9;40207:4;40203:20;40199:1;40188:9;40184:17;40177:47;40241:131;40367:4;40241:131;:::i;:::-;40233:139;;39960:419;;;:::o;40385:137::-;40439:5;40470:6;40464:13;40455:22;;40486:30;40510:5;40486:30;:::i;:::-;40385:137;;;;:::o;40528:345::-;40595:6;40644:2;40632:9;40623:7;40619:23;40615:32;40612:119;;;40650:79;;:::i;:::-;40612:119;40770:1;40795:61;40848:7;40839:6;40828:9;40824:22;40795:61;:::i;:::-;40785:71;;40741:125;40528:345;;;;:::o;40879:775::-;41112:4;41150:3;41139:9;41135:19;41127:27;;41164:71;41232:1;41221:9;41217:17;41208:6;41164:71;:::i;:::-;41245:72;41313:2;41302:9;41298:18;41289:6;41245:72;:::i;:::-;41327;41395:2;41384:9;41380:18;41371:6;41327:72;:::i;:::-;41409;41477:2;41466:9;41462:18;41453:6;41409:72;:::i;:::-;41491:73;41559:3;41548:9;41544:19;41535:6;41491:73;:::i;:::-;41574;41642:3;41631:9;41627:19;41618:6;41574:73;:::i;:::-;40879:775;;;;;;;;;:::o;41660:170::-;41800:22;41796:1;41788:6;41784:14;41777:46;41660:170;:::o;41836:366::-;41978:3;41999:67;42063:2;42058:3;41999:67;:::i;:::-;41992:74;;42075:93;42164:3;42075:93;:::i;:::-;42193:2;42188:3;42184:12;42177:19;;41836:366;;;:::o;42208:419::-;42374:4;42412:2;42401:9;42397:18;42389:26;;42461:9;42455:4;42451:20;42447:1;42436:9;42432:17;42425:47;42489:131;42615:4;42489:131;:::i;:::-;42481:139;;42208:419;;;:::o;42633:194::-;42673:4;42693:20;42711:1;42693:20;:::i;:::-;42688:25;;42727:20;42745:1;42727:20;:::i;:::-;42722:25;;42771:1;42768;42764:9;42756:17;;42795:1;42789:4;42786:11;42783:37;;;42800:18;;:::i;:::-;42783:37;42633:194;;;;:::o;42833:225::-;42973:34;42969:1;42961:6;42957:14;42950:58;43042:8;43037:2;43029:6;43025:15;43018:33;42833:225;:::o;43064:366::-;43206:3;43227:67;43291:2;43286:3;43227:67;:::i;:::-;43220:74;;43303:93;43392:3;43303:93;:::i;:::-;43421:2;43416:3;43412:12;43405:19;;43064:366;;;:::o;43436:419::-;43602:4;43640:2;43629:9;43625:18;43617:26;;43689:9;43683:4;43679:20;43675:1;43664:9;43660:17;43653:47;43717:131;43843:4;43717:131;:::i;:::-;43709:139;;43436:419;;;:::o;43861:147::-;43962:11;43999:3;43984:18;;43861:147;;;;:::o;44014:114::-;;:::o;44134:398::-;44293:3;44314:83;44395:1;44390:3;44314:83;:::i;:::-;44307:90;;44406:93;44495:3;44406:93;:::i;:::-;44524:1;44519:3;44515:11;44508:18;;44134:398;;;:::o;44538:379::-;44722:3;44744:147;44887:3;44744:147;:::i;:::-;44737:154;;44908:3;44901:10;;44538:379;;;:::o;44923:180::-;44971:77;44968:1;44961:88;45068:4;45065:1;45058:15;45092:4;45089:1;45082:15;45109:143;45166:5;45197:6;45191:13;45182:22;;45213:33;45240:5;45213:33;:::i;:::-;45109:143;;;;:::o;45258:351::-;45328:6;45377:2;45365:9;45356:7;45352:23;45348:32;45345:119;;;45383:79;;:::i;:::-;45345:119;45503:1;45528:64;45584:7;45575:6;45564:9;45560:22;45528:64;:::i;:::-;45518:74;;45474:128;45258:351;;;;:::o;45615:85::-;45660:7;45689:5;45678:16;;45615:85;;;:::o;45706:158::-;45764:9;45797:61;45815:42;45824:32;45850:5;45824:32;:::i;:::-;45815:42;:::i;:::-;45797:61;:::i;:::-;45784:74;;45706:158;;;:::o;45870:147::-;45965:45;46004:5;45965:45;:::i;:::-;45960:3;45953:58;45870:147;;:::o;46023:114::-;46090:6;46124:5;46118:12;46108:22;;46023:114;;;:::o;46143:184::-;46242:11;46276:6;46271:3;46264:19;46316:4;46311:3;46307:14;46292:29;;46143:184;;;;:::o;46333:132::-;46400:4;46423:3;46415:11;;46453:4;46448:3;46444:14;46436:22;;46333:132;;;:::o;46471:108::-;46548:24;46566:5;46548:24;:::i;:::-;46543:3;46536:37;46471:108;;:::o;46585:179::-;46654:10;46675:46;46717:3;46709:6;46675:46;:::i;:::-;46753:4;46748:3;46744:14;46730:28;;46585:179;;;;:::o;46770:113::-;46840:4;46872;46867:3;46863:14;46855:22;;46770:113;;;:::o;46919:732::-;47038:3;47067:54;47115:5;47067:54;:::i;:::-;47137:86;47216:6;47211:3;47137:86;:::i;:::-;47130:93;;47247:56;47297:5;47247:56;:::i;:::-;47326:7;47357:1;47342:284;47367:6;47364:1;47361:13;47342:284;;;47443:6;47437:13;47470:63;47529:3;47514:13;47470:63;:::i;:::-;47463:70;;47556:60;47609:6;47556:60;:::i;:::-;47546:70;;47402:224;47389:1;47386;47382:9;47377:14;;47342:284;;;47346:14;47642:3;47635:10;;47043:608;;;46919:732;;;;:::o;47657:831::-;47920:4;47958:3;47947:9;47943:19;47935:27;;47972:71;48040:1;48029:9;48025:17;48016:6;47972:71;:::i;:::-;48053:80;48129:2;48118:9;48114:18;48105:6;48053:80;:::i;:::-;48180:9;48174:4;48170:20;48165:2;48154:9;48150:18;48143:48;48208:108;48311:4;48302:6;48208:108;:::i;:::-;48200:116;;48326:72;48394:2;48383:9;48379:18;48370:6;48326:72;:::i;:::-;48408:73;48476:3;48465:9;48461:19;48452:6;48408:73;:::i;:::-;47657:831;;;;;;;;:::o
Swarm Source
ipfs://2e3b7031defd7cbbaf076bca4115570c7549271889243217405b73c4b769af11
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.