ERC-20
Overview
Max Total Supply
10,000,000,000 $SM
Holders
21
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
233,736,296.065351046974259865 $SMValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
SAFEMOON
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-01-01 */ pragma solidity 0.8.4; // SPDX-License-Identifier: Unlicensed interface ERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function getOwner() external view returns (address); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address _owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } interface UniswapFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface UniswapRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } // Contracts and libraries library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) {return 0;} uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; return c; } } abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; return msg.data; } } contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { address msgSender = _msgSender(); _owner = msgSender; authorizations[_owner] = true; emit OwnershipTransferred(address(0), msgSender); } mapping (address => bool) internal authorizations; function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(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; } } contract SAFEMOON is Ownable, ERC20 { using SafeMath for uint256; uint8 constant _decimals = 18; uint256 _totalSupply = 10_000_000_000 * (10 ** _decimals); uint256 public _maxTxAmount = _totalSupply; uint256 public _walletMax = _totalSupply; address DEAD_WALLET = 0x000000000000000000000000000000000000dEaD; address ZERO_WALLET = 0x0000000000000000000000000000000000000000; address uniswapAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; string constant _name = "SAFEMOON"; string constant _symbol = "$SM"; bool public restrictWhales = true; mapping(address => uint256) _balances; mapping(address => mapping(address => uint256)) _allowances; mapping(address => bool) public isFeeExempt; mapping(address => bool) public isTxLimitExempt; uint256 public liquidityFee = 0; uint256 public marketingFee = 0; uint256 public totalFee = 0; uint256 public totalFeeIfSelling = 0; address public autoLiquidityReceiver; address public marketingWallet; UniswapRouter public router; address public pair; uint256 public launchedAt; bool public tradingOpen = false; bool public blacklistMode = false; mapping(address => bool) public isBlacklisted; bool public inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; bool public swapAndLiquifyByLimitOnly = false; uint256 public swapThreshold = _totalSupply * 4 / 2000; event AutoLiquify(uint256 amountETH, uint256 amountBOG); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor() { router = UniswapRouter(uniswapAddress); pair = UniswapFactory(router.factory()).createPair(router.WETH(), address(this)); _allowances[address(this)][address(router)] = type(uint256).max; _allowances[address(this)][address(pair)] = type(uint256).max; isFeeExempt[msg.sender] = true; isFeeExempt[address(this)] = true; isFeeExempt[DEAD_WALLET] = true; isTxLimitExempt[msg.sender] = true; isTxLimitExempt[pair] = true; isTxLimitExempt[DEAD_WALLET] = true; autoLiquidityReceiver = 0x7A5c94C840A2e47342F991dA2F2D369cB53c13AB; marketingWallet = 0x7A5c94C840A2e47342F991dA2F2D369cB53c13AB; totalFee = liquidityFee.add(marketingFee); totalFeeIfSelling = totalFee; _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); } receive() external payable {} function name() external pure override returns (string memory) {return _name;} function symbol() external pure override returns (string memory) {return _symbol;} function decimals() external pure override returns (uint8) {return _decimals;} function totalSupply() external view override returns (uint256) {return _totalSupply;} function getOwner() external view override returns (address) {return owner();} function balanceOf(address account) public view override returns (uint256) {return _balances[account];} function allowance(address holder, address spender) external view override returns (uint256) {return _allowances[holder][spender];} function getCirculatingSupply() public view returns (uint256) { return _totalSupply.sub(balanceOf(DEAD_WALLET)).sub(balanceOf(ZERO_WALLET)); } function approve(address spender, uint256 amount) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function approveMax(address spender) external returns (bool) { return approve(spender, type(uint256).max); } function launched() internal view returns (bool) { return launchedAt != 0; } function launch() internal { launchedAt = block.number; } function checkTxLimit(address sender, uint256 amount) internal view { require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded"); } function transfer(address recipient, uint256 amount) external override returns (bool) { return _transferFrom(msg.sender, recipient, amount); } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { if (_allowances[sender][msg.sender] != type(uint256).max) { _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance"); } return _transferFrom(sender, recipient, amount); } function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { if (inSwapAndLiquify) {return _basicTransfer(sender, recipient, amount);} if(!authorizations[sender] && !authorizations[recipient]){ require(tradingOpen, "Trading not open yet"); } require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded"); if (msg.sender != pair && !inSwapAndLiquify && swapAndLiquifyEnabled && _balances[address(this)] >= swapThreshold) {marketingAndLiquidity();} if (!launched() && recipient == pair) { require(_balances[sender] > 0, "Zero balance violated!"); launch(); } // Blacklist if (blacklistMode) { require(!isBlacklisted[sender] && !isBlacklisted[recipient],"Blacklisted"); } //Exchange tokens _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); if (!isTxLimitExempt[recipient] && restrictWhales) { require(_balances[recipient].add(amount) <= _walletMax, "Max wallet violated!"); } uint256 finalAmount = !isFeeExempt[sender] && !isFeeExempt[recipient] ? extractFee(sender, recipient, amount) : amount; _balances[recipient] = _balances[recipient].add(finalAmount); emit Transfer(sender, recipient, finalAmount); return true; } function extractFee(address sender, address recipient, uint256 amount) internal returns (uint256) { uint256 feeApplicable = pair == recipient ? totalFeeIfSelling : totalFee; uint256 feeAmount = amount.mul(feeApplicable).div(100); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); return amount.sub(feeAmount); } function marketingAndLiquidity() internal lockTheSwap { uint256 tokensToLiquify = _balances[address(this)]; uint256 amountToLiquify = tokensToLiquify.mul(liquidityFee).div(totalFee).div(2); uint256 amountToSwap = tokensToLiquify.sub(amountToLiquify); address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); router.swapExactTokensForETHSupportingFeeOnTransferTokens( amountToSwap, 0, path, address(this), block.timestamp ); uint256 amountETH = address(this).balance; uint256 totalETHFee = totalFee.sub(liquidityFee.div(2)); uint256 amountETHLiquidity = amountETH.mul(liquidityFee).div(totalETHFee).div(2); uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee); (bool tmpSuccess,) = payable(marketingWallet).call{value : amountETHMarketing, gas : 30000}(""); tmpSuccess = false; if (amountToLiquify > 0) { router.addLiquidityETH{value : amountETHLiquidity}( address(this), amountToLiquify, 0, 0, autoLiquidityReceiver, block.timestamp ); emit AutoLiquify(amountETHLiquidity, amountToLiquify); } } // CONTRACT OWNER FUNCTIONS function setWalletLimit(uint256 newLimit) external onlyOwner { _walletMax = newLimit; } function tradingStatus(bool newStatus) public onlyOwner { tradingOpen = newStatus; } function setIsFeeExempt(address holder, bool exempt) external onlyOwner { isFeeExempt[holder] = exempt; } function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner { isTxLimitExempt[holder] = exempt; } function setFees(uint256 newLiqFee, uint256 newmarketingFee) external onlyOwner { liquidityFee = newLiqFee; marketingFee = newmarketingFee; totalFee = liquidityFee.add(marketingFee); totalFeeIfSelling = totalFee; } function enable_blacklist(bool _status) public onlyOwner { blacklistMode = _status; } function manage_blacklist(address[] calldata addresses, bool status) public onlyOwner { for (uint256 i; i < addresses.length; ++i) { isBlacklisted[addresses[i]] = status; } } }
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":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blacklistMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enable_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inSwapAndLiquify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"restrictWhales","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract UniswapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiqFee","type":"uint256"},{"internalType":"uint256","name":"newmarketingFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"newStatus","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526012600a62000014919062000d6c565b6402540be40062000026919062000ea9565b60025560025460035560025460045561dead600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760146101000a81548160ff0219169083151502179055506000600c556000600d556000600e556000600f556000601560006101000a81548160ff0219169083151502179055506000601560016101000a81548160ff0219169083151502179055506001601760016101000a81548160ff0219169083151502179055506000601760026101000a81548160ff0219169083151502179055506107d06004600254620001be919062000ea9565b620001ca919062000cd9565b601855348015620001da57600080fd5b506000620001ed62000b0860201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620003cf57600080fd5b505afa158015620003e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200040a919062000b8a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200048e57600080fd5b505afa158015620004a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004c9919062000b8a565b306040518363ffffffff1660e01b8152600401620004e992919062000bff565b602060405180830381600087803b1580156200050457600080fd5b505af115801562000519573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200053f919062000b8a565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550737a5c94c840a2e47342f991da2f2d369cb53c13ab601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a5c94c840a2e47342f991da2f2d369cb53c13ab601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000a43600d54600c5462000b1060201b62001a311790919060201c565b600e81905550600e54600f81905550600254600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60025460405162000afa919062000c4e565b60405180910390a362001003565b600033905090565b600080828462000b21919062000c7c565b90508381101562000b69576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b609062000c2c565b60405180910390fd5b8091505092915050565b60008151905062000b848162000fe9565b92915050565b60006020828403121562000b9d57600080fd5b600062000bad8482850162000b73565b91505092915050565b62000bc18162000f0a565b82525050565b600062000bd6601b8362000c6b565b915062000be38262000fc0565b602082019050919050565b62000bf98162000f3e565b82525050565b600060408201905062000c16600083018562000bb6565b62000c25602083018462000bb6565b9392505050565b6000602082019050818103600083015262000c478162000bc7565b9050919050565b600060208201905062000c65600083018462000bee565b92915050565b600082825260208201905092915050565b600062000c898262000f3e565b915062000c968362000f3e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000cce5762000ccd62000f55565b5b828201905092915050565b600062000ce68262000f3e565b915062000cf38362000f3e565b92508262000d065762000d0562000f84565b5b828204905092915050565b6000808291508390505b600185111562000d635780860481111562000d3b5762000d3a62000f55565b5b600185161562000d4b5780820291505b808102905062000d5b8562000fb3565b945062000d1b565b94509492505050565b600062000d798262000f3e565b915062000d868362000f48565b925062000db57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000dbd565b905092915050565b60008262000dcf576001905062000ea2565b8162000ddf576000905062000ea2565b816001811462000df8576002811462000e035762000e39565b600191505062000ea2565b60ff84111562000e185762000e1762000f55565b5b8360020a91508482111562000e325762000e3162000f55565b5b5062000ea2565b5060208310610133831016604e8410600b841016171562000e735782820a90508381111562000e6d5762000e6c62000f55565b5b62000ea2565b62000e82848484600162000d11565b9250905081840481111562000e9c5762000e9b62000f55565b5b81810290505b9392505050565b600062000eb68262000f3e565b915062000ec38362000f3e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000eff5762000efe62000f55565b5b828202905092915050565b600062000f178262000f1e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008160011c9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b62000ff48162000f0a565b81146200100057600080fd5b50565b613b7380620010136000396000f3fe6080604052600436106102605760003560e01c80637d1db4a511610144578063bf56b371116100b6578063f1d5f5171161007a578063f1d5f51714610915578063f2fde38b1461093e578063f84ba65d14610967578063f887ea4014610990578063fe575a87146109bb578063ffb54a99146109f857610267565b8063bf56b3711461082c578063ca33e64c14610857578063ca987b0e14610882578063da00097d146108ad578063dd62ed3e146108d857610267565b80638da5cb5b116101085780638da5cb5b1461071a5780638e2eee841461074557806395d89b411461076e57806398118cb414610799578063a8aa1b31146107c4578063a9059cbb146107ef57610267565b80637d1db4a514610631578063807c2d9c1461065c578063893d20e814610687578063896648c1146106b25780638b42507f146106dd57610267565b8063313ce567116101dd5780635e562f3b116101a15780635e562f3b14610535578063658d4b7f1461055e5780636b67c4df1461058757806370a08231146105b2578063715018a6146105ef57806375f0a8741461060657610267565b8063313ce5671461043a5780633f4218e01461046557806344de2e4c146104a25780634a74bb02146104cd578063571ac8b0146104f857610267565b806318160ddd1161022457806318160ddd146103515780631df4ccfc1461037c578063220f6696146103a757806323b872dd146103d25780632b112e491461040f57610267565b80630445b6671461026c57806306fdde0314610297578063095ea7b3146102c25780630b78f9c0146102ff5780630d2959801461032857610267565b3661026757005b600080fd5b34801561027857600080fd5b50610281610a23565b60405161028e9190613594565b60405180910390f35b3480156102a357600080fd5b506102ac610a29565b6040516102b99190613452565b60405180910390f35b3480156102ce57600080fd5b506102e960048036038101906102e49190612fa4565b610a66565b6040516102f6919061341c565b60405180910390f35b34801561030b57600080fd5b506103266004803603810190610321919061308a565b610b58565b005b34801561033457600080fd5b5061034f600480360381019061034a9190613038565b610c25565b005b34801561035d57600080fd5b50610366610cd7565b6040516103739190613594565b60405180910390f35b34801561038857600080fd5b50610391610ce1565b60405161039e9190613594565b60405180910390f35b3480156103b357600080fd5b506103bc610ce7565b6040516103c9919061341c565b60405180910390f35b3480156103de57600080fd5b506103f960048036038101906103f49190612f19565b610cfa565b604051610406919061341c565b60405180910390f35b34801561041b57600080fd5b50610424610efa565b6040516104319190613594565b60405180910390f35b34801561044657600080fd5b5061044f610f7c565b60405161045c9190613632565b60405180910390f35b34801561047157600080fd5b5061048c60048036038101906104879190612e8b565b610f85565b604051610499919061341c565b60405180910390f35b3480156104ae57600080fd5b506104b7610fa5565b6040516104c4919061341c565b60405180910390f35b3480156104d957600080fd5b506104e2610fb8565b6040516104ef919061341c565b60405180910390f35b34801561050457600080fd5b5061051f600480360381019061051a9190612e8b565b610fcb565b60405161052c919061341c565b60405180910390f35b34801561054157600080fd5b5061055c60048036038101906105579190613038565b610ffe565b005b34801561056a57600080fd5b5061058560048036038101906105809190612f68565b6110b0565b005b34801561059357600080fd5b5061059c6111a0565b6040516105a99190613594565b60405180910390f35b3480156105be57600080fd5b506105d960048036038101906105d49190612e8b565b6111a6565b6040516105e69190613594565b60405180910390f35b3480156105fb57600080fd5b506106046111ef565b005b34801561061257600080fd5b5061061b611342565b60405161062891906133a0565b60405180910390f35b34801561063d57600080fd5b50610646611368565b6040516106539190613594565b60405180910390f35b34801561066857600080fd5b5061067161136e565b60405161067e9190613594565b60405180910390f35b34801561069357600080fd5b5061069c611374565b6040516106a991906133a0565b60405180910390f35b3480156106be57600080fd5b506106c7611383565b6040516106d4919061341c565b60405180910390f35b3480156106e957600080fd5b5061070460048036038101906106ff9190612e8b565b611396565b604051610711919061341c565b60405180910390f35b34801561072657600080fd5b5061072f6113b6565b60405161073c91906133a0565b60405180910390f35b34801561075157600080fd5b5061076c60048036038101906107679190612fe0565b6113df565b005b34801561077a57600080fd5b5061078361153d565b6040516107909190613452565b60405180910390f35b3480156107a557600080fd5b506107ae61157a565b6040516107bb9190613594565b60405180910390f35b3480156107d057600080fd5b506107d9611580565b6040516107e691906133a0565b60405180910390f35b3480156107fb57600080fd5b5061081660048036038101906108119190612fa4565b6115a6565b604051610823919061341c565b60405180910390f35b34801561083857600080fd5b506108416115bb565b60405161084e9190613594565b60405180910390f35b34801561086357600080fd5b5061086c6115c1565b60405161087991906133a0565b60405180910390f35b34801561088e57600080fd5b506108976115e7565b6040516108a49190613594565b60405180910390f35b3480156108b957600080fd5b506108c26115ed565b6040516108cf919061341c565b60405180910390f35b3480156108e457600080fd5b506108ff60048036038101906108fa9190612edd565b611600565b60405161090c9190613594565b60405180910390f35b34801561092157600080fd5b5061093c60048036038101906109379190613061565b611687565b005b34801561094a57600080fd5b5061096560048036038101906109609190612e8b565b611726565b005b34801561097357600080fd5b5061098e60048036038101906109899190612f68565b6118e8565b005b34801561099c57600080fd5b506109a56119d8565b6040516109b29190613437565b60405180910390f35b3480156109c757600080fd5b506109e260048036038101906109dd9190612e8b565b6119fe565b6040516109ef919061341c565b60405180910390f35b348015610a0457600080fd5b50610a0d611a1e565b604051610a1a919061341c565b60405180910390f35b60185481565b60606040518060400160405280600881526020017f534146454d4f4f4e000000000000000000000000000000000000000000000000815250905090565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b469190613594565b60405180910390a36001905092915050565b610b60611a8f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be490613534565b60405180910390fd5b81600c8190555080600d81905550610c12600d54600c54611a3190919063ffffffff16565b600e81905550600e54600f819055505050565b610c2d611a8f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb190613534565b60405180910390fd5b80601560006101000a81548160ff02191690831515021790555050565b6000600254905090565b600e5481565b601760009054906101000a900460ff1681565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610ee657610e65826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a979092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610ef1848484611afb565b90509392505050565b6000610f77610f2a600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166111a6565b610f69610f58600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166111a6565b60025461231290919063ffffffff16565b61231290919063ffffffff16565b905090565b60006012905090565b600a6020528060005260406000206000915054906101000a900460ff1681565b600760149054906101000a900460ff1681565b601760019054906101000a900460ff1681565b6000610ff7827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610a66565b9050919050565b611006611a8f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108a90613534565b60405180910390fd5b80601560016101000a81548160ff02191690831515021790555050565b6110b8611a8f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611145576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113c90613534565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600d5481565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111f7611a8f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127b90613534565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b60045481565b600061137e6113b6565b905090565b601560019054906101000a900460ff1681565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6113e7611a8f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146b90613534565b60405180910390fd5b60005b838390508110156115375781601660008686858181106114c0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906114d59190612e8b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508061153090613880565b9050611477565b50505050565b60606040518060400160405280600381526020017f24534d0000000000000000000000000000000000000000000000000000000000815250905090565b600c5481565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006115b3338484611afb565b905092915050565b60145481565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b601760029054906101000a900460ff1681565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61168f611a8f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461171c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171390613534565b60405180910390fd5b8060048190555050565b61172e611a8f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b290613534565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561182b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182290613494565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6118f0611a8f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461197d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197490613534565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60166020528060005260406000206000915054906101000a900460ff1681565b601560009054906101000a900460ff1681565b6000808284611a4091906136ad565b905083811015611a85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7c906134b4565b60405180910390fd5b8091505092915050565b600033905090565b6000838311158290611adf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad69190613452565b60405180910390fd5b5060008385611aee919061378e565b9050809150509392505050565b6000601760009054906101000a900460ff1615611b2457611b1d84848461235c565b905061230b565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611bc85750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c1d57601560009054906101000a900460ff16611c1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c13906134f4565b60405180910390fd5b5b60035482111580611c775750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611cb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cad90613474565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611d215750601760009054906101000a900460ff16155b8015611d395750601760019054906101000a900460ff165b8015611d865750601854600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b15611d9457611d9361252f565b5b611d9c612af2565b158015611df65750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611e86576000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611e7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e74906134d4565b60405180910390fd5b611e85612aff565b5b601560019054906101000a900460ff1615611f7f57601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f3f5750601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7590613574565b60405180910390fd5b5b612008826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a979092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120b15750600760149054906101000a900460ff165b1561214d5760045461210b83600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a3190919063ffffffff16565b111561214c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214390613554565b60405180910390fd5b5b6000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121f35750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6121fd5782612209565b612208858585612b08565b5b905061225d81600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a3190919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516122fd9190613594565b60405180910390a360019150505b9392505050565b600061235483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a97565b905092915050565b60006123e7826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a979092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061247c82600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a3190919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161251c9190613594565b60405180910390a3600190509392505050565b6001601760006101000a81548160ff0219169083151502179055506000600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006125cc60026125be600e546125b0600c5487612cb090919063ffffffff16565b612d2b90919063ffffffff16565b612d2b90919063ffffffff16565b905060006125e3828461231290919063ffffffff16565b90506000600267ffffffffffffffff811115612628577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156126565781602001602082028036833780820191505090505b5090503081600081518110612694577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561273657600080fd5b505afa15801561274a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061276e9190612eb4565b816001815181106127a8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016128469594939291906135af565b600060405180830381600087803b15801561286057600080fd5b505af1158015612874573d6000803e3d6000fd5b50505050600047905060006128a96128986002600c54612d2b90919063ffffffff16565b600e5461231290919063ffffffff16565b905060006128e760026128d9846128cb600c5488612cb090919063ffffffff16565b612d2b90919063ffffffff16565b612d2b90919063ffffffff16565b9050600061291283612904600d5487612cb090919063ffffffff16565b612d2b90919063ffffffff16565b90506000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682617530906040516129609061338b565b600060405180830381858888f193505050503d806000811461299e576040519150601f19603f3d011682016040523d82523d6000602084013e6129a3565b606091505b50509050600090506000881115612acc57601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308b600080601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612a3d969594939291906133bb565b6060604051808303818588803b158015612a5657600080fd5b505af1158015612a6a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612a8f91906130c6565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b45068389604051612ac3929190613609565b60405180910390a15b5050505050505050506000601760006101000a81548160ff021916908315150217905550565b6000806014541415905090565b43601481905550565b6000808373ffffffffffffffffffffffffffffffffffffffff16601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b6857600e54612b6c565b600f545b90506000612b966064612b888487612cb090919063ffffffff16565b612d2b90919063ffffffff16565b9050612bea81600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a3190919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c8a9190613594565b60405180910390a3612ca5818561231290919063ffffffff16565b925050509392505050565b600080831415612cc35760009050612d25565b60008284612cd19190613734565b9050828482612ce09190613703565b14612d20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1790613514565b60405180910390fd5b809150505b92915050565b6000612d6d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612d75565b905092915050565b60008083118290612dbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612db39190613452565b60405180910390fd5b5060008385612dcb9190613703565b9050809150509392505050565b600081359050612de781613af8565b92915050565b600081519050612dfc81613af8565b92915050565b60008083601f840112612e1457600080fd5b8235905067ffffffffffffffff811115612e2d57600080fd5b602083019150836020820283011115612e4557600080fd5b9250929050565b600081359050612e5b81613b0f565b92915050565b600081359050612e7081613b26565b92915050565b600081519050612e8581613b26565b92915050565b600060208284031215612e9d57600080fd5b6000612eab84828501612dd8565b91505092915050565b600060208284031215612ec657600080fd5b6000612ed484828501612ded565b91505092915050565b60008060408385031215612ef057600080fd5b6000612efe85828601612dd8565b9250506020612f0f85828601612dd8565b9150509250929050565b600080600060608486031215612f2e57600080fd5b6000612f3c86828701612dd8565b9350506020612f4d86828701612dd8565b9250506040612f5e86828701612e61565b9150509250925092565b60008060408385031215612f7b57600080fd5b6000612f8985828601612dd8565b9250506020612f9a85828601612e4c565b9150509250929050565b60008060408385031215612fb757600080fd5b6000612fc585828601612dd8565b9250506020612fd685828601612e61565b9150509250929050565b600080600060408486031215612ff557600080fd5b600084013567ffffffffffffffff81111561300f57600080fd5b61301b86828701612e02565b9350935050602061302e86828701612e4c565b9150509250925092565b60006020828403121561304a57600080fd5b600061305884828501612e4c565b91505092915050565b60006020828403121561307357600080fd5b600061308184828501612e61565b91505092915050565b6000806040838503121561309d57600080fd5b60006130ab85828601612e61565b92505060206130bc85828601612e61565b9150509250929050565b6000806000606084860312156130db57600080fd5b60006130e986828701612e76565b93505060206130fa86828701612e76565b925050604061310b86828701612e76565b9150509250925092565b6000613121838361312d565b60208301905092915050565b613136816137c2565b82525050565b613145816137c2565b82525050565b60006131568261365d565b6131608185613680565b935061316b8361364d565b8060005b8381101561319c5781516131838882613115565b975061318e83613673565b92505060018101905061316f565b5085935050505092915050565b6131b2816137d4565b82525050565b6131c181613817565b82525050565b6131d08161383b565b82525050565b60006131e182613668565b6131eb818561369c565b93506131fb81856020860161384d565b61320481613927565b840191505092915050565b600061321c60118361369c565b915061322782613938565b602082019050919050565b600061323f60268361369c565b915061324a82613961565b604082019050919050565b6000613262601b8361369c565b915061326d826139b0565b602082019050919050565b600061328560168361369c565b9150613290826139d9565b602082019050919050565b60006132a860148361369c565b91506132b382613a02565b602082019050919050565b60006132cb60218361369c565b91506132d682613a2b565b604082019050919050565b60006132ee60208361369c565b91506132f982613a7a565b602082019050919050565b6000613311600083613691565b915061331c82613aa3565b600082019050919050565b600061333460148361369c565b915061333f82613aa6565b602082019050919050565b6000613357600b8361369c565b915061336282613acf565b602082019050919050565b61337681613800565b82525050565b6133858161380a565b82525050565b600061339682613304565b9150819050919050565b60006020820190506133b5600083018461313c565b92915050565b600060c0820190506133d0600083018961313c565b6133dd602083018861336d565b6133ea60408301876131c7565b6133f760608301866131c7565b613404608083018561313c565b61341160a083018461336d565b979650505050505050565b600060208201905061343160008301846131a9565b92915050565b600060208201905061344c60008301846131b8565b92915050565b6000602082019050818103600083015261346c81846131d6565b905092915050565b6000602082019050818103600083015261348d8161320f565b9050919050565b600060208201905081810360008301526134ad81613232565b9050919050565b600060208201905081810360008301526134cd81613255565b9050919050565b600060208201905081810360008301526134ed81613278565b9050919050565b6000602082019050818103600083015261350d8161329b565b9050919050565b6000602082019050818103600083015261352d816132be565b9050919050565b6000602082019050818103600083015261354d816132e1565b9050919050565b6000602082019050818103600083015261356d81613327565b9050919050565b6000602082019050818103600083015261358d8161334a565b9050919050565b60006020820190506135a9600083018461336d565b92915050565b600060a0820190506135c4600083018861336d565b6135d160208301876131c7565b81810360408301526135e3818661314b565b90506135f2606083018561313c565b6135ff608083018461336d565b9695505050505050565b600060408201905061361e600083018561336d565b61362b602083018461336d565b9392505050565b6000602082019050613647600083018461337c565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006136b882613800565b91506136c383613800565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156136f8576136f76138c9565b5b828201905092915050565b600061370e82613800565b915061371983613800565b925082613729576137286138f8565b5b828204905092915050565b600061373f82613800565b915061374a83613800565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613783576137826138c9565b5b828202905092915050565b600061379982613800565b91506137a483613800565b9250828210156137b7576137b66138c9565b5b828203905092915050565b60006137cd826137e0565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061382282613829565b9050919050565b6000613834826137e0565b9050919050565b600061384682613800565b9050919050565b60005b8381101561386b578082015181840152602081019050613850565b8381111561387a576000848401525b50505050565b600061388b82613800565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156138be576138bd6138c9565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f5a65726f2062616c616e63652076696f6c617465642100000000000000000000600082015250565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f4d61782077616c6c65742076696f6c6174656421000000000000000000000000600082015250565b7f426c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b613b01816137c2565b8114613b0c57600080fd5b50565b613b18816137d4565b8114613b2357600080fd5b50565b613b2f81613800565b8114613b3a57600080fd5b5056fea26469706673582212201f986dfa8a013fc518c281d697f6b1e8469555e4dd8ea64724f2a748f362b77764736f6c63430008040033
Deployed Bytecode
0x6080604052600436106102605760003560e01c80637d1db4a511610144578063bf56b371116100b6578063f1d5f5171161007a578063f1d5f51714610915578063f2fde38b1461093e578063f84ba65d14610967578063f887ea4014610990578063fe575a87146109bb578063ffb54a99146109f857610267565b8063bf56b3711461082c578063ca33e64c14610857578063ca987b0e14610882578063da00097d146108ad578063dd62ed3e146108d857610267565b80638da5cb5b116101085780638da5cb5b1461071a5780638e2eee841461074557806395d89b411461076e57806398118cb414610799578063a8aa1b31146107c4578063a9059cbb146107ef57610267565b80637d1db4a514610631578063807c2d9c1461065c578063893d20e814610687578063896648c1146106b25780638b42507f146106dd57610267565b8063313ce567116101dd5780635e562f3b116101a15780635e562f3b14610535578063658d4b7f1461055e5780636b67c4df1461058757806370a08231146105b2578063715018a6146105ef57806375f0a8741461060657610267565b8063313ce5671461043a5780633f4218e01461046557806344de2e4c146104a25780634a74bb02146104cd578063571ac8b0146104f857610267565b806318160ddd1161022457806318160ddd146103515780631df4ccfc1461037c578063220f6696146103a757806323b872dd146103d25780632b112e491461040f57610267565b80630445b6671461026c57806306fdde0314610297578063095ea7b3146102c25780630b78f9c0146102ff5780630d2959801461032857610267565b3661026757005b600080fd5b34801561027857600080fd5b50610281610a23565b60405161028e9190613594565b60405180910390f35b3480156102a357600080fd5b506102ac610a29565b6040516102b99190613452565b60405180910390f35b3480156102ce57600080fd5b506102e960048036038101906102e49190612fa4565b610a66565b6040516102f6919061341c565b60405180910390f35b34801561030b57600080fd5b506103266004803603810190610321919061308a565b610b58565b005b34801561033457600080fd5b5061034f600480360381019061034a9190613038565b610c25565b005b34801561035d57600080fd5b50610366610cd7565b6040516103739190613594565b60405180910390f35b34801561038857600080fd5b50610391610ce1565b60405161039e9190613594565b60405180910390f35b3480156103b357600080fd5b506103bc610ce7565b6040516103c9919061341c565b60405180910390f35b3480156103de57600080fd5b506103f960048036038101906103f49190612f19565b610cfa565b604051610406919061341c565b60405180910390f35b34801561041b57600080fd5b50610424610efa565b6040516104319190613594565b60405180910390f35b34801561044657600080fd5b5061044f610f7c565b60405161045c9190613632565b60405180910390f35b34801561047157600080fd5b5061048c60048036038101906104879190612e8b565b610f85565b604051610499919061341c565b60405180910390f35b3480156104ae57600080fd5b506104b7610fa5565b6040516104c4919061341c565b60405180910390f35b3480156104d957600080fd5b506104e2610fb8565b6040516104ef919061341c565b60405180910390f35b34801561050457600080fd5b5061051f600480360381019061051a9190612e8b565b610fcb565b60405161052c919061341c565b60405180910390f35b34801561054157600080fd5b5061055c60048036038101906105579190613038565b610ffe565b005b34801561056a57600080fd5b5061058560048036038101906105809190612f68565b6110b0565b005b34801561059357600080fd5b5061059c6111a0565b6040516105a99190613594565b60405180910390f35b3480156105be57600080fd5b506105d960048036038101906105d49190612e8b565b6111a6565b6040516105e69190613594565b60405180910390f35b3480156105fb57600080fd5b506106046111ef565b005b34801561061257600080fd5b5061061b611342565b60405161062891906133a0565b60405180910390f35b34801561063d57600080fd5b50610646611368565b6040516106539190613594565b60405180910390f35b34801561066857600080fd5b5061067161136e565b60405161067e9190613594565b60405180910390f35b34801561069357600080fd5b5061069c611374565b6040516106a991906133a0565b60405180910390f35b3480156106be57600080fd5b506106c7611383565b6040516106d4919061341c565b60405180910390f35b3480156106e957600080fd5b5061070460048036038101906106ff9190612e8b565b611396565b604051610711919061341c565b60405180910390f35b34801561072657600080fd5b5061072f6113b6565b60405161073c91906133a0565b60405180910390f35b34801561075157600080fd5b5061076c60048036038101906107679190612fe0565b6113df565b005b34801561077a57600080fd5b5061078361153d565b6040516107909190613452565b60405180910390f35b3480156107a557600080fd5b506107ae61157a565b6040516107bb9190613594565b60405180910390f35b3480156107d057600080fd5b506107d9611580565b6040516107e691906133a0565b60405180910390f35b3480156107fb57600080fd5b5061081660048036038101906108119190612fa4565b6115a6565b604051610823919061341c565b60405180910390f35b34801561083857600080fd5b506108416115bb565b60405161084e9190613594565b60405180910390f35b34801561086357600080fd5b5061086c6115c1565b60405161087991906133a0565b60405180910390f35b34801561088e57600080fd5b506108976115e7565b6040516108a49190613594565b60405180910390f35b3480156108b957600080fd5b506108c26115ed565b6040516108cf919061341c565b60405180910390f35b3480156108e457600080fd5b506108ff60048036038101906108fa9190612edd565b611600565b60405161090c9190613594565b60405180910390f35b34801561092157600080fd5b5061093c60048036038101906109379190613061565b611687565b005b34801561094a57600080fd5b5061096560048036038101906109609190612e8b565b611726565b005b34801561097357600080fd5b5061098e60048036038101906109899190612f68565b6118e8565b005b34801561099c57600080fd5b506109a56119d8565b6040516109b29190613437565b60405180910390f35b3480156109c757600080fd5b506109e260048036038101906109dd9190612e8b565b6119fe565b6040516109ef919061341c565b60405180910390f35b348015610a0457600080fd5b50610a0d611a1e565b604051610a1a919061341c565b60405180910390f35b60185481565b60606040518060400160405280600881526020017f534146454d4f4f4e000000000000000000000000000000000000000000000000815250905090565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b469190613594565b60405180910390a36001905092915050565b610b60611a8f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be490613534565b60405180910390fd5b81600c8190555080600d81905550610c12600d54600c54611a3190919063ffffffff16565b600e81905550600e54600f819055505050565b610c2d611a8f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb190613534565b60405180910390fd5b80601560006101000a81548160ff02191690831515021790555050565b6000600254905090565b600e5481565b601760009054906101000a900460ff1681565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610ee657610e65826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a979092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610ef1848484611afb565b90509392505050565b6000610f77610f2a600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166111a6565b610f69610f58600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166111a6565b60025461231290919063ffffffff16565b61231290919063ffffffff16565b905090565b60006012905090565b600a6020528060005260406000206000915054906101000a900460ff1681565b600760149054906101000a900460ff1681565b601760019054906101000a900460ff1681565b6000610ff7827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610a66565b9050919050565b611006611a8f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108a90613534565b60405180910390fd5b80601560016101000a81548160ff02191690831515021790555050565b6110b8611a8f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611145576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113c90613534565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600d5481565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111f7611a8f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127b90613534565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b60045481565b600061137e6113b6565b905090565b601560019054906101000a900460ff1681565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6113e7611a8f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611474576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146b90613534565b60405180910390fd5b60005b838390508110156115375781601660008686858181106114c0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906114d59190612e8b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508061153090613880565b9050611477565b50505050565b60606040518060400160405280600381526020017f24534d0000000000000000000000000000000000000000000000000000000000815250905090565b600c5481565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006115b3338484611afb565b905092915050565b60145481565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b601760029054906101000a900460ff1681565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61168f611a8f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461171c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171390613534565b60405180910390fd5b8060048190555050565b61172e611a8f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b290613534565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561182b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182290613494565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6118f0611a8f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461197d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197490613534565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60166020528060005260406000206000915054906101000a900460ff1681565b601560009054906101000a900460ff1681565b6000808284611a4091906136ad565b905083811015611a85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7c906134b4565b60405180910390fd5b8091505092915050565b600033905090565b6000838311158290611adf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad69190613452565b60405180910390fd5b5060008385611aee919061378e565b9050809150509392505050565b6000601760009054906101000a900460ff1615611b2457611b1d84848461235c565b905061230b565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611bc85750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c1d57601560009054906101000a900460ff16611c1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c13906134f4565b60405180910390fd5b5b60035482111580611c775750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611cb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cad90613474565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611d215750601760009054906101000a900460ff16155b8015611d395750601760019054906101000a900460ff165b8015611d865750601854600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b15611d9457611d9361252f565b5b611d9c612af2565b158015611df65750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15611e86576000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611e7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e74906134d4565b60405180910390fd5b611e85612aff565b5b601560019054906101000a900460ff1615611f7f57601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f3f5750601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7590613574565b60405180910390fd5b5b612008826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a979092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120b15750600760149054906101000a900460ff165b1561214d5760045461210b83600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a3190919063ffffffff16565b111561214c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214390613554565b60405180910390fd5b5b6000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121f35750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6121fd5782612209565b612208858585612b08565b5b905061225d81600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a3190919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516122fd9190613594565b60405180910390a360019150505b9392505050565b600061235483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a97565b905092915050565b60006123e7826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a979092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061247c82600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a3190919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161251c9190613594565b60405180910390a3600190509392505050565b6001601760006101000a81548160ff0219169083151502179055506000600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006125cc60026125be600e546125b0600c5487612cb090919063ffffffff16565b612d2b90919063ffffffff16565b612d2b90919063ffffffff16565b905060006125e3828461231290919063ffffffff16565b90506000600267ffffffffffffffff811115612628577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156126565781602001602082028036833780820191505090505b5090503081600081518110612694577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561273657600080fd5b505afa15801561274a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061276e9190612eb4565b816001815181106127a8577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016128469594939291906135af565b600060405180830381600087803b15801561286057600080fd5b505af1158015612874573d6000803e3d6000fd5b50505050600047905060006128a96128986002600c54612d2b90919063ffffffff16565b600e5461231290919063ffffffff16565b905060006128e760026128d9846128cb600c5488612cb090919063ffffffff16565b612d2b90919063ffffffff16565b612d2b90919063ffffffff16565b9050600061291283612904600d5487612cb090919063ffffffff16565b612d2b90919063ffffffff16565b90506000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682617530906040516129609061338b565b600060405180830381858888f193505050503d806000811461299e576040519150601f19603f3d011682016040523d82523d6000602084013e6129a3565b606091505b50509050600090506000881115612acc57601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308b600080601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612a3d969594939291906133bb565b6060604051808303818588803b158015612a5657600080fd5b505af1158015612a6a573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612a8f91906130c6565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b45068389604051612ac3929190613609565b60405180910390a15b5050505050505050506000601760006101000a81548160ff021916908315150217905550565b6000806014541415905090565b43601481905550565b6000808373ffffffffffffffffffffffffffffffffffffffff16601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b6857600e54612b6c565b600f545b90506000612b966064612b888487612cb090919063ffffffff16565b612d2b90919063ffffffff16565b9050612bea81600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a3190919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c8a9190613594565b60405180910390a3612ca5818561231290919063ffffffff16565b925050509392505050565b600080831415612cc35760009050612d25565b60008284612cd19190613734565b9050828482612ce09190613703565b14612d20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1790613514565b60405180910390fd5b809150505b92915050565b6000612d6d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612d75565b905092915050565b60008083118290612dbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612db39190613452565b60405180910390fd5b5060008385612dcb9190613703565b9050809150509392505050565b600081359050612de781613af8565b92915050565b600081519050612dfc81613af8565b92915050565b60008083601f840112612e1457600080fd5b8235905067ffffffffffffffff811115612e2d57600080fd5b602083019150836020820283011115612e4557600080fd5b9250929050565b600081359050612e5b81613b0f565b92915050565b600081359050612e7081613b26565b92915050565b600081519050612e8581613b26565b92915050565b600060208284031215612e9d57600080fd5b6000612eab84828501612dd8565b91505092915050565b600060208284031215612ec657600080fd5b6000612ed484828501612ded565b91505092915050565b60008060408385031215612ef057600080fd5b6000612efe85828601612dd8565b9250506020612f0f85828601612dd8565b9150509250929050565b600080600060608486031215612f2e57600080fd5b6000612f3c86828701612dd8565b9350506020612f4d86828701612dd8565b9250506040612f5e86828701612e61565b9150509250925092565b60008060408385031215612f7b57600080fd5b6000612f8985828601612dd8565b9250506020612f9a85828601612e4c565b9150509250929050565b60008060408385031215612fb757600080fd5b6000612fc585828601612dd8565b9250506020612fd685828601612e61565b9150509250929050565b600080600060408486031215612ff557600080fd5b600084013567ffffffffffffffff81111561300f57600080fd5b61301b86828701612e02565b9350935050602061302e86828701612e4c565b9150509250925092565b60006020828403121561304a57600080fd5b600061305884828501612e4c565b91505092915050565b60006020828403121561307357600080fd5b600061308184828501612e61565b91505092915050565b6000806040838503121561309d57600080fd5b60006130ab85828601612e61565b92505060206130bc85828601612e61565b9150509250929050565b6000806000606084860312156130db57600080fd5b60006130e986828701612e76565b93505060206130fa86828701612e76565b925050604061310b86828701612e76565b9150509250925092565b6000613121838361312d565b60208301905092915050565b613136816137c2565b82525050565b613145816137c2565b82525050565b60006131568261365d565b6131608185613680565b935061316b8361364d565b8060005b8381101561319c5781516131838882613115565b975061318e83613673565b92505060018101905061316f565b5085935050505092915050565b6131b2816137d4565b82525050565b6131c181613817565b82525050565b6131d08161383b565b82525050565b60006131e182613668565b6131eb818561369c565b93506131fb81856020860161384d565b61320481613927565b840191505092915050565b600061321c60118361369c565b915061322782613938565b602082019050919050565b600061323f60268361369c565b915061324a82613961565b604082019050919050565b6000613262601b8361369c565b915061326d826139b0565b602082019050919050565b600061328560168361369c565b9150613290826139d9565b602082019050919050565b60006132a860148361369c565b91506132b382613a02565b602082019050919050565b60006132cb60218361369c565b91506132d682613a2b565b604082019050919050565b60006132ee60208361369c565b91506132f982613a7a565b602082019050919050565b6000613311600083613691565b915061331c82613aa3565b600082019050919050565b600061333460148361369c565b915061333f82613aa6565b602082019050919050565b6000613357600b8361369c565b915061336282613acf565b602082019050919050565b61337681613800565b82525050565b6133858161380a565b82525050565b600061339682613304565b9150819050919050565b60006020820190506133b5600083018461313c565b92915050565b600060c0820190506133d0600083018961313c565b6133dd602083018861336d565b6133ea60408301876131c7565b6133f760608301866131c7565b613404608083018561313c565b61341160a083018461336d565b979650505050505050565b600060208201905061343160008301846131a9565b92915050565b600060208201905061344c60008301846131b8565b92915050565b6000602082019050818103600083015261346c81846131d6565b905092915050565b6000602082019050818103600083015261348d8161320f565b9050919050565b600060208201905081810360008301526134ad81613232565b9050919050565b600060208201905081810360008301526134cd81613255565b9050919050565b600060208201905081810360008301526134ed81613278565b9050919050565b6000602082019050818103600083015261350d8161329b565b9050919050565b6000602082019050818103600083015261352d816132be565b9050919050565b6000602082019050818103600083015261354d816132e1565b9050919050565b6000602082019050818103600083015261356d81613327565b9050919050565b6000602082019050818103600083015261358d8161334a565b9050919050565b60006020820190506135a9600083018461336d565b92915050565b600060a0820190506135c4600083018861336d565b6135d160208301876131c7565b81810360408301526135e3818661314b565b90506135f2606083018561313c565b6135ff608083018461336d565b9695505050505050565b600060408201905061361e600083018561336d565b61362b602083018461336d565b9392505050565b6000602082019050613647600083018461337c565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006136b882613800565b91506136c383613800565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156136f8576136f76138c9565b5b828201905092915050565b600061370e82613800565b915061371983613800565b925082613729576137286138f8565b5b828204905092915050565b600061373f82613800565b915061374a83613800565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613783576137826138c9565b5b828202905092915050565b600061379982613800565b91506137a483613800565b9250828210156137b7576137b66138c9565b5b828203905092915050565b60006137cd826137e0565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061382282613829565b9050919050565b6000613834826137e0565b9050919050565b600061384682613800565b9050919050565b60005b8381101561386b578082015181840152602081019050613850565b8381111561387a576000848401525b50505050565b600061388b82613800565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156138be576138bd6138c9565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f5a65726f2062616c616e63652076696f6c617465642100000000000000000000600082015250565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f4d61782077616c6c65742076696f6c6174656421000000000000000000000000600082015250565b7f426c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b613b01816137c2565b8114613b0c57600080fd5b50565b613b18816137d4565b8114613b2357600080fd5b50565b613b2f81613800565b8114613b3a57600080fd5b5056fea26469706673582212201f986dfa8a013fc518c281d697f6b1e8469555e4dd8ea64724f2a748f362b77764736f6c63430008040033
Deployed Bytecode Sourcemap
4951:9525:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6391:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7604:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8460:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13879:257;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13511:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7866:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5868:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6255:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9667:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8296:156;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7780:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5684:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5530:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6290:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8684:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14148:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13617:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5828:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8046:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4544:148;;;;;;;;;;;;;:::i;:::-;;5990:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5131:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5180:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7960:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6161:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5734:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4330:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14261:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7690:82;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5790:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6063:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9165:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6091:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5947:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5902;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6337:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8157:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13402:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4700:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13744:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6029:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6201:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6123:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6391:54;;;;:::o;7604:78::-;7652:13;7675:5;;;;;;;;;;;;;;;;;7668:12;;7604:78;:::o;8460:216::-;8535:4;8587:6;8552:11;:23;8564:10;8552:23;;;;;;;;;;;;;;;:32;8576:7;8552:32;;;;;;;;;;;;;;;:41;;;;8630:7;8609:37;;8618:10;8609:37;;;8639:6;8609:37;;;;;;:::i;:::-;;;;;;;;8664:4;8657:11;;8460:216;;;;:::o;13879:257::-;4467:12;:10;:12::i;:::-;4457:22;;:6;;;;;;;;;;:22;;;4449:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13985:9:::1;13970:12;:24;;;;14020:15;14005:12;:30;;;;14059;14076:12;;14059;;:16;;:30;;;;:::i;:::-;14048:8;:41;;;;14120:8;;14100:17;:28;;;;13879:257:::0;;:::o;13511:98::-;4467:12;:10;:12::i;:::-;4457:22;;:6;;;;;;;;;;:22;;;4449:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13592:9:::1;13578:11;;:23;;;;;;;;;;;;;;;;;;13511:98:::0;:::o;7866:86::-;7921:7;7938:12;;7931:19;;7866:86;:::o;5868:27::-;;;;:::o;6255:28::-;;;;;;;;;;;;;:::o;9667:370::-;9767:4;9823:17;9788:11;:19;9800:6;9788:19;;;;;;;;;;;;;;;:31;9808:10;9788:31;;;;;;;;;;;;;;;;:52;9784:188;;9891:69;9927:6;9891:69;;;;;;;;;;;;;;;;;:11;:19;9903:6;9891:19;;;;;;;;;;;;;;;:31;9911:10;9891:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;9857:11;:19;9869:6;9857:19;;;;;;;;;;;;;;;:31;9877:10;9857:31;;;;;;;;;;;;;;;:103;;;;9784:188;9989:40;10003:6;10011:9;10022:6;9989:13;:40::i;:::-;9982:47;;9667:370;;;;;:::o;8296:156::-;8349:7;8376:68;8421:22;8431:11;;;;;;;;;;;8421:9;:22::i;:::-;8376:40;8393:22;8403:11;;;;;;;;;;;8393:9;:22::i;:::-;8376:12;;:16;;:40;;;;:::i;:::-;:44;;:68;;;;:::i;:::-;8369:75;;8296:156;:::o;7780:78::-;7832:5;5056:2;7840:16;;7780:78;:::o;5684:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;5530:33::-;;;;;;;;;;;;;:::o;6290:40::-;;;;;;;;;;;;;:::o;8684:122::-;8739:4;8763:35;8771:7;8780:17;8763:7;:35::i;:::-;8756:42;;8684:122;;;:::o;14148:95::-;4467:12;:10;:12::i;:::-;4457:22;;:6;;;;;;;;;;:22;;;4449:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14228:7:::1;14212:13;;:23;;;;;;;;;;;;;;;;;;14148:95:::0;:::o;13617:119::-;4467:12;:10;:12::i;:::-;4457:22;;:6;;;;;;;;;;:22;;;4449:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13722:6:::1;13700:11;:19;13712:6;13700:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;13617:119:::0;;:::o;5828:31::-;;;;:::o;8046:103::-;8112:7;8129:9;:18;8139:7;8129:18;;;;;;;;;;;;;;;;8122:25;;8046:103;;;:::o;4544:148::-;4467:12;:10;:12::i;:::-;4457:22;;:6;;;;;;;;;;:22;;;4449:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4651:1:::1;4614:40;;4635:6;::::0;::::1;;;;;;;;4614:40;;;;;;;;;;;;4682:1;4665:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;4544:148::o:0;5990:30::-;;;;;;;;;;;;;:::o;5131:42::-;;;;:::o;5180:40::-;;;;:::o;7960:78::-;8012:7;8029;:5;:7::i;:::-;8022:14;;7960:78;:::o;6161:33::-;;;;;;;;;;;;;:::o;5734:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;4330:79::-;4368:7;4395:6;;;;;;;;;;;4388:13;;4330:79;:::o;14261:210::-;4467:12;:10;:12::i;:::-;4457:22;;:6;;;;;;;;;;:22;;;4449:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14363:9:::1;14358:106;14378:9;;:16;;14374:1;:20;14358:106;;;14446:6;14416:13;:27;14430:9;;14440:1;14430:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14416:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;14396:3;;;;:::i;:::-;;;14358:106;;;;14261:210:::0;;;:::o;7690:82::-;7740:13;7763:7;;;;;;;;;;;;;;;;;7756:14;;7690:82;:::o;5790:31::-;;;;:::o;6063:19::-;;;;;;;;;;;;;:::o;9165:156::-;9245:4;9269:44;9283:10;9295:9;9306:6;9269:13;:44::i;:::-;9262:51;;9165:156;;;;:::o;6091:25::-;;;;:::o;5947:36::-;;;;;;;;;;;;;:::o;5902:::-;;;;:::o;6337:45::-;;;;;;;;;;;;;:::o;8157:131::-;8241:7;8258:11;:19;8270:6;8258:19;;;;;;;;;;;;;;;:28;8278:7;8258:28;;;;;;;;;;;;;;;;8251:35;;8157:131;;;;:::o;13402:101::-;4467:12;:10;:12::i;:::-;4457:22;;:6;;;;;;;;;;:22;;;4449:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13487:8:::1;13474:10;:21;;;;13402:101:::0;:::o;4700:244::-;4467:12;:10;:12::i;:::-;4457:22;;:6;;;;;;;;;;:22;;;4449:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4809:1:::1;4789:22;;:8;:22;;;;4781:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;4899:8;4870:38;;4891:6;::::0;::::1;;;;;;;;4870:38;;;;;;;;;;;;4928:8;4919:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;4700:244:::0;:::o;13744:127::-;4467:12;:10;:12::i;:::-;4457:22;;:6;;;;;;;;;;:22;;;4449:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13857:6:::1;13831:15;:23;13847:6;13831:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;13744:127:::0;;:::o;6029:27::-;;;;;;;;;;;;;:::o;6201:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;6123:31::-;;;;;;;;;;;;;:::o;2542:179::-;2600:7;2620:9;2636:1;2632;:5;;;;:::i;:::-;2620:17;;2661:1;2656;:6;;2648:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2712:1;2705:8;;;2542:179;;;;:::o;3670:115::-;3723:15;3766:10;3751:26;;3670:115;:::o;2873:190::-;2959:7;2992:1;2987;:6;;2995:12;2979:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3019:9;3035:1;3031;:5;;;;:::i;:::-;3019:17;;3054:1;3047:8;;;2873:190;;;;;:::o;10045:1447::-;10137:4;10158:16;;;;;;;;;;;10154:73;;;10184:41;10199:6;10207:9;10218:6;10184:14;:41::i;:::-;10177:48;;;;10154:73;10241:14;:22;10256:6;10241:22;;;;;;;;;;;;;;;;;;;;;;;;;10240:23;:53;;;;;10268:14;:25;10283:9;10268:25;;;;;;;;;;;;;;;;;;;;;;;;;10267:26;10240:53;10237:128;;;10317:11;;;;;;;;;;;10309:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;10237:128;10395:12;;10385:6;:22;;:49;;;;10411:15;:23;10427:6;10411:23;;;;;;;;;;;;;;;;;;;;;;;;;10385:49;10377:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;10485:4;;;;;;;;;;;10471:18;;:10;:18;;;;:39;;;;;10494:16;;;;;;;;;;;10493:17;10471:39;:64;;;;;10514:21;;;;;;;;;;;10471:64;:109;;;;;10567:13;;10539:9;:24;10557:4;10539:24;;;;;;;;;;;;;;;;:41;;10471:109;10467:141;;;10583:23;:21;:23::i;:::-;10467:141;10623:10;:8;:10::i;:::-;10622:11;:32;;;;;10650:4;;;;;;;;;;;10637:17;;:9;:17;;;10622:32;10618:144;;;10699:1;10679:9;:17;10689:6;10679:17;;;;;;;;;;;;;;;;:21;10671:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;10742:8;:6;:8::i;:::-;10618:144;10804:13;;;;;;;;;;;10800:120;;;10843:13;:21;10857:6;10843:21;;;;;;;;;;;;;;;;;;;;;;;;;10842:22;:51;;;;;10869:13;:24;10883:9;10869:24;;;;;;;;;;;;;;;;;;;;;;;;;10868:25;10842:51;10834:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;10800:120;10980:53;11002:6;10980:53;;;;;;;;;;;;;;;;;:9;:17;10990:6;10980:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;10960:9;:17;10970:6;10960:17;;;;;;;;;;;;;;;:73;;;;11051:15;:26;11067:9;11051:26;;;;;;;;;;;;;;;;;;;;;;;;;11050:27;:45;;;;;11081:14;;;;;;;;;;;11050:45;11046:157;;;11156:10;;11120:32;11145:6;11120:9;:20;11130:9;11120:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;:46;;11112:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;11046:157;11215:19;11238:11;:19;11250:6;11238:19;;;;;;;;;;;;;;;;;;;;;;;;;11237:20;:47;;;;;11262:11;:22;11274:9;11262:22;;;;;;;;;;;;;;;;;;;;;;;;;11261:23;11237:47;:96;;11327:6;11237:96;;;11287:37;11298:6;11306:9;11317:6;11287:10;:37::i;:::-;11237:96;11215:118;;11367:37;11392:11;11367:9;:20;11377:9;11367:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;11344:9;:20;11354:9;11344:20;;;;;;;;;;;;;;;:60;;;;11439:9;11422:40;;11431:6;11422:40;;;11450:11;11422:40;;;;;;:::i;:::-;;;;;;;;11480:4;11473:11;;;10045:1447;;;;;;:::o;2729:136::-;2787:7;2814:43;2818:1;2821;2814:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2807:50;;2729:136;;;;:::o;9329:330::-;9422:4;9459:53;9481:6;9459:53;;;;;;;;;;;;;;;;;:9;:17;9469:6;9459:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;9439:9;:17;9449:6;9439:17;;;;;;;;;;;;;;;:73;;;;9546:32;9571:6;9546:9;:20;9556:9;9546:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;9523:9;:20;9533:9;9523:20;;;;;;;;;;;;;;;:55;;;;9611:9;9594:35;;9603:6;9594:35;;;9622:6;9594:35;;;;;;:::i;:::-;;;;;;;;9647:4;9640:11;;9329:330;;;;;:::o;11940:1419::-;6569:4;6550:16;;:23;;;;;;;;;;;;;;;;;;12005::::1;12031:9;:24;12049:4;12031:24;;;;;;;;;;;;;;;;12005:50;;12066:23;12092:54;12144:1;12092:47;12130:8;;12092:33;12112:12;;12092:15;:19;;:33;;;;:::i;:::-;:37;;:47;;;;:::i;:::-;:51;;:54;;;;:::i;:::-;12066:80;;12157:20;12180:36;12200:15;12180;:19;;:36;;;;:::i;:::-;12157:59;;12229:21;12267:1;12253:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12229:40;;12298:4;12280;12285:1;12280:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;12324:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12314:4;12319:1;12314:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;12350:6;;;;;;;;;;;:57;;;12422:12;12449:1;12465:4;12492;12512:15;12350:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12551:17;12571:21;12551:41;;12605:19;12627:33;12640:19;12657:1;12640:12;;:16;;:19;;;;:::i;:::-;12627:8;;:12;;:33;;;;:::i;:::-;12605:55;;12673:26;12702:51;12751:1;12702:44;12734:11;12702:27;12716:12;;12702:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;12673:80;;12764:26;12793:44;12825:11;12793:27;12807:12;;12793:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;12764:73;;12851:15;12879;;;;;;;;;;;12871:29;;12909:18;12935:5;12871:74;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12850:95;;;12969:5;12956:18;;13009:1;12991:15;:19;12987:365;;;13027:6;;;;;;;;;;;:22;;;13058:18;13104:4;13128:15;13162:1;13182::::0;13202:21:::1;;;;;;;;;;;13242:15;13027:245;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13292:48;13304:18;13324:15;13292:48;;;;;;;:::i;:::-;;;;;;;;12987:365;6584:1;;;;;;;;;6615:5:::0;6596:16;;:24;;;;;;;;;;;;;;;;;;11940:1419::o;8814:90::-;8857:4;8895:1;8881:10;;:15;;8874:22;;8814:90;:::o;8912:71::-;8963:12;8950:10;:25;;;;8912:71::o;11500:432::-;11589:7;11609:21;11641:9;11633:17;;:4;;;;;;;;;;;:17;;;:48;;11673:8;;11633:48;;;11653:17;;11633:48;11609:72;;11692:17;11712:34;11742:3;11712:25;11723:13;11712:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;11692:54;;11786:39;11815:9;11786;:24;11804:4;11786:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;11759:9;:24;11777:4;11759:24;;;;;;;;;;;;;;;:66;;;;11866:4;11841:42;;11850:6;11841:42;;;11873:9;11841:42;;;;;;:::i;:::-;;;;;;;;11903:21;11914:9;11903:6;:10;;:21;;;;:::i;:::-;11896:28;;;;11500:432;;;;;:::o;3071:222::-;3129:7;3158:1;3153;:6;3149:23;;;3169:1;3162:8;;;;3149:23;3182:9;3198:1;3194;:5;;;;:::i;:::-;3182:17;;3227:1;3222;3218;:5;;;;:::i;:::-;:10;3210:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3284:1;3277:8;;;3071:222;;;;;:::o;3301:132::-;3359:7;3386:39;3390:1;3393;3386:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3379:46;;3301:132;;;;:::o;3441:189::-;3527:7;3559:1;3555;:5;3562:12;3547:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3586:9;3602:1;3598;:5;;;;:::i;:::-;3586:17;;3621:1;3614:8;;;3441:189;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;318:367::-;391:8;401:6;451:3;444:4;436:6;432:17;428:27;418:2;;469:1;466;459:12;418:2;505:6;492:20;482:30;;535:18;527:6;524:30;521:2;;;567:1;564;557:12;521:2;604:4;596:6;592:17;580:29;;658:3;650:4;642:6;638:17;628:8;624:32;621:41;618:2;;;675:1;672;665:12;618:2;408:277;;;;;:::o;691:133::-;734:5;772:6;759:20;750:29;;788:30;812:5;788:30;:::i;:::-;740:84;;;;:::o;830:139::-;876:5;914:6;901:20;892:29;;930:33;957:5;930:33;:::i;:::-;882:87;;;;:::o;975:143::-;1032:5;1063:6;1057:13;1048:22;;1079:33;1106:5;1079:33;:::i;:::-;1038:80;;;;:::o;1124:262::-;1183:6;1232:2;1220:9;1211:7;1207:23;1203:32;1200:2;;;1248:1;1245;1238:12;1200:2;1291:1;1316:53;1361:7;1352:6;1341:9;1337:22;1316:53;:::i;:::-;1306:63;;1262:117;1190:196;;;;:::o;1392:284::-;1462:6;1511:2;1499:9;1490:7;1486:23;1482:32;1479:2;;;1527:1;1524;1517:12;1479:2;1570:1;1595:64;1651:7;1642:6;1631:9;1627:22;1595:64;:::i;:::-;1585:74;;1541:128;1469:207;;;;:::o;1682:407::-;1750:6;1758;1807:2;1795:9;1786:7;1782:23;1778:32;1775:2;;;1823:1;1820;1813:12;1775:2;1866:1;1891:53;1936:7;1927:6;1916:9;1912:22;1891:53;:::i;:::-;1881:63;;1837:117;1993:2;2019:53;2064:7;2055:6;2044:9;2040:22;2019:53;:::i;:::-;2009:63;;1964:118;1765:324;;;;;:::o;2095:552::-;2172:6;2180;2188;2237:2;2225:9;2216:7;2212:23;2208:32;2205:2;;;2253:1;2250;2243:12;2205:2;2296:1;2321:53;2366:7;2357:6;2346:9;2342:22;2321:53;:::i;:::-;2311:63;;2267:117;2423:2;2449:53;2494:7;2485:6;2474:9;2470:22;2449:53;:::i;:::-;2439:63;;2394:118;2551:2;2577:53;2622:7;2613:6;2602:9;2598:22;2577:53;:::i;:::-;2567:63;;2522:118;2195:452;;;;;:::o;2653:401::-;2718:6;2726;2775:2;2763:9;2754:7;2750:23;2746:32;2743:2;;;2791:1;2788;2781:12;2743:2;2834:1;2859:53;2904:7;2895:6;2884:9;2880:22;2859:53;:::i;:::-;2849:63;;2805:117;2961:2;2987:50;3029:7;3020:6;3009:9;3005:22;2987:50;:::i;:::-;2977:60;;2932:115;2733:321;;;;;:::o;3060:407::-;3128:6;3136;3185:2;3173:9;3164:7;3160:23;3156:32;3153:2;;;3201:1;3198;3191:12;3153:2;3244:1;3269:53;3314:7;3305:6;3294:9;3290:22;3269:53;:::i;:::-;3259:63;;3215:117;3371:2;3397:53;3442:7;3433:6;3422:9;3418:22;3397:53;:::i;:::-;3387:63;;3342:118;3143:324;;;;;:::o;3473:564::-;3565:6;3573;3581;3630:2;3618:9;3609:7;3605:23;3601:32;3598:2;;;3646:1;3643;3636:12;3598:2;3717:1;3706:9;3702:17;3689:31;3747:18;3739:6;3736:30;3733:2;;;3779:1;3776;3769:12;3733:2;3815:80;3887:7;3878:6;3867:9;3863:22;3815:80;:::i;:::-;3797:98;;;;3660:245;3944:2;3970:50;4012:7;4003:6;3992:9;3988:22;3970:50;:::i;:::-;3960:60;;3915:115;3588:449;;;;;:::o;4043:256::-;4099:6;4148:2;4136:9;4127:7;4123:23;4119:32;4116:2;;;4164:1;4161;4154:12;4116:2;4207:1;4232:50;4274:7;4265:6;4254:9;4250:22;4232:50;:::i;:::-;4222:60;;4178:114;4106:193;;;;:::o;4305:262::-;4364:6;4413:2;4401:9;4392:7;4388:23;4384:32;4381:2;;;4429:1;4426;4419:12;4381:2;4472:1;4497:53;4542:7;4533:6;4522:9;4518:22;4497:53;:::i;:::-;4487:63;;4443:117;4371:196;;;;:::o;4573:407::-;4641:6;4649;4698:2;4686:9;4677:7;4673:23;4669:32;4666:2;;;4714:1;4711;4704:12;4666:2;4757:1;4782:53;4827:7;4818:6;4807:9;4803:22;4782:53;:::i;:::-;4772:63;;4728:117;4884:2;4910:53;4955:7;4946:6;4935:9;4931:22;4910:53;:::i;:::-;4900:63;;4855:118;4656:324;;;;;:::o;4986:596::-;5074:6;5082;5090;5139:2;5127:9;5118:7;5114:23;5110:32;5107:2;;;5155:1;5152;5145:12;5107:2;5198:1;5223:64;5279:7;5270:6;5259:9;5255:22;5223:64;:::i;:::-;5213:74;;5169:128;5336:2;5362:64;5418:7;5409:6;5398:9;5394:22;5362:64;:::i;:::-;5352:74;;5307:129;5475:2;5501:64;5557:7;5548:6;5537:9;5533:22;5501:64;:::i;:::-;5491:74;;5446:129;5097:485;;;;;:::o;5588:179::-;5657:10;5678:46;5720:3;5712:6;5678:46;:::i;:::-;5756:4;5751:3;5747:14;5733:28;;5668:99;;;;:::o;5773:108::-;5850:24;5868:5;5850:24;:::i;:::-;5845:3;5838:37;5828:53;;:::o;5887:118::-;5974:24;5992:5;5974:24;:::i;:::-;5969:3;5962:37;5952:53;;:::o;6041:732::-;6160:3;6189:54;6237:5;6189:54;:::i;:::-;6259:86;6338:6;6333:3;6259:86;:::i;:::-;6252:93;;6369:56;6419:5;6369:56;:::i;:::-;6448:7;6479:1;6464:284;6489:6;6486:1;6483:13;6464:284;;;6565:6;6559:13;6592:63;6651:3;6636:13;6592:63;:::i;:::-;6585:70;;6678:60;6731:6;6678:60;:::i;:::-;6668:70;;6524:224;6511:1;6508;6504:9;6499:14;;6464:284;;;6468:14;6764:3;6757:10;;6165:608;;;;;;;:::o;6779:109::-;6860:21;6875:5;6860:21;:::i;:::-;6855:3;6848:34;6838:50;;:::o;6894:173::-;7002:58;7054:5;7002:58;:::i;:::-;6997:3;6990:71;6980:87;;:::o;7073:147::-;7168:45;7207:5;7168:45;:::i;:::-;7163:3;7156:58;7146:74;;:::o;7226:364::-;7314:3;7342:39;7375:5;7342:39;:::i;:::-;7397:71;7461:6;7456:3;7397:71;:::i;:::-;7390:78;;7477:52;7522:6;7517:3;7510:4;7503:5;7499:16;7477:52;:::i;:::-;7554:29;7576:6;7554:29;:::i;:::-;7549:3;7545:39;7538:46;;7318:272;;;;;:::o;7596:366::-;7738:3;7759:67;7823:2;7818:3;7759:67;:::i;:::-;7752:74;;7835:93;7924:3;7835:93;:::i;:::-;7953:2;7948:3;7944:12;7937:19;;7742:220;;;:::o;7968:366::-;8110:3;8131:67;8195:2;8190:3;8131:67;:::i;:::-;8124:74;;8207:93;8296:3;8207:93;:::i;:::-;8325:2;8320:3;8316:12;8309:19;;8114:220;;;:::o;8340:366::-;8482:3;8503:67;8567:2;8562:3;8503:67;:::i;:::-;8496:74;;8579:93;8668:3;8579:93;:::i;:::-;8697:2;8692:3;8688:12;8681:19;;8486:220;;;:::o;8712:366::-;8854:3;8875:67;8939:2;8934:3;8875:67;:::i;:::-;8868:74;;8951:93;9040:3;8951:93;:::i;:::-;9069:2;9064:3;9060:12;9053:19;;8858:220;;;:::o;9084:366::-;9226:3;9247:67;9311:2;9306:3;9247:67;:::i;:::-;9240:74;;9323:93;9412:3;9323:93;:::i;:::-;9441:2;9436:3;9432:12;9425:19;;9230:220;;;:::o;9456:366::-;9598:3;9619:67;9683:2;9678:3;9619:67;:::i;:::-;9612:74;;9695:93;9784:3;9695:93;:::i;:::-;9813:2;9808:3;9804:12;9797:19;;9602:220;;;:::o;9828:366::-;9970:3;9991:67;10055:2;10050:3;9991:67;:::i;:::-;9984:74;;10067:93;10156:3;10067:93;:::i;:::-;10185:2;10180:3;10176:12;10169:19;;9974:220;;;:::o;10200:398::-;10359:3;10380:83;10461:1;10456:3;10380:83;:::i;:::-;10373:90;;10472:93;10561:3;10472:93;:::i;:::-;10590:1;10585:3;10581:11;10574:18;;10363:235;;;:::o;10604:366::-;10746:3;10767:67;10831:2;10826:3;10767:67;:::i;:::-;10760:74;;10843:93;10932:3;10843:93;:::i;:::-;10961:2;10956:3;10952:12;10945:19;;10750:220;;;:::o;10976:366::-;11118:3;11139:67;11203:2;11198:3;11139:67;:::i;:::-;11132:74;;11215:93;11304:3;11215:93;:::i;:::-;11333:2;11328:3;11324:12;11317:19;;11122:220;;;:::o;11348:118::-;11435:24;11453:5;11435:24;:::i;:::-;11430:3;11423:37;11413:53;;:::o;11472:112::-;11555:22;11571:5;11555:22;:::i;:::-;11550:3;11543:35;11533:51;;:::o;11590:379::-;11774:3;11796:147;11939:3;11796:147;:::i;:::-;11789:154;;11960:3;11953:10;;11778:191;;;:::o;11975:222::-;12068:4;12106:2;12095:9;12091:18;12083:26;;12119:71;12187:1;12176:9;12172:17;12163:6;12119:71;:::i;:::-;12073:124;;;;:::o;12203:807::-;12452:4;12490:3;12479:9;12475:19;12467:27;;12504:71;12572:1;12561:9;12557:17;12548:6;12504:71;:::i;:::-;12585:72;12653:2;12642:9;12638:18;12629:6;12585:72;:::i;:::-;12667:80;12743:2;12732:9;12728:18;12719:6;12667:80;:::i;:::-;12757;12833:2;12822:9;12818:18;12809:6;12757:80;:::i;:::-;12847:73;12915:3;12904:9;12900:19;12891:6;12847:73;:::i;:::-;12930;12998:3;12987:9;12983:19;12974:6;12930:73;:::i;:::-;12457:553;;;;;;;;;:::o;13016:210::-;13103:4;13141:2;13130:9;13126:18;13118:26;;13154:65;13216:1;13205:9;13201:17;13192:6;13154:65;:::i;:::-;13108:118;;;;:::o;13232:264::-;13346:4;13384:2;13373:9;13369:18;13361:26;;13397:92;13486:1;13475:9;13471:17;13462:6;13397:92;:::i;:::-;13351:145;;;;:::o;13502:313::-;13615:4;13653:2;13642:9;13638:18;13630:26;;13702:9;13696:4;13692:20;13688:1;13677:9;13673:17;13666:47;13730:78;13803:4;13794:6;13730:78;:::i;:::-;13722:86;;13620:195;;;;:::o;13821:419::-;13987:4;14025:2;14014:9;14010:18;14002:26;;14074:9;14068:4;14064:20;14060:1;14049:9;14045:17;14038:47;14102:131;14228:4;14102:131;:::i;:::-;14094:139;;13992:248;;;:::o;14246:419::-;14412:4;14450:2;14439:9;14435:18;14427:26;;14499:9;14493:4;14489:20;14485:1;14474:9;14470:17;14463:47;14527:131;14653:4;14527:131;:::i;:::-;14519:139;;14417:248;;;:::o;14671:419::-;14837:4;14875:2;14864:9;14860:18;14852:26;;14924:9;14918:4;14914:20;14910:1;14899:9;14895:17;14888:47;14952:131;15078:4;14952:131;:::i;:::-;14944:139;;14842:248;;;:::o;15096:419::-;15262:4;15300:2;15289:9;15285:18;15277:26;;15349:9;15343:4;15339:20;15335:1;15324:9;15320:17;15313:47;15377:131;15503:4;15377:131;:::i;:::-;15369:139;;15267:248;;;:::o;15521:419::-;15687:4;15725:2;15714:9;15710:18;15702:26;;15774:9;15768:4;15764:20;15760:1;15749:9;15745:17;15738:47;15802:131;15928:4;15802:131;:::i;:::-;15794:139;;15692:248;;;:::o;15946:419::-;16112:4;16150:2;16139:9;16135:18;16127:26;;16199:9;16193:4;16189:20;16185:1;16174:9;16170:17;16163:47;16227:131;16353:4;16227:131;:::i;:::-;16219:139;;16117:248;;;:::o;16371:419::-;16537:4;16575:2;16564:9;16560:18;16552:26;;16624:9;16618:4;16614:20;16610:1;16599:9;16595:17;16588:47;16652:131;16778:4;16652:131;:::i;:::-;16644:139;;16542:248;;;:::o;16796:419::-;16962:4;17000:2;16989:9;16985:18;16977:26;;17049:9;17043:4;17039:20;17035:1;17024:9;17020:17;17013:47;17077:131;17203:4;17077:131;:::i;:::-;17069:139;;16967:248;;;:::o;17221:419::-;17387:4;17425:2;17414:9;17410:18;17402:26;;17474:9;17468:4;17464:20;17460:1;17449:9;17445:17;17438:47;17502:131;17628:4;17502:131;:::i;:::-;17494:139;;17392:248;;;:::o;17646:222::-;17739:4;17777:2;17766:9;17762:18;17754:26;;17790:71;17858:1;17847:9;17843:17;17834:6;17790:71;:::i;:::-;17744:124;;;;:::o;17874:831::-;18137:4;18175:3;18164:9;18160:19;18152:27;;18189:71;18257:1;18246:9;18242:17;18233:6;18189:71;:::i;:::-;18270:80;18346:2;18335:9;18331:18;18322:6;18270:80;:::i;:::-;18397:9;18391:4;18387:20;18382:2;18371:9;18367:18;18360:48;18425:108;18528:4;18519:6;18425:108;:::i;:::-;18417:116;;18543:72;18611:2;18600:9;18596:18;18587:6;18543:72;:::i;:::-;18625:73;18693:3;18682:9;18678:19;18669:6;18625:73;:::i;:::-;18142:563;;;;;;;;:::o;18711:332::-;18832:4;18870:2;18859:9;18855:18;18847:26;;18883:71;18951:1;18940:9;18936:17;18927:6;18883:71;:::i;:::-;18964:72;19032:2;19021:9;19017:18;19008:6;18964:72;:::i;:::-;18837:206;;;;;:::o;19049:214::-;19138:4;19176:2;19165:9;19161:18;19153:26;;19189:67;19253:1;19242:9;19238:17;19229:6;19189:67;:::i;:::-;19143:120;;;;:::o;19269:132::-;19336:4;19359:3;19351:11;;19389:4;19384:3;19380:14;19372:22;;19341:60;;;:::o;19407:114::-;19474:6;19508:5;19502:12;19492:22;;19481:40;;;:::o;19527:99::-;19579:6;19613:5;19607:12;19597:22;;19586:40;;;:::o;19632:113::-;19702:4;19734;19729:3;19725:14;19717:22;;19707:38;;;:::o;19751:184::-;19850:11;19884:6;19879:3;19872:19;19924:4;19919:3;19915:14;19900:29;;19862:73;;;;:::o;19941:147::-;20042:11;20079:3;20064:18;;20054:34;;;;:::o;20094:169::-;20178:11;20212:6;20207:3;20200:19;20252:4;20247:3;20243:14;20228:29;;20190:73;;;;:::o;20269:305::-;20309:3;20328:20;20346:1;20328:20;:::i;:::-;20323:25;;20362:20;20380:1;20362:20;:::i;:::-;20357:25;;20516:1;20448:66;20444:74;20441:1;20438:81;20435:2;;;20522:18;;:::i;:::-;20435:2;20566:1;20563;20559:9;20552:16;;20313:261;;;;:::o;20580:185::-;20620:1;20637:20;20655:1;20637:20;:::i;:::-;20632:25;;20671:20;20689:1;20671:20;:::i;:::-;20666:25;;20710:1;20700:2;;20715:18;;:::i;:::-;20700:2;20757:1;20754;20750:9;20745:14;;20622:143;;;;:::o;20771:348::-;20811:7;20834:20;20852:1;20834:20;:::i;:::-;20829:25;;20868:20;20886:1;20868:20;:::i;:::-;20863:25;;21056:1;20988:66;20984:74;20981:1;20978:81;20973:1;20966:9;20959:17;20955:105;20952:2;;;21063:18;;:::i;:::-;20952:2;21111:1;21108;21104:9;21093:20;;20819:300;;;;:::o;21125:191::-;21165:4;21185:20;21203:1;21185:20;:::i;:::-;21180:25;;21219:20;21237:1;21219:20;:::i;:::-;21214:25;;21258:1;21255;21252:8;21249:2;;;21263:18;;:::i;:::-;21249:2;21308:1;21305;21301:9;21293:17;;21170:146;;;;:::o;21322:96::-;21359:7;21388:24;21406:5;21388:24;:::i;:::-;21377:35;;21367:51;;;:::o;21424:90::-;21458:7;21501:5;21494:13;21487:21;21476:32;;21466:48;;;:::o;21520:126::-;21557:7;21597:42;21590:5;21586:54;21575:65;;21565:81;;;:::o;21652:77::-;21689:7;21718:5;21707:16;;21697:32;;;:::o;21735:86::-;21770:7;21810:4;21803:5;21799:16;21788:27;;21778:43;;;:::o;21827:168::-;21898:9;21931:58;21983:5;21931:58;:::i;:::-;21918:71;;21908:87;;;:::o;22001:134::-;22072:9;22105:24;22123:5;22105:24;:::i;:::-;22092:37;;22082:53;;;:::o;22141:121::-;22199:9;22232:24;22250:5;22232:24;:::i;:::-;22219:37;;22209:53;;;:::o;22268:307::-;22336:1;22346:113;22360:6;22357:1;22354:13;22346:113;;;22445:1;22440:3;22436:11;22430:18;22426:1;22421:3;22417:11;22410:39;22382:2;22379:1;22375:10;22370:15;;22346:113;;;22477:6;22474:1;22471:13;22468:2;;;22557:1;22548:6;22543:3;22539:16;22532:27;22468:2;22317:258;;;;:::o;22581:233::-;22620:3;22643:24;22661:5;22643:24;:::i;:::-;22634:33;;22689:66;22682:5;22679:77;22676:2;;;22759:18;;:::i;:::-;22676:2;22806:1;22799:5;22795:13;22788:20;;22624:190;;;:::o;22820:180::-;22868:77;22865:1;22858:88;22965:4;22962:1;22955:15;22989:4;22986:1;22979:15;23006:180;23054:77;23051:1;23044:88;23151:4;23148:1;23141:15;23175:4;23172:1;23165:15;23192:102;23233:6;23284:2;23280:7;23275:2;23268:5;23264:14;23260:28;23250:38;;23240:54;;;:::o;23300:167::-;23440:19;23436:1;23428:6;23424:14;23417:43;23406:61;:::o;23473:225::-;23613:34;23609:1;23601:6;23597:14;23590:58;23682:8;23677:2;23669:6;23665:15;23658:33;23579:119;:::o;23704:177::-;23844:29;23840:1;23832:6;23828:14;23821:53;23810:71;:::o;23887:172::-;24027:24;24023:1;24015:6;24011:14;24004:48;23993:66;:::o;24065:170::-;24205:22;24201:1;24193:6;24189:14;24182:46;24171:64;:::o;24241:220::-;24381:34;24377:1;24369:6;24365:14;24358:58;24450:3;24445:2;24437:6;24433:15;24426:28;24347:114;:::o;24467:182::-;24607:34;24603:1;24595:6;24591:14;24584:58;24573:76;:::o;24655:114::-;24761:8;:::o;24775:170::-;24915:22;24911:1;24903:6;24899:14;24892:46;24881:64;:::o;24951:161::-;25091:13;25087:1;25079:6;25075:14;25068:37;25057:55;:::o;25118:122::-;25191:24;25209:5;25191:24;:::i;:::-;25184:5;25181:35;25171:2;;25230:1;25227;25220:12;25171:2;25161:79;:::o;25246:116::-;25316:21;25331:5;25316:21;:::i;:::-;25309:5;25306:32;25296:2;;25352:1;25349;25342:12;25296:2;25286:76;:::o;25368:122::-;25441:24;25459:5;25441:24;:::i;:::-;25434:5;25431:35;25421:2;;25480:1;25477;25470:12;25421:2;25411:79;:::o
Swarm Source
ipfs://1f986dfa8a013fc518c281d697f6b1e8469555e4dd8ea64724f2a748f362b777
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.