ERC-20
Overview
Max Total Supply
1,312 GOLD
Holders
93
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
22.262658274481379821 GOLDValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Musa
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-12-02 */ /* https://t.me/MusaETH */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.4; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { return msg.data; } } 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); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0x000000000000000000000000000000000000dEaD)); _owner = address(0x000000000000000000000000000000000000dEaD); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); 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(uint) external view returns (address pair); function allPairsLength() external view returns (uint); 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, uint value); event Transfer(address indexed from, address indexed to, uint 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 (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint 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 (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); 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 (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract Musa is Context, IERC20, Ownable { using SafeMath for uint256; string private _name = "Musa"; string private _symbol = "GOLD"; uint8 private _decimals = 18; address payable public marketingWallet = payable(0xF9c66907280c327aD5c56da944159A49481d4743); address payable public DeveloperWallet = payable(0xF9c66907280c327aD5c56da944159A49481d4743); address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD; address public immutable zeroAddress = 0x0000000000000000000000000000000000000000; mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) public isExcludedFromFee; mapping (address => bool) public isMarketPair; mapping (address => bool) public blacklist; mapping (address => bool) public isWalletLimitExempt; mapping (address => bool) public isTxLimitExempt; uint256 public _buyLiquidityFee = 1; uint256 public _buyMarketingFee = 2; uint256 public _buyDeveloperFee = 2; uint256 public _sellLiquidityFee = 1; uint256 public _sellMarketingFee = 2; uint256 public _sellDeveloperFee = 2; uint256 public _totalTaxIfBuying; uint256 public _totalTaxIfSelling; uint256 private _totalSupply = 1312 * 10**_decimals; uint256 public minimumTokensBeforeSwap = _totalSupply.mul(1).div(100); //0.001% uint256 public _maxTxAmount = _totalSupply.mul(2).div(100); //2% uint256 public _walletMax = _totalSupply.mul(2).div(100); //2% IUniswapV2Router02 public uniswapV2Router; address public uniswapPair; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; bool public swapAndLiquifyByLimitOnly = false; bool public checkWalletLimit = true; bool public EnableTransactionLimit = true; event SwapAndLiquifyEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); event SwapETHForTokens( uint256 amountIn, address[] path ); event SwapTokensForETH( uint256 amountIn, address[] path ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor () { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; _allowances[address(this)][address(uniswapV2Router)] = ~uint256(0); isExcludedFromFee[owner()] = true; isExcludedFromFee[marketingWallet] = true; isExcludedFromFee[DeveloperWallet] = true; isExcludedFromFee[address(this)] = true; isWalletLimitExempt[owner()] = true; isWalletLimitExempt[marketingWallet] = true; isWalletLimitExempt[DeveloperWallet] = true; isWalletLimitExempt[address(uniswapPair)] = true; isWalletLimitExempt[address(this)] = true; isTxLimitExempt[owner()] = true; isTxLimitExempt[marketingWallet] = true; isTxLimitExempt[DeveloperWallet] = true; isTxLimitExempt[address(this)] = true; _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee); _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee); isMarketPair[address(uniswapPair)] = true; _balances[_msgSender()] = _totalSupply; emit Transfer(address(0), _msgSender(), _totalSupply); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function _approve(address owner, address spender, uint256 amount) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function setMarketPairStatus(address account, bool newValue) public onlyOwner { isMarketPair[account] = newValue; } function setIsExcludedFromFee(address account, bool newValue) public onlyOwner { isExcludedFromFee[account] = newValue; } function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner { isTxLimitExempt[holder] = exempt; } function setIsWalletLimitExempt(address holder, bool exempt) external onlyOwner { isWalletLimitExempt[holder] = exempt; } function enableTxLimit(bool _status) external onlyOwner { EnableTransactionLimit = _status; } function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() { _maxTxAmount = maxTxAmount; } function enableDisableWalletLimit(bool newValue) external onlyOwner { checkWalletLimit = newValue; } function setWalletLimit(uint256 newLimit) external onlyOwner { _walletMax = newLimit; } function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() { minimumTokensBeforeSwap = newLimit; } function setMarketingWalletAddress(address newAddress) external onlyOwner() { marketingWallet = payable(newAddress); } function setDeveloperWalletAddress(address newAddress) external onlyOwner() { DeveloperWallet = payable(newAddress); } function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner { swapAndLiquifyByLimitOnly = newValue; } function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(deadAddress)).sub(balanceOf(zeroAddress)); } function setBlacklist(address _adr, bool _status) external onlyOwner { blacklist[_adr] = _status; } function transferToAddressETH(address payable recipient, uint256 amount) private { recipient.transfer(amount); } function changeRouterVersion(address newRouterAddress) public onlyOwner returns(address newPairAddress) { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress); newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH()); if(newPairAddress == address(0)) //Create If Doesnt exist { newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); } uniswapPair = newPairAddress; //Set new pair address uniswapV2Router = _uniswapV2Router; //Set new router address isMarketPair[address(uniswapPair)] = true; } function setBuyTaxes(uint _Liquidity, uint _Marketing , uint _Developer) public onlyOwner { _buyLiquidityFee = _Liquidity; _buyMarketingFee = _Marketing; _buyDeveloperFee = _Developer; _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee); } function setSellTaxes(uint _Liquidity, uint _Marketing , uint _Developer) public onlyOwner { _sellLiquidityFee = _Liquidity; _sellMarketingFee = _Marketing; _sellDeveloperFee = _Developer; _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function _transfer(address sender, address recipient, uint256 amount) private returns (bool) { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); require(!blacklist[sender] && !blacklist[recipient], "Bot Enemy address Restricted!"); if(inSwapAndLiquify) { return _basicTransfer(sender, recipient, amount); } else { if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient] && EnableTransactionLimit) { require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); } uint256 contractTokenBalance = balanceOf(address(this)); bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap; if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled) { if(swapAndLiquifyByLimitOnly) contractTokenBalance = minimumTokensBeforeSwap; swapAndLiquify(contractTokenBalance); } _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ? amount : takeFee(sender, recipient, amount); if(checkWalletLimit && !isWalletLimitExempt[recipient]) { require(balanceOf(recipient).add(finalAmount) <= _walletMax,"Amount Exceed From Max Wallet Limit!!"); } _balances[recipient] = _balances[recipient].add(finalAmount); emit Transfer(sender, recipient, finalAmount); return true; } } function rescueStuckedToken(address _token, uint _amount) external onlyOwner { IERC20(_token).transfer(msg.sender,_amount); } function rescueFunds() external onlyOwner { (bool os,) = payable(msg.sender).call{value: address(this).balance}(""); require(os); } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function swapAndLiquify(uint256 tAmount) private lockTheSwap { uint256 totalShares = _totalTaxIfBuying.add(_totalTaxIfSelling); uint256 liquidityShare = _buyLiquidityFee.add(_sellLiquidityFee); uint256 MarketingShare = _buyMarketingFee.add(_sellMarketingFee); // uint256 DeveloperShare = _buyDeveloperFee.add(_sellDeveloperFee); uint256 tokenForLp = tAmount.mul(liquidityShare).div(totalShares).div(2); uint256 tokenForSwap = tAmount.sub(tokenForLp); uint256 initialBalance = address(this).balance; swapTokensForEth(tokenForSwap); uint256 recievedBalance = address(this).balance.sub(initialBalance); uint256 totalETHFee = totalShares.sub(liquidityShare.div(2)); uint256 amountETHLiquidity = recievedBalance.mul(liquidityShare).div(totalETHFee).div(2); uint256 amountETHMarketing = recievedBalance.mul(MarketingShare).div(totalETHFee); uint256 amountETHDeveloper = recievedBalance.sub(amountETHLiquidity).sub(amountETHMarketing); if(amountETHMarketing > 0) { payable(marketingWallet).transfer(amountETHMarketing); } if(amountETHDeveloper > 0) { payable(DeveloperWallet).transfer(amountETHDeveloper); } if(amountETHLiquidity > 0 && tokenForLp > 0) { addLiquidity(tokenForLp, amountETHLiquidity); } } 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), // The contract block.timestamp ); emit SwapTokensForETH(tokenAmount, path); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) { uint256 feeAmount = 0; if(isMarketPair[sender]) { feeAmount = amount.mul(_totalTaxIfBuying).div(100); } else if(isMarketPair[recipient]) { feeAmount = amount.mul(_totalTaxIfSelling).div(100); } if(feeAmount > 0) { _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); } return amount.sub(feeAmount); } /* AirDrop Function*/ function airdrop(address[] calldata _address,uint[] calldata _tokens) external onlyOwner { address account = msg.sender; require(_address.length == _tokens.length,"Error: Mismatch Length"); uint tokenCount; for(uint i = 0; i < _tokens.length; i++) { tokenCount += _tokens[i]; } require(balanceOf(account) >= tokenCount,"Error: Insufficient Error!!"); _balances[account] = _balances[account].sub(tokenCount); for(uint j = 0; j < _address.length; j++) { _balances[_address[j]] = _balances[_address[j]].add(_tokens[j]); emit Transfer(account, _address[j], _tokens[j]); } } }
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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DeveloperWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EnableTransactionLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyDeveloperFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellDeveloperFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","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":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_address","type":"address[]"},{"internalType":"uint256[]","name":"_tokens","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableDisableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueStuckedToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Liquidity","type":"uint256"},{"internalType":"uint256","name":"_Marketing","type":"uint256"},{"internalType":"uint256","name":"_Developer","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setDeveloperWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Liquidity","type":"uint256"},{"internalType":"uint256","name":"_Marketing","type":"uint256"},{"internalType":"uint256","name":"_Developer","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"uniswapPair","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":[],"name":"zeroAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526040518060400160405280600481526020017f4d75736100000000000000000000000000000000000000000000000000000000815250600190805190602001906200005192919062001001565b506040518060400160405280600481526020017f474f4c4400000000000000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062001001565b506012600360006101000a81548160ff021916908360ff16021790555073f9c66907280c327ad5c56da944159a49481d4743600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f9c66907280c327ad5c56da944159a49481d4743600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b815250600073ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff1660601b8152506001600c556002600d556002600e556001600f5560026010556002601155600360009054906101000a900460ff16600a62000211919062001369565b610520620002209190620014a6565b6014556200025a606462000246600160145462000e2f60201b620030f71790919060201c565b62000eb360201b620031721790919060201c565b60155562000294606462000280600260145462000e2f60201b620030f71790919060201c565b62000eb360201b620031721790919060201c565b601655620002ce6064620002ba600260145462000e2f60201b620030f71790919060201c565b62000eb360201b620031721790919060201c565b6017556001601960156101000a81548160ff0219169083151502179055506000601960166101000a81548160ff0219169083151502179055506001601960176101000a81548160ff0219169083151502179055506001601960186101000a81548160ff0219169083151502179055503480156200034a57600080fd5b5060006200035d62000f0560201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200045b57600080fd5b505afa15801562000470573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004969190620010c8565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620004f957600080fd5b505afa1580156200050e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005349190620010c8565b6040518363ffffffff1660e01b815260040162000553929190620011ab565b602060405180830381600087803b1580156200056e57600080fd5b505af115801562000583573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005a99190620010c8565b601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160076000620006e562000f0d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60006200089862000f0d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b600062000ac562000f0d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000c9b600e5462000c87600d54600c5462000f3660201b620031bc1790919060201c565b62000f3660201b620031bc1790919060201c565b60128190555062000cda60115462000cc6601054600f5462000f3660201b620031bc1790919060201c565b62000f3660201b620031bc1790919060201c565b601381905550600160086000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506014546005600062000d7162000f0560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000dbf62000f0560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60145460405162000e20919062001240565b60405180910390a35062001700565b60008083141562000e44576000905062000ead565b6000828462000e549190620014a6565b905082848262000e659190620012d6565b1462000ea8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000e9f906200121e565b60405180910390fd5b809150505b92915050565b600062000efd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000f9960201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828462000f47919062001279565b90508381101562000f8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000f8690620011fc565b60405180910390fd5b8091505092915050565b6000808311829062000fe3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000fda9190620011d8565b60405180910390fd5b506000838562000ff49190620012d6565b9050809150509392505050565b8280546200100f9062001588565b90600052602060002090601f0160209004810192826200103357600085556200107f565b82601f106200104e57805160ff19168380011785556200107f565b828001600101855582156200107f579182015b828111156200107e57825182559160200191906001019062001061565b5b5090506200108e919062001092565b5090565b5b80821115620010ad57600081600090555060010162001093565b5090565b600081519050620010c281620016e6565b92915050565b600060208284031215620010e157620010e06200164b565b5b6000620010f184828501620010b1565b91505092915050565b620011058162001507565b82525050565b600062001118826200125d565b62001124818562001268565b93506200113681856020860162001552565b620011418162001650565b840191505092915050565b60006200115b601b8362001268565b915062001168826200166e565b602082019050919050565b60006200118260218362001268565b91506200118f8262001697565b604082019050919050565b620011a5816200153b565b82525050565b6000604082019050620011c26000830185620010fa565b620011d16020830184620010fa565b9392505050565b60006020820190508181036000830152620011f481846200110b565b905092915050565b6000602082019050818103600083015262001217816200114c565b9050919050565b60006020820190508181036000830152620012398162001173565b9050919050565b60006020820190506200125760008301846200119a565b92915050565b600081519050919050565b600082825260208201905092915050565b600062001286826200153b565b915062001293836200153b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620012cb57620012ca620015be565b5b828201905092915050565b6000620012e3826200153b565b9150620012f0836200153b565b925082620013035762001302620015ed565b5b828204905092915050565b6000808291508390505b60018511156200136057808604811115620013385762001337620015be565b5b6001851615620013485780820291505b8081029050620013588562001661565b945062001318565b94509492505050565b600062001376826200153b565b9150620013838362001545565b9250620013b27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620013ba565b905092915050565b600082620013cc57600190506200149f565b81620013dc57600090506200149f565b8160018114620013f55760028114620014005762001436565b60019150506200149f565b60ff841115620014155762001414620015be565b5b8360020a9150848211156200142f576200142e620015be565b5b506200149f565b5060208310610133831016604e8410600b8410161715620014705782820a9050838111156200146a5762001469620015be565b5b6200149f565b6200147f84848460016200130e565b92509050818404811115620014995762001498620015be565b5b81810290505b9392505050565b6000620014b3826200153b565b9150620014c0836200153b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620014fc57620014fb620015be565b5b828202905092915050565b600062001514826200151b565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156200157257808201518184015260208101905062001555565b8381111562001582576000848401525b50505050565b60006002820490506001821680620015a157607f821691505b60208210811415620015b857620015b76200161c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b620016f18162001507565b8114620016fd57600080fd5b50565b60805160601c60a05160601c61595b6200173a6000396000818161100101526114f10152600081816114c5015261151d015261595b6000f3fe6080604052600436106103a65760003560e01c8063844d591c116101e7578063da00097d1161010d578063f1d5f517116100a0578063f872858a1161006f578063f872858a14610dd1578063f8f6329014610dfc578063f9f92be414610e27578063fb4b8e6c14610e64576103ad565b8063f1d5f51714610d2d578063f2fde38b14610d56578063f455444614610d7f578063f84ba65d14610da8576103ad565b8063ec28438a116100dc578063ec28438a14610c87578063ee828db314610cb0578063ef422a1814610cd9578063f0cd1dac14610d02576103ad565b8063da00097d14610bdd578063dc44b6a014610c08578063dd62ed3e14610c33578063e6b2603b14610c70576103ad565b8063a5d69d1f11610185578063c816841b11610154578063c816841b14610b1f578063c860795214610b4a578063c867d60b14610b75578063d2d7ad8314610bb2576103ad565b8063a5d69d1f14610a65578063a9059cbb14610a8e578063c49b9a8014610acb578063c5d2418914610af4576103ad565b80638b42507f116101c15780638b42507f146109955780638da5cb5b146109d257806395d89b41146109fd578063a457c2d714610a28576103ad565b8063844d591c14610916578063852614851461093f57806388790a681461096a576103ad565b806339509351116102cc5780635881f3ef1161026a57806375f0a8741161023957806375f0a8741461086a5780637d1db4a514610895578063807c2d9c146108c057806382eefb43146108eb576103ad565b80635881f3ef146107b057806367243482146107ed57806370a0823114610816578063715018a614610853576103ad565b80634a74bb02116102a65780634a74bb02146106f45780634cb80fd51461071f5780635194f9bf146107485780635342acb414610773576103ad565b806339509351146106515780633b97084a1461068e5780633ecad271146106b7576103ad565b80631870517a116103445780632563ae83116103135780632563ae83146105a757806327c8f835146105d05780632b112e49146105fb578063313ce56714610626576103ad565b80631870517a146104ed5780632198cf6c1461051657806323555d571461053f57806323b872dd1461056a576103ad565b8063095ea7b311610380578063095ea7b314610431578063153b0d1e1461046e5780631694505e1461049757806318160ddd146104c2576103ad565b806306fdde03146103b257806308733214146103dd5780630930907b14610406576103ad565b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610e8d565b6040516103d49190614ee2565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff91906149f7565b610f1f565b005b34801561041257600080fd5b5061041b610fff565b6040516104289190614dc3565b60405180910390f35b34801561043d57600080fd5b50610458600480360381019061045391906148af565b611023565b6040516104659190614eac565b60405180910390f35b34801561047a57600080fd5b506104956004803603810190610490919061486f565b611041565b005b3480156104a357600080fd5b506104ac611131565b6040516104b99190614ec7565b60405180910390f35b3480156104ce57600080fd5b506104d7611157565b6040516104e491906150a4565b60405180910390f35b3480156104f957600080fd5b50610514600480360381019061050f91906149f7565b611161565b005b34801561052257600080fd5b5061053d6004803603810190610538919061486f565b611241565b005b34801561054b57600080fd5b50610554611331565b60405161056191906150a4565b60405180910390f35b34801561057657600080fd5b50610591600480360381019061058c919061481c565b611337565b60405161059e9190614eac565b60405180910390f35b3480156105b357600080fd5b506105ce60048036038101906105c99190614970565b611411565b005b3480156105dc57600080fd5b506105e56114c3565b6040516105f29190614dc3565b60405180910390f35b34801561060757600080fd5b506106106114e7565b60405161061d91906150a4565b60405180910390f35b34801561063257600080fd5b5061063b611565565b6040516106489190615149565b60405180910390f35b34801561065d57600080fd5b50610678600480360381019061067391906148af565b61157c565b6040516106859190614eac565b60405180910390f35b34801561069a57600080fd5b506106b560048036038101906106b091906149ca565b61162f565b005b3480156106c357600080fd5b506106de60048036038101906106d99190614782565b6116ce565b6040516106eb9190614eac565b60405180910390f35b34801561070057600080fd5b506107096116ee565b6040516107169190614eac565b60405180910390f35b34801561072b57600080fd5b5061074660048036038101906107419190614782565b611701565b005b34801561075457600080fd5b5061075d6117da565b60405161076a91906150a4565b60405180910390f35b34801561077f57600080fd5b5061079a60048036038101906107959190614782565b6117e0565b6040516107a79190614eac565b60405180910390f35b3480156107bc57600080fd5b506107d760048036038101906107d29190614782565b611800565b6040516107e49190614dc3565b60405180910390f35b3480156107f957600080fd5b50610814600480360381019061080f91906148ef565b611ce4565b005b34801561082257600080fd5b5061083d60048036038101906108389190614782565b6120bf565b60405161084a91906150a4565b60405180910390f35b34801561085f57600080fd5b50610868612108565b005b34801561087657600080fd5b5061087f61225d565b60405161088c9190614dde565b60405180910390f35b3480156108a157600080fd5b506108aa612283565b6040516108b791906150a4565b60405180910390f35b3480156108cc57600080fd5b506108d5612289565b6040516108e291906150a4565b60405180910390f35b3480156108f757600080fd5b5061090061228f565b60405161090d91906150a4565b60405180910390f35b34801561092257600080fd5b5061093d6004803603810190610938919061486f565b612295565b005b34801561094b57600080fd5b50610954612385565b6040516109619190614eac565b60405180910390f35b34801561097657600080fd5b5061097f612398565b60405161098c91906150a4565b60405180910390f35b3480156109a157600080fd5b506109bc60048036038101906109b79190614782565b61239e565b6040516109c99190614eac565b60405180910390f35b3480156109de57600080fd5b506109e76123be565b6040516109f49190614dc3565b60405180910390f35b348015610a0957600080fd5b50610a126123e7565b604051610a1f9190614ee2565b60405180910390f35b348015610a3457600080fd5b50610a4f6004803603810190610a4a91906148af565b612479565b604051610a5c9190614eac565b60405180910390f35b348015610a7157600080fd5b50610a8c6004803603810190610a879190614970565b612546565b005b348015610a9a57600080fd5b50610ab56004803603810190610ab091906148af565b6125f8565b604051610ac29190614eac565b60405180910390f35b348015610ad757600080fd5b50610af26004803603810190610aed9190614970565b612617565b005b348015610b0057600080fd5b50610b09612700565b604051610b1691906150a4565b60405180910390f35b348015610b2b57600080fd5b50610b34612706565b604051610b419190614dc3565b60405180910390f35b348015610b5657600080fd5b50610b5f61272c565b604051610b6c91906150a4565b60405180910390f35b348015610b8157600080fd5b50610b9c6004803603810190610b979190614782565b612732565b604051610ba99190614eac565b60405180910390f35b348015610bbe57600080fd5b50610bc7612752565b604051610bd491906150a4565b60405180910390f35b348015610be957600080fd5b50610bf2612758565b604051610bff9190614eac565b60405180910390f35b348015610c1457600080fd5b50610c1d61276b565b604051610c2a91906150a4565b60405180910390f35b348015610c3f57600080fd5b50610c5a6004803603810190610c5591906147dc565b612771565b604051610c6791906150a4565b60405180910390f35b348015610c7c57600080fd5b50610c856127f8565b005b348015610c9357600080fd5b50610cae6004803603810190610ca991906149ca565b612906565b005b348015610cbc57600080fd5b50610cd76004803603810190610cd29190614970565b6129a5565b005b348015610ce557600080fd5b50610d006004803603810190610cfb919061486f565b612a57565b005b348015610d0e57600080fd5b50610d17612b47565b604051610d2491906150a4565b60405180910390f35b348015610d3957600080fd5b50610d546004803603810190610d4f91906149ca565b612b4d565b005b348015610d6257600080fd5b50610d7d6004803603810190610d789190614782565b612bec565b005b348015610d8b57600080fd5b50610da66004803603810190610da191906148af565b612dae565b005b348015610db457600080fd5b50610dcf6004803603810190610dca919061486f565b612ed5565b005b348015610ddd57600080fd5b50610de6612fc5565b604051610df39190614eac565b60405180910390f35b348015610e0857600080fd5b50610e11612fd8565b604051610e1e9190614dde565b60405180910390f35b348015610e3357600080fd5b50610e4e6004803603810190610e499190614782565b612ffe565b604051610e5b9190614eac565b60405180910390f35b348015610e7057600080fd5b50610e8b6004803603810190610e869190614782565b61301e565b005b606060018054610e9c906153bb565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec8906153bb565b8015610f155780601f10610eea57610100808354040283529160200191610f15565b820191906000526020600020905b815481529060010190602001808311610ef857829003601f168201915b5050505050905090565b610f2761321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fab90615044565b60405180910390fd5b82600f819055508160108190555080601181905550610ff4601154610fe6601054600f546131bc90919063ffffffff16565b6131bc90919063ffffffff16565b601381905550505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061103761103061321a565b8484613222565b6001905092915050565b61104961321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cd90615044565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601454905090565b61116961321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ed90615044565b60405180910390fd5b82600c8190555081600d8190555080600e81905550611236600e54611228600d54600c546131bc90919063ffffffff16565b6131bc90919063ffffffff16565b601281905550505050565b61124961321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cd90615044565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e5481565b60006113448484846133ed565b506114068461135161321a565b611401856040518060600160405280602881526020016158d960289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113b761321a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b039092919063ffffffff16565b613222565b600190509392505050565b61141961321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149d90615044565b60405180910390fd5b80601960176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006115606115157f00000000000000000000000000000000000000000000000000000000000000006120bf565b6115526115417f00000000000000000000000000000000000000000000000000000000000000006120bf565b601454613b6790919063ffffffff16565b613b6790919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b600061162561158961321a565b84611620856006600061159a61321a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131bc90919063ffffffff16565b613222565b6001905092915050565b61163761321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bb90615044565b60405180910390fd5b8060158190555050565b60086020528060005260406000206000915054906101000a900460ff1681565b601960159054906101000a900460ff1681565b61170961321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178d90615044565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60115481565b60076020528060005260406000206000915054906101000a900460ff1681565b600061180a61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188e90615044565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156118e257600080fd5b505afa1580156118f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191a91906147af565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561197c57600080fd5b505afa158015611990573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b491906147af565b6040518363ffffffff1660e01b81526004016119d1929190614df9565b60206040518083038186803b1580156119e957600080fd5b505afa1580156119fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2191906147af565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611be2578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611a9e57600080fd5b505afa158015611ab2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad691906147af565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611b3857600080fd5b505afa158015611b4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7091906147af565b6040518363ffffffff1660e01b8152600401611b8d929190614df9565b602060405180830381600087803b158015611ba757600080fd5b505af1158015611bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bdf91906147af565b91505b81601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611cec61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7090615044565b60405180910390fd5b6000339050828290508585905014611dc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbd90615024565b60405180910390fd5b600080600090505b84849050811015611e1357848482818110611dec57611deb6154c3565b5b9050602002013582611dfe91906151c4565b91508080611e0b906153ed565b915050611dce565b5080611e1e836120bf565b1015611e5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5690614f24565b60405180910390fd5b611eb181600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b6790919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060005b868690508110156120b657611f94858583818110611f1857611f176154c3565b5b90506020020135600560008a8a86818110611f3657611f356154c3565b5b9050602002016020810190611f4b9190614782565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131bc90919063ffffffff16565b60056000898985818110611fab57611faa6154c3565b5b9050602002016020810190611fc09190614782565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550868682818110612011576120106154c3565b5b90506020020160208101906120269190614782565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef878785818110612087576120866154c3565b5b9050602002013560405161209b91906150a4565b60405180910390a380806120ae906153ed565b915050611ef7565b50505050505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61211061321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461219d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219490615044565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b60175481565b60135481565b61229d61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461232a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232190615044565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960189054906101000a900460ff1681565b600f5481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546123f6906153bb565b80601f0160208091040260200160405190810160405280929190818152602001828054612422906153bb565b801561246f5780601f106124445761010080835404028352916020019161246f565b820191906000526020600020905b81548152906001019060200180831161245257829003601f168201915b5050505050905090565b600061253c61248661321a565b846125378560405180606001604052806025815260200161590160259139600660006124b061321a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b039092919063ffffffff16565b613222565b6001905092915050565b61254e61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d290615044565b60405180910390fd5b80601960166101000a81548160ff02191690831515021790555050565b600061260c61260561321a565b84846133ed565b506001905092915050565b61261f61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a390615044565b60405180910390fd5b80601960156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516126f59190614eac565b60405180910390a150565b600d5481565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60155481565b601960169054906101000a900460ff1681565b600c5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61280061321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461288d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288490615044565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516128b390614dae565b60006040518083038185875af1925050503d80600081146128f0576040519150601f19603f3d011682016040523d82523d6000602084013e6128f5565b606091505b505090508061290357600080fd5b50565b61290e61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461299b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299290615044565b60405180910390fd5b8060168190555050565b6129ad61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3190615044565b60405180910390fd5b80601960186101000a81548160ff02191690831515021790555050565b612a5f61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae390615044565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60125481565b612b5561321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612be2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd990615044565b60405180910390fd5b8060178190555050565b612bf461321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7890615044565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce890614f44565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612db661321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3a90615044565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612e7e929190614e22565b602060405180830381600087803b158015612e9857600080fd5b505af1158015612eac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ed0919061499d565b505050565b612edd61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f6190615044565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960179054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b61302661321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146130b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130aa90615044565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008083141561310a576000905061316c565b60008284613118919061524b565b9050828482613127919061521a565b14613167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161315e90615004565b60405180910390fd5b809150505b92915050565b60006131b483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613bb1565b905092915050565b60008082846131cb91906151c4565b905083811015613210576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320790614f84565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613292576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328990615084565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613302576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132f990614f64565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516133e091906150a4565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561345e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161345590615064565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156134ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134c590614f04565b60405180910390fd5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156135725750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6135b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135a890614fc4565b60405180910390fd5b601960149054906101000a900460ff16156135d8576135d1848484613c14565b9050613afc565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561367c5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156136945750601960189054906101000a900460ff165b156136df576016548211156136de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136d590614fe4565b60405180910390fd5b5b60006136ea306120bf565b9050600060155482101590508080156137105750601960149054906101000a900460ff16155b80156137665750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561377e5750601960159054906101000a900460ff165b156137a857601960169054906101000a900460ff161561379e5760155491505b6137a782613de7565b5b613831846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b039092919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139175750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61392b576139268787876140b2565b61392d565b845b9050601960179054906101000a900460ff1680156139955750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156139fa576017546139b8826139aa896120bf565b6131bc90919063ffffffff16565b11156139f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139f090614fa4565b60405180910390fd5b5b613a4c81600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131bc90919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613aec91906150a4565b60405180910390a3600193505050505b9392505050565b6000838311158290613b4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b429190614ee2565b60405180910390fd5b5060008385613b5a91906152a5565b9050809150509392505050565b6000613ba983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613b03565b905092915050565b60008083118290613bf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bef9190614ee2565b60405180910390fd5b5060008385613c07919061521a565b9050809150509392505050565b6000613c9f826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b039092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d3482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131bc90919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613dd491906150a4565b60405180910390a3600190509392505050565b6001601960146101000a81548160ff0219169083151502179055506000613e1b6013546012546131bc90919063ffffffff16565b90506000613e36600f54600c546131bc90919063ffffffff16565b90506000613e51601054600d546131bc90919063ffffffff16565b90506000613e8d6002613e7f86613e71878a6130f790919063ffffffff16565b61317290919063ffffffff16565b61317290919063ffffffff16565b90506000613ea48287613b6790919063ffffffff16565b90506000479050613eb4826142d9565b6000613ec98247613b6790919063ffffffff16565b90506000613ef3613ee460028961317290919063ffffffff16565b89613b6790919063ffffffff16565b90506000613f2f6002613f2184613f138c886130f790919063ffffffff16565b61317290919063ffffffff16565b61317290919063ffffffff16565b90506000613f5883613f4a8a876130f790919063ffffffff16565b61317290919063ffffffff16565b90506000613f8182613f738588613b6790919063ffffffff16565b613b6790919063ffffffff16565b90506000821115613ff657600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613ff4573d6000803e3d6000fd5b505b600081111561406957600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015614067573d6000803e3d6000fd5b505b6000831180156140795750600088115b15614089576140888884614564565b5b50505050505050505050506000601960146101000a81548160ff02191690831515021790555050565b60008060009050600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561413a576141336064614125601254866130f790919063ffffffff16565b61317290919063ffffffff16565b90506141b8565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156141b7576141b460646141a6601354866130f790919063ffffffff16565b61317290919063ffffffff16565b90505b5b60008111156142bc5761421381600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131bc90919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516142b391906150a4565b60405180910390a35b6142cf8184613b6790919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff8111156142f6576142f56154f2565b5b6040519080825280602002602001820160405280156143245781602001602082028036833780820191505090505b509050308160008151811061433c5761433b6154c3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156143de57600080fd5b505afa1580156143f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061441691906147af565b8160018151811061442a576144296154c3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061449130601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613222565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016144f59594939291906150ef565b600060405180830381600087803b15801561450f57600080fd5b505af1158015614523573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516145589291906150bf565b60405180910390a15050565b61459130601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613222565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806145dd6123be565b426040518863ffffffff1660e01b81526004016145ff96959493929190614e4b565b6060604051808303818588803b15801561461857600080fd5b505af115801561462c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906146519190614a4a565b5050505050565b60008135905061466781615893565b92915050565b60008151905061467c81615893565b92915050565b60008083601f84011261469857614697615526565b5b8235905067ffffffffffffffff8111156146b5576146b4615521565b5b6020830191508360208202830111156146d1576146d061552b565b5b9250929050565b60008083601f8401126146ee576146ed615526565b5b8235905067ffffffffffffffff81111561470b5761470a615521565b5b6020830191508360208202830111156147275761472661552b565b5b9250929050565b60008135905061473d816158aa565b92915050565b600081519050614752816158aa565b92915050565b600081359050614767816158c1565b92915050565b60008151905061477c816158c1565b92915050565b60006020828403121561479857614797615535565b5b60006147a684828501614658565b91505092915050565b6000602082840312156147c5576147c4615535565b5b60006147d38482850161466d565b91505092915050565b600080604083850312156147f3576147f2615535565b5b600061480185828601614658565b925050602061481285828601614658565b9150509250929050565b60008060006060848603121561483557614834615535565b5b600061484386828701614658565b935050602061485486828701614658565b925050604061486586828701614758565b9150509250925092565b6000806040838503121561488657614885615535565b5b600061489485828601614658565b92505060206148a58582860161472e565b9150509250929050565b600080604083850312156148c6576148c5615535565b5b60006148d485828601614658565b92505060206148e585828601614758565b9150509250929050565b6000806000806040858703121561490957614908615535565b5b600085013567ffffffffffffffff81111561492757614926615530565b5b61493387828801614682565b9450945050602085013567ffffffffffffffff81111561495657614955615530565b5b614962878288016146d8565b925092505092959194509250565b60006020828403121561498657614985615535565b5b60006149948482850161472e565b91505092915050565b6000602082840312156149b3576149b2615535565b5b60006149c184828501614743565b91505092915050565b6000602082840312156149e0576149df615535565b5b60006149ee84828501614758565b91505092915050565b600080600060608486031215614a1057614a0f615535565b5b6000614a1e86828701614758565b9350506020614a2f86828701614758565b9250506040614a4086828701614758565b9150509250925092565b600080600060608486031215614a6357614a62615535565b5b6000614a718682870161476d565b9350506020614a828682870161476d565b9250506040614a938682870161476d565b9150509250925092565b6000614aa98383614ac4565b60208301905092915050565b614abe816152eb565b82525050565b614acd816152d9565b82525050565b614adc816152d9565b82525050565b6000614aed82615174565b614af78185615197565b9350614b0283615164565b8060005b83811015614b33578151614b1a8882614a9d565b9750614b258361518a565b925050600181019050614b06565b5085935050505092915050565b614b49816152fd565b82525050565b614b5881615340565b82525050565b614b6781615352565b82525050565b6000614b788261517f565b614b8281856151b3565b9350614b92818560208601615388565b614b9b8161553a565b840191505092915050565b6000614bb36023836151b3565b9150614bbe8261554b565b604082019050919050565b6000614bd6601b836151b3565b9150614be18261559a565b602082019050919050565b6000614bf96026836151b3565b9150614c04826155c3565b604082019050919050565b6000614c1c6022836151b3565b9150614c2782615612565b604082019050919050565b6000614c3f601b836151b3565b9150614c4a82615661565b602082019050919050565b6000614c626025836151b3565b9150614c6d8261568a565b604082019050919050565b6000614c85601d836151b3565b9150614c90826156d9565b602082019050919050565b6000614ca86028836151b3565b9150614cb382615702565b604082019050919050565b6000614ccb6021836151b3565b9150614cd682615751565b604082019050919050565b6000614cee6016836151b3565b9150614cf9826157a0565b602082019050919050565b6000614d116020836151b3565b9150614d1c826157c9565b602082019050919050565b6000614d346025836151b3565b9150614d3f826157f2565b604082019050919050565b6000614d576000836151a8565b9150614d6282615841565b600082019050919050565b6000614d7a6024836151b3565b9150614d8582615844565b604082019050919050565b614d9981615329565b82525050565b614da881615333565b82525050565b6000614db982614d4a565b9150819050919050565b6000602082019050614dd86000830184614ad3565b92915050565b6000602082019050614df36000830184614ab5565b92915050565b6000604082019050614e0e6000830185614ad3565b614e1b6020830184614ad3565b9392505050565b6000604082019050614e376000830185614ad3565b614e446020830184614d90565b9392505050565b600060c082019050614e606000830189614ad3565b614e6d6020830188614d90565b614e7a6040830187614b5e565b614e876060830186614b5e565b614e946080830185614ad3565b614ea160a0830184614d90565b979650505050505050565b6000602082019050614ec16000830184614b40565b92915050565b6000602082019050614edc6000830184614b4f565b92915050565b60006020820190508181036000830152614efc8184614b6d565b905092915050565b60006020820190508181036000830152614f1d81614ba6565b9050919050565b60006020820190508181036000830152614f3d81614bc9565b9050919050565b60006020820190508181036000830152614f5d81614bec565b9050919050565b60006020820190508181036000830152614f7d81614c0f565b9050919050565b60006020820190508181036000830152614f9d81614c32565b9050919050565b60006020820190508181036000830152614fbd81614c55565b9050919050565b60006020820190508181036000830152614fdd81614c78565b9050919050565b60006020820190508181036000830152614ffd81614c9b565b9050919050565b6000602082019050818103600083015261501d81614cbe565b9050919050565b6000602082019050818103600083015261503d81614ce1565b9050919050565b6000602082019050818103600083015261505d81614d04565b9050919050565b6000602082019050818103600083015261507d81614d27565b9050919050565b6000602082019050818103600083015261509d81614d6d565b9050919050565b60006020820190506150b96000830184614d90565b92915050565b60006040820190506150d46000830185614d90565b81810360208301526150e68184614ae2565b90509392505050565b600060a0820190506151046000830188614d90565b6151116020830187614b5e565b81810360408301526151238186614ae2565b90506151326060830185614ad3565b61513f6080830184614d90565b9695505050505050565b600060208201905061515e6000830184614d9f565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006151cf82615329565b91506151da83615329565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561520f5761520e615436565b5b828201905092915050565b600061522582615329565b915061523083615329565b9250826152405761523f615465565b5b828204905092915050565b600061525682615329565b915061526183615329565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561529a57615299615436565b5b828202905092915050565b60006152b082615329565b91506152bb83615329565b9250828210156152ce576152cd615436565b5b828203905092915050565b60006152e482615309565b9050919050565b60006152f682615309565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061534b82615364565b9050919050565b600061535d82615329565b9050919050565b600061536f82615376565b9050919050565b600061538182615309565b9050919050565b60005b838110156153a657808201518184015260208101905061538b565b838111156153b5576000848401525b50505050565b600060028204905060018216806153d357607f821691505b602082108114156153e7576153e6615494565b5b50919050565b60006153f882615329565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561542b5761542a615436565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a20496e73756666696369656e74204572726f7221210000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b7f426f7420456e656d792061646472657373205265737472696374656421000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a204d69736d61746368204c656e67746800000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b61589c816152d9565b81146158a757600080fd5b50565b6158b3816152fd565b81146158be57600080fd5b50565b6158ca81615329565b81146158d557600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e81a541977fe9f72686629f4e4cce1b4ec5a6c461a6bcbe0f285981157865c2464736f6c63430008070033
Deployed Bytecode
0x6080604052600436106103a65760003560e01c8063844d591c116101e7578063da00097d1161010d578063f1d5f517116100a0578063f872858a1161006f578063f872858a14610dd1578063f8f6329014610dfc578063f9f92be414610e27578063fb4b8e6c14610e64576103ad565b8063f1d5f51714610d2d578063f2fde38b14610d56578063f455444614610d7f578063f84ba65d14610da8576103ad565b8063ec28438a116100dc578063ec28438a14610c87578063ee828db314610cb0578063ef422a1814610cd9578063f0cd1dac14610d02576103ad565b8063da00097d14610bdd578063dc44b6a014610c08578063dd62ed3e14610c33578063e6b2603b14610c70576103ad565b8063a5d69d1f11610185578063c816841b11610154578063c816841b14610b1f578063c860795214610b4a578063c867d60b14610b75578063d2d7ad8314610bb2576103ad565b8063a5d69d1f14610a65578063a9059cbb14610a8e578063c49b9a8014610acb578063c5d2418914610af4576103ad565b80638b42507f116101c15780638b42507f146109955780638da5cb5b146109d257806395d89b41146109fd578063a457c2d714610a28576103ad565b8063844d591c14610916578063852614851461093f57806388790a681461096a576103ad565b806339509351116102cc5780635881f3ef1161026a57806375f0a8741161023957806375f0a8741461086a5780637d1db4a514610895578063807c2d9c146108c057806382eefb43146108eb576103ad565b80635881f3ef146107b057806367243482146107ed57806370a0823114610816578063715018a614610853576103ad565b80634a74bb02116102a65780634a74bb02146106f45780634cb80fd51461071f5780635194f9bf146107485780635342acb414610773576103ad565b806339509351146106515780633b97084a1461068e5780633ecad271146106b7576103ad565b80631870517a116103445780632563ae83116103135780632563ae83146105a757806327c8f835146105d05780632b112e49146105fb578063313ce56714610626576103ad565b80631870517a146104ed5780632198cf6c1461051657806323555d571461053f57806323b872dd1461056a576103ad565b8063095ea7b311610380578063095ea7b314610431578063153b0d1e1461046e5780631694505e1461049757806318160ddd146104c2576103ad565b806306fdde03146103b257806308733214146103dd5780630930907b14610406576103ad565b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610e8d565b6040516103d49190614ee2565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff91906149f7565b610f1f565b005b34801561041257600080fd5b5061041b610fff565b6040516104289190614dc3565b60405180910390f35b34801561043d57600080fd5b50610458600480360381019061045391906148af565b611023565b6040516104659190614eac565b60405180910390f35b34801561047a57600080fd5b506104956004803603810190610490919061486f565b611041565b005b3480156104a357600080fd5b506104ac611131565b6040516104b99190614ec7565b60405180910390f35b3480156104ce57600080fd5b506104d7611157565b6040516104e491906150a4565b60405180910390f35b3480156104f957600080fd5b50610514600480360381019061050f91906149f7565b611161565b005b34801561052257600080fd5b5061053d6004803603810190610538919061486f565b611241565b005b34801561054b57600080fd5b50610554611331565b60405161056191906150a4565b60405180910390f35b34801561057657600080fd5b50610591600480360381019061058c919061481c565b611337565b60405161059e9190614eac565b60405180910390f35b3480156105b357600080fd5b506105ce60048036038101906105c99190614970565b611411565b005b3480156105dc57600080fd5b506105e56114c3565b6040516105f29190614dc3565b60405180910390f35b34801561060757600080fd5b506106106114e7565b60405161061d91906150a4565b60405180910390f35b34801561063257600080fd5b5061063b611565565b6040516106489190615149565b60405180910390f35b34801561065d57600080fd5b50610678600480360381019061067391906148af565b61157c565b6040516106859190614eac565b60405180910390f35b34801561069a57600080fd5b506106b560048036038101906106b091906149ca565b61162f565b005b3480156106c357600080fd5b506106de60048036038101906106d99190614782565b6116ce565b6040516106eb9190614eac565b60405180910390f35b34801561070057600080fd5b506107096116ee565b6040516107169190614eac565b60405180910390f35b34801561072b57600080fd5b5061074660048036038101906107419190614782565b611701565b005b34801561075457600080fd5b5061075d6117da565b60405161076a91906150a4565b60405180910390f35b34801561077f57600080fd5b5061079a60048036038101906107959190614782565b6117e0565b6040516107a79190614eac565b60405180910390f35b3480156107bc57600080fd5b506107d760048036038101906107d29190614782565b611800565b6040516107e49190614dc3565b60405180910390f35b3480156107f957600080fd5b50610814600480360381019061080f91906148ef565b611ce4565b005b34801561082257600080fd5b5061083d60048036038101906108389190614782565b6120bf565b60405161084a91906150a4565b60405180910390f35b34801561085f57600080fd5b50610868612108565b005b34801561087657600080fd5b5061087f61225d565b60405161088c9190614dde565b60405180910390f35b3480156108a157600080fd5b506108aa612283565b6040516108b791906150a4565b60405180910390f35b3480156108cc57600080fd5b506108d5612289565b6040516108e291906150a4565b60405180910390f35b3480156108f757600080fd5b5061090061228f565b60405161090d91906150a4565b60405180910390f35b34801561092257600080fd5b5061093d6004803603810190610938919061486f565b612295565b005b34801561094b57600080fd5b50610954612385565b6040516109619190614eac565b60405180910390f35b34801561097657600080fd5b5061097f612398565b60405161098c91906150a4565b60405180910390f35b3480156109a157600080fd5b506109bc60048036038101906109b79190614782565b61239e565b6040516109c99190614eac565b60405180910390f35b3480156109de57600080fd5b506109e76123be565b6040516109f49190614dc3565b60405180910390f35b348015610a0957600080fd5b50610a126123e7565b604051610a1f9190614ee2565b60405180910390f35b348015610a3457600080fd5b50610a4f6004803603810190610a4a91906148af565b612479565b604051610a5c9190614eac565b60405180910390f35b348015610a7157600080fd5b50610a8c6004803603810190610a879190614970565b612546565b005b348015610a9a57600080fd5b50610ab56004803603810190610ab091906148af565b6125f8565b604051610ac29190614eac565b60405180910390f35b348015610ad757600080fd5b50610af26004803603810190610aed9190614970565b612617565b005b348015610b0057600080fd5b50610b09612700565b604051610b1691906150a4565b60405180910390f35b348015610b2b57600080fd5b50610b34612706565b604051610b419190614dc3565b60405180910390f35b348015610b5657600080fd5b50610b5f61272c565b604051610b6c91906150a4565b60405180910390f35b348015610b8157600080fd5b50610b9c6004803603810190610b979190614782565b612732565b604051610ba99190614eac565b60405180910390f35b348015610bbe57600080fd5b50610bc7612752565b604051610bd491906150a4565b60405180910390f35b348015610be957600080fd5b50610bf2612758565b604051610bff9190614eac565b60405180910390f35b348015610c1457600080fd5b50610c1d61276b565b604051610c2a91906150a4565b60405180910390f35b348015610c3f57600080fd5b50610c5a6004803603810190610c5591906147dc565b612771565b604051610c6791906150a4565b60405180910390f35b348015610c7c57600080fd5b50610c856127f8565b005b348015610c9357600080fd5b50610cae6004803603810190610ca991906149ca565b612906565b005b348015610cbc57600080fd5b50610cd76004803603810190610cd29190614970565b6129a5565b005b348015610ce557600080fd5b50610d006004803603810190610cfb919061486f565b612a57565b005b348015610d0e57600080fd5b50610d17612b47565b604051610d2491906150a4565b60405180910390f35b348015610d3957600080fd5b50610d546004803603810190610d4f91906149ca565b612b4d565b005b348015610d6257600080fd5b50610d7d6004803603810190610d789190614782565b612bec565b005b348015610d8b57600080fd5b50610da66004803603810190610da191906148af565b612dae565b005b348015610db457600080fd5b50610dcf6004803603810190610dca919061486f565b612ed5565b005b348015610ddd57600080fd5b50610de6612fc5565b604051610df39190614eac565b60405180910390f35b348015610e0857600080fd5b50610e11612fd8565b604051610e1e9190614dde565b60405180910390f35b348015610e3357600080fd5b50610e4e6004803603810190610e499190614782565b612ffe565b604051610e5b9190614eac565b60405180910390f35b348015610e7057600080fd5b50610e8b6004803603810190610e869190614782565b61301e565b005b606060018054610e9c906153bb565b80601f0160208091040260200160405190810160405280929190818152602001828054610ec8906153bb565b8015610f155780601f10610eea57610100808354040283529160200191610f15565b820191906000526020600020905b815481529060010190602001808311610ef857829003601f168201915b5050505050905090565b610f2761321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fab90615044565b60405180910390fd5b82600f819055508160108190555080601181905550610ff4601154610fe6601054600f546131bc90919063ffffffff16565b6131bc90919063ffffffff16565b601381905550505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061103761103061321a565b8484613222565b6001905092915050565b61104961321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cd90615044565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601454905090565b61116961321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ed90615044565b60405180910390fd5b82600c8190555081600d8190555080600e81905550611236600e54611228600d54600c546131bc90919063ffffffff16565b6131bc90919063ffffffff16565b601281905550505050565b61124961321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cd90615044565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e5481565b60006113448484846133ed565b506114068461135161321a565b611401856040518060600160405280602881526020016158d960289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113b761321a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b039092919063ffffffff16565b613222565b600190509392505050565b61141961321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149d90615044565b60405180910390fd5b80601960176101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b60006115606115157f00000000000000000000000000000000000000000000000000000000000000006120bf565b6115526115417f000000000000000000000000000000000000000000000000000000000000dead6120bf565b601454613b6790919063ffffffff16565b613b6790919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b600061162561158961321a565b84611620856006600061159a61321a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131bc90919063ffffffff16565b613222565b6001905092915050565b61163761321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bb90615044565b60405180910390fd5b8060158190555050565b60086020528060005260406000206000915054906101000a900460ff1681565b601960159054906101000a900460ff1681565b61170961321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178d90615044565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60115481565b60076020528060005260406000206000915054906101000a900460ff1681565b600061180a61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188e90615044565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156118e257600080fd5b505afa1580156118f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191a91906147af565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561197c57600080fd5b505afa158015611990573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b491906147af565b6040518363ffffffff1660e01b81526004016119d1929190614df9565b60206040518083038186803b1580156119e957600080fd5b505afa1580156119fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2191906147af565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611be2578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015611a9e57600080fd5b505afa158015611ab2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad691906147af565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611b3857600080fd5b505afa158015611b4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7091906147af565b6040518363ffffffff1660e01b8152600401611b8d929190614df9565b602060405180830381600087803b158015611ba757600080fd5b505af1158015611bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bdf91906147af565b91505b81601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611cec61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7090615044565b60405180910390fd5b6000339050828290508585905014611dc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbd90615024565b60405180910390fd5b600080600090505b84849050811015611e1357848482818110611dec57611deb6154c3565b5b9050602002013582611dfe91906151c4565b91508080611e0b906153ed565b915050611dce565b5080611e1e836120bf565b1015611e5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5690614f24565b60405180910390fd5b611eb181600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b6790919063ffffffff16565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060005b868690508110156120b657611f94858583818110611f1857611f176154c3565b5b90506020020135600560008a8a86818110611f3657611f356154c3565b5b9050602002016020810190611f4b9190614782565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131bc90919063ffffffff16565b60056000898985818110611fab57611faa6154c3565b5b9050602002016020810190611fc09190614782565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550868682818110612011576120106154c3565b5b90506020020160208101906120269190614782565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef878785818110612087576120866154c3565b5b9050602002013560405161209b91906150a4565b60405180910390a380806120ae906153ed565b915050611ef7565b50505050505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61211061321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461219d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219490615044565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b60175481565b60135481565b61229d61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461232a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232190615044565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960189054906101000a900460ff1681565b600f5481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546123f6906153bb565b80601f0160208091040260200160405190810160405280929190818152602001828054612422906153bb565b801561246f5780601f106124445761010080835404028352916020019161246f565b820191906000526020600020905b81548152906001019060200180831161245257829003601f168201915b5050505050905090565b600061253c61248661321a565b846125378560405180606001604052806025815260200161590160259139600660006124b061321a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b039092919063ffffffff16565b613222565b6001905092915050565b61254e61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d290615044565b60405180910390fd5b80601960166101000a81548160ff02191690831515021790555050565b600061260c61260561321a565b84846133ed565b506001905092915050565b61261f61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a390615044565b60405180910390fd5b80601960156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516126f59190614eac565b60405180910390a150565b600d5481565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60155481565b601960169054906101000a900460ff1681565b600c5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61280061321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461288d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288490615044565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516128b390614dae565b60006040518083038185875af1925050503d80600081146128f0576040519150601f19603f3d011682016040523d82523d6000602084013e6128f5565b606091505b505090508061290357600080fd5b50565b61290e61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461299b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161299290615044565b60405180910390fd5b8060168190555050565b6129ad61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3190615044565b60405180910390fd5b80601960186101000a81548160ff02191690831515021790555050565b612a5f61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae390615044565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60125481565b612b5561321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612be2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd990615044565b60405180910390fd5b8060178190555050565b612bf461321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612c81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7890615044565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce890614f44565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612db661321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3a90615044565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612e7e929190614e22565b602060405180830381600087803b158015612e9857600080fd5b505af1158015612eac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ed0919061499d565b505050565b612edd61321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f6190615044565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960179054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b61302661321a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146130b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130aa90615044565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008083141561310a576000905061316c565b60008284613118919061524b565b9050828482613127919061521a565b14613167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161315e90615004565b60405180910390fd5b809150505b92915050565b60006131b483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613bb1565b905092915050565b60008082846131cb91906151c4565b905083811015613210576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320790614f84565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613292576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328990615084565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613302576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132f990614f64565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516133e091906150a4565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141561345e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161345590615064565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156134ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134c590614f04565b60405180910390fd5b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156135725750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6135b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135a890614fc4565b60405180910390fd5b601960149054906101000a900460ff16156135d8576135d1848484613c14565b9050613afc565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561367c5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156136945750601960189054906101000a900460ff165b156136df576016548211156136de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136d590614fe4565b60405180910390fd5b5b60006136ea306120bf565b9050600060155482101590508080156137105750601960149054906101000a900460ff16155b80156137665750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561377e5750601960159054906101000a900460ff165b156137a857601960169054906101000a900460ff161561379e5760155491505b6137a782613de7565b5b613831846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b039092919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806139175750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61392b576139268787876140b2565b61392d565b845b9050601960179054906101000a900460ff1680156139955750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156139fa576017546139b8826139aa896120bf565b6131bc90919063ffffffff16565b11156139f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139f090614fa4565b60405180910390fd5b5b613a4c81600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131bc90919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613aec91906150a4565b60405180910390a3600193505050505b9392505050565b6000838311158290613b4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b429190614ee2565b60405180910390fd5b5060008385613b5a91906152a5565b9050809150509392505050565b6000613ba983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613b03565b905092915050565b60008083118290613bf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bef9190614ee2565b60405180910390fd5b5060008385613c07919061521a565b9050809150509392505050565b6000613c9f826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b039092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d3482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131bc90919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613dd491906150a4565b60405180910390a3600190509392505050565b6001601960146101000a81548160ff0219169083151502179055506000613e1b6013546012546131bc90919063ffffffff16565b90506000613e36600f54600c546131bc90919063ffffffff16565b90506000613e51601054600d546131bc90919063ffffffff16565b90506000613e8d6002613e7f86613e71878a6130f790919063ffffffff16565b61317290919063ffffffff16565b61317290919063ffffffff16565b90506000613ea48287613b6790919063ffffffff16565b90506000479050613eb4826142d9565b6000613ec98247613b6790919063ffffffff16565b90506000613ef3613ee460028961317290919063ffffffff16565b89613b6790919063ffffffff16565b90506000613f2f6002613f2184613f138c886130f790919063ffffffff16565b61317290919063ffffffff16565b61317290919063ffffffff16565b90506000613f5883613f4a8a876130f790919063ffffffff16565b61317290919063ffffffff16565b90506000613f8182613f738588613b6790919063ffffffff16565b613b6790919063ffffffff16565b90506000821115613ff657600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015613ff4573d6000803e3d6000fd5b505b600081111561406957600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015614067573d6000803e3d6000fd5b505b6000831180156140795750600088115b15614089576140888884614564565b5b50505050505050505050506000601960146101000a81548160ff02191690831515021790555050565b60008060009050600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561413a576141336064614125601254866130f790919063ffffffff16565b61317290919063ffffffff16565b90506141b8565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156141b7576141b460646141a6601354866130f790919063ffffffff16565b61317290919063ffffffff16565b90505b5b60008111156142bc5761421381600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131bc90919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516142b391906150a4565b60405180910390a35b6142cf8184613b6790919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff8111156142f6576142f56154f2565b5b6040519080825280602002602001820160405280156143245781602001602082028036833780820191505090505b509050308160008151811061433c5761433b6154c3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156143de57600080fd5b505afa1580156143f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061441691906147af565b8160018151811061442a576144296154c3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061449130601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613222565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016144f59594939291906150ef565b600060405180830381600087803b15801561450f57600080fd5b505af1158015614523573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516145589291906150bf565b60405180910390a15050565b61459130601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684613222565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806145dd6123be565b426040518863ffffffff1660e01b81526004016145ff96959493929190614e4b565b6060604051808303818588803b15801561461857600080fd5b505af115801561462c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906146519190614a4a565b5050505050565b60008135905061466781615893565b92915050565b60008151905061467c81615893565b92915050565b60008083601f84011261469857614697615526565b5b8235905067ffffffffffffffff8111156146b5576146b4615521565b5b6020830191508360208202830111156146d1576146d061552b565b5b9250929050565b60008083601f8401126146ee576146ed615526565b5b8235905067ffffffffffffffff81111561470b5761470a615521565b5b6020830191508360208202830111156147275761472661552b565b5b9250929050565b60008135905061473d816158aa565b92915050565b600081519050614752816158aa565b92915050565b600081359050614767816158c1565b92915050565b60008151905061477c816158c1565b92915050565b60006020828403121561479857614797615535565b5b60006147a684828501614658565b91505092915050565b6000602082840312156147c5576147c4615535565b5b60006147d38482850161466d565b91505092915050565b600080604083850312156147f3576147f2615535565b5b600061480185828601614658565b925050602061481285828601614658565b9150509250929050565b60008060006060848603121561483557614834615535565b5b600061484386828701614658565b935050602061485486828701614658565b925050604061486586828701614758565b9150509250925092565b6000806040838503121561488657614885615535565b5b600061489485828601614658565b92505060206148a58582860161472e565b9150509250929050565b600080604083850312156148c6576148c5615535565b5b60006148d485828601614658565b92505060206148e585828601614758565b9150509250929050565b6000806000806040858703121561490957614908615535565b5b600085013567ffffffffffffffff81111561492757614926615530565b5b61493387828801614682565b9450945050602085013567ffffffffffffffff81111561495657614955615530565b5b614962878288016146d8565b925092505092959194509250565b60006020828403121561498657614985615535565b5b60006149948482850161472e565b91505092915050565b6000602082840312156149b3576149b2615535565b5b60006149c184828501614743565b91505092915050565b6000602082840312156149e0576149df615535565b5b60006149ee84828501614758565b91505092915050565b600080600060608486031215614a1057614a0f615535565b5b6000614a1e86828701614758565b9350506020614a2f86828701614758565b9250506040614a4086828701614758565b9150509250925092565b600080600060608486031215614a6357614a62615535565b5b6000614a718682870161476d565b9350506020614a828682870161476d565b9250506040614a938682870161476d565b9150509250925092565b6000614aa98383614ac4565b60208301905092915050565b614abe816152eb565b82525050565b614acd816152d9565b82525050565b614adc816152d9565b82525050565b6000614aed82615174565b614af78185615197565b9350614b0283615164565b8060005b83811015614b33578151614b1a8882614a9d565b9750614b258361518a565b925050600181019050614b06565b5085935050505092915050565b614b49816152fd565b82525050565b614b5881615340565b82525050565b614b6781615352565b82525050565b6000614b788261517f565b614b8281856151b3565b9350614b92818560208601615388565b614b9b8161553a565b840191505092915050565b6000614bb36023836151b3565b9150614bbe8261554b565b604082019050919050565b6000614bd6601b836151b3565b9150614be18261559a565b602082019050919050565b6000614bf96026836151b3565b9150614c04826155c3565b604082019050919050565b6000614c1c6022836151b3565b9150614c2782615612565b604082019050919050565b6000614c3f601b836151b3565b9150614c4a82615661565b602082019050919050565b6000614c626025836151b3565b9150614c6d8261568a565b604082019050919050565b6000614c85601d836151b3565b9150614c90826156d9565b602082019050919050565b6000614ca86028836151b3565b9150614cb382615702565b604082019050919050565b6000614ccb6021836151b3565b9150614cd682615751565b604082019050919050565b6000614cee6016836151b3565b9150614cf9826157a0565b602082019050919050565b6000614d116020836151b3565b9150614d1c826157c9565b602082019050919050565b6000614d346025836151b3565b9150614d3f826157f2565b604082019050919050565b6000614d576000836151a8565b9150614d6282615841565b600082019050919050565b6000614d7a6024836151b3565b9150614d8582615844565b604082019050919050565b614d9981615329565b82525050565b614da881615333565b82525050565b6000614db982614d4a565b9150819050919050565b6000602082019050614dd86000830184614ad3565b92915050565b6000602082019050614df36000830184614ab5565b92915050565b6000604082019050614e0e6000830185614ad3565b614e1b6020830184614ad3565b9392505050565b6000604082019050614e376000830185614ad3565b614e446020830184614d90565b9392505050565b600060c082019050614e606000830189614ad3565b614e6d6020830188614d90565b614e7a6040830187614b5e565b614e876060830186614b5e565b614e946080830185614ad3565b614ea160a0830184614d90565b979650505050505050565b6000602082019050614ec16000830184614b40565b92915050565b6000602082019050614edc6000830184614b4f565b92915050565b60006020820190508181036000830152614efc8184614b6d565b905092915050565b60006020820190508181036000830152614f1d81614ba6565b9050919050565b60006020820190508181036000830152614f3d81614bc9565b9050919050565b60006020820190508181036000830152614f5d81614bec565b9050919050565b60006020820190508181036000830152614f7d81614c0f565b9050919050565b60006020820190508181036000830152614f9d81614c32565b9050919050565b60006020820190508181036000830152614fbd81614c55565b9050919050565b60006020820190508181036000830152614fdd81614c78565b9050919050565b60006020820190508181036000830152614ffd81614c9b565b9050919050565b6000602082019050818103600083015261501d81614cbe565b9050919050565b6000602082019050818103600083015261503d81614ce1565b9050919050565b6000602082019050818103600083015261505d81614d04565b9050919050565b6000602082019050818103600083015261507d81614d27565b9050919050565b6000602082019050818103600083015261509d81614d6d565b9050919050565b60006020820190506150b96000830184614d90565b92915050565b60006040820190506150d46000830185614d90565b81810360208301526150e68184614ae2565b90509392505050565b600060a0820190506151046000830188614d90565b6151116020830187614b5e565b81810360408301526151238186614ae2565b90506151326060830185614ad3565b61513f6080830184614d90565b9695505050505050565b600060208201905061515e6000830184614d9f565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006151cf82615329565b91506151da83615329565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561520f5761520e615436565b5b828201905092915050565b600061522582615329565b915061523083615329565b9250826152405761523f615465565b5b828204905092915050565b600061525682615329565b915061526183615329565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561529a57615299615436565b5b828202905092915050565b60006152b082615329565b91506152bb83615329565b9250828210156152ce576152cd615436565b5b828203905092915050565b60006152e482615309565b9050919050565b60006152f682615309565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061534b82615364565b9050919050565b600061535d82615329565b9050919050565b600061536f82615376565b9050919050565b600061538182615309565b9050919050565b60005b838110156153a657808201518184015260208101905061538b565b838111156153b5576000848401525b50505050565b600060028204905060018216806153d357607f821691505b602082108114156153e7576153e6615494565b5b50919050565b60006153f882615329565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561542b5761542a615436565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a20496e73756666696369656e74204572726f7221210000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b7f426f7420456e656d792061646472657373205265737472696374656421000000600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4572726f723a204d69736d61746368204c656e67746800000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b61589c816152d9565b81146158a757600080fd5b50565b6158b3816152fd565b81146158be57600080fd5b50565b6158ca81615329565b81146158d557600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e81a541977fe9f72686629f4e4cce1b4ec5a6c461a6bcbe0f285981157865c2464736f6c63430008070033
Deployed Bytecode Sourcemap
11467:16315:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15372:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20303:317;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11964:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16538:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18971:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13094:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15649:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19986:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17471:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12539:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20897:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17848:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11876:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18807:156;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15558:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16035:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18079:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12238:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13209:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18211:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12673:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12181:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19230:748;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27074:697;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15757:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3144:230;;;;;;;;;;;;;:::i;:::-;;11672:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12948:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13020:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12757:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17052:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13352:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12587:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12398:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2919:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15463:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16261:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18670:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20722:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18491:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12497:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13142:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12630:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12339:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12859:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13256:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12455:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15884:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23259:154;;;;;;;;;;;;;:::i;:::-;;17729:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17614:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17189:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12718:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17969:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3382:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23112:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17332:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13310:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11771:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12290:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18351:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15372:83;15409:13;15442:5;15435:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15372:83;:::o;20303:317::-;3063:12;:10;:12::i;:::-;3053:22;;:6;;;;;;;;;;:22;;;3045:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20425:10:::1;20405:17;:30;;;;20466:10;20446:17;:30;;;;20507:10;20487:17;:30;;;;20549:63;20594:17;;20549:40;20571:17;;20549;;:21;;:40;;;;:::i;:::-;:44;;:63;;;;:::i;:::-;20528:18;:84;;;;20303:317:::0;;;:::o;11964:81::-;;;:::o;16538:161::-;16613:4;16630:39;16639:12;:10;:12::i;:::-;16653:7;16662:6;16630:8;:39::i;:::-;16687:4;16680:11;;16538:161;;;;:::o;18971:113::-;3063:12;:10;:12::i;:::-;3053:22;;:6;;;;;;;;;;:22;;;3045:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19069:7:::1;19051:9;:15;19061:4;19051:15;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;18971:113:::0;;:::o;13094:41::-;;;;;;;;;;;;;:::o;15649:100::-;15702:7;15729:12;;15722:19;;15649:100;:::o;19986:309::-;3063:12;:10;:12::i;:::-;3053:22;;:6;;;;;;;;;;:22;;;3045:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20106:10:::1;20087:16;:29;;;;20146:10;20127:16;:29;;;;20186:10;20167:16;:29;;;;20227:60;20270:16;;20227:38;20248:16;;20227;;:20;;:38;;;;:::i;:::-;:42;;:60;;;;:::i;:::-;20207:17;:80;;;;19986:309:::0;;;:::o;17471:135::-;3063:12;:10;:12::i;:::-;3053:22;;:6;;;;;;;;;;:22;;;3045:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17592:6:::1;17562:19;:27;17582:6;17562:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;17471:135:::0;;:::o;12539:35::-;;;;:::o;20897:313::-;20995:4;21012:36;21022:6;21030:9;21041:6;21012:9;:36::i;:::-;;21059:121;21068:6;21076:12;:10;:12::i;:::-;21090:89;21128:6;21090:89;;;;;;;;;;;;;;;;;:11;:19;21102:6;21090:19;;;;;;;;;;;;;;;:33;21110:12;:10;:12::i;:::-;21090:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;21059:8;:121::i;:::-;21198:4;21191:11;;20897:313;;;;;:::o;17848:113::-;3063:12;:10;:12::i;:::-;3053:22;;:6;;;;;;;;;;:22;;;3045:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17945:8:::1;17926:16;;:27;;;;;;;;;;;;;;;;;;17848:113:::0;:::o;11876:81::-;;;:::o;18807:156::-;18860:7;18887:68;18932:22;18942:11;18932:9;:22::i;:::-;18887:40;18904:22;18914:11;18904:9;:22::i;:::-;18887:12;;:16;;:40;;;;:::i;:::-;:44;;:68;;;;:::i;:::-;18880:75;;18807:156;:::o;15558:83::-;15599:5;15624:9;;;;;;;;;;;15617:16;;15558:83;:::o;16035:218::-;16123:4;16140:83;16149:12;:10;:12::i;:::-;16163:7;16172:50;16211:10;16172:11;:25;16184:12;:10;:12::i;:::-;16172:25;;;;;;;;;;;;;;;:34;16198:7;16172:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;16140:8;:83::i;:::-;16241:4;16234:11;;16035:218;;;;:::o;18079:124::-;3063:12;:10;:12::i;:::-;3053:22;;:6;;;;;;;;;;:22;;;3045:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18187:8:::1;18161:23;:34;;;;18079:124:::0;:::o;12238:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;13209:40::-;;;;;;;;;;;;;:::o;18211:132::-;3063:12;:10;:12::i;:::-;3053:22;;:6;;;;;;;;;;:22;;;3045:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18324:10:::1;18298:15;;:37;;;;;;;;;;;;;;;;;;18211:132:::0;:::o;12673:36::-;;;;:::o;12181:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;19230:748::-;19310:22;3063:12;:10;:12::i;:::-;3053:22;;:6;;;;;;;;;;:22;;;3045:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19347:35:::1;19404:16;19347:74;;19470:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19452:53;;;19514:4;19521:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19452:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19435:110;;19587:1;19561:28;;:14;:28;;;19558:225;;;19675:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19657:74;;;19740:4;19747:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19657:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19640:131;;19558:225;19809:14;19795:11;;:28;;;;;;;;;;;;;;;;;;19875:16;19857:15;;:34;;;;;;;;;;;;;;;;;;19966:4;19929:12;:34;19950:11;;;;;;;;;;;19929:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;19334:644;19230:748:::0;;;:::o;27074:697::-;3063:12;:10;:12::i;:::-;3053:22;;:6;;;;;;;;;;:22;;;3045:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27174:15:::1;27192:10;27174:28;;27240:7;;:14;;27221:8;;:15;;:33;27213:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27291:15;27321:6:::0;27330:1:::1;27321:10;;27317:92;27337:7;;:14;;27333:1;:18;27317:92;;;27387:7;;27395:1;27387:10;;;;;;;:::i;:::-;;;;;;;;27373:24;;;;;:::i;:::-;;;27353:3;;;;;:::i;:::-;;;;27317:92;;;;27449:10;27427:18;27437:7;27427:9;:18::i;:::-;:32;;27419:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;27522:34;27545:10;27522:9;:18;27532:7;27522:18;;;;;;;;;;;;;;;;:22;;:34;;;;:::i;:::-;27501:9;:18;27511:7;27501:18;;;;;;;;;;;;;;;:55;;;;27572:6;27568:194;27588:8;;:15;;27584:1;:19;27568:194;;;27650:38;27677:7;;27685:1;27677:10;;;;;;;:::i;:::-;;;;;;;;27650:9;:22;27660:8;;27669:1;27660:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;27650:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;27625:9;:22;27635:8;;27644:1;27635:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;27625:22;;;;;;;;;;;;;;;:63;;;;27726:8;;27735:1;27726:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;27708:42;;27717:7;27708:42;;;27739:7;;27747:1;27739:10;;;;;;;:::i;:::-;;;;;;;;27708:42;;;;;;:::i;:::-;;;;;;;;27605:3;;;;;:::i;:::-;;;;27568:194;;;;27163:608;;27074:697:::0;;;;:::o;15757:119::-;15823:7;15850:9;:18;15860:7;15850:18;;;;;;;;;;;;;;;;15843:25;;15757:119;;;:::o;3144:230::-;3063:12;:10;:12::i;:::-;3053:22;;:6;;;;;;;;;;:22;;;3045:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3251:42:::1;3214:81;;3235:6;::::0;::::1;;;;;;;;3214:81;;;;;;;;;;;;3323:42;3306:6;::::0;:60:::1;;;;;;;;;;;;;;;;;;3144:230::o:0;11672:92::-;;;;;;;;;;;;;:::o;12948:59::-;;;;:::o;13020:58::-;;;;:::o;12757:33::-;;;;:::o;17052:129::-;3063:12;:10;:12::i;:::-;3053:22;;:6;;;;;;;;;;:22;;;3045:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17165:8:::1;17141:12;:21;17154:7;17141:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;17052:129:::0;;:::o;13352:41::-;;;;;;;;;;;;;:::o;12587:36::-;;;;:::o;12398:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;2919:79::-;2957:7;2984:6;;;;;;;;;;;2977:13;;2919:79;:::o;15463:87::-;15502:13;15535:7;15528:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15463:87;:::o;16261:269::-;16354:4;16371:129;16380:12;:10;:12::i;:::-;16394:7;16403:96;16442:15;16403:96;;;;;;;;;;;;;;;;;:11;:25;16415:12;:10;:12::i;:::-;16403:25;;;;;;;;;;;;;;;:34;16429:7;16403:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;16371:8;:129::i;:::-;16518:4;16511:11;;16261:269;;;;:::o;18670:125::-;3063:12;:10;:12::i;:::-;3053:22;;:6;;;;;;;;;;:22;;;3045:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18779:8:::1;18751:25;;:36;;;;;;;;;;;;;;;;;;18670:125:::0;:::o;20722:167::-;20800:4;20817:42;20827:12;:10;:12::i;:::-;20841:9;20852:6;20817:9;:42::i;:::-;;20877:4;20870:11;;20722:167;;;;:::o;18491:171::-;3063:12;:10;:12::i;:::-;3053:22;;:6;;;;;;;;;;:22;;;3045:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18592:8:::1;18568:21;;:32;;;;;;;;;;;;;;;;;;18616:38;18645:8;18616:38;;;;;;:::i;:::-;;;;;;;;18491:171:::0;:::o;12497:35::-;;;;:::o;13142:26::-;;;;;;;;;;;;;:::o;12630:36::-;;;;:::o;12339:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;12859:69::-;;;;:::o;13256:45::-;;;;;;;;;;;;;:::o;12455:35::-;;;;:::o;15884:143::-;15965:7;15992:11;:18;16004:5;15992:18;;;;;;;;;;;;;;;:27;16011:7;15992:27;;;;;;;;;;;;;;;;15985:34;;15884:143;;;;:::o;23259:154::-;3063:12;:10;:12::i;:::-;3053:22;;:6;;;;;;;;;;:22;;;3045:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23313:7:::1;23333:10;23325:24;;23357:21;23325:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23312:71;;;23402:2;23394:11;;;::::0;::::1;;23301:112;23259:154::o:0;17729:111::-;3063:12;:10;:12::i;:::-;3053:22;;:6;;;;;;;;;;:22;;;3045:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17821:11:::1;17806:12;:26;;;;17729:111:::0;:::o;17614:107::-;3063:12;:10;:12::i;:::-;3053:22;;:6;;;;;;;;;;:22;;;3045:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17706:7:::1;17681:22;;:32;;;;;;;;;;;;;;;;;;17614:107:::0;:::o;17189:135::-;3063:12;:10;:12::i;:::-;3053:22;;:6;;;;;;;;;;:22;;;3045:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17308:8:::1;17279:17;:26;17297:7;17279:26;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;17189:135:::0;;:::o;12718:32::-;;;;:::o;17969:102::-;3063:12;:10;:12::i;:::-;3053:22;;:6;;;;;;;;;;:22;;;3045:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18055:8:::1;18041:10;:22;;;;17969:102:::0;:::o;3382:244::-;3063:12;:10;:12::i;:::-;3053:22;;:6;;;;;;;;;;:22;;;3045:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3491:1:::1;3471:22;;:8;:22;;;;3463:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;3581:8;3552:38;;3573:6;::::0;::::1;;;;;;;;3552:38;;;;;;;;;;;;3610:8;3601:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3382:244:::0;:::o;23112:139::-;3063:12;:10;:12::i;:::-;3053:22;;:6;;;;;;;;;;:22;;;3045:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23207:6:::1;23200:23;;;23224:10;23235:7;23200:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23112:139:::0;;:::o;17332:127::-;3063:12;:10;:12::i;:::-;3053:22;;:6;;;;;;;;;;:22;;;3045:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17445:6:::1;17419:15;:23;17435:6;17419:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;17332:127:::0;;:::o;13310:35::-;;;;;;;;;;;;;:::o;11771:92::-;;;;;;;;;;;;;:::o;12290:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;18351:132::-;3063:12;:10;:12::i;:::-;3053:22;;:6;;;;;;;;;;:22;;;3045:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18464:10:::1;18438:15;;:37;;;;;;;;;;;;;;;;;;18351:132:::0;:::o;1604:250::-;1662:7;1691:1;1686;:6;1682:47;;;1716:1;1709:8;;;;1682:47;1741:9;1757:1;1753;:5;;;;:::i;:::-;1741:17;;1786:1;1781;1777;:5;;;;:::i;:::-;:10;1769:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1845:1;1838:8;;;1604:250;;;;;:::o;1862:132::-;1920:7;1947:39;1951:1;1954;1947:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1940:46;;1862:132;;;;:::o;1071:181::-;1129:7;1149:9;1165:1;1161;:5;;;;:::i;:::-;1149:17;;1190:1;1185;:6;;1177:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1243:1;1236:8;;;1071:181;;;;:::o;129:115::-;182:15;225:10;210:26;;129:115;:::o;16707:337::-;16817:1;16800:19;;:5;:19;;;;16792:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16898:1;16879:21;;:7;:21;;;;16871:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16982:6;16952:11;:18;16964:5;16952:18;;;;;;;;;;;;;;;:27;16971:7;16952:27;;;;;;;;;;;;;;;:36;;;;17020:7;17004:32;;17013:5;17004:32;;;17029:6;17004:32;;;;;;:::i;:::-;;;;;;;;16707:337;;;:::o;21218:1886::-;21305:4;21350:1;21332:20;;:6;:20;;;;21324:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;21434:1;21413:23;;:9;:23;;;;21405:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;21496:9;:17;21506:6;21496:17;;;;;;;;;;;;;;;;;;;;;;;;;21495:18;:43;;;;;21518:9;:20;21528:9;21518:20;;;;;;;;;;;;;;;;;;;;;;;;;21517:21;21495:43;21487:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;21588:16;;;;;;;;;;;21585:1502;;;21638:41;21653:6;21661:9;21672:6;21638:14;:41::i;:::-;21631:48;;;;21585:1502;21737:15;:23;21753:6;21737:23;;;;;;;;;;;;;;;;;;;;;;;;;21736:24;:55;;;;;21765:15;:26;21781:9;21765:26;;;;;;;;;;;;;;;;;;;;;;;;;21764:27;21736:55;:81;;;;;21795:22;;;;;;;;;;;21736:81;21733:196;;;21856:12;;21846:6;:22;;21838:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;21733:196;21945:28;21976:24;21994:4;21976:9;:24::i;:::-;21945:55;;22015:28;22070:23;;22046:20;:47;;22015:78;;22126:23;:44;;;;;22154:16;;;;;;;;;;;22153:17;22126:44;:69;;;;;22175:12;:20;22188:6;22175:20;;;;;;;;;;;;;;;;;;;;;;;;;22174:21;22126:69;:94;;;;;22199:21;;;;;;;;;;;22126:94;22122:305;;;22258:25;;;;;;;;;;;22255:97;;;22329:23;;22306:46;;22255:97;22371:36;22386:20;22371:14;:36::i;:::-;22122:305;22463:53;22485:6;22463:53;;;;;;;;;;;;;;;;;:9;:17;22473:6;22463:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;22443:9;:17;22453:6;22443:17;;;;;;;;;;;;;;;:73;;;;22533:19;22556:17;:25;22574:6;22556:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;22585:17;:28;22603:9;22585:28;;;;;;;;;;;;;;;;;;;;;;;;;22556:57;22555:148;;22669:34;22677:6;22685:9;22696:6;22669:7;:34::i;:::-;22555:148;;;22660:6;22555:148;22533:170;;22723:16;;;;;;;;;;;:51;;;;;22744:19;:30;22764:9;22744:30;;;;;;;;;;;;;;;;;;;;;;;;;22743:31;22723:51;22720:191;;;22844:10;;22803:37;22828:11;22803:20;22813:9;22803;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;22795:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;22720:191;22950:37;22975:11;22950:9;:20;22960:9;22950:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;22927:9;:20;22937:9;22927:20;;;;;;;;;;;;;;;:60;;;;23026:9;23009:40;;23018:6;23009:40;;;23037:11;23009:40;;;;;;:::i;:::-;;;;;;;;23071:4;23064:11;;;;;21218:1886;;;;;;:::o;1404:192::-;1490:7;1523:1;1518;:6;;1526:12;1510:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1550:9;1566:1;1562;:5;;;;:::i;:::-;1550:17;;1587:1;1580:8;;;1404:192;;;;;:::o;1260:136::-;1318:7;1345:43;1349:1;1352;1345:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1338:50;;1260:136;;;;:::o;2002:278::-;2088:7;2120:1;2116;:5;2123:12;2108:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2147:9;2163:1;2159;:5;;;;:::i;:::-;2147:17;;2271:1;2264:8;;;2002:278;;;;;:::o;23421:330::-;23514:4;23551:53;23573:6;23551:53;;;;;;;;;;;;;;;;;:9;:17;23561:6;23551:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;23531:9;:17;23541:6;23531:17;;;;;;;;;;;;;;;:73;;;;23638:32;23663:6;23638:9;:20;23648:9;23638:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;23615:9;:20;23625:9;23615:20;;;;;;;;;;;;;;;:55;;;;23703:9;23686:35;;23695:6;23686:35;;;23714:6;23686:35;;;;;;:::i;:::-;;;;;;;;23739:4;23732:11;;23421:330;;;;;:::o;23759:1449::-;13837:4;13818:16;;:23;;;;;;;;;;;;;;;;;;23833:19:::1;23855:41;23877:18;;23855:17;;:21;;:41;;;;:::i;:::-;23833:63;;23909:22;23934:39;23955:17;;23934:16;;:20;;:39;;;;:::i;:::-;23909:64;;23984:22;24009:39;24030:17;;24009:16;;:20;;:39;;;;:::i;:::-;23984:64;;24147:18;24168:51;24217:1;24168:44;24200:11;24168:27;24180:14;24168:7;:11;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;24147:72;;24230:20;24253:23;24265:10;24253:7;:11;;:23;;;;:::i;:::-;24230:46;;24289:22;24315:21;24289:47;;24347:30;24364:12;24347:16;:30::i;:::-;24388:23;24415:41;24441:14;24415:21;:25;;:41;;;;:::i;:::-;24388:68;;24469:19;24491:38;24507:21;24526:1;24507:14;:18;;:21;;;;:::i;:::-;24491:11;:15;;:38;;;;:::i;:::-;24469:60;;24542:26;24571:59;24628:1;24571:52;24611:11;24571:35;24591:14;24571:15;:19;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;24542:88;;24641:26;24670:52;24710:11;24670:35;24690:14;24670:15;:19;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;24641:81;;24733:26;24762:63;24806:18;24762:39;24782:18;24762:15;:19;;:39;;;;:::i;:::-;:43;;:63;;;;:::i;:::-;24733:92;;24862:1;24841:18;:22;24838:107;;;24888:15;;;;;;;;;;;24880:33;;:53;24914:18;24880:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;24838:107;24981:1;24960:18;:22;24957:107;;;25007:15;;;;;;;;;;;24999:33;;:53;25033:18;24999:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;24957:107;25109:1;25088:18;:22;:40;;;;;25127:1;25114:10;:14;25088:40;25085:116;;;25145:44;25158:10;25170:18;25145:12;:44::i;:::-;25085:116;23820:1388;;;;;;;;;;;13883:5:::0;13864:16;;:24;;;;;;;;;;;;;;;;;;23759:1449;:::o;26415:622::-;26501:7;26531:17;26551:1;26531:21;;26576:12;:20;26589:6;26576:20;;;;;;;;;;;;;;;;;;;;;;;;;26573:223;;;26625:38;26659:3;26625:29;26636:17;;26625:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;26613:50;;26573:223;;;26693:12;:23;26706:9;26693:23;;;;;;;;;;;;;;;;;;;;;;;;;26690:106;;;26745:39;26780:3;26745:30;26756:18;;26745:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;26733:51;;26690:106;26573:223;26831:1;26819:9;:13;26816:173;;;26876:39;26905:9;26876;:24;26894:4;26876:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;26849:9;:24;26867:4;26849:24;;;;;;;;;;;;;;;:66;;;;26960:4;26935:42;;26944:6;26935:42;;;26967:9;26935:42;;;;;;:::i;:::-;;;;;;;;26816:173;27008:21;27019:9;27008:6;:10;;:21;;;;:::i;:::-;27001:28;;;26415:622;;;;;:::o;25220:666::-;25346:21;25384:1;25370:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25346:40;;25415:4;25397;25402:1;25397:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;25441:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25431:4;25436:1;25431:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;25476:62;25493:4;25508:15;;;;;;;;;;;25526:11;25476:8;:62::i;:::-;25577:15;;;;;;;;;;;:66;;;25658:11;25684:1;25728:4;25755;25791:15;25577:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25843:35;25860:11;25873:4;25843:35;;;;;;;:::i;:::-;;;;;;;;25275:611;25220:666;:::o;25894:513::-;26042:62;26059:4;26074:15;;;;;;;;;;;26092:11;26042:8;:62::i;:::-;26147:15;;;;;;;;;;;:31;;;26186:9;26219:4;26239:11;26265:1;26308;26351:7;:5;:7::i;:::-;26373:15;26147:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;25894:513;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;318:568::-;391:8;401:6;451:3;444:4;436:6;432:17;428:27;418:122;;459:79;;:::i;:::-;418:122;572:6;559:20;549:30;;602:18;594:6;591:30;588:117;;;624:79;;:::i;:::-;588:117;738:4;730:6;726:17;714:29;;792:3;784:4;776:6;772:17;762:8;758:32;755:41;752:128;;;799:79;;:::i;:::-;752:128;318:568;;;;;:::o;909:::-;982:8;992:6;1042:3;1035:4;1027:6;1023:17;1019:27;1009:122;;1050:79;;:::i;:::-;1009:122;1163:6;1150:20;1140:30;;1193:18;1185:6;1182:30;1179:117;;;1215:79;;:::i;:::-;1179:117;1329:4;1321:6;1317:17;1305:29;;1383:3;1375:4;1367:6;1363:17;1353:8;1349:32;1346:41;1343:128;;;1390:79;;:::i;:::-;1343:128;909:568;;;;;:::o;1483:133::-;1526:5;1564:6;1551:20;1542:29;;1580:30;1604:5;1580:30;:::i;:::-;1483:133;;;;:::o;1622:137::-;1676:5;1707:6;1701:13;1692:22;;1723:30;1747:5;1723:30;:::i;:::-;1622:137;;;;:::o;1765:139::-;1811:5;1849:6;1836:20;1827:29;;1865:33;1892:5;1865:33;:::i;:::-;1765:139;;;;:::o;1910:143::-;1967:5;1998:6;1992:13;1983:22;;2014:33;2041:5;2014:33;:::i;:::-;1910:143;;;;:::o;2059:329::-;2118:6;2167:2;2155:9;2146:7;2142:23;2138:32;2135:119;;;2173:79;;:::i;:::-;2135:119;2293:1;2318:53;2363:7;2354:6;2343:9;2339:22;2318:53;:::i;:::-;2308:63;;2264:117;2059:329;;;;:::o;2394:351::-;2464:6;2513:2;2501:9;2492:7;2488:23;2484:32;2481:119;;;2519:79;;:::i;:::-;2481:119;2639:1;2664:64;2720:7;2711:6;2700:9;2696:22;2664:64;:::i;:::-;2654:74;;2610:128;2394:351;;;;:::o;2751:474::-;2819:6;2827;2876:2;2864:9;2855:7;2851:23;2847:32;2844:119;;;2882:79;;:::i;:::-;2844:119;3002:1;3027:53;3072:7;3063:6;3052:9;3048:22;3027:53;:::i;:::-;3017:63;;2973:117;3129:2;3155:53;3200:7;3191:6;3180:9;3176:22;3155:53;:::i;:::-;3145:63;;3100:118;2751:474;;;;;:::o;3231:619::-;3308:6;3316;3324;3373:2;3361:9;3352:7;3348:23;3344:32;3341:119;;;3379:79;;:::i;:::-;3341:119;3499:1;3524:53;3569:7;3560:6;3549:9;3545:22;3524:53;:::i;:::-;3514:63;;3470:117;3626:2;3652:53;3697:7;3688:6;3677:9;3673:22;3652:53;:::i;:::-;3642:63;;3597:118;3754:2;3780:53;3825:7;3816:6;3805:9;3801:22;3780:53;:::i;:::-;3770:63;;3725:118;3231:619;;;;;:::o;3856:468::-;3921:6;3929;3978:2;3966:9;3957:7;3953:23;3949:32;3946:119;;;3984:79;;:::i;:::-;3946:119;4104:1;4129:53;4174:7;4165:6;4154:9;4150:22;4129:53;:::i;:::-;4119:63;;4075:117;4231:2;4257:50;4299:7;4290:6;4279:9;4275:22;4257:50;:::i;:::-;4247:60;;4202:115;3856:468;;;;;:::o;4330:474::-;4398:6;4406;4455:2;4443:9;4434:7;4430:23;4426:32;4423:119;;;4461:79;;:::i;:::-;4423:119;4581:1;4606:53;4651:7;4642:6;4631:9;4627:22;4606:53;:::i;:::-;4596:63;;4552:117;4708:2;4734:53;4779:7;4770:6;4759:9;4755:22;4734:53;:::i;:::-;4724:63;;4679:118;4330:474;;;;;:::o;4810:934::-;4932:6;4940;4948;4956;5005:2;4993:9;4984:7;4980:23;4976:32;4973:119;;;5011:79;;:::i;:::-;4973:119;5159:1;5148:9;5144:17;5131:31;5189:18;5181:6;5178:30;5175:117;;;5211:79;;:::i;:::-;5175:117;5324:80;5396:7;5387:6;5376:9;5372:22;5324:80;:::i;:::-;5306:98;;;;5102:312;5481:2;5470:9;5466:18;5453:32;5512:18;5504:6;5501:30;5498:117;;;5534:79;;:::i;:::-;5498:117;5647:80;5719:7;5710:6;5699:9;5695:22;5647:80;:::i;:::-;5629:98;;;;5424:313;4810:934;;;;;;;:::o;5750:323::-;5806:6;5855:2;5843:9;5834:7;5830:23;5826:32;5823:119;;;5861:79;;:::i;:::-;5823:119;5981:1;6006:50;6048:7;6039:6;6028:9;6024:22;6006:50;:::i;:::-;5996:60;;5952:114;5750:323;;;;:::o;6079:345::-;6146:6;6195:2;6183:9;6174:7;6170:23;6166:32;6163:119;;;6201:79;;:::i;:::-;6163:119;6321:1;6346:61;6399:7;6390:6;6379:9;6375:22;6346:61;:::i;:::-;6336:71;;6292:125;6079:345;;;;:::o;6430:329::-;6489:6;6538:2;6526:9;6517:7;6513:23;6509:32;6506:119;;;6544:79;;:::i;:::-;6506:119;6664:1;6689:53;6734:7;6725:6;6714:9;6710:22;6689:53;:::i;:::-;6679:63;;6635:117;6430:329;;;;:::o;6765:619::-;6842:6;6850;6858;6907:2;6895:9;6886:7;6882:23;6878:32;6875:119;;;6913:79;;:::i;:::-;6875:119;7033:1;7058:53;7103:7;7094:6;7083:9;7079:22;7058:53;:::i;:::-;7048:63;;7004:117;7160:2;7186:53;7231:7;7222:6;7211:9;7207:22;7186:53;:::i;:::-;7176:63;;7131:118;7288:2;7314:53;7359:7;7350:6;7339:9;7335:22;7314:53;:::i;:::-;7304:63;;7259:118;6765:619;;;;;:::o;7390:663::-;7478:6;7486;7494;7543:2;7531:9;7522:7;7518:23;7514:32;7511:119;;;7549:79;;:::i;:::-;7511:119;7669:1;7694:64;7750:7;7741:6;7730:9;7726:22;7694:64;:::i;:::-;7684:74;;7640:128;7807:2;7833:64;7889:7;7880:6;7869:9;7865:22;7833:64;:::i;:::-;7823:74;;7778:129;7946:2;7972:64;8028:7;8019:6;8008:9;8004:22;7972:64;:::i;:::-;7962:74;;7917:129;7390:663;;;;;:::o;8059:179::-;8128:10;8149:46;8191:3;8183:6;8149:46;:::i;:::-;8227:4;8222:3;8218:14;8204:28;;8059:179;;;;:::o;8244:142::-;8347:32;8373:5;8347:32;:::i;:::-;8342:3;8335:45;8244:142;;:::o;8392:108::-;8469:24;8487:5;8469:24;:::i;:::-;8464:3;8457:37;8392:108;;:::o;8506:118::-;8593:24;8611:5;8593:24;:::i;:::-;8588:3;8581:37;8506:118;;:::o;8660:732::-;8779:3;8808:54;8856:5;8808:54;:::i;:::-;8878:86;8957:6;8952:3;8878:86;:::i;:::-;8871:93;;8988:56;9038:5;8988:56;:::i;:::-;9067:7;9098:1;9083:284;9108:6;9105:1;9102:13;9083:284;;;9184:6;9178:13;9211:63;9270:3;9255:13;9211:63;:::i;:::-;9204:70;;9297:60;9350:6;9297:60;:::i;:::-;9287:70;;9143:224;9130:1;9127;9123:9;9118:14;;9083:284;;;9087:14;9383:3;9376:10;;8784:608;;;8660:732;;;;:::o;9398:109::-;9479:21;9494:5;9479:21;:::i;:::-;9474:3;9467:34;9398:109;;:::o;9513:185::-;9627:64;9685:5;9627:64;:::i;:::-;9622:3;9615:77;9513:185;;:::o;9704:147::-;9799:45;9838:5;9799:45;:::i;:::-;9794:3;9787:58;9704:147;;:::o;9857:364::-;9945:3;9973:39;10006:5;9973:39;:::i;:::-;10028:71;10092:6;10087:3;10028:71;:::i;:::-;10021:78;;10108:52;10153:6;10148:3;10141:4;10134:5;10130:16;10108:52;:::i;:::-;10185:29;10207:6;10185:29;:::i;:::-;10180:3;10176:39;10169:46;;9949:272;9857:364;;;;:::o;10227:366::-;10369:3;10390:67;10454:2;10449:3;10390:67;:::i;:::-;10383:74;;10466:93;10555:3;10466:93;:::i;:::-;10584:2;10579:3;10575:12;10568:19;;10227:366;;;:::o;10599:::-;10741:3;10762:67;10826:2;10821:3;10762:67;:::i;:::-;10755:74;;10838:93;10927:3;10838:93;:::i;:::-;10956:2;10951:3;10947:12;10940:19;;10599:366;;;:::o;10971:::-;11113:3;11134:67;11198:2;11193:3;11134:67;:::i;:::-;11127:74;;11210:93;11299:3;11210:93;:::i;:::-;11328:2;11323:3;11319:12;11312:19;;10971:366;;;:::o;11343:::-;11485:3;11506:67;11570:2;11565:3;11506:67;:::i;:::-;11499:74;;11582:93;11671:3;11582:93;:::i;:::-;11700:2;11695:3;11691:12;11684:19;;11343:366;;;:::o;11715:::-;11857:3;11878:67;11942:2;11937:3;11878:67;:::i;:::-;11871:74;;11954:93;12043:3;11954:93;:::i;:::-;12072:2;12067:3;12063:12;12056:19;;11715:366;;;:::o;12087:::-;12229:3;12250:67;12314:2;12309:3;12250:67;:::i;:::-;12243:74;;12326:93;12415:3;12326:93;:::i;:::-;12444:2;12439:3;12435:12;12428:19;;12087:366;;;:::o;12459:::-;12601:3;12622:67;12686:2;12681:3;12622:67;:::i;:::-;12615:74;;12698:93;12787:3;12698:93;:::i;:::-;12816:2;12811:3;12807:12;12800:19;;12459:366;;;:::o;12831:::-;12973:3;12994:67;13058:2;13053:3;12994:67;:::i;:::-;12987:74;;13070:93;13159:3;13070:93;:::i;:::-;13188:2;13183:3;13179:12;13172:19;;12831:366;;;:::o;13203:::-;13345:3;13366:67;13430:2;13425:3;13366:67;:::i;:::-;13359:74;;13442:93;13531:3;13442:93;:::i;:::-;13560:2;13555:3;13551:12;13544:19;;13203:366;;;:::o;13575:::-;13717:3;13738:67;13802:2;13797:3;13738:67;:::i;:::-;13731:74;;13814:93;13903:3;13814:93;:::i;:::-;13932:2;13927:3;13923:12;13916:19;;13575:366;;;:::o;13947:::-;14089:3;14110:67;14174:2;14169:3;14110:67;:::i;:::-;14103:74;;14186:93;14275:3;14186:93;:::i;:::-;14304:2;14299:3;14295:12;14288:19;;13947:366;;;:::o;14319:::-;14461:3;14482:67;14546:2;14541:3;14482:67;:::i;:::-;14475:74;;14558:93;14647:3;14558:93;:::i;:::-;14676:2;14671:3;14667:12;14660:19;;14319:366;;;:::o;14691:398::-;14850:3;14871:83;14952:1;14947:3;14871:83;:::i;:::-;14864:90;;14963:93;15052:3;14963:93;:::i;:::-;15081:1;15076:3;15072:11;15065:18;;14691:398;;;:::o;15095:366::-;15237:3;15258:67;15322:2;15317:3;15258:67;:::i;:::-;15251:74;;15334:93;15423:3;15334:93;:::i;:::-;15452:2;15447:3;15443:12;15436:19;;15095:366;;;:::o;15467:118::-;15554:24;15572:5;15554:24;:::i;:::-;15549:3;15542:37;15467:118;;:::o;15591:112::-;15674:22;15690:5;15674:22;:::i;:::-;15669:3;15662:35;15591:112;;:::o;15709:379::-;15893:3;15915:147;16058:3;15915:147;:::i;:::-;15908:154;;16079:3;16072:10;;15709:379;;;:::o;16094:222::-;16187:4;16225:2;16214:9;16210:18;16202:26;;16238:71;16306:1;16295:9;16291:17;16282:6;16238:71;:::i;:::-;16094:222;;;;:::o;16322:254::-;16431:4;16469:2;16458:9;16454:18;16446:26;;16482:87;16566:1;16555:9;16551:17;16542:6;16482:87;:::i;:::-;16322:254;;;;:::o;16582:332::-;16703:4;16741:2;16730:9;16726:18;16718:26;;16754:71;16822:1;16811:9;16807:17;16798:6;16754:71;:::i;:::-;16835:72;16903:2;16892:9;16888:18;16879:6;16835:72;:::i;:::-;16582:332;;;;;:::o;16920:::-;17041:4;17079:2;17068:9;17064:18;17056:26;;17092:71;17160:1;17149:9;17145:17;17136:6;17092:71;:::i;:::-;17173:72;17241:2;17230:9;17226:18;17217:6;17173:72;:::i;:::-;16920:332;;;;;:::o;17258:807::-;17507:4;17545:3;17534:9;17530:19;17522:27;;17559:71;17627:1;17616:9;17612:17;17603:6;17559:71;:::i;:::-;17640:72;17708:2;17697:9;17693:18;17684:6;17640:72;:::i;:::-;17722:80;17798:2;17787:9;17783:18;17774:6;17722:80;:::i;:::-;17812;17888:2;17877:9;17873:18;17864:6;17812:80;:::i;:::-;17902:73;17970:3;17959:9;17955:19;17946:6;17902:73;:::i;:::-;17985;18053:3;18042:9;18038:19;18029:6;17985:73;:::i;:::-;17258:807;;;;;;;;;:::o;18071:210::-;18158:4;18196:2;18185:9;18181:18;18173:26;;18209:65;18271:1;18260:9;18256:17;18247:6;18209:65;:::i;:::-;18071:210;;;;:::o;18287:276::-;18407:4;18445:2;18434:9;18430:18;18422:26;;18458:98;18553:1;18542:9;18538:17;18529:6;18458:98;:::i;:::-;18287:276;;;;:::o;18569:313::-;18682:4;18720:2;18709:9;18705:18;18697:26;;18769:9;18763:4;18759:20;18755:1;18744:9;18740:17;18733:47;18797:78;18870:4;18861:6;18797:78;:::i;:::-;18789:86;;18569:313;;;;:::o;18888:419::-;19054:4;19092:2;19081:9;19077:18;19069:26;;19141:9;19135:4;19131:20;19127:1;19116:9;19112:17;19105:47;19169:131;19295:4;19169:131;:::i;:::-;19161:139;;18888:419;;;:::o;19313:::-;19479:4;19517:2;19506:9;19502:18;19494:26;;19566:9;19560:4;19556:20;19552:1;19541:9;19537:17;19530:47;19594:131;19720:4;19594:131;:::i;:::-;19586:139;;19313:419;;;:::o;19738:::-;19904:4;19942:2;19931:9;19927:18;19919:26;;19991:9;19985:4;19981:20;19977:1;19966:9;19962:17;19955:47;20019:131;20145:4;20019:131;:::i;:::-;20011:139;;19738:419;;;:::o;20163:::-;20329:4;20367:2;20356:9;20352:18;20344:26;;20416:9;20410:4;20406:20;20402:1;20391:9;20387:17;20380:47;20444:131;20570:4;20444:131;:::i;:::-;20436:139;;20163:419;;;:::o;20588:::-;20754:4;20792:2;20781:9;20777:18;20769:26;;20841:9;20835:4;20831:20;20827:1;20816:9;20812:17;20805:47;20869:131;20995:4;20869:131;:::i;:::-;20861:139;;20588:419;;;:::o;21013:::-;21179:4;21217:2;21206:9;21202:18;21194:26;;21266:9;21260:4;21256:20;21252:1;21241:9;21237:17;21230:47;21294:131;21420:4;21294:131;:::i;:::-;21286:139;;21013:419;;;:::o;21438:::-;21604:4;21642:2;21631:9;21627:18;21619:26;;21691:9;21685:4;21681:20;21677:1;21666:9;21662:17;21655:47;21719:131;21845:4;21719:131;:::i;:::-;21711:139;;21438:419;;;:::o;21863:::-;22029:4;22067:2;22056:9;22052:18;22044:26;;22116:9;22110:4;22106:20;22102:1;22091:9;22087:17;22080:47;22144:131;22270:4;22144:131;:::i;:::-;22136:139;;21863:419;;;:::o;22288:::-;22454:4;22492:2;22481:9;22477:18;22469:26;;22541:9;22535:4;22531:20;22527:1;22516:9;22512:17;22505:47;22569:131;22695:4;22569:131;:::i;:::-;22561:139;;22288:419;;;:::o;22713:::-;22879:4;22917:2;22906:9;22902:18;22894:26;;22966:9;22960:4;22956:20;22952:1;22941:9;22937:17;22930:47;22994:131;23120:4;22994:131;:::i;:::-;22986:139;;22713:419;;;:::o;23138:::-;23304:4;23342:2;23331:9;23327:18;23319:26;;23391:9;23385:4;23381:20;23377:1;23366:9;23362:17;23355:47;23419:131;23545:4;23419:131;:::i;:::-;23411:139;;23138:419;;;:::o;23563:::-;23729:4;23767:2;23756:9;23752:18;23744:26;;23816:9;23810:4;23806:20;23802:1;23791:9;23787:17;23780:47;23844:131;23970:4;23844:131;:::i;:::-;23836:139;;23563:419;;;:::o;23988:::-;24154:4;24192:2;24181:9;24177:18;24169:26;;24241:9;24235:4;24231:20;24227:1;24216:9;24212:17;24205:47;24269:131;24395:4;24269:131;:::i;:::-;24261:139;;23988:419;;;:::o;24413:222::-;24506:4;24544:2;24533:9;24529:18;24521:26;;24557:71;24625:1;24614:9;24610:17;24601:6;24557:71;:::i;:::-;24413:222;;;;:::o;24641:483::-;24812:4;24850:2;24839:9;24835:18;24827:26;;24863:71;24931:1;24920:9;24916:17;24907:6;24863:71;:::i;:::-;24981:9;24975:4;24971:20;24966:2;24955:9;24951:18;24944:48;25009:108;25112:4;25103:6;25009:108;:::i;:::-;25001:116;;24641:483;;;;;:::o;25130:831::-;25393:4;25431:3;25420:9;25416:19;25408:27;;25445:71;25513:1;25502:9;25498:17;25489:6;25445:71;:::i;:::-;25526:80;25602:2;25591:9;25587:18;25578:6;25526:80;:::i;:::-;25653:9;25647:4;25643:20;25638:2;25627:9;25623:18;25616:48;25681:108;25784:4;25775:6;25681:108;:::i;:::-;25673:116;;25799:72;25867:2;25856:9;25852:18;25843:6;25799:72;:::i;:::-;25881:73;25949:3;25938:9;25934:19;25925:6;25881:73;:::i;:::-;25130:831;;;;;;;;:::o;25967:214::-;26056:4;26094:2;26083:9;26079:18;26071:26;;26107:67;26171:1;26160:9;26156:17;26147:6;26107:67;:::i;:::-;25967:214;;;;:::o;26268:132::-;26335:4;26358:3;26350:11;;26388:4;26383:3;26379:14;26371:22;;26268:132;;;:::o;26406:114::-;26473:6;26507:5;26501:12;26491:22;;26406:114;;;:::o;26526:99::-;26578:6;26612:5;26606:12;26596:22;;26526:99;;;:::o;26631:113::-;26701:4;26733;26728:3;26724:14;26716:22;;26631:113;;;:::o;26750:184::-;26849:11;26883:6;26878:3;26871:19;26923:4;26918:3;26914:14;26899:29;;26750:184;;;;:::o;26940:147::-;27041:11;27078:3;27063:18;;26940:147;;;;:::o;27093:169::-;27177:11;27211:6;27206:3;27199:19;27251:4;27246:3;27242:14;27227:29;;27093:169;;;;:::o;27268:305::-;27308:3;27327:20;27345:1;27327:20;:::i;:::-;27322:25;;27361:20;27379:1;27361:20;:::i;:::-;27356:25;;27515:1;27447:66;27443:74;27440:1;27437:81;27434:107;;;27521:18;;:::i;:::-;27434:107;27565:1;27562;27558:9;27551:16;;27268:305;;;;:::o;27579:185::-;27619:1;27636:20;27654:1;27636:20;:::i;:::-;27631:25;;27670:20;27688:1;27670:20;:::i;:::-;27665:25;;27709:1;27699:35;;27714:18;;:::i;:::-;27699:35;27756:1;27753;27749:9;27744:14;;27579:185;;;;:::o;27770:348::-;27810:7;27833:20;27851:1;27833:20;:::i;:::-;27828:25;;27867:20;27885:1;27867:20;:::i;:::-;27862:25;;28055:1;27987:66;27983:74;27980:1;27977:81;27972:1;27965:9;27958:17;27954:105;27951:131;;;28062:18;;:::i;:::-;27951:131;28110:1;28107;28103:9;28092:20;;27770:348;;;;:::o;28124:191::-;28164:4;28184:20;28202:1;28184:20;:::i;:::-;28179:25;;28218:20;28236:1;28218:20;:::i;:::-;28213:25;;28257:1;28254;28251:8;28248:34;;;28262:18;;:::i;:::-;28248:34;28307:1;28304;28300:9;28292:17;;28124:191;;;;:::o;28321:96::-;28358:7;28387:24;28405:5;28387:24;:::i;:::-;28376:35;;28321:96;;;:::o;28423:104::-;28468:7;28497:24;28515:5;28497:24;:::i;:::-;28486:35;;28423:104;;;:::o;28533:90::-;28567:7;28610:5;28603:13;28596:21;28585:32;;28533:90;;;:::o;28629:126::-;28666:7;28706:42;28699:5;28695:54;28684:65;;28629:126;;;:::o;28761:77::-;28798:7;28827:5;28816:16;;28761:77;;;:::o;28844:86::-;28879:7;28919:4;28912:5;28908:16;28897:27;;28844:86;;;:::o;28936:153::-;29013:9;29046:37;29077:5;29046:37;:::i;:::-;29033:50;;28936:153;;;:::o;29095:121::-;29153:9;29186:24;29204:5;29186:24;:::i;:::-;29173:37;;29095:121;;;:::o;29222:126::-;29272:9;29305:37;29336:5;29305:37;:::i;:::-;29292:50;;29222:126;;;:::o;29354:113::-;29404:9;29437:24;29455:5;29437:24;:::i;:::-;29424:37;;29354:113;;;:::o;29473:307::-;29541:1;29551:113;29565:6;29562:1;29559:13;29551:113;;;29650:1;29645:3;29641:11;29635:18;29631:1;29626:3;29622:11;29615:39;29587:2;29584:1;29580:10;29575:15;;29551:113;;;29682:6;29679:1;29676:13;29673:101;;;29762:1;29753:6;29748:3;29744:16;29737:27;29673:101;29522:258;29473:307;;;:::o;29786:320::-;29830:6;29867:1;29861:4;29857:12;29847:22;;29914:1;29908:4;29904:12;29935:18;29925:81;;29991:4;29983:6;29979:17;29969:27;;29925:81;30053:2;30045:6;30042:14;30022:18;30019:38;30016:84;;;30072:18;;:::i;:::-;30016:84;29837:269;29786:320;;;:::o;30112:233::-;30151:3;30174:24;30192:5;30174:24;:::i;:::-;30165:33;;30220:66;30213:5;30210:77;30207:103;;;30290:18;;:::i;:::-;30207:103;30337:1;30330:5;30326:13;30319:20;;30112:233;;;:::o;30351:180::-;30399:77;30396:1;30389:88;30496:4;30493:1;30486:15;30520:4;30517:1;30510:15;30537:180;30585:77;30582:1;30575:88;30682:4;30679:1;30672:15;30706:4;30703:1;30696:15;30723:180;30771:77;30768:1;30761:88;30868:4;30865:1;30858:15;30892:4;30889:1;30882:15;30909:180;30957:77;30954:1;30947:88;31054:4;31051:1;31044:15;31078:4;31075:1;31068:15;31095:180;31143:77;31140:1;31133:88;31240:4;31237:1;31230:15;31264:4;31261:1;31254:15;31281:117;31390:1;31387;31380:12;31404:117;31513:1;31510;31503:12;31527:117;31636:1;31633;31626:12;31650:117;31759:1;31756;31749:12;31773:117;31882:1;31879;31872:12;31896:102;31937:6;31988:2;31984:7;31979:2;31972:5;31968:14;31964:28;31954:38;;31896:102;;;:::o;32004:222::-;32144:34;32140:1;32132:6;32128:14;32121:58;32213:5;32208:2;32200:6;32196:15;32189:30;32004:222;:::o;32232:177::-;32372:29;32368:1;32360:6;32356:14;32349:53;32232:177;:::o;32415:225::-;32555:34;32551:1;32543:6;32539:14;32532:58;32624:8;32619:2;32611:6;32607:15;32600:33;32415:225;:::o;32646:221::-;32786:34;32782:1;32774:6;32770:14;32763:58;32855:4;32850:2;32842:6;32838:15;32831:29;32646:221;:::o;32873:177::-;33013:29;33009:1;33001:6;32997:14;32990:53;32873:177;:::o;33056:224::-;33196:34;33192:1;33184:6;33180:14;33173:58;33265:7;33260:2;33252:6;33248:15;33241:32;33056:224;:::o;33286:179::-;33426:31;33422:1;33414:6;33410:14;33403:55;33286:179;:::o;33471:227::-;33611:34;33607:1;33599:6;33595:14;33588:58;33680:10;33675:2;33667:6;33663:15;33656:35;33471:227;:::o;33704:220::-;33844:34;33840:1;33832:6;33828:14;33821:58;33913:3;33908:2;33900:6;33896:15;33889:28;33704:220;:::o;33930:172::-;34070:24;34066:1;34058:6;34054:14;34047:48;33930:172;:::o;34108:182::-;34248:34;34244:1;34236:6;34232:14;34225:58;34108:182;:::o;34296:224::-;34436:34;34432:1;34424:6;34420:14;34413:58;34505:7;34500:2;34492:6;34488:15;34481:32;34296:224;:::o;34526:114::-;;:::o;34646:223::-;34786:34;34782:1;34774:6;34770:14;34763:58;34855:6;34850:2;34842:6;34838:15;34831:31;34646:223;:::o;34875:122::-;34948:24;34966:5;34948:24;:::i;:::-;34941:5;34938:35;34928:63;;34987:1;34984;34977:12;34928:63;34875:122;:::o;35003:116::-;35073:21;35088:5;35073:21;:::i;:::-;35066:5;35063:32;35053:60;;35109:1;35106;35099:12;35053:60;35003:116;:::o;35125:122::-;35198:24;35216:5;35198:24;:::i;:::-;35191:5;35188:35;35178:63;;35237:1;35234;35227:12;35178:63;35125:122;:::o
Swarm Source
ipfs://e81a541977fe9f72686629f4e4cce1b4ec5a6c461a6bcbe0f285981157865c24
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.