ERC-20
Overview
Max Total Supply
100,000,000,000 BINU
Holders
42
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
0.557754637 BINUValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
TOKEN
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-01-07 */ // SPDX-License-Identifier: Unlicensed // TG: https://t.me/BILLION_INU // BILLION INU... PROGRAMMED FOR MULTI BILLION MARKET CAP $BINU pragma solidity ^0.8.4; interface IERC20 { function totalSupply() external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function balanceOf(address account) external view returns (uint256); 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 Approval(address indexed owner, address indexed spender, uint256 value); event Transfer(address indexed from, address indexed to, uint256 value); } library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } abstract contract Ownable is Context { address internal _owner; address private _previousOwner; uint256 public _lockTime; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { _owner = _msgSender(); emit OwnershipTransferred(address(0), _owner); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } //Locks the contract for owner for the amount of time provided function lock(uint256 time) public virtual onlyOwner { _previousOwner = _owner; _owner = address(0); _lockTime = time; emit OwnershipTransferred(_owner, address(0)); } //Unlocks the contract for owner when _lockTime is exceeds function unlock() public virtual { require(_previousOwner == msg.sender, "You don't have permission to unlock."); require(block.timestamp > _lockTime , "Contract is locked."); emit OwnershipTransferred(_owner, _previousOwner); _owner = _previousOwner; } } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context,Ownable, IERC20, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 9; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } 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 _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); } interface IUniswapV2Router02 is IUniswapV2Router01 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract TOKEN is ERC20 { using SafeMath for uint256; mapping (address => bool) private _isExcludedFromFee; mapping(address => bool) private _isExcludedFromMaxTnxLimit; mapping(address => bool) private _isExcludedFromMaxWallet; address public _marketingWalletAddress; address public _burnAddress; uint256 public _buyMarketingFee = 3; uint256 public _buyLiquidityFee = 1; uint256 public _sellMarketingFee = 3; uint256 public _sellLiquidityFee = 1; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; uint256 public _maxWalletBalance; uint256 public _maxTxAmount; uint256 public numTokensSellToAddToLiquidity; event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapAndLiquifyEnabledUpdated(bool enabled); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor () ERC20("BILLION INU", "BINU"){ numTokensSellToAddToLiquidity = 100000 * 10 ** decimals(); _burnAddress = 0x000000000000000000000000000000000000dEaD; _marketingWalletAddress = 0x98bc24f0DaE5aBc09475c3060F13bde0c395B375; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Create a uniswap pair for this new token uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); // set the rest of the contract variables uniswapV2Router = _uniswapV2Router; //exclude owner and this contract from fee _isExcludedFromFee[_msgSender()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_marketingWalletAddress] = true; _isExcludedFromFee[_burnAddress] = true; // exclude from the max tnx limit _isExcludedFromMaxTnxLimit[owner()] = true; _isExcludedFromMaxTnxLimit[address(this)] = true; _isExcludedFromMaxTnxLimit[_marketingWalletAddress] = true; // exclude from the Max wallet balance _isExcludedFromMaxWallet[owner()] = true; _isExcludedFromMaxWallet[address(this)] = true; _isExcludedFromMaxWallet[_marketingWalletAddress] = true; _mint(owner(), 100000000000 * 10 ** decimals()); _maxTxAmount = (totalSupply() * 2 ) / 100; _maxWalletBalance = (totalSupply() * 2 ) / 100; } function includeAndExcludeInWhitelist(address account, bool value) public onlyOwner { _isExcludedFromFee[account] = value; } function includeAndExcludedFromMaxTnxLimit(address account, bool value) public onlyOwner { _isExcludedFromMaxTnxLimit[account] = value; } function includeAndExcludedFromMaxWallet(address account, bool value) public onlyOwner { _isExcludedFromMaxWallet[account] = value; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function isExcludedFromMaxTnxLimit(address account) public view returns(bool) { return _isExcludedFromMaxTnxLimit[account]; } function isExcludedFromMaxWallet(address account) public view returns(bool){ return _isExcludedFromMaxWallet[account]; } function setMaxWalletBalance(uint256 maxBalancePercent) external onlyOwner { _maxWalletBalance = maxBalancePercent * 10** decimals(); } function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner { _maxTxAmount = maxTxAmount * 10** decimals(); } function setSellFeePercent( uint256 lFee, uint256 mFee ) external onlyOwner { _sellLiquidityFee = lFee; _sellMarketingFee = mFee; } function setBuyFeePercent( uint256 lFee, uint256 mFee ) external onlyOwner { _buyLiquidityFee = lFee; _buyMarketingFee = mFee; } function setMarketingWalletAddress(address _addr) external onlyOwner { _marketingWalletAddress = _addr; } function setNumTokensSellToAddToLiquidity(uint256 amount) external onlyOwner { numTokensSellToAddToLiquidity = amount * 10 ** decimals(); } function setSwapAndLiquifyEnabled(bool _enabled) external onlyOwner { swapAndLiquifyEnabled = _enabled; emit SwapAndLiquifyEnabledUpdated(_enabled); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (from != owner() && to != owner()) require( _isExcludedFromMaxTnxLimit[from] || _isExcludedFromMaxTnxLimit[to] || amount <= _maxTxAmount, "ERC20: Transfer amount exceeds the maxTxAmount." ); if ( from != owner() && to != address(this) && to != _burnAddress && to != uniswapV2Pair ) { uint256 currentBalance = balanceOf(to); require(_isExcludedFromMaxWallet[to] || (currentBalance + amount <= _maxWalletBalance), "ERC20: Reached max wallet holding"); } uint256 contractTokenBalance = balanceOf(address(this)); bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity; if ( overMinTokenBalance && !inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled ) { contractTokenBalance = numTokensSellToAddToLiquidity; swapAndLiquify(contractTokenBalance); } bool takeFee = true; if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) { super._transfer(from, to, amount); takeFee = false; } else { if (from == uniswapV2Pair) { // Buy uint256 liquidityTokens = amount.mul(_buyLiquidityFee).div(100); uint256 marketingTokens = amount.mul(_buyMarketingFee).div(100); amount= amount.sub(liquidityTokens.add(marketingTokens)); super._transfer(from, address(this), liquidityTokens.add(marketingTokens)); super._transfer(from, to, amount); } else if (to == uniswapV2Pair) { // Sell uint256 liquidityTokens = amount.mul(_sellLiquidityFee).div(100); uint256 marketingTokens = amount.mul(_sellMarketingFee).div(100); amount= amount.sub(liquidityTokens.add(marketingTokens)); super._transfer(from, address(this), liquidityTokens.add(marketingTokens)); super._transfer(from, to, amount); } else { // Transfer super._transfer(from, to, amount); } } } function swapAndLiquify(uint256 contractBalance) private lockTheSwap { uint256 tokensForLiquidity = contractBalance.mul(_sellLiquidityFee).div(100); uint256 marketingTokens = contractBalance.mul(_sellMarketingFee).div(100); uint256 totalTokensToSwap = tokensForLiquidity + marketingTokens; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} bool success; uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2; swapTokensForEth(contractBalance - liquidityTokens); uint256 ethBalance = address(this).balance; uint256 ethForLiquidity = ethBalance; uint256 ethForMarketing = ethBalance * marketingTokens / (totalTokensToSwap - (tokensForLiquidity/2)); ethForLiquidity -= ethForMarketing; if(liquidityTokens > 0 && ethForLiquidity > 0) { addLiquidity(liquidityTokens, ethForLiquidity);} (success,) = address(_marketingWalletAddress).call{value: ethForMarketing}(""); } function swapTokensForEth(uint256 tokenAmount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable owner(), block.timestamp ); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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":"_burnAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"_lockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWalletAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletBalance","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":[{"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":[],"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":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeAndExcludeInWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeAndExcludedFromMaxTnxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeAndExcludedFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxTnxLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numTokensSellToAddToLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"lFee","type":"uint256"},{"internalType":"uint256","name":"mFee","type":"uint256"}],"name":"setBuyFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","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":"maxBalancePercent","type":"uint256"}],"name":"setMaxWalletBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setNumTokensSellToAddToLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"lFee","type":"uint256"},{"internalType":"uint256","name":"mFee","type":"uint256"}],"name":"setSellFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526003600d556001600e556003600f5560016010556001601260156101000a81548160ff0219169083151502179055503480156200004057600080fd5b506040518060400160405280600b81526020017f42494c4c494f4e20494e550000000000000000000000000000000000000000008152506040518060400160405280600481526020017f42494e5500000000000000000000000000000000000000000000000000000000815250620000bd6200094860201b60201c565b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3816006908162000188919062000dd3565b5080600790816200019a919062000dd3565b505050620001ad6200095060201b60201c565b600a620001bb91906200104a565b620186a0620001cb91906200109b565b60158190555061dead600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507398bc24f0dae5abc09475c3060f13bde0c395b375600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f4919062001150565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200035c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000382919062001150565b6040518363ffffffff1660e01b8152600401620003a192919062001193565b6020604051808303816000875af1158015620003c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e7919062001150565b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860006200047e6200094860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000620006316200095960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60006200076a6200095960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620008dd620008a16200095960201b60201c565b620008b16200095060201b60201c565b600a620008bf91906200104a565b64174876e800620008d191906200109b565b6200098260201b60201c565b60646002620008f162000b3260201b60201c565b620008fd91906200109b565b620009099190620011ef565b601481905550606460026200092362000b3260201b60201c565b6200092f91906200109b565b6200093b9190620011ef565b6013819055505062001313565b600033905090565b60006009905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620009f4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009eb9062001288565b60405180910390fd5b62000a086000838362000b3c60201b60201c565b62000a248160055462000b4160201b62001dfb1790919060201c565b60058190555062000a8381600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000b4160201b62001dfb1790919060201c565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b269190620012bb565b60405180910390a35050565b6000600554905090565b505050565b6000818362000b519190620012d8565b905092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000bdb57607f821691505b60208210810362000bf15762000bf062000b93565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c1c565b62000c67868362000c1c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000cb462000cae62000ca88462000c7f565b62000c89565b62000c7f565b9050919050565b6000819050919050565b62000cd08362000c93565b62000ce862000cdf8262000cbb565b84845462000c29565b825550505050565b600090565b62000cff62000cf0565b62000d0c81848462000cc5565b505050565b5b8181101562000d345762000d2860008262000cf5565b60018101905062000d12565b5050565b601f82111562000d835762000d4d8162000bf7565b62000d588462000c0c565b8101602085101562000d68578190505b62000d8062000d778562000c0c565b83018262000d11565b50505b505050565b600082821c905092915050565b600062000da86000198460080262000d88565b1980831691505092915050565b600062000dc3838362000d95565b9150826002028217905092915050565b62000dde8262000b59565b67ffffffffffffffff81111562000dfa5762000df962000b64565b5b62000e06825462000bc2565b62000e1382828562000d38565b600060209050601f83116001811462000e4b576000841562000e36578287015190505b62000e42858262000db5565b86555062000eb2565b601f19841662000e5b8662000bf7565b60005b8281101562000e855784890151825560018201915060208501945060208101905062000e5e565b8683101562000ea5578489015162000ea1601f89168262000d95565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000f485780860481111562000f205762000f1f62000eba565b5b600185161562000f305780820291505b808102905062000f408562000ee9565b945062000f00565b94509492505050565b60008262000f63576001905062001036565b8162000f73576000905062001036565b816001811462000f8c576002811462000f975762000fcd565b600191505062001036565b60ff84111562000fac5762000fab62000eba565b5b8360020a91508482111562000fc65762000fc562000eba565b5b5062001036565b5060208310610133831016604e8410600b8410161715620010075782820a90508381111562001001576200100062000eba565b5b62001036565b62001016848484600162000ef6565b9250905081840481111562001030576200102f62000eba565b5b81810290505b9392505050565b600060ff82169050919050565b6000620010578262000c7f565b915062001064836200103d565b9250620010937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000f51565b905092915050565b6000620010a88262000c7f565b9150620010b58362000c7f565b9250828202620010c58162000c7f565b91508282048414831517620010df57620010de62000eba565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200111882620010eb565b9050919050565b6200112a816200110b565b81146200113657600080fd5b50565b6000815190506200114a816200111f565b92915050565b600060208284031215620011695762001168620010e6565b5b6000620011798482850162001139565b91505092915050565b6200118d816200110b565b82525050565b6000604082019050620011aa600083018562001182565b620011b9602083018462001182565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620011fc8262000c7f565b9150620012098362000c7f565b9250826200121c576200121b620011c0565b5b828204905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001270601f8362001227565b91506200127d8262001238565b602082019050919050565b60006020820190508181036000830152620012a38162001261565b9050919050565b620012b58162000c7f565b82525050565b6000602082019050620012d26000830184620012aa565b92915050565b6000620012e58262000c7f565b9150620012f28362000c7f565b92508282019050808211156200130d576200130c62000eba565b5b92915050565b61417780620013236000396000f3fe6080604052600436106102555760003560e01c80638da5cb5b11610139578063c5d24189116100b6578063dd4670641161007a578063dd467064146108d9578063dd62ed3e14610902578063ec28438a1461093f578063f0f165af14610968578063f2fde38b14610991578063f9dfdaeb146109ba5761025c565b8063c5d2418914610802578063c86079521461082d578063d12a768814610858578063d4a5af8414610883578063dc44b6a0146108ae5761025c565b8063a69df4b5116100fd578063a69df4b514610731578063a9059cbb14610748578063bd3900c014610785578063be291dc6146107b0578063c49b9a80146107d95761025c565b80638da5cb5b1461064c5780638e4d62af1461067757806395d89b41146106a05780639904a1c3146106cb578063a457c2d7146106f45761025c565b806349bd5a5e116101d25780636dd3d39f116101965780636dd3d39f1461053a57806370a0823114610577578063715018a6146105b457806379af25a6146105cb5780637d1db4a5146105f657806388790a68146106215761025c565b806349bd5a5e146104415780634a74bb021461046c5780634cb80fd5146104975780635342acb4146104c057806355874a79146104fd5761025c565b8063313ce56711610219578063313ce5671461035c57806339509351146103875780633a9e00de146103c45780634144d9e4146103ed57806348eb61b6146104185761025c565b806306fdde0314610261578063095ea7b31461028c5780631694505e146102c957806318160ddd146102f457806323b872dd1461031f5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b506102766109e3565b60405161028391906130bf565b60405180910390f35b34801561029857600080fd5b506102b360048036038101906102ae919061317a565b610a75565b6040516102c091906131d5565b60405180910390f35b3480156102d557600080fd5b506102de610a93565b6040516102eb919061324f565b60405180910390f35b34801561030057600080fd5b50610309610ab9565b6040516103169190613279565b60405180910390f35b34801561032b57600080fd5b5061034660048036038101906103419190613294565b610ac3565b60405161035391906131d5565b60405180910390f35b34801561036857600080fd5b50610371610b9c565b60405161037e9190613303565b60405180910390f35b34801561039357600080fd5b506103ae60048036038101906103a9919061317a565b610ba5565b6040516103bb91906131d5565b60405180910390f35b3480156103d057600080fd5b506103eb60048036038101906103e6919061331e565b610c58565b005b3480156103f957600080fd5b50610402610cfc565b60405161040f919061335a565b60405180910390f35b34801561042457600080fd5b5061043f600480360381019061043a91906133a1565b610d22565b005b34801561044d57600080fd5b50610456610df9565b604051610463919061335a565b60405180910390f35b34801561047857600080fd5b50610481610e1f565b60405161048e91906131d5565b60405180910390f35b3480156104a357600080fd5b506104be60048036038101906104b991906133e1565b610e32565b005b3480156104cc57600080fd5b506104e760048036038101906104e291906133e1565b610ef2565b6040516104f491906131d5565b60405180910390f35b34801561050957600080fd5b50610524600480360381019061051f91906133e1565b610f48565b60405161053191906131d5565b60405180910390f35b34801561054657600080fd5b50610561600480360381019061055c91906133e1565b610f9e565b60405161056e91906131d5565b60405180910390f35b34801561058357600080fd5b5061059e600480360381019061059991906133e1565b610ff4565b6040516105ab9190613279565b60405180910390f35b3480156105c057600080fd5b506105c961103d565b005b3480156105d757600080fd5b506105e0611177565b6040516105ed9190613279565b60405180910390f35b34801561060257600080fd5b5061060b61117d565b6040516106189190613279565b60405180910390f35b34801561062d57600080fd5b50610636611183565b6040516106439190613279565b60405180910390f35b34801561065857600080fd5b50610661611189565b60405161066e919061335a565b60405180910390f35b34801561068357600080fd5b5061069e600480360381019061069991906133a1565b6111b2565b005b3480156106ac57600080fd5b506106b5611289565b6040516106c291906130bf565b60405180910390f35b3480156106d757600080fd5b506106f260048036038101906106ed91906133a1565b61131b565b005b34801561070057600080fd5b5061071b6004803603810190610716919061317a565b6113f2565b60405161072891906131d5565b60405180910390f35b34801561073d57600080fd5b506107466114bf565b005b34801561075457600080fd5b5061076f600480360381019061076a919061317a565b611693565b60405161077c91906131d5565b60405180910390f35b34801561079157600080fd5b5061079a6116b1565b6040516107a7919061335a565b60405180910390f35b3480156107bc57600080fd5b506107d760048036038101906107d2919061340e565b6116d7565b005b3480156107e557600080fd5b5061080060048036038101906107fb919061344e565b611765565b005b34801561080e57600080fd5b50610817611835565b6040516108249190613279565b60405180910390f35b34801561083957600080fd5b5061084261183b565b60405161084f9190613279565b60405180910390f35b34801561086457600080fd5b5061086d611841565b60405161087a9190613279565b60405180910390f35b34801561088f57600080fd5b50610898611847565b6040516108a59190613279565b60405180910390f35b3480156108ba57600080fd5b506108c361184d565b6040516108d09190613279565b60405180910390f35b3480156108e557600080fd5b5061090060048036038101906108fb919061331e565b611853565b005b34801561090e57600080fd5b506109296004803603810190610924919061347b565b6119f6565b6040516109369190613279565b60405180910390f35b34801561094b57600080fd5b506109666004803603810190610961919061331e565b611a7d565b005b34801561097457600080fd5b5061098f600480360381019061098a919061331e565b611b21565b005b34801561099d57600080fd5b506109b860048036038101906109b391906133e1565b611bc5565b005b3480156109c657600080fd5b506109e160048036038101906109dc919061340e565b611d6d565b005b6060600680546109f2906134ea565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1e906134ea565b8015610a6b5780601f10610a4057610100808354040283529160200191610a6b565b820191906000526020600020905b815481529060010190602001808311610a4e57829003601f168201915b5050505050905090565b6000610a89610a82611e11565b8484611e19565b6001905092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600554905090565b6000610ad0848484611fe2565b610b9184610adc611e11565b610b8c856040518060600160405280602881526020016140f560289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b42611e11565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127da9092919063ffffffff16565b611e19565b600190509392505050565b60006009905090565b6000610c4e610bb2611e11565b84610c498560046000610bc3611e11565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dfb90919063ffffffff16565b611e19565b6001905092915050565b610c60611e11565b73ffffffffffffffffffffffffffffffffffffffff16610c7e611189565b73ffffffffffffffffffffffffffffffffffffffff1614610cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccb90613567565b60405180910390fd5b610cdc610b9c565b600a610ce891906136e9565b81610cf39190613734565b60138190555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d2a611e11565b73ffffffffffffffffffffffffffffffffffffffff16610d48611189565b73ffffffffffffffffffffffffffffffffffffffff1614610d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9590613567565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601260159054906101000a900460ff1681565b610e3a611e11565b73ffffffffffffffffffffffffffffffffffffffff16610e58611189565b73ffffffffffffffffffffffffffffffffffffffff1614610eae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea590613567565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611045611e11565b73ffffffffffffffffffffffffffffffffffffffff16611063611189565b73ffffffffffffffffffffffffffffffffffffffff16146110b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b090613567565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60025481565b60145481565b60105481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6111ba611e11565b73ffffffffffffffffffffffffffffffffffffffff166111d8611189565b73ffffffffffffffffffffffffffffffffffffffff161461122e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122590613567565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b606060078054611298906134ea565b80601f01602080910402602001604051908101604052809291908181526020018280546112c4906134ea565b80156113115780601f106112e657610100808354040283529160200191611311565b820191906000526020600020905b8154815290600101906020018083116112f457829003601f168201915b5050505050905090565b611323611e11565b73ffffffffffffffffffffffffffffffffffffffff16611341611189565b73ffffffffffffffffffffffffffffffffffffffff1614611397576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138e90613567565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006114b56113ff611e11565b846114b08560405180606001604052806025815260200161411d6025913960046000611429611e11565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127da9092919063ffffffff16565b611e19565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461154f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611546906137e8565b60405180910390fd5b6002544211611593576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158a90613854565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006116a76116a0611e11565b8484611fe2565b6001905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6116df611e11565b73ffffffffffffffffffffffffffffffffffffffff166116fd611189565b73ffffffffffffffffffffffffffffffffffffffff1614611753576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174a90613567565b60405180910390fd5b8160108190555080600f819055505050565b61176d611e11565b73ffffffffffffffffffffffffffffffffffffffff1661178b611189565b73ffffffffffffffffffffffffffffffffffffffff16146117e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d890613567565b60405180910390fd5b80601260156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161182a91906131d5565b60405180910390a150565b600d5481565b600f5481565b60155481565b60135481565b600e5481565b61185b611e11565b73ffffffffffffffffffffffffffffffffffffffff16611879611189565b73ffffffffffffffffffffffffffffffffffffffff16146118cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c690613567565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611a85611e11565b73ffffffffffffffffffffffffffffffffffffffff16611aa3611189565b73ffffffffffffffffffffffffffffffffffffffff1614611af9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af090613567565b60405180910390fd5b611b01610b9c565b600a611b0d91906136e9565b81611b189190613734565b60148190555050565b611b29611e11565b73ffffffffffffffffffffffffffffffffffffffff16611b47611189565b73ffffffffffffffffffffffffffffffffffffffff1614611b9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9490613567565b60405180910390fd5b611ba5610b9c565b600a611bb191906136e9565b81611bbc9190613734565b60158190555050565b611bcd611e11565b73ffffffffffffffffffffffffffffffffffffffff16611beb611189565b73ffffffffffffffffffffffffffffffffffffffff1614611c41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3890613567565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611cb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca7906138e6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611d75611e11565b73ffffffffffffffffffffffffffffffffffffffff16611d93611189565b73ffffffffffffffffffffffffffffffffffffffff1614611de9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de090613567565b60405180910390fd5b81600e8190555080600d819055505050565b60008183611e099190613906565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7f906139ac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eee90613a3e565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611fd59190613279565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612051576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204890613ad0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b790613b62565b60405180910390fd5b60008111612103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fa90613bf4565b60405180910390fd5b61210b611189565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156121795750612149611189565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561226c57600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061221f5750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061222c57506014548111155b61226b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226290613c86565b60405180910390fd5b5b612274611189565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156122db57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123355750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561238f5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561244757600061239f83610ff4565b9050600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612406575060135482826124039190613906565b11155b612445576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243c90613d18565b60405180910390fd5b505b600061245230610ff4565b9050600060155482101590508080156124785750601260149054906101000a900460ff16155b80156124d25750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156124ea5750601260159054906101000a900460ff165b156124fe5760155491506124fd8261282f565b5b600060019050600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806125a55750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156125be576125b5868686612a29565b600090506127d2565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036126c157600061263d606461262f600e5488612cc090919063ffffffff16565b612cd690919063ffffffff16565b90506000612669606461265b600d5489612cc090919063ffffffff16565b612cd690919063ffffffff16565b90506126906126818284611dfb90919063ffffffff16565b87612cec90919063ffffffff16565b95506126af88306126aa8486611dfb90919063ffffffff16565b612a29565b6126ba888888612a29565b50506127d1565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036127c4576000612740606461273260105488612cc090919063ffffffff16565b612cd690919063ffffffff16565b9050600061276c606461275e600f5489612cc090919063ffffffff16565b612cd690919063ffffffff16565b90506127936127848284611dfb90919063ffffffff16565b87612cec90919063ffffffff16565b95506127b288306127ad8486611dfb90919063ffffffff16565b612a29565b6127bd888888612a29565b50506127d0565b6127cf868686612a29565b5b5b5b505050505050565b6000838311158290612822576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281991906130bf565b60405180910390fd5b5082840390509392505050565b6001601260146101000a81548160ff0219169083151502179055506000612874606461286660105485612cc090919063ffffffff16565b612cd690919063ffffffff16565b905060006128a06064612892600f5486612cc090919063ffffffff16565b612cd690919063ffffffff16565b9050600081836128b09190613906565b905060008414806128c15750600081145b156128ce57505050612a0b565b60008060028386886128e09190613734565b6128ea9190613d67565b6128f49190613d67565b905061290a81876129059190613d98565b612d02565b6000479050600081905060006002886129239190613d67565b8661292e9190613d98565b878461293a9190613734565b6129449190613d67565b905080826129529190613d98565b91506000841180156129645750600082115b15612974576129738483612f45565b5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516129ba90613dfd565b60006040518083038185875af1925050503d80600081146129f7576040519150601f19603f3d011682016040523d82523d6000602084013e6129fc565b606091505b50508095505050505050505050505b6000601260146101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8f90613ad0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612afe90613b62565b60405180910390fd5b612b1283838361302a565b612b7e816040518060600160405280602681526020016140cf60269139600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127da9092919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c1381600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dfb90919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612cb39190613279565b60405180910390a3505050565b60008183612cce9190613734565b905092915050565b60008183612ce49190613d67565b905092915050565b60008183612cfa9190613d98565b905092915050565b6000600267ffffffffffffffff811115612d1f57612d1e613e12565b5b604051908082528060200260200182016040528015612d4d5781602001602082028036833780820191505090505b5090503081600081518110612d6557612d64613e41565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e309190613e85565b81600181518110612e4457612e43613e41565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612eab30601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e19565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612f0f959493929190613fab565b600060405180830381600087803b158015612f2957600080fd5b505af1158015612f3d573d6000803e3d6000fd5b505050505050565b612f7230601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e19565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080612fbe611189565b426040518863ffffffff1660e01b8152600401612fe096959493929190614005565b60606040518083038185885af1158015612ffe573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613023919061407b565b5050505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561306957808201518184015260208101905061304e565b60008484015250505050565b6000601f19601f8301169050919050565b60006130918261302f565b61309b818561303a565b93506130ab81856020860161304b565b6130b481613075565b840191505092915050565b600060208201905081810360008301526130d98184613086565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613111826130e6565b9050919050565b61312181613106565b811461312c57600080fd5b50565b60008135905061313e81613118565b92915050565b6000819050919050565b61315781613144565b811461316257600080fd5b50565b6000813590506131748161314e565b92915050565b60008060408385031215613191576131906130e1565b5b600061319f8582860161312f565b92505060206131b085828601613165565b9150509250929050565b60008115159050919050565b6131cf816131ba565b82525050565b60006020820190506131ea60008301846131c6565b92915050565b6000819050919050565b600061321561321061320b846130e6565b6131f0565b6130e6565b9050919050565b6000613227826131fa565b9050919050565b60006132398261321c565b9050919050565b6132498161322e565b82525050565b60006020820190506132646000830184613240565b92915050565b61327381613144565b82525050565b600060208201905061328e600083018461326a565b92915050565b6000806000606084860312156132ad576132ac6130e1565b5b60006132bb8682870161312f565b93505060206132cc8682870161312f565b92505060406132dd86828701613165565b9150509250925092565b600060ff82169050919050565b6132fd816132e7565b82525050565b600060208201905061331860008301846132f4565b92915050565b600060208284031215613334576133336130e1565b5b600061334284828501613165565b91505092915050565b61335481613106565b82525050565b600060208201905061336f600083018461334b565b92915050565b61337e816131ba565b811461338957600080fd5b50565b60008135905061339b81613375565b92915050565b600080604083850312156133b8576133b76130e1565b5b60006133c68582860161312f565b92505060206133d78582860161338c565b9150509250929050565b6000602082840312156133f7576133f66130e1565b5b60006134058482850161312f565b91505092915050565b60008060408385031215613425576134246130e1565b5b600061343385828601613165565b925050602061344485828601613165565b9150509250929050565b600060208284031215613464576134636130e1565b5b60006134728482850161338c565b91505092915050565b60008060408385031215613492576134916130e1565b5b60006134a08582860161312f565b92505060206134b18582860161312f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061350257607f821691505b602082108103613515576135146134bb565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061355160208361303a565b915061355c8261351b565b602082019050919050565b6000602082019050818103600083015261358081613544565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561360d578086048111156135e9576135e8613587565b5b60018516156135f85780820291505b8081029050613606856135b6565b94506135cd565b94509492505050565b60008261362657600190506136e2565b8161363457600090506136e2565b816001811461364a576002811461365457613683565b60019150506136e2565b60ff84111561366657613665613587565b5b8360020a91508482111561367d5761367c613587565b5b506136e2565b5060208310610133831016604e8410600b84101617156136b85782820a9050838111156136b3576136b2613587565b5b6136e2565b6136c584848460016135c3565b925090508184048111156136dc576136db613587565b5b81810290505b9392505050565b60006136f482613144565b91506136ff836132e7565b925061372c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613616565b905092915050565b600061373f82613144565b915061374a83613144565b925082820261375881613144565b9150828204841483151761376f5761376e613587565b5b5092915050565b7f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c60008201527f6f636b2e00000000000000000000000000000000000000000000000000000000602082015250565b60006137d260248361303a565b91506137dd82613776565b604082019050919050565b60006020820190508181036000830152613801816137c5565b9050919050565b7f436f6e7472616374206973206c6f636b65642e00000000000000000000000000600082015250565b600061383e60138361303a565b915061384982613808565b602082019050919050565b6000602082019050818103600083015261386d81613831565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006138d060268361303a565b91506138db82613874565b604082019050919050565b600060208201905081810360008301526138ff816138c3565b9050919050565b600061391182613144565b915061391c83613144565b925082820190508082111561393457613933613587565b5b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061399660248361303a565b91506139a18261393a565b604082019050919050565b600060208201905081810360008301526139c581613989565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a2860228361303a565b9150613a33826139cc565b604082019050919050565b60006020820190508181036000830152613a5781613a1b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613aba60258361303a565b9150613ac582613a5e565b604082019050919050565b60006020820190508181036000830152613ae981613aad565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613b4c60238361303a565b9150613b5782613af0565b604082019050919050565b60006020820190508181036000830152613b7b81613b3f565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613bde60298361303a565b9150613be982613b82565b604082019050919050565b60006020820190508181036000830152613c0d81613bd1565b9050919050565b7f45524332303a205472616e7366657220616d6f756e742065786365656473207460008201527f6865206d61785478416d6f756e742e0000000000000000000000000000000000602082015250565b6000613c70602f8361303a565b9150613c7b82613c14565b604082019050919050565b60006020820190508181036000830152613c9f81613c63565b9050919050565b7f45524332303a2052656163686564206d61782077616c6c657420686f6c64696e60008201527f6700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d0260218361303a565b9150613d0d82613ca6565b604082019050919050565b60006020820190508181036000830152613d3181613cf5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d7282613144565b9150613d7d83613144565b925082613d8d57613d8c613d38565b5b828204905092915050565b6000613da382613144565b9150613dae83613144565b9250828203905081811115613dc657613dc5613587565b5b92915050565b600081905092915050565b50565b6000613de7600083613dcc565b9150613df282613dd7565b600082019050919050565b6000613e0882613dda565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613e7f81613118565b92915050565b600060208284031215613e9b57613e9a6130e1565b5b6000613ea984828501613e70565b91505092915050565b6000819050919050565b6000613ed7613ed2613ecd84613eb2565b6131f0565b613144565b9050919050565b613ee781613ebc565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613f2281613106565b82525050565b6000613f348383613f19565b60208301905092915050565b6000602082019050919050565b6000613f5882613eed565b613f628185613ef8565b9350613f6d83613f09565b8060005b83811015613f9e578151613f858882613f28565b9750613f9083613f40565b925050600181019050613f71565b5085935050505092915050565b600060a082019050613fc0600083018861326a565b613fcd6020830187613ede565b8181036040830152613fdf8186613f4d565b9050613fee606083018561334b565b613ffb608083018461326a565b9695505050505050565b600060c08201905061401a600083018961334b565b614027602083018861326a565b6140346040830187613ede565b6140416060830186613ede565b61404e608083018561334b565b61405b60a083018461326a565b979650505050505050565b6000815190506140758161314e565b92915050565b600080600060608486031215614094576140936130e1565b5b60006140a286828701614066565b93505060206140b386828701614066565b92505060406140c486828701614066565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205211502f059c18dcf0329fd54012580dcfc1e2cccd83a638de9e94bdcabfd77964736f6c63430008110033
Deployed Bytecode
0x6080604052600436106102555760003560e01c80638da5cb5b11610139578063c5d24189116100b6578063dd4670641161007a578063dd467064146108d9578063dd62ed3e14610902578063ec28438a1461093f578063f0f165af14610968578063f2fde38b14610991578063f9dfdaeb146109ba5761025c565b8063c5d2418914610802578063c86079521461082d578063d12a768814610858578063d4a5af8414610883578063dc44b6a0146108ae5761025c565b8063a69df4b5116100fd578063a69df4b514610731578063a9059cbb14610748578063bd3900c014610785578063be291dc6146107b0578063c49b9a80146107d95761025c565b80638da5cb5b1461064c5780638e4d62af1461067757806395d89b41146106a05780639904a1c3146106cb578063a457c2d7146106f45761025c565b806349bd5a5e116101d25780636dd3d39f116101965780636dd3d39f1461053a57806370a0823114610577578063715018a6146105b457806379af25a6146105cb5780637d1db4a5146105f657806388790a68146106215761025c565b806349bd5a5e146104415780634a74bb021461046c5780634cb80fd5146104975780635342acb4146104c057806355874a79146104fd5761025c565b8063313ce56711610219578063313ce5671461035c57806339509351146103875780633a9e00de146103c45780634144d9e4146103ed57806348eb61b6146104185761025c565b806306fdde0314610261578063095ea7b31461028c5780631694505e146102c957806318160ddd146102f457806323b872dd1461031f5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b506102766109e3565b60405161028391906130bf565b60405180910390f35b34801561029857600080fd5b506102b360048036038101906102ae919061317a565b610a75565b6040516102c091906131d5565b60405180910390f35b3480156102d557600080fd5b506102de610a93565b6040516102eb919061324f565b60405180910390f35b34801561030057600080fd5b50610309610ab9565b6040516103169190613279565b60405180910390f35b34801561032b57600080fd5b5061034660048036038101906103419190613294565b610ac3565b60405161035391906131d5565b60405180910390f35b34801561036857600080fd5b50610371610b9c565b60405161037e9190613303565b60405180910390f35b34801561039357600080fd5b506103ae60048036038101906103a9919061317a565b610ba5565b6040516103bb91906131d5565b60405180910390f35b3480156103d057600080fd5b506103eb60048036038101906103e6919061331e565b610c58565b005b3480156103f957600080fd5b50610402610cfc565b60405161040f919061335a565b60405180910390f35b34801561042457600080fd5b5061043f600480360381019061043a91906133a1565b610d22565b005b34801561044d57600080fd5b50610456610df9565b604051610463919061335a565b60405180910390f35b34801561047857600080fd5b50610481610e1f565b60405161048e91906131d5565b60405180910390f35b3480156104a357600080fd5b506104be60048036038101906104b991906133e1565b610e32565b005b3480156104cc57600080fd5b506104e760048036038101906104e291906133e1565b610ef2565b6040516104f491906131d5565b60405180910390f35b34801561050957600080fd5b50610524600480360381019061051f91906133e1565b610f48565b60405161053191906131d5565b60405180910390f35b34801561054657600080fd5b50610561600480360381019061055c91906133e1565b610f9e565b60405161056e91906131d5565b60405180910390f35b34801561058357600080fd5b5061059e600480360381019061059991906133e1565b610ff4565b6040516105ab9190613279565b60405180910390f35b3480156105c057600080fd5b506105c961103d565b005b3480156105d757600080fd5b506105e0611177565b6040516105ed9190613279565b60405180910390f35b34801561060257600080fd5b5061060b61117d565b6040516106189190613279565b60405180910390f35b34801561062d57600080fd5b50610636611183565b6040516106439190613279565b60405180910390f35b34801561065857600080fd5b50610661611189565b60405161066e919061335a565b60405180910390f35b34801561068357600080fd5b5061069e600480360381019061069991906133a1565b6111b2565b005b3480156106ac57600080fd5b506106b5611289565b6040516106c291906130bf565b60405180910390f35b3480156106d757600080fd5b506106f260048036038101906106ed91906133a1565b61131b565b005b34801561070057600080fd5b5061071b6004803603810190610716919061317a565b6113f2565b60405161072891906131d5565b60405180910390f35b34801561073d57600080fd5b506107466114bf565b005b34801561075457600080fd5b5061076f600480360381019061076a919061317a565b611693565b60405161077c91906131d5565b60405180910390f35b34801561079157600080fd5b5061079a6116b1565b6040516107a7919061335a565b60405180910390f35b3480156107bc57600080fd5b506107d760048036038101906107d2919061340e565b6116d7565b005b3480156107e557600080fd5b5061080060048036038101906107fb919061344e565b611765565b005b34801561080e57600080fd5b50610817611835565b6040516108249190613279565b60405180910390f35b34801561083957600080fd5b5061084261183b565b60405161084f9190613279565b60405180910390f35b34801561086457600080fd5b5061086d611841565b60405161087a9190613279565b60405180910390f35b34801561088f57600080fd5b50610898611847565b6040516108a59190613279565b60405180910390f35b3480156108ba57600080fd5b506108c361184d565b6040516108d09190613279565b60405180910390f35b3480156108e557600080fd5b5061090060048036038101906108fb919061331e565b611853565b005b34801561090e57600080fd5b506109296004803603810190610924919061347b565b6119f6565b6040516109369190613279565b60405180910390f35b34801561094b57600080fd5b506109666004803603810190610961919061331e565b611a7d565b005b34801561097457600080fd5b5061098f600480360381019061098a919061331e565b611b21565b005b34801561099d57600080fd5b506109b860048036038101906109b391906133e1565b611bc5565b005b3480156109c657600080fd5b506109e160048036038101906109dc919061340e565b611d6d565b005b6060600680546109f2906134ea565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1e906134ea565b8015610a6b5780601f10610a4057610100808354040283529160200191610a6b565b820191906000526020600020905b815481529060010190602001808311610a4e57829003601f168201915b5050505050905090565b6000610a89610a82611e11565b8484611e19565b6001905092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600554905090565b6000610ad0848484611fe2565b610b9184610adc611e11565b610b8c856040518060600160405280602881526020016140f560289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b42611e11565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127da9092919063ffffffff16565b611e19565b600190509392505050565b60006009905090565b6000610c4e610bb2611e11565b84610c498560046000610bc3611e11565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dfb90919063ffffffff16565b611e19565b6001905092915050565b610c60611e11565b73ffffffffffffffffffffffffffffffffffffffff16610c7e611189565b73ffffffffffffffffffffffffffffffffffffffff1614610cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccb90613567565b60405180910390fd5b610cdc610b9c565b600a610ce891906136e9565b81610cf39190613734565b60138190555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d2a611e11565b73ffffffffffffffffffffffffffffffffffffffff16610d48611189565b73ffffffffffffffffffffffffffffffffffffffff1614610d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9590613567565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601260159054906101000a900460ff1681565b610e3a611e11565b73ffffffffffffffffffffffffffffffffffffffff16610e58611189565b73ffffffffffffffffffffffffffffffffffffffff1614610eae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea590613567565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611045611e11565b73ffffffffffffffffffffffffffffffffffffffff16611063611189565b73ffffffffffffffffffffffffffffffffffffffff16146110b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b090613567565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60025481565b60145481565b60105481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6111ba611e11565b73ffffffffffffffffffffffffffffffffffffffff166111d8611189565b73ffffffffffffffffffffffffffffffffffffffff161461122e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122590613567565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b606060078054611298906134ea565b80601f01602080910402602001604051908101604052809291908181526020018280546112c4906134ea565b80156113115780601f106112e657610100808354040283529160200191611311565b820191906000526020600020905b8154815290600101906020018083116112f457829003601f168201915b5050505050905090565b611323611e11565b73ffffffffffffffffffffffffffffffffffffffff16611341611189565b73ffffffffffffffffffffffffffffffffffffffff1614611397576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138e90613567565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006114b56113ff611e11565b846114b08560405180606001604052806025815260200161411d6025913960046000611429611e11565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127da9092919063ffffffff16565b611e19565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461154f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611546906137e8565b60405180910390fd5b6002544211611593576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158a90613854565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006116a76116a0611e11565b8484611fe2565b6001905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6116df611e11565b73ffffffffffffffffffffffffffffffffffffffff166116fd611189565b73ffffffffffffffffffffffffffffffffffffffff1614611753576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174a90613567565b60405180910390fd5b8160108190555080600f819055505050565b61176d611e11565b73ffffffffffffffffffffffffffffffffffffffff1661178b611189565b73ffffffffffffffffffffffffffffffffffffffff16146117e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d890613567565b60405180910390fd5b80601260156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161182a91906131d5565b60405180910390a150565b600d5481565b600f5481565b60155481565b60135481565b600e5481565b61185b611e11565b73ffffffffffffffffffffffffffffffffffffffff16611879611189565b73ffffffffffffffffffffffffffffffffffffffff16146118cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c690613567565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611a85611e11565b73ffffffffffffffffffffffffffffffffffffffff16611aa3611189565b73ffffffffffffffffffffffffffffffffffffffff1614611af9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af090613567565b60405180910390fd5b611b01610b9c565b600a611b0d91906136e9565b81611b189190613734565b60148190555050565b611b29611e11565b73ffffffffffffffffffffffffffffffffffffffff16611b47611189565b73ffffffffffffffffffffffffffffffffffffffff1614611b9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9490613567565b60405180910390fd5b611ba5610b9c565b600a611bb191906136e9565b81611bbc9190613734565b60158190555050565b611bcd611e11565b73ffffffffffffffffffffffffffffffffffffffff16611beb611189565b73ffffffffffffffffffffffffffffffffffffffff1614611c41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3890613567565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611cb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca7906138e6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611d75611e11565b73ffffffffffffffffffffffffffffffffffffffff16611d93611189565b73ffffffffffffffffffffffffffffffffffffffff1614611de9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de090613567565b60405180910390fd5b81600e8190555080600d819055505050565b60008183611e099190613906565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7f906139ac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eee90613a3e565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611fd59190613279565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612051576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204890613ad0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b790613b62565b60405180910390fd5b60008111612103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120fa90613bf4565b60405180910390fd5b61210b611189565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156121795750612149611189565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561226c57600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061221f5750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061222c57506014548111155b61226b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226290613c86565b60405180910390fd5b5b612274611189565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156122db57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123355750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561238f5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561244757600061239f83610ff4565b9050600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612406575060135482826124039190613906565b11155b612445576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243c90613d18565b60405180910390fd5b505b600061245230610ff4565b9050600060155482101590508080156124785750601260149054906101000a900460ff16155b80156124d25750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156124ea5750601260159054906101000a900460ff165b156124fe5760155491506124fd8261282f565b5b600060019050600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806125a55750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156125be576125b5868686612a29565b600090506127d2565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036126c157600061263d606461262f600e5488612cc090919063ffffffff16565b612cd690919063ffffffff16565b90506000612669606461265b600d5489612cc090919063ffffffff16565b612cd690919063ffffffff16565b90506126906126818284611dfb90919063ffffffff16565b87612cec90919063ffffffff16565b95506126af88306126aa8486611dfb90919063ffffffff16565b612a29565b6126ba888888612a29565b50506127d1565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036127c4576000612740606461273260105488612cc090919063ffffffff16565b612cd690919063ffffffff16565b9050600061276c606461275e600f5489612cc090919063ffffffff16565b612cd690919063ffffffff16565b90506127936127848284611dfb90919063ffffffff16565b87612cec90919063ffffffff16565b95506127b288306127ad8486611dfb90919063ffffffff16565b612a29565b6127bd888888612a29565b50506127d0565b6127cf868686612a29565b5b5b5b505050505050565b6000838311158290612822576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281991906130bf565b60405180910390fd5b5082840390509392505050565b6001601260146101000a81548160ff0219169083151502179055506000612874606461286660105485612cc090919063ffffffff16565b612cd690919063ffffffff16565b905060006128a06064612892600f5486612cc090919063ffffffff16565b612cd690919063ffffffff16565b9050600081836128b09190613906565b905060008414806128c15750600081145b156128ce57505050612a0b565b60008060028386886128e09190613734565b6128ea9190613d67565b6128f49190613d67565b905061290a81876129059190613d98565b612d02565b6000479050600081905060006002886129239190613d67565b8661292e9190613d98565b878461293a9190613734565b6129449190613d67565b905080826129529190613d98565b91506000841180156129645750600082115b15612974576129738483612f45565b5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516129ba90613dfd565b60006040518083038185875af1925050503d80600081146129f7576040519150601f19603f3d011682016040523d82523d6000602084013e6129fc565b606091505b50508095505050505050505050505b6000601260146101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8f90613ad0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612afe90613b62565b60405180910390fd5b612b1283838361302a565b612b7e816040518060600160405280602681526020016140cf60269139600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127da9092919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c1381600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dfb90919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612cb39190613279565b60405180910390a3505050565b60008183612cce9190613734565b905092915050565b60008183612ce49190613d67565b905092915050565b60008183612cfa9190613d98565b905092915050565b6000600267ffffffffffffffff811115612d1f57612d1e613e12565b5b604051908082528060200260200182016040528015612d4d5781602001602082028036833780820191505090505b5090503081600081518110612d6557612d64613e41565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e309190613e85565b81600181518110612e4457612e43613e41565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612eab30601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e19565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612f0f959493929190613fab565b600060405180830381600087803b158015612f2957600080fd5b505af1158015612f3d573d6000803e3d6000fd5b505050505050565b612f7230601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e19565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080612fbe611189565b426040518863ffffffff1660e01b8152600401612fe096959493929190614005565b60606040518083038185885af1158015612ffe573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613023919061407b565b5050505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561306957808201518184015260208101905061304e565b60008484015250505050565b6000601f19601f8301169050919050565b60006130918261302f565b61309b818561303a565b93506130ab81856020860161304b565b6130b481613075565b840191505092915050565b600060208201905081810360008301526130d98184613086565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613111826130e6565b9050919050565b61312181613106565b811461312c57600080fd5b50565b60008135905061313e81613118565b92915050565b6000819050919050565b61315781613144565b811461316257600080fd5b50565b6000813590506131748161314e565b92915050565b60008060408385031215613191576131906130e1565b5b600061319f8582860161312f565b92505060206131b085828601613165565b9150509250929050565b60008115159050919050565b6131cf816131ba565b82525050565b60006020820190506131ea60008301846131c6565b92915050565b6000819050919050565b600061321561321061320b846130e6565b6131f0565b6130e6565b9050919050565b6000613227826131fa565b9050919050565b60006132398261321c565b9050919050565b6132498161322e565b82525050565b60006020820190506132646000830184613240565b92915050565b61327381613144565b82525050565b600060208201905061328e600083018461326a565b92915050565b6000806000606084860312156132ad576132ac6130e1565b5b60006132bb8682870161312f565b93505060206132cc8682870161312f565b92505060406132dd86828701613165565b9150509250925092565b600060ff82169050919050565b6132fd816132e7565b82525050565b600060208201905061331860008301846132f4565b92915050565b600060208284031215613334576133336130e1565b5b600061334284828501613165565b91505092915050565b61335481613106565b82525050565b600060208201905061336f600083018461334b565b92915050565b61337e816131ba565b811461338957600080fd5b50565b60008135905061339b81613375565b92915050565b600080604083850312156133b8576133b76130e1565b5b60006133c68582860161312f565b92505060206133d78582860161338c565b9150509250929050565b6000602082840312156133f7576133f66130e1565b5b60006134058482850161312f565b91505092915050565b60008060408385031215613425576134246130e1565b5b600061343385828601613165565b925050602061344485828601613165565b9150509250929050565b600060208284031215613464576134636130e1565b5b60006134728482850161338c565b91505092915050565b60008060408385031215613492576134916130e1565b5b60006134a08582860161312f565b92505060206134b18582860161312f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061350257607f821691505b602082108103613515576135146134bb565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061355160208361303a565b915061355c8261351b565b602082019050919050565b6000602082019050818103600083015261358081613544565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561360d578086048111156135e9576135e8613587565b5b60018516156135f85780820291505b8081029050613606856135b6565b94506135cd565b94509492505050565b60008261362657600190506136e2565b8161363457600090506136e2565b816001811461364a576002811461365457613683565b60019150506136e2565b60ff84111561366657613665613587565b5b8360020a91508482111561367d5761367c613587565b5b506136e2565b5060208310610133831016604e8410600b84101617156136b85782820a9050838111156136b3576136b2613587565b5b6136e2565b6136c584848460016135c3565b925090508184048111156136dc576136db613587565b5b81810290505b9392505050565b60006136f482613144565b91506136ff836132e7565b925061372c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613616565b905092915050565b600061373f82613144565b915061374a83613144565b925082820261375881613144565b9150828204841483151761376f5761376e613587565b5b5092915050565b7f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c60008201527f6f636b2e00000000000000000000000000000000000000000000000000000000602082015250565b60006137d260248361303a565b91506137dd82613776565b604082019050919050565b60006020820190508181036000830152613801816137c5565b9050919050565b7f436f6e7472616374206973206c6f636b65642e00000000000000000000000000600082015250565b600061383e60138361303a565b915061384982613808565b602082019050919050565b6000602082019050818103600083015261386d81613831565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006138d060268361303a565b91506138db82613874565b604082019050919050565b600060208201905081810360008301526138ff816138c3565b9050919050565b600061391182613144565b915061391c83613144565b925082820190508082111561393457613933613587565b5b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061399660248361303a565b91506139a18261393a565b604082019050919050565b600060208201905081810360008301526139c581613989565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a2860228361303a565b9150613a33826139cc565b604082019050919050565b60006020820190508181036000830152613a5781613a1b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613aba60258361303a565b9150613ac582613a5e565b604082019050919050565b60006020820190508181036000830152613ae981613aad565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613b4c60238361303a565b9150613b5782613af0565b604082019050919050565b60006020820190508181036000830152613b7b81613b3f565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613bde60298361303a565b9150613be982613b82565b604082019050919050565b60006020820190508181036000830152613c0d81613bd1565b9050919050565b7f45524332303a205472616e7366657220616d6f756e742065786365656473207460008201527f6865206d61785478416d6f756e742e0000000000000000000000000000000000602082015250565b6000613c70602f8361303a565b9150613c7b82613c14565b604082019050919050565b60006020820190508181036000830152613c9f81613c63565b9050919050565b7f45524332303a2052656163686564206d61782077616c6c657420686f6c64696e60008201527f6700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d0260218361303a565b9150613d0d82613ca6565b604082019050919050565b60006020820190508181036000830152613d3181613cf5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613d7282613144565b9150613d7d83613144565b925082613d8d57613d8c613d38565b5b828204905092915050565b6000613da382613144565b9150613dae83613144565b9250828203905081811115613dc657613dc5613587565b5b92915050565b600081905092915050565b50565b6000613de7600083613dcc565b9150613df282613dd7565b600082019050919050565b6000613e0882613dda565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613e7f81613118565b92915050565b600060208284031215613e9b57613e9a6130e1565b5b6000613ea984828501613e70565b91505092915050565b6000819050919050565b6000613ed7613ed2613ecd84613eb2565b6131f0565b613144565b9050919050565b613ee781613ebc565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613f2281613106565b82525050565b6000613f348383613f19565b60208301905092915050565b6000602082019050919050565b6000613f5882613eed565b613f628185613ef8565b9350613f6d83613f09565b8060005b83811015613f9e578151613f858882613f28565b9750613f9083613f40565b925050600181019050613f71565b5085935050505092915050565b600060a082019050613fc0600083018861326a565b613fcd6020830187613ede565b8181036040830152613fdf8186613f4d565b9050613fee606083018561334b565b613ffb608083018461326a565b9695505050505050565b600060c08201905061401a600083018961334b565b614027602083018861326a565b6140346040830187613ede565b6140416060830186613ede565b61404e608083018561334b565b61405b60a083018461326a565b979650505050505050565b6000815190506140758161314e565b92915050565b600080600060608486031215614094576140936130e1565b5b60006140a286828701614066565b93505060206140b386828701614066565b92505060406140c486828701614066565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205211502f059c18dcf0329fd54012580dcfc1e2cccd83a638de9e94bdcabfd77964736f6c63430008110033
Deployed Bytecode Sourcemap
9757:10228:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4639:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5640:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10321:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4995:116;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5833:387;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4883:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6232:230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13589:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10034:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12966:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10373:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10444:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14319:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13133:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13276:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13435:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5123:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2746:160;;;;;;;;;;;;;:::i;:::-;;2205:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10538:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10271:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2479:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12629:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4759:112;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12795:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6474:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3582:314;;;;;;;;;;;;;:::i;:::-;;5270:187;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10086:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13898:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14641:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10126:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10223:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10576:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10495:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10173:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3266:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5469:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13754:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14468:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2920:260;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14111:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4639:108;4693:13;4730:5;4723:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4639:108;:::o;5640:181::-;5723:4;5744:39;5753:12;:10;:12::i;:::-;5767:7;5776:6;5744:8;:39::i;:::-;5805:4;5798:11;;5640:181;;;;:::o;10321:41::-;;;;;;;;;;;;;:::o;4995:116::-;5056:7;5087:12;;5080:19;;4995:116;:::o;5833:387::-;5989:4;6010:36;6020:6;6028:9;6039:6;6010:9;:36::i;:::-;6061:121;6070:6;6078:12;:10;:12::i;:::-;6092:89;6130:6;6092:89;;;;;;;;;;;;;;;;;:11;:19;6104:6;6092:19;;;;;;;;;;;;;;;:33;6112:12;:10;:12::i;:::-;6092:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6061:8;:121::i;:::-;6204:4;6197:11;;5833:387;;;;;:::o;4883:100::-;4941:5;4970:1;4963:8;;4883:100;:::o;6232:230::-;6320:4;6341:83;6350:12;:10;:12::i;:::-;6364:7;6373:50;6412:10;6373:11;:25;6385:12;:10;:12::i;:::-;6373:25;;;;;;;;;;;;;;;:34;6399:7;6373:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;6341:8;:83::i;:::-;6446:4;6439:11;;6232:230;;;;:::o;13589:153::-;2649:12;:10;:12::i;:::-;2638:23;;:7;:5;:7::i;:::-;:23;;;2630:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13720:10:::1;:8;:10::i;:::-;13715:2;:15;;;;:::i;:::-;13695:17;:35;;;;:::i;:::-;13675:17;:55;;;;13589:153:::0;:::o;10034:38::-;;;;;;;;;;;;;:::o;12966:155::-;2649:12;:10;:12::i;:::-;2638:23;;:7;:5;:7::i;:::-;:23;;;2630:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13104:5:::1;13068:24;:33;13093:7;13068:33;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;12966:155:::0;;:::o;10373:28::-;;;;;;;;;;;;;:::o;10444:40::-;;;;;;;;;;;;;:::o;14319:127::-;2649:12;:10;:12::i;:::-;2638:23;;:7;:5;:7::i;:::-;:23;;;2630:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14429:5:::1;14403:23;;:31;;;;;;;;;;;;;;;;;;14319:127:::0;:::o;13133:131::-;13197:4;13225:18;:27;13244:7;13225:27;;;;;;;;;;;;;;;;;;;;;;;;;13218:34;;13133:131;;;:::o;13276:147::-;13348:4;13376:26;:35;13403:7;13376:35;;;;;;;;;;;;;;;;;;;;;;;;;13369:42;;13276:147;;;:::o;13435:142::-;13505:4;13532:24;:33;13557:7;13532:33;;;;;;;;;;;;;;;;;;;;;;;;;13525:40;;13435:142;;;:::o;5123:135::-;5197:7;5228:9;:18;5238:7;5228:18;;;;;;;;;;;;;;;;5221:25;;5123:135;;;:::o;2746:160::-;2649:12;:10;:12::i;:::-;2638:23;;:7;:5;:7::i;:::-;:23;;;2630:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2857:1:::1;2820:40;;2841:6;::::0;::::1;;;;;;;;2820:40;;;;;;;;;;;;2892:1;2875:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2746:160::o:0;2205:24::-;;;;:::o;10538:27::-;;;;:::o;10271:36::-;;;;:::o;2479:95::-;2525:7;2556:6;;;;;;;;;;;2549:13;;2479:95;:::o;12629:146::-;2649:12;:10;:12::i;:::-;2638:23;;:7;:5;:7::i;:::-;:23;;;2630:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12758:5:::1;12728:18;:27;12747:7;12728:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;12629:146:::0;;:::o;4759:112::-;4815:13;4852:7;4845:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4759:112;:::o;12795:159::-;2649:12;:10;:12::i;:::-;2638:23;;:7;:5;:7::i;:::-;:23;;;2630:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12937:5:::1;12899:26;:35;12926:7;12899:35;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;12795:159:::0;;:::o;6474:281::-;6567:4;6588:129;6597:12;:10;:12::i;:::-;6611:7;6620:96;6659:15;6620:96;;;;;;;;;;;;;;;;;:11;:25;6632:12;:10;:12::i;:::-;6620:25;;;;;;;;;;;;;;;:34;6646:7;6620:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;6588:8;:129::i;:::-;6739:4;6732:11;;6474:281;;;;:::o;3582:314::-;3656:10;3638:28;;:14;;;;;;;;;;;:28;;;3630:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;3748:9;;3730:15;:27;3722:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;3831:14;;;;;;;;;;;3802:44;;3823:6;;;;;;;;;;3802:44;;;;;;;;;;;;3870:14;;;;;;;;;;;3861:6;;:23;;;;;;;;;;;;;;;;;;3582:314::o;5270:187::-;5356:4;5377:42;5387:12;:10;:12::i;:::-;5401:9;5412:6;5377:9;:42::i;:::-;5441:4;5434:11;;5270:187;;;;:::o;10086:27::-;;;;;;;;;;;;;:::o;13898:201::-;2649:12;:10;:12::i;:::-;2638:23;;:7;:5;:7::i;:::-;:23;;;2630:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14044:4:::1;14024:17;:24;;;;14083:4;14063:17;:24;;;;13898:201:::0;;:::o;14641:185::-;2649:12;:10;:12::i;:::-;2638:23;;:7;:5;:7::i;:::-;:23;;;2630:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14748:8:::1;14724:21;;:32;;;;;;;;;;;;;;;;;;14776:38;14805:8;14776:38;;;;;;:::i;:::-;;;;;;;;14641:185:::0;:::o;10126:35::-;;;;:::o;10223:36::-;;;;:::o;10576:44::-;;;;:::o;10495:32::-;;;;:::o;10173:35::-;;;;:::o;3266:228::-;2649:12;:10;:12::i;:::-;2638:23;;:7;:5;:7::i;:::-;:23;;;2630:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3351:6:::1;::::0;::::1;;;;;;;;3334:14;;:23;;;;;;;;;;;;;;;;;;3389:1;3372:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3418:4;3406:9;:16;;;;3479:1;3442:40;;3463:6;::::0;::::1;;;;;;;;3442:40;;;;;;;;;;;;3266:228:::0;:::o;5469:159::-;5558:7;5589:11;:18;5601:5;5589:18;;;;;;;;;;;;;;;:27;5608:7;5589:27;;;;;;;;;;;;;;;;5582:34;;5469:159;;;;:::o;13754:130::-;2649:12;:10;:12::i;:::-;2638:23;;:7;:5;:7::i;:::-;:23;;;2630:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13863:10:::1;:8;:10::i;:::-;13858:2;:15;;;;:::i;:::-;13844:11;:29;;;;:::i;:::-;13829:12;:44;;;;13754:130:::0;:::o;14468:161::-;2649:12;:10;:12::i;:::-;2638:23;;:7;:5;:7::i;:::-;:23;;;2630:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14607:10:::1;:8;:10::i;:::-;14601:2;:16;;;;:::i;:::-;14592:6;:25;;;;:::i;:::-;14560:29;:57;;;;14468:161:::0;:::o;2920:260::-;2649:12;:10;:12::i;:::-;2638:23;;:7;:5;:7::i;:::-;:23;;;2630:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3033:1:::1;3013:22;;:8;:22;;::::0;3005:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3127:8;3098:38;;3119:6;::::0;::::1;;;;;;;;3098:38;;;;;;;;;;;;3160:8;3151:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2920:260:::0;:::o;14111:198::-;2649:12;:10;:12::i;:::-;2638:23;;:7;:5;:7::i;:::-;:23;;;2630:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14255:4:::1;14236:16;:23;;;;14293:4;14274:16;:23;;;;14111:198:::0;;:::o;964:106::-;1022:7;1057:1;1053;:5;;;;:::i;:::-;1046:12;;964:106;;;;:::o;1961:::-;2014:7;2045:10;2038:17;;1961:106;:::o;8260:416::-;8433:1;8416:19;;:5;:19;;;8408:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8518:1;8499:21;;:7;:21;;;8491:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8606:6;8576:11;:18;8588:5;8576:18;;;;;;;;;;;;;;;:27;8595:7;8576:27;;;;;;;;;;;;;;;:36;;;;8648:7;8632:32;;8641:5;8632:32;;;8657:6;8632:32;;;;;;:::i;:::-;;;;;;;;8260:416;;;:::o;14947:2819::-;15115:1;15099:18;;:4;:18;;;15091:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15196:1;15182:16;;:2;:16;;;15174:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15270:1;15261:6;:10;15253:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15350:7;:5;:7::i;:::-;15342:15;;:4;:15;;;;:32;;;;;15367:7;:5;:7::i;:::-;15361:13;;:2;:13;;;;15342:32;15338:253;;;15398:26;:32;15425:4;15398:32;;;;;;;;;;;;;;;;;;;;;;;;;:66;;;;15434:26;:30;15461:2;15434:30;;;;;;;;;;;;;;;;;;;;;;;;;15398:66;:110;;;;15496:12;;15486:6;:22;;15398:110;15389:202;;;;;;;;;;;;:::i;:::-;;;;;;;;;15338:253;15648:7;:5;:7::i;:::-;15640:15;;:4;:15;;;;:51;;;;;15686:4;15672:19;;:2;:19;;;;15640:51;:86;;;;;15714:12;;;;;;;;;;;15708:18;;:2;:18;;;;15640:86;:122;;;;;15749:13;;;;;;;;;;;15743:19;;:2;:19;;;;15640:122;15622:378;;;15790:22;15815:13;15825:2;15815:9;:13::i;:::-;15790:38;;15851:24;:28;15876:2;15851:28;;;;;;;;;;;;;;;;;;;;;;;;;:78;;;;15911:17;;15901:6;15884:14;:23;;;;:::i;:::-;:44;;15851:78;15843:145;;;;;;;;;;;;:::i;:::-;;;;;;;;;15775:225;15622:378;16016:28;16047:24;16065:4;16047:9;:24::i;:::-;16016:55;;16087:24;16138:29;;16114:20;:53;;16087:80;;16204:19;:57;;;;;16245:16;;;;;;;;;;;16244:17;16204:57;:99;;;;;16290:13;;;;;;;;;;;16282:21;;:4;:21;;;;16204:99;:141;;;;;16324:21;;;;;;;;;;;16204:141;16182:321;;;16403:29;;16380:52;;16451:36;16466:20;16451:14;:36::i;:::-;16182:321;16519:12;16534:4;16519:19;;16553:18;:24;16572:4;16553:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;16581:18;:22;16600:2;16581:22;;;;;;;;;;;;;;;;;;;;;;;;;16553:50;16549:1204;;;16620:33;16636:4;16642:2;16646:6;16620:15;:33::i;:::-;16678:5;16668:15;;16549:1204;;;16730:13;;;;;;;;;;;16722:21;;:4;:21;;;16718:1014;;16788:23;16814:37;16847:3;16814:28;16825:16;;16814:6;:10;;:28;;;;:::i;:::-;:32;;:37;;;;:::i;:::-;16788:63;;16870:23;16896:37;16929:3;16896:28;16907:16;;16896:6;:10;;:28;;;;:::i;:::-;:32;;:37;;;;:::i;:::-;16870:63;;16960:48;16971:36;16991:15;16971;:19;;:36;;;;:::i;:::-;16960:6;:10;;:48;;;;:::i;:::-;16952:56;;17027:74;17043:4;17057;17064:36;17084:15;17064;:19;;:36;;;;:::i;:::-;17027:15;:74::i;:::-;17120:33;17136:4;17142:2;17146:6;17120:15;:33::i;:::-;16745:426;;16718:1014;;;17187:13;;;;;;;;;;;17181:19;;:2;:19;;;17177:555;;17246:23;17272:38;17306:3;17272:29;17283:17;;17272:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;17246:64;;17329:23;17355:38;17389:3;17355:29;17366:17;;17355:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;17329:64;;17420:48;17431:36;17451:15;17431;:19;;:36;;;;:::i;:::-;17420:6;:10;;:48;;;;:::i;:::-;17412:56;;17487:74;17503:4;17517;17524:36;17544:15;17524;:19;;:36;;;;:::i;:::-;17487:15;:74::i;:::-;17580:33;17596:4;17602:2;17606:6;17580:15;:33::i;:::-;17202:427;;17177:555;;;17683:33;17699:4;17705:2;17709:6;17683:15;:33::i;:::-;17177:555;16718:1014;16549:1204;15076:2690;;;14947:2819;;;:::o;1438:226::-;1524:7;1590:1;1585;:6;;1593:12;1577:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1636:1;1632;:5;1625:12;;1438:226;;;;;:::o;17778:1168::-;10823:4;10804:16;;:23;;;;;;;;;;;;;;;;;;17866:26:::1;17895:47;17938:3;17895:38;17915:17;;17895:15;:19;;:38;;;;:::i;:::-;:42;;:47;;;;:::i;:::-;17866:76;;17961:23;17987:47;18030:3;17987:38;18007:17;;17987:15;:19;;:38;;;;:::i;:::-;:42;;:47;;;;:::i;:::-;17961:73;;18053:25;18102:15;18081:18;:36;;;;:::i;:::-;18053:64;;18158:1;18139:15;:20;:46;;;;18184:1;18163:17;:22;18139:46;18136:60;;;18188:7;;;;;18136:60;18214:12;18245:23:::0;18330:1:::1;18310:17;18289:18;18271:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;18245:86;;18350:51;18385:15;18367;:33;;;;:::i;:::-;18350:16;:51::i;:::-;18420:18;18441:21;18420:42;;18481:23;18507:10;18481:36;;18536:23;18634:1;18615:18;:20;;;;:::i;:::-;18594:17;:42;;;;:::i;:::-;18575:15;18562:10;:28;;;;:::i;:::-;:75;;;;:::i;:::-;18536:101;;18675:15;18656:34;;;;;:::i;:::-;;;18745:1;18727:15;:19;:42;;;;;18768:1;18750:15;:19;18727:42;18724:114;;;18790:46;18803:15;18820;18790:12;:46::i;:::-;18724:114;18877:23;;;;;;;;;;;18869:37;;18914:15;18869:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18856:78;;;;;17847:1099;;;;;;;;10842:1;10877:5:::0;10858:16;;:24;;;;;;;;;;;;;;;;;;17778:1168;:::o;6767:617::-;6945:1;6927:20;;:6;:20;;;6919:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7033:1;7012:23;;:9;:23;;;7004:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7092:47;7113:6;7121:9;7132:6;7092:20;:47::i;:::-;7176:71;7198:6;7176:71;;;;;;;;;;;;;;;;;:9;:17;7186:6;7176:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;7156:9;:17;7166:6;7156:17;;;;;;;;;;;;;;;:91;;;;7285:32;7310:6;7285:9;:20;7295:9;7285:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7262:9;:20;7272:9;7262:20;;;;;;;;;;;;;;;:55;;;;7354:9;7337:35;;7346:6;7337:35;;;7365:6;7337:35;;;;;;:::i;:::-;;;;;;;;6767:617;;;:::o;1196:106::-;1254:7;1289:1;1285;:5;;;;:::i;:::-;1278:12;;1196:106;;;;:::o;1322:::-;1380:7;1415:1;1411;:5;;;;:::i;:::-;1404:12;;1322:106;;;;:::o;1080:::-;1138:7;1173:1;1169;:5;;;;:::i;:::-;1162:12;;1080:106;;;;:::o;18965:547::-;19035:21;19073:1;19059:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19035:40;;19108:4;19090;19095:1;19090:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;19138:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19128:4;19133:1;19128:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;19175:62;19192:4;19207:15;;;;;;;;;;;19225:11;19175:8;:62::i;:::-;19252:15;;;;;;;;;;;:66;;;19337:11;19367:1;19415:4;19446;19470:15;19252:248;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19020:492;18965:547;:::o;19524:454::-;19609:62;19626:4;19641:15;;;;;;;;;;;19659:11;19609:8;:62::i;:::-;19686:15;;;;;;;;;;;:31;;;19725:9;19762:4;19786:11;19816:1;19863;19910:7;:5;:7::i;:::-;19936:15;19686:280;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19524:454;;:::o;8686:141::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:86::-;5431:7;5471:4;5464:5;5460:16;5449:27;;5396:86;;;:::o;5488:112::-;5571:22;5587:5;5571:22;:::i;:::-;5566:3;5559:35;5488:112;;:::o;5606:214::-;5695:4;5733:2;5722:9;5718:18;5710:26;;5746:67;5810:1;5799:9;5795:17;5786:6;5746:67;:::i;:::-;5606:214;;;;:::o;5826:329::-;5885:6;5934:2;5922:9;5913:7;5909:23;5905:32;5902:119;;;5940:79;;:::i;:::-;5902:119;6060:1;6085:53;6130:7;6121:6;6110:9;6106:22;6085:53;:::i;:::-;6075:63;;6031:117;5826:329;;;;:::o;6161:118::-;6248:24;6266:5;6248:24;:::i;:::-;6243:3;6236:37;6161:118;;:::o;6285:222::-;6378:4;6416:2;6405:9;6401:18;6393:26;;6429:71;6497:1;6486:9;6482:17;6473:6;6429:71;:::i;:::-;6285:222;;;;:::o;6513:116::-;6583:21;6598:5;6583:21;:::i;:::-;6576:5;6573:32;6563:60;;6619:1;6616;6609:12;6563:60;6513:116;:::o;6635:133::-;6678:5;6716:6;6703:20;6694:29;;6732:30;6756:5;6732:30;:::i;:::-;6635:133;;;;:::o;6774:468::-;6839:6;6847;6896:2;6884:9;6875:7;6871:23;6867:32;6864:119;;;6902:79;;:::i;:::-;6864:119;7022:1;7047:53;7092:7;7083:6;7072:9;7068:22;7047:53;:::i;:::-;7037:63;;6993:117;7149:2;7175:50;7217:7;7208:6;7197:9;7193:22;7175:50;:::i;:::-;7165:60;;7120:115;6774:468;;;;;:::o;7248:329::-;7307:6;7356:2;7344:9;7335:7;7331:23;7327:32;7324:119;;;7362:79;;:::i;:::-;7324:119;7482:1;7507:53;7552:7;7543:6;7532:9;7528:22;7507:53;:::i;:::-;7497:63;;7453:117;7248:329;;;;:::o;7583:474::-;7651:6;7659;7708:2;7696:9;7687:7;7683:23;7679:32;7676:119;;;7714:79;;:::i;:::-;7676:119;7834:1;7859:53;7904:7;7895:6;7884:9;7880:22;7859:53;:::i;:::-;7849:63;;7805:117;7961:2;7987:53;8032:7;8023:6;8012:9;8008:22;7987:53;:::i;:::-;7977:63;;7932:118;7583:474;;;;;:::o;8063:323::-;8119:6;8168:2;8156:9;8147:7;8143:23;8139:32;8136:119;;;8174:79;;:::i;:::-;8136:119;8294:1;8319:50;8361:7;8352:6;8341:9;8337:22;8319:50;:::i;:::-;8309:60;;8265:114;8063:323;;;;:::o;8392:474::-;8460:6;8468;8517:2;8505:9;8496:7;8492:23;8488:32;8485:119;;;8523:79;;:::i;:::-;8485:119;8643:1;8668:53;8713:7;8704:6;8693:9;8689:22;8668:53;:::i;:::-;8658:63;;8614:117;8770:2;8796:53;8841:7;8832:6;8821:9;8817:22;8796:53;:::i;:::-;8786:63;;8741:118;8392:474;;;;;:::o;8872:180::-;8920:77;8917:1;8910:88;9017:4;9014:1;9007:15;9041:4;9038:1;9031:15;9058:320;9102:6;9139:1;9133:4;9129:12;9119:22;;9186:1;9180:4;9176:12;9207:18;9197:81;;9263:4;9255:6;9251:17;9241:27;;9197:81;9325:2;9317:6;9314:14;9294:18;9291:38;9288:84;;9344:18;;:::i;:::-;9288:84;9109:269;9058:320;;;:::o;9384:182::-;9524:34;9520:1;9512:6;9508:14;9501:58;9384:182;:::o;9572:366::-;9714:3;9735:67;9799:2;9794:3;9735:67;:::i;:::-;9728:74;;9811:93;9900:3;9811:93;:::i;:::-;9929:2;9924:3;9920:12;9913:19;;9572:366;;;:::o;9944:419::-;10110:4;10148:2;10137:9;10133:18;10125:26;;10197:9;10191:4;10187:20;10183:1;10172:9;10168:17;10161:47;10225:131;10351:4;10225:131;:::i;:::-;10217:139;;9944:419;;;:::o;10369:180::-;10417:77;10414:1;10407:88;10514:4;10511:1;10504:15;10538:4;10535:1;10528:15;10555:102;10597:8;10644:5;10641:1;10637:13;10616:34;;10555:102;;;:::o;10663:848::-;10724:5;10731:4;10755:6;10746:15;;10779:5;10770:14;;10793:712;10814:1;10804:8;10801:15;10793:712;;;10909:4;10904:3;10900:14;10894:4;10891:24;10888:50;;;10918:18;;:::i;:::-;10888:50;10968:1;10958:8;10954:16;10951:451;;;11383:4;11376:5;11372:16;11363:25;;10951:451;11433:4;11427;11423:15;11415:23;;11463:32;11486:8;11463:32;:::i;:::-;11451:44;;10793:712;;;10663:848;;;;;;;:::o;11517:1073::-;11571:5;11762:8;11752:40;;11783:1;11774:10;;11785:5;;11752:40;11811:4;11801:36;;11828:1;11819:10;;11830:5;;11801:36;11897:4;11945:1;11940:27;;;;11981:1;11976:191;;;;11890:277;;11940:27;11958:1;11949:10;;11960:5;;;11976:191;12021:3;12011:8;12008:17;12005:43;;;12028:18;;:::i;:::-;12005:43;12077:8;12074:1;12070:16;12061:25;;12112:3;12105:5;12102:14;12099:40;;;12119:18;;:::i;:::-;12099:40;12152:5;;;11890:277;;12276:2;12266:8;12263:16;12257:3;12251:4;12248:13;12244:36;12226:2;12216:8;12213:16;12208:2;12202:4;12199:12;12195:35;12179:111;12176:246;;;12332:8;12326:4;12322:19;12313:28;;12367:3;12360:5;12357:14;12354:40;;;12374:18;;:::i;:::-;12354:40;12407:5;;12176:246;12447:42;12485:3;12475:8;12469:4;12466:1;12447:42;:::i;:::-;12432:57;;;;12521:4;12516:3;12512:14;12505:5;12502:25;12499:51;;;12530:18;;:::i;:::-;12499:51;12579:4;12572:5;12568:16;12559:25;;11517:1073;;;;;;:::o;12596:281::-;12654:5;12678:23;12696:4;12678:23;:::i;:::-;12670:31;;12722:25;12738:8;12722:25;:::i;:::-;12710:37;;12766:104;12803:66;12793:8;12787:4;12766:104;:::i;:::-;12757:113;;12596:281;;;;:::o;12883:410::-;12923:7;12946:20;12964:1;12946:20;:::i;:::-;12941:25;;12980:20;12998:1;12980:20;:::i;:::-;12975:25;;13035:1;13032;13028:9;13057:30;13075:11;13057:30;:::i;:::-;13046:41;;13236:1;13227:7;13223:15;13220:1;13217:22;13197:1;13190:9;13170:83;13147:139;;13266:18;;:::i;:::-;13147:139;12931:362;12883:410;;;;:::o;13299:223::-;13439:34;13435:1;13427:6;13423:14;13416:58;13508:6;13503:2;13495:6;13491:15;13484:31;13299:223;:::o;13528:366::-;13670:3;13691:67;13755:2;13750:3;13691:67;:::i;:::-;13684:74;;13767:93;13856:3;13767:93;:::i;:::-;13885:2;13880:3;13876:12;13869:19;;13528:366;;;:::o;13900:419::-;14066:4;14104:2;14093:9;14089:18;14081:26;;14153:9;14147:4;14143:20;14139:1;14128:9;14124:17;14117:47;14181:131;14307:4;14181:131;:::i;:::-;14173:139;;13900:419;;;:::o;14325:169::-;14465:21;14461:1;14453:6;14449:14;14442:45;14325:169;:::o;14500:366::-;14642:3;14663:67;14727:2;14722:3;14663:67;:::i;:::-;14656:74;;14739:93;14828:3;14739:93;:::i;:::-;14857:2;14852:3;14848:12;14841:19;;14500:366;;;:::o;14872:419::-;15038:4;15076:2;15065:9;15061:18;15053:26;;15125:9;15119:4;15115:20;15111:1;15100:9;15096:17;15089:47;15153:131;15279:4;15153:131;:::i;:::-;15145:139;;14872:419;;;:::o;15297:225::-;15437:34;15433:1;15425:6;15421:14;15414:58;15506:8;15501:2;15493:6;15489:15;15482:33;15297:225;:::o;15528:366::-;15670:3;15691:67;15755:2;15750:3;15691:67;:::i;:::-;15684:74;;15767:93;15856:3;15767:93;:::i;:::-;15885:2;15880:3;15876:12;15869:19;;15528:366;;;:::o;15900:419::-;16066:4;16104:2;16093:9;16089:18;16081:26;;16153:9;16147:4;16143:20;16139:1;16128:9;16124:17;16117:47;16181:131;16307:4;16181:131;:::i;:::-;16173:139;;15900:419;;;:::o;16325:191::-;16365:3;16384:20;16402:1;16384:20;:::i;:::-;16379:25;;16418:20;16436:1;16418:20;:::i;:::-;16413:25;;16461:1;16458;16454:9;16447:16;;16482:3;16479:1;16476:10;16473:36;;;16489:18;;:::i;:::-;16473:36;16325:191;;;;:::o;16522:223::-;16662:34;16658:1;16650:6;16646:14;16639:58;16731:6;16726:2;16718:6;16714:15;16707:31;16522:223;:::o;16751:366::-;16893:3;16914:67;16978:2;16973:3;16914:67;:::i;:::-;16907:74;;16990:93;17079:3;16990:93;:::i;:::-;17108:2;17103:3;17099:12;17092:19;;16751:366;;;:::o;17123:419::-;17289:4;17327:2;17316:9;17312:18;17304:26;;17376:9;17370:4;17366:20;17362:1;17351:9;17347:17;17340:47;17404:131;17530:4;17404:131;:::i;:::-;17396:139;;17123:419;;;:::o;17548:221::-;17688:34;17684:1;17676:6;17672:14;17665:58;17757:4;17752:2;17744:6;17740:15;17733:29;17548:221;:::o;17775:366::-;17917:3;17938:67;18002:2;17997:3;17938:67;:::i;:::-;17931:74;;18014:93;18103:3;18014:93;:::i;:::-;18132:2;18127:3;18123:12;18116:19;;17775:366;;;:::o;18147:419::-;18313:4;18351:2;18340:9;18336:18;18328:26;;18400:9;18394:4;18390:20;18386:1;18375:9;18371:17;18364:47;18428:131;18554:4;18428:131;:::i;:::-;18420:139;;18147:419;;;:::o;18572:224::-;18712:34;18708:1;18700:6;18696:14;18689:58;18781:7;18776:2;18768:6;18764:15;18757:32;18572:224;:::o;18802:366::-;18944:3;18965:67;19029:2;19024:3;18965:67;:::i;:::-;18958:74;;19041:93;19130:3;19041:93;:::i;:::-;19159:2;19154:3;19150:12;19143:19;;18802:366;;;:::o;19174:419::-;19340:4;19378:2;19367:9;19363:18;19355:26;;19427:9;19421:4;19417:20;19413:1;19402:9;19398:17;19391:47;19455:131;19581:4;19455:131;:::i;:::-;19447:139;;19174:419;;;:::o;19599:222::-;19739:34;19735:1;19727:6;19723:14;19716:58;19808:5;19803:2;19795:6;19791:15;19784:30;19599:222;:::o;19827:366::-;19969:3;19990:67;20054:2;20049:3;19990:67;:::i;:::-;19983:74;;20066:93;20155:3;20066:93;:::i;:::-;20184:2;20179:3;20175:12;20168:19;;19827:366;;;:::o;20199:419::-;20365:4;20403:2;20392:9;20388:18;20380:26;;20452:9;20446:4;20442:20;20438:1;20427:9;20423:17;20416:47;20480:131;20606:4;20480:131;:::i;:::-;20472:139;;20199:419;;;:::o;20624:228::-;20764:34;20760:1;20752:6;20748:14;20741:58;20833:11;20828:2;20820:6;20816:15;20809:36;20624:228;:::o;20858:366::-;21000:3;21021:67;21085:2;21080:3;21021:67;:::i;:::-;21014:74;;21097:93;21186:3;21097:93;:::i;:::-;21215:2;21210:3;21206:12;21199:19;;20858:366;;;:::o;21230:419::-;21396:4;21434:2;21423:9;21419:18;21411:26;;21483:9;21477:4;21473:20;21469:1;21458:9;21454:17;21447:47;21511:131;21637:4;21511:131;:::i;:::-;21503:139;;21230:419;;;:::o;21655:234::-;21795:34;21791:1;21783:6;21779:14;21772:58;21864:17;21859:2;21851:6;21847:15;21840:42;21655:234;:::o;21895:366::-;22037:3;22058:67;22122:2;22117:3;22058:67;:::i;:::-;22051:74;;22134:93;22223:3;22134:93;:::i;:::-;22252:2;22247:3;22243:12;22236:19;;21895:366;;;:::o;22267:419::-;22433:4;22471:2;22460:9;22456:18;22448:26;;22520:9;22514:4;22510:20;22506:1;22495:9;22491:17;22484:47;22548:131;22674:4;22548:131;:::i;:::-;22540:139;;22267:419;;;:::o;22692:220::-;22832:34;22828:1;22820:6;22816:14;22809:58;22901:3;22896:2;22888:6;22884:15;22877:28;22692:220;:::o;22918:366::-;23060:3;23081:67;23145:2;23140:3;23081:67;:::i;:::-;23074:74;;23157:93;23246:3;23157:93;:::i;:::-;23275:2;23270:3;23266:12;23259:19;;22918:366;;;:::o;23290:419::-;23456:4;23494:2;23483:9;23479:18;23471:26;;23543:9;23537:4;23533:20;23529:1;23518:9;23514:17;23507:47;23571:131;23697:4;23571:131;:::i;:::-;23563:139;;23290:419;;;:::o;23715:180::-;23763:77;23760:1;23753:88;23860:4;23857:1;23850:15;23884:4;23881:1;23874:15;23901:185;23941:1;23958:20;23976:1;23958:20;:::i;:::-;23953:25;;23992:20;24010:1;23992:20;:::i;:::-;23987:25;;24031:1;24021:35;;24036:18;;:::i;:::-;24021:35;24078:1;24075;24071:9;24066:14;;23901:185;;;;:::o;24092:194::-;24132:4;24152:20;24170:1;24152:20;:::i;:::-;24147:25;;24186:20;24204:1;24186:20;:::i;:::-;24181:25;;24230:1;24227;24223:9;24215:17;;24254:1;24248:4;24245:11;24242:37;;;24259:18;;:::i;:::-;24242:37;24092:194;;;;:::o;24292:147::-;24393:11;24430:3;24415:18;;24292:147;;;;:::o;24445:114::-;;:::o;24565:398::-;24724:3;24745:83;24826:1;24821:3;24745:83;:::i;:::-;24738:90;;24837:93;24926:3;24837:93;:::i;:::-;24955:1;24950:3;24946:11;24939:18;;24565:398;;;:::o;24969:379::-;25153:3;25175:147;25318:3;25175:147;:::i;:::-;25168:154;;25339:3;25332:10;;24969:379;;;:::o;25354:180::-;25402:77;25399:1;25392:88;25499:4;25496:1;25489:15;25523:4;25520:1;25513:15;25540:180;25588:77;25585:1;25578:88;25685:4;25682:1;25675:15;25709:4;25706:1;25699:15;25726:143;25783:5;25814:6;25808:13;25799:22;;25830:33;25857:5;25830:33;:::i;:::-;25726:143;;;;:::o;25875:351::-;25945:6;25994:2;25982:9;25973:7;25969:23;25965:32;25962:119;;;26000:79;;:::i;:::-;25962:119;26120:1;26145:64;26201:7;26192:6;26181:9;26177:22;26145:64;:::i;:::-;26135:74;;26091:128;25875:351;;;;:::o;26232:85::-;26277:7;26306:5;26295:16;;26232:85;;;:::o;26323:158::-;26381:9;26414:61;26432:42;26441:32;26467:5;26441:32;:::i;:::-;26432:42;:::i;:::-;26414:61;:::i;:::-;26401:74;;26323:158;;;:::o;26487:147::-;26582:45;26621:5;26582:45;:::i;:::-;26577:3;26570:58;26487:147;;:::o;26640:114::-;26707:6;26741:5;26735:12;26725:22;;26640:114;;;:::o;26760:184::-;26859:11;26893:6;26888:3;26881:19;26933:4;26928:3;26924:14;26909:29;;26760:184;;;;:::o;26950:132::-;27017:4;27040:3;27032:11;;27070:4;27065:3;27061:14;27053:22;;26950:132;;;:::o;27088:108::-;27165:24;27183:5;27165:24;:::i;:::-;27160:3;27153:37;27088:108;;:::o;27202:179::-;27271:10;27292:46;27334:3;27326:6;27292:46;:::i;:::-;27370:4;27365:3;27361:14;27347:28;;27202:179;;;;:::o;27387:113::-;27457:4;27489;27484:3;27480:14;27472:22;;27387:113;;;:::o;27536:732::-;27655:3;27684:54;27732:5;27684:54;:::i;:::-;27754:86;27833:6;27828:3;27754:86;:::i;:::-;27747:93;;27864:56;27914:5;27864:56;:::i;:::-;27943:7;27974:1;27959:284;27984:6;27981:1;27978:13;27959:284;;;28060:6;28054:13;28087:63;28146:3;28131:13;28087:63;:::i;:::-;28080:70;;28173:60;28226:6;28173:60;:::i;:::-;28163:70;;28019:224;28006:1;28003;27999:9;27994:14;;27959:284;;;27963:14;28259:3;28252:10;;27660:608;;;27536:732;;;;:::o;28274:831::-;28537:4;28575:3;28564:9;28560:19;28552:27;;28589:71;28657:1;28646:9;28642:17;28633:6;28589:71;:::i;:::-;28670:80;28746:2;28735:9;28731:18;28722:6;28670:80;:::i;:::-;28797:9;28791:4;28787:20;28782:2;28771:9;28767:18;28760:48;28825:108;28928:4;28919:6;28825:108;:::i;:::-;28817:116;;28943:72;29011:2;29000:9;28996:18;28987:6;28943:72;:::i;:::-;29025:73;29093:3;29082:9;29078:19;29069:6;29025:73;:::i;:::-;28274:831;;;;;;;;:::o;29111:807::-;29360:4;29398:3;29387:9;29383:19;29375:27;;29412:71;29480:1;29469:9;29465:17;29456:6;29412:71;:::i;:::-;29493:72;29561:2;29550:9;29546:18;29537:6;29493:72;:::i;:::-;29575:80;29651:2;29640:9;29636:18;29627:6;29575:80;:::i;:::-;29665;29741:2;29730:9;29726:18;29717:6;29665:80;:::i;:::-;29755:73;29823:3;29812:9;29808:19;29799:6;29755:73;:::i;:::-;29838;29906:3;29895:9;29891:19;29882:6;29838:73;:::i;:::-;29111:807;;;;;;;;;:::o;29924:143::-;29981:5;30012:6;30006:13;29997:22;;30028:33;30055:5;30028:33;:::i;:::-;29924:143;;;;:::o;30073:663::-;30161:6;30169;30177;30226:2;30214:9;30205:7;30201:23;30197:32;30194:119;;;30232:79;;:::i;:::-;30194:119;30352:1;30377:64;30433:7;30424:6;30413:9;30409:22;30377:64;:::i;:::-;30367:74;;30323:128;30490:2;30516:64;30572:7;30563:6;30552:9;30548:22;30516:64;:::i;:::-;30506:74;;30461:129;30629:2;30655:64;30711:7;30702:6;30691:9;30687:22;30655:64;:::i;:::-;30645:74;;30600:129;30073:663;;;;;:::o
Swarm Source
ipfs://5211502f059c18dcf0329fd54012580dcfc1e2cccd83a638de9e94bdcabfd779
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.