Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Platform
Overview
Max Total Supply
1,000,000 0xFree
Holders
201 ( -0.498%)
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
0.000000001 0xFreeValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
FREELANCE
Compiler Version
v0.8.19+commit.7dd6d404
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-09-28 */ // SPDX-License-Identifier: Unlicensed // Website: https://0xfreelance.io // Telegram: https://t.me/ZeroXFreelance // Twitter: https://twitter.com/ZeroXFreelance pragma solidity ^0.8.19; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } contract Ownable is Context { address private _owner; address private _previousOwner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(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; } } 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; } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); } contract FREELANCE is Context, IERC20, Ownable { using SafeMath for uint256; string private constant _name = "0xFreelance"; string private constant _symbol = "0xFree"; uint8 private constant _decimals = 9; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 1000000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; //Buy Fee uint256 private _redisFeeOnBuy = 0; uint256 private _taxFeeOnBuy = 5; //Sell Fee uint256 private _redisFeeOnSell = 0; uint256 private _taxFeeOnSell = 5; //Original Fee uint256 private _redisFee = _redisFeeOnSell; uint256 private _taxFee = _taxFeeOnSell; uint256 private _previousredisFee = _redisFee; uint256 private _previoustaxFee = _taxFee; mapping(address => uint256) private cooldown; address payable private _developmentAddress = payable(0x134c08E4Ea089fBBa2fEcf98a73b98Cec8aDF64B); address payable private _marketingAddress = payable(0xD5684d755656060Cfdb978de08313B5Dd3e38524); address payable private _migrationAddress = payable(0x7110B1AF7504604752959eC399f7e77A965F9403); IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private tradingOpen; bool private inSwap = false; bool private swapEnabled = true; uint256 public _maxTxAmount = 20000 * 10**9; uint256 public _maxWalletSize = 20000 * 10**9; uint256 public _swapTokensAtAmount = 100 * 10**9; event MaxTxAmountUpdated(uint256 _maxTxAmount); modifier lockTheSwap() { inSwap = true; _; inSwap = false; } constructor() { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_developmentAddress] = true; _isExcludedFromFee[_marketingAddress] = true; _isExcludedFromFee[_migrationAddress] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function totalSupply() public pure override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, "ERC20: transfer amount exceeds allowance" ) ); return true; } function tokenFromReflection(uint256 rAmount) private view returns (uint256) { require( rAmount <= _rTotal, "Amount must be less than total reflections" ); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function removeAllFee() private { if (_redisFee == 0 && _taxFee == 0) return; _previousredisFee = _redisFee; _previoustaxFee = _taxFee; _redisFee = 0; _taxFee = 0; } function restoreAllFee() private { _redisFee = _previousredisFee; _taxFee = _previoustaxFee; } function _approve( address owner, address spender, uint256 amount ) private { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _transfer( address from, address to, uint256 amount ) private { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (from != owner() && to != owner()) { //Trade start check if (!tradingOpen) { require( from == owner(), "TOKEN: This account cannot send tokens until trading is enabled" ); } require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit"); if (to != uniswapV2Pair) { require( balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!" ); } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= _swapTokensAtAmount; if (contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } if ( canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to] ) { swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { sendETHToFee(address(this).balance); } } } bool takeFee = true; //Transfer Tokens if ( (_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair) ) { takeFee = false; } else { //Set Fee for Buys if (from == uniswapV2Pair && to != address(uniswapV2Router)) { _redisFee = _redisFeeOnBuy; _taxFee = _taxFeeOnBuy; } //Set Fee for Sells if (to == uniswapV2Pair && from != address(uniswapV2Router)) { _redisFee = _redisFeeOnSell; _taxFee = _taxFeeOnSell; } } _tokenTransfer(from, to, amount, takeFee); } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, path, address(this), block.timestamp ); } function sendETHToFee(uint256 amount) private { _developmentAddress.transfer(amount.div(2)); _marketingAddress.transfer(amount.div(2)); } function setTrading(bool _tradingOpen) public onlyOwner { tradingOpen = _tradingOpen; } function manualswap() external { require( _msgSender() == _developmentAddress || _msgSender() == _marketingAddress ); uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualsend() external { require( _msgSender() == _developmentAddress || _msgSender() == _marketingAddress ); uint256 contractETHBalance = address(this).balance; sendETHToFee(contractETHBalance); } function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (!takeFee) removeAllFee(); _transferStandard(sender, recipient, amount); if (!takeFee) restoreAllFee(); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam ) = _getValues(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeTeam(uint256 tTeam) private { uint256 currentRate = _getRate(); uint256 rTeam = tTeam.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rTeam); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } receive() external payable {} function _getValues(uint256 tAmount) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256 ) { (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues( tAmount, _redisFee, _taxFee ); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues( tAmount, tFee, tTeam, currentRate ); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam); } function _getTValues( uint256 tAmount, uint256 redisFee, uint256 taxFee ) private pure returns ( uint256, uint256, uint256 ) { uint256 tFee = tAmount.mul(redisFee).div(100); uint256 tTeam = tAmount.mul(taxFee).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam); return (tTransferAmount, tFee, tTeam); } function _getRValues( uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate ) private pure returns ( uint256, uint256, uint256 ) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTeam = tTeam.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } //Set Max Transaction function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner { _maxTxAmount = maxTxAmount; } //Set Max Wallet function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner { _maxWalletSize = maxWalletSize; } }
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":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405266038d7ea4c680006000196200001b9190620007d8565b6000196200002a91906200083f565b600655600060085560056009556000600a556005600b55600a54600c55600b54600d55600c54600e55600d54600f5573134c08e4ea089fbba2fecf98a73b98cec8adf64b601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073d5684d755656060cfdb978de08313b5dd3e38524601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737110b1af7504604752959ec399f7e77a965f9403601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff0219169083151502179055506512309ce540006016556512309ce5400060175564174876e800601855348015620001b757600080fd5b506000620001ca6200076e60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600654600260006200027f6200076e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000363573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003899190620008e4565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004179190620008e4565b6040518363ffffffff1660e01b81526004016200043692919062000927565b6020604051808303816000875af115801562000456573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047c9190620008e4565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004d26200077660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006f96200076e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef66038d7ea4c680006040516200075f919062000965565b60405180910390a35062000982565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007e5826200079f565b9150620007f2836200079f565b925082620008055762000804620007a9565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200084c826200079f565b915062000859836200079f565b925082820390508181111562000874576200087362000810565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008ac826200087f565b9050919050565b620008be816200089f565b8114620008ca57600080fd5b50565b600081519050620008de81620008b3565b92915050565b600060208284031215620008fd57620008fc6200087a565b5b60006200090d84828501620008cd565b91505092915050565b62000921816200089f565b82525050565b60006040820190506200093e600083018562000916565b6200094d602083018462000916565b9392505050565b6200095f816200079f565b82525050565b60006020820190506200097c600083018462000954565b92915050565b61322180620009926000396000f3fe6080604052600436106101395760003560e01c806374010ece116100ab57806395d89b411161006f57806395d89b41146103ff578063a9059cbb1461042a578063c3c8cd8014610467578063dd62ed3e1461047e578063ea1644d5146104bb578063f2fde38b146104e457610140565b806374010ece1461032c5780637d1db4a5146103555780638da5cb5b146103805780638f70ccf7146103ab5780638f9a55c0146103d457610140565b80632fd689e3116100fd5780632fd689e314610240578063313ce5671461026b57806349bd5a5e146102965780636fc3eaec146102c157806370a08231146102d8578063715018a61461031557610140565b806306fdde0314610145578063095ea7b3146101705780631694505e146101ad57806318160ddd146101d857806323b872dd1461020357610140565b3661014057005b600080fd5b34801561015157600080fd5b5061015a61050d565b6040516101679190612423565b60405180910390f35b34801561017c57600080fd5b50610197600480360381019061019291906124de565b61054a565b6040516101a49190612539565b60405180910390f35b3480156101b957600080fd5b506101c2610568565b6040516101cf91906125b3565b60405180910390f35b3480156101e457600080fd5b506101ed61058e565b6040516101fa91906125dd565b60405180910390f35b34801561020f57600080fd5b5061022a600480360381019061022591906125f8565b61059d565b6040516102379190612539565b60405180910390f35b34801561024c57600080fd5b50610255610676565b60405161026291906125dd565b60405180910390f35b34801561027757600080fd5b5061028061067c565b60405161028d9190612667565b60405180910390f35b3480156102a257600080fd5b506102ab610685565b6040516102b89190612691565b60405180910390f35b3480156102cd57600080fd5b506102d66106ab565b005b3480156102e457600080fd5b506102ff60048036038101906102fa91906126ac565b61077c565b60405161030c91906125dd565b60405180910390f35b34801561032157600080fd5b5061032a6107cd565b005b34801561033857600080fd5b50610353600480360381019061034e91906126d9565b610920565b005b34801561036157600080fd5b5061036a6109bf565b60405161037791906125dd565b60405180910390f35b34801561038c57600080fd5b506103956109c5565b6040516103a29190612691565b60405180910390f35b3480156103b757600080fd5b506103d260048036038101906103cd9190612732565b6109ee565b005b3480156103e057600080fd5b506103e9610aa0565b6040516103f691906125dd565b60405180910390f35b34801561040b57600080fd5b50610414610aa6565b6040516104219190612423565b60405180910390f35b34801561043657600080fd5b50610451600480360381019061044c91906124de565b610ae3565b60405161045e9190612539565b60405180910390f35b34801561047357600080fd5b5061047c610b01565b005b34801561048a57600080fd5b506104a560048036038101906104a0919061275f565b610bda565b6040516104b291906125dd565b60405180910390f35b3480156104c757600080fd5b506104e260048036038101906104dd91906126d9565b610c61565b005b3480156104f057600080fd5b5061050b600480360381019061050691906126ac565b610d00565b005b60606040518060400160405280600b81526020017f3078467265656c616e6365000000000000000000000000000000000000000000815250905090565b600061055e610557610ec1565b8484610ec9565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600066038d7ea4c68000905090565b60006105aa848484611092565b61066b846105b6610ec1565b610666856040518060600160405280602881526020016131c460289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061061c610ec1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118329092919063ffffffff16565b610ec9565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106ec610ec1565b73ffffffffffffffffffffffffffffffffffffffff1614806107625750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661074a610ec1565b73ffffffffffffffffffffffffffffffffffffffff16145b61076b57600080fd5b600047905061077981611896565b50565b60006107c6600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611991565b9050919050565b6107d5610ec1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610862576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610859906127eb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610928610ec1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ac906127eb565b60405180910390fd5b8060168190555050565b60165481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6109f6610ec1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7a906127eb565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600681526020017f3078467265650000000000000000000000000000000000000000000000000000815250905090565b6000610af7610af0610ec1565b8484611092565b6001905092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b42610ec1565b73ffffffffffffffffffffffffffffffffffffffff161480610bb85750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ba0610ec1565b73ffffffffffffffffffffffffffffffffffffffff16145b610bc157600080fd5b6000610bcc3061077c565b9050610bd7816119ff565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610c69610ec1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ced906127eb565b60405180910390fd5b8060178190555050565b610d08610ec1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8c906127eb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfb9061287d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2f9061290f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9e906129a1565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161108591906125dd565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611101576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f890612a33565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611170576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116790612ac5565b60405180910390fd5b600081116111b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111aa90612b57565b60405180910390fd5b6111bb6109c5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561122957506111f96109c5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561153157601560149054906101000a900460ff166112b85761124a6109c5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146112b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ae90612be9565b60405180910390fd5b5b6016548111156112fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f490612c55565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146113aa576017548161135f8461077c565b6113699190612ca4565b106113a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a090612d4a565b60405180910390fd5b5b60006113b53061077c565b90506000601854821015905060165482106113d05760165491505b8080156113e8575060158054906101000a900460ff16155b80156114425750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561145a5750601560169054906101000a900460ff165b80156114b05750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156115065750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561152e57611514826119ff565b6000479050600081111561152c5761152b47611896565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806115d85750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061168b5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561168a5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156116995760009050611820565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156117445750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561175c57600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118075750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561181f57600a54600c81905550600b54600d819055505b5b61182c84848484611c76565b50505050565b600083831115829061187a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118719190612423565b60405180910390fd5b50600083856118899190612d6a565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6118e6600284611ca390919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611911573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611962600284611ca390919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561198d573d6000803e3d6000fd5b5050565b60006006548211156119d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cf90612e10565b60405180910390fd5b60006119e2611ced565b90506119f78184611ca390919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611a3657611a35612e30565b5b604051908082528060200260200182016040528015611a645781602001602082028036833780820191505090505b5090503081600081518110611a7c57611a7b612e5f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b479190612ea3565b81600181518110611b5b57611b5a612e5f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611bc230601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610ec9565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611c26959493929190612fc9565b600060405180830381600087803b158015611c4057600080fd5b505af1158015611c54573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b80611c8457611c83611d18565b5b611c8f848484611d55565b80611c9d57611c9c611f20565b5b50505050565b6000611ce583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f34565b905092915050565b6000806000611cfa611f97565b91509150611d118183611ca390919063ffffffff16565b9250505090565b6000600c54148015611d2c57506000600d54145b611d5357600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080611d6787611ff3565b955095509550955095509550611dc586600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461205b90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e5a85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120a590919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ea681612103565b611eb084836121c0565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611f0d91906125dd565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008083118290611f7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f729190612423565b60405180910390fd5b5060008385611f8a9190613052565b9050809150509392505050565b60008060006006549050600066038d7ea4c680009050611fc966038d7ea4c68000600654611ca390919063ffffffff16565b821015611fe65760065466038d7ea4c68000935093505050611fef565b81819350935050505b9091565b60008060008060008060008060006120108a600c54600d546121fa565b9250925092506000612020611ced565b905060008060006120338e878787612290565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061209d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611832565b905092915050565b60008082846120b49190612ca4565b9050838110156120f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f0906130cf565b60405180910390fd5b8091505092915050565b600061210d611ced565b90506000612124828461231990919063ffffffff16565b905061217881600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120a590919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6121d58260065461205b90919063ffffffff16565b6006819055506121f0816007546120a590919063ffffffff16565b6007819055505050565b6000806000806122266064612218888a61231990919063ffffffff16565b611ca390919063ffffffff16565b905060006122506064612242888b61231990919063ffffffff16565b611ca390919063ffffffff16565b905060006122798261226b858c61205b90919063ffffffff16565b61205b90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806122a9858961231990919063ffffffff16565b905060006122c0868961231990919063ffffffff16565b905060006122d7878961231990919063ffffffff16565b90506000612300826122f2858761205b90919063ffffffff16565b61205b90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080830361232b576000905061238d565b6000828461233991906130ef565b90508284826123489190613052565b14612388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237f906131a3565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156123cd5780820151818401526020810190506123b2565b60008484015250505050565b6000601f19601f8301169050919050565b60006123f582612393565b6123ff818561239e565b935061240f8185602086016123af565b612418816123d9565b840191505092915050565b6000602082019050818103600083015261243d81846123ea565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006124758261244a565b9050919050565b6124858161246a565b811461249057600080fd5b50565b6000813590506124a28161247c565b92915050565b6000819050919050565b6124bb816124a8565b81146124c657600080fd5b50565b6000813590506124d8816124b2565b92915050565b600080604083850312156124f5576124f4612445565b5b600061250385828601612493565b9250506020612514858286016124c9565b9150509250929050565b60008115159050919050565b6125338161251e565b82525050565b600060208201905061254e600083018461252a565b92915050565b6000819050919050565b600061257961257461256f8461244a565b612554565b61244a565b9050919050565b600061258b8261255e565b9050919050565b600061259d82612580565b9050919050565b6125ad81612592565b82525050565b60006020820190506125c860008301846125a4565b92915050565b6125d7816124a8565b82525050565b60006020820190506125f260008301846125ce565b92915050565b60008060006060848603121561261157612610612445565b5b600061261f86828701612493565b935050602061263086828701612493565b9250506040612641868287016124c9565b9150509250925092565b600060ff82169050919050565b6126618161264b565b82525050565b600060208201905061267c6000830184612658565b92915050565b61268b8161246a565b82525050565b60006020820190506126a66000830184612682565b92915050565b6000602082840312156126c2576126c1612445565b5b60006126d084828501612493565b91505092915050565b6000602082840312156126ef576126ee612445565b5b60006126fd848285016124c9565b91505092915050565b61270f8161251e565b811461271a57600080fd5b50565b60008135905061272c81612706565b92915050565b60006020828403121561274857612747612445565b5b60006127568482850161271d565b91505092915050565b6000806040838503121561277657612775612445565b5b600061278485828601612493565b925050602061279585828601612493565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006127d560208361239e565b91506127e08261279f565b602082019050919050565b60006020820190508181036000830152612804816127c8565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061286760268361239e565b91506128728261280b565b604082019050919050565b600060208201905081810360008301526128968161285a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006128f960248361239e565b91506129048261289d565b604082019050919050565b60006020820190508181036000830152612928816128ec565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061298b60228361239e565b91506129968261292f565b604082019050919050565b600060208201905081810360008301526129ba8161297e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612a1d60258361239e565b9150612a28826129c1565b604082019050919050565b60006020820190508181036000830152612a4c81612a10565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612aaf60238361239e565b9150612aba82612a53565b604082019050919050565b60006020820190508181036000830152612ade81612aa2565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612b4160298361239e565b9150612b4c82612ae5565b604082019050919050565b60006020820190508181036000830152612b7081612b34565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000612bd3603f8361239e565b9150612bde82612b77565b604082019050919050565b60006020820190508181036000830152612c0281612bc6565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000612c3f601c8361239e565b9150612c4a82612c09565b602082019050919050565b60006020820190508181036000830152612c6e81612c32565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612caf826124a8565b9150612cba836124a8565b9250828201905080821115612cd257612cd1612c75565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000612d3460238361239e565b9150612d3f82612cd8565b604082019050919050565b60006020820190508181036000830152612d6381612d27565b9050919050565b6000612d75826124a8565b9150612d80836124a8565b9250828203905081811115612d9857612d97612c75565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000612dfa602a8361239e565b9150612e0582612d9e565b604082019050919050565b60006020820190508181036000830152612e2981612ded565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612e9d8161247c565b92915050565b600060208284031215612eb957612eb8612445565b5b6000612ec784828501612e8e565b91505092915050565b6000819050919050565b6000612ef5612ef0612eeb84612ed0565b612554565b6124a8565b9050919050565b612f0581612eda565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612f408161246a565b82525050565b6000612f528383612f37565b60208301905092915050565b6000602082019050919050565b6000612f7682612f0b565b612f808185612f16565b9350612f8b83612f27565b8060005b83811015612fbc578151612fa38882612f46565b9750612fae83612f5e565b925050600181019050612f8f565b5085935050505092915050565b600060a082019050612fde60008301886125ce565b612feb6020830187612efc565b8181036040830152612ffd8186612f6b565b905061300c6060830185612682565b61301960808301846125ce565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061305d826124a8565b9150613068836124a8565b92508261307857613077613023565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006130b9601b8361239e565b91506130c482613083565b602082019050919050565b600060208201905081810360008301526130e8816130ac565b9050919050565b60006130fa826124a8565b9150613105836124a8565b9250828202613113816124a8565b9150828204841483151761312a57613129612c75565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061318d60218361239e565b915061319882613131565b604082019050919050565b600060208201905081810360008301526131bc81613180565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200e8cf207f4c507c004e9917f6fd9b331e278f5e2c6c999802b34a00187c5bcbe64736f6c63430008130033
Deployed Bytecode
0x6080604052600436106101395760003560e01c806374010ece116100ab57806395d89b411161006f57806395d89b41146103ff578063a9059cbb1461042a578063c3c8cd8014610467578063dd62ed3e1461047e578063ea1644d5146104bb578063f2fde38b146104e457610140565b806374010ece1461032c5780637d1db4a5146103555780638da5cb5b146103805780638f70ccf7146103ab5780638f9a55c0146103d457610140565b80632fd689e3116100fd5780632fd689e314610240578063313ce5671461026b57806349bd5a5e146102965780636fc3eaec146102c157806370a08231146102d8578063715018a61461031557610140565b806306fdde0314610145578063095ea7b3146101705780631694505e146101ad57806318160ddd146101d857806323b872dd1461020357610140565b3661014057005b600080fd5b34801561015157600080fd5b5061015a61050d565b6040516101679190612423565b60405180910390f35b34801561017c57600080fd5b50610197600480360381019061019291906124de565b61054a565b6040516101a49190612539565b60405180910390f35b3480156101b957600080fd5b506101c2610568565b6040516101cf91906125b3565b60405180910390f35b3480156101e457600080fd5b506101ed61058e565b6040516101fa91906125dd565b60405180910390f35b34801561020f57600080fd5b5061022a600480360381019061022591906125f8565b61059d565b6040516102379190612539565b60405180910390f35b34801561024c57600080fd5b50610255610676565b60405161026291906125dd565b60405180910390f35b34801561027757600080fd5b5061028061067c565b60405161028d9190612667565b60405180910390f35b3480156102a257600080fd5b506102ab610685565b6040516102b89190612691565b60405180910390f35b3480156102cd57600080fd5b506102d66106ab565b005b3480156102e457600080fd5b506102ff60048036038101906102fa91906126ac565b61077c565b60405161030c91906125dd565b60405180910390f35b34801561032157600080fd5b5061032a6107cd565b005b34801561033857600080fd5b50610353600480360381019061034e91906126d9565b610920565b005b34801561036157600080fd5b5061036a6109bf565b60405161037791906125dd565b60405180910390f35b34801561038c57600080fd5b506103956109c5565b6040516103a29190612691565b60405180910390f35b3480156103b757600080fd5b506103d260048036038101906103cd9190612732565b6109ee565b005b3480156103e057600080fd5b506103e9610aa0565b6040516103f691906125dd565b60405180910390f35b34801561040b57600080fd5b50610414610aa6565b6040516104219190612423565b60405180910390f35b34801561043657600080fd5b50610451600480360381019061044c91906124de565b610ae3565b60405161045e9190612539565b60405180910390f35b34801561047357600080fd5b5061047c610b01565b005b34801561048a57600080fd5b506104a560048036038101906104a0919061275f565b610bda565b6040516104b291906125dd565b60405180910390f35b3480156104c757600080fd5b506104e260048036038101906104dd91906126d9565b610c61565b005b3480156104f057600080fd5b5061050b600480360381019061050691906126ac565b610d00565b005b60606040518060400160405280600b81526020017f3078467265656c616e6365000000000000000000000000000000000000000000815250905090565b600061055e610557610ec1565b8484610ec9565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600066038d7ea4c68000905090565b60006105aa848484611092565b61066b846105b6610ec1565b610666856040518060600160405280602881526020016131c460289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061061c610ec1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118329092919063ffffffff16565b610ec9565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106ec610ec1565b73ffffffffffffffffffffffffffffffffffffffff1614806107625750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661074a610ec1565b73ffffffffffffffffffffffffffffffffffffffff16145b61076b57600080fd5b600047905061077981611896565b50565b60006107c6600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611991565b9050919050565b6107d5610ec1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610862576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610859906127eb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610928610ec1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ac906127eb565b60405180910390fd5b8060168190555050565b60165481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6109f6610ec1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7a906127eb565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600681526020017f3078467265650000000000000000000000000000000000000000000000000000815250905090565b6000610af7610af0610ec1565b8484611092565b6001905092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b42610ec1565b73ffffffffffffffffffffffffffffffffffffffff161480610bb85750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ba0610ec1565b73ffffffffffffffffffffffffffffffffffffffff16145b610bc157600080fd5b6000610bcc3061077c565b9050610bd7816119ff565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610c69610ec1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ced906127eb565b60405180910390fd5b8060178190555050565b610d08610ec1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8c906127eb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfb9061287d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2f9061290f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9e906129a1565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161108591906125dd565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611101576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f890612a33565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611170576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116790612ac5565b60405180910390fd5b600081116111b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111aa90612b57565b60405180910390fd5b6111bb6109c5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561122957506111f96109c5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561153157601560149054906101000a900460ff166112b85761124a6109c5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146112b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ae90612be9565b60405180910390fd5b5b6016548111156112fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f490612c55565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146113aa576017548161135f8461077c565b6113699190612ca4565b106113a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a090612d4a565b60405180910390fd5b5b60006113b53061077c565b90506000601854821015905060165482106113d05760165491505b8080156113e8575060158054906101000a900460ff16155b80156114425750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561145a5750601560169054906101000a900460ff165b80156114b05750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156115065750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561152e57611514826119ff565b6000479050600081111561152c5761152b47611896565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806115d85750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061168b5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561168a5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156116995760009050611820565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156117445750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561175c57600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118075750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561181f57600a54600c81905550600b54600d819055505b5b61182c84848484611c76565b50505050565b600083831115829061187a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118719190612423565b60405180910390fd5b50600083856118899190612d6a565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6118e6600284611ca390919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611911573d6000803e3d6000fd5b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611962600284611ca390919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561198d573d6000803e3d6000fd5b5050565b60006006548211156119d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cf90612e10565b60405180910390fd5b60006119e2611ced565b90506119f78184611ca390919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611a3657611a35612e30565b5b604051908082528060200260200182016040528015611a645781602001602082028036833780820191505090505b5090503081600081518110611a7c57611a7b612e5f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b479190612ea3565b81600181518110611b5b57611b5a612e5f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611bc230601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610ec9565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611c26959493929190612fc9565b600060405180830381600087803b158015611c4057600080fd5b505af1158015611c54573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b80611c8457611c83611d18565b5b611c8f848484611d55565b80611c9d57611c9c611f20565b5b50505050565b6000611ce583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f34565b905092915050565b6000806000611cfa611f97565b91509150611d118183611ca390919063ffffffff16565b9250505090565b6000600c54148015611d2c57506000600d54145b611d5357600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080611d6787611ff3565b955095509550955095509550611dc586600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461205b90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e5a85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120a590919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ea681612103565b611eb084836121c0565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611f0d91906125dd565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008083118290611f7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f729190612423565b60405180910390fd5b5060008385611f8a9190613052565b9050809150509392505050565b60008060006006549050600066038d7ea4c680009050611fc966038d7ea4c68000600654611ca390919063ffffffff16565b821015611fe65760065466038d7ea4c68000935093505050611fef565b81819350935050505b9091565b60008060008060008060008060006120108a600c54600d546121fa565b9250925092506000612020611ced565b905060008060006120338e878787612290565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061209d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611832565b905092915050565b60008082846120b49190612ca4565b9050838110156120f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f0906130cf565b60405180910390fd5b8091505092915050565b600061210d611ced565b90506000612124828461231990919063ffffffff16565b905061217881600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120a590919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6121d58260065461205b90919063ffffffff16565b6006819055506121f0816007546120a590919063ffffffff16565b6007819055505050565b6000806000806122266064612218888a61231990919063ffffffff16565b611ca390919063ffffffff16565b905060006122506064612242888b61231990919063ffffffff16565b611ca390919063ffffffff16565b905060006122798261226b858c61205b90919063ffffffff16565b61205b90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806122a9858961231990919063ffffffff16565b905060006122c0868961231990919063ffffffff16565b905060006122d7878961231990919063ffffffff16565b90506000612300826122f2858761205b90919063ffffffff16565b61205b90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080830361232b576000905061238d565b6000828461233991906130ef565b90508284826123489190613052565b14612388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237f906131a3565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156123cd5780820151818401526020810190506123b2565b60008484015250505050565b6000601f19601f8301169050919050565b60006123f582612393565b6123ff818561239e565b935061240f8185602086016123af565b612418816123d9565b840191505092915050565b6000602082019050818103600083015261243d81846123ea565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006124758261244a565b9050919050565b6124858161246a565b811461249057600080fd5b50565b6000813590506124a28161247c565b92915050565b6000819050919050565b6124bb816124a8565b81146124c657600080fd5b50565b6000813590506124d8816124b2565b92915050565b600080604083850312156124f5576124f4612445565b5b600061250385828601612493565b9250506020612514858286016124c9565b9150509250929050565b60008115159050919050565b6125338161251e565b82525050565b600060208201905061254e600083018461252a565b92915050565b6000819050919050565b600061257961257461256f8461244a565b612554565b61244a565b9050919050565b600061258b8261255e565b9050919050565b600061259d82612580565b9050919050565b6125ad81612592565b82525050565b60006020820190506125c860008301846125a4565b92915050565b6125d7816124a8565b82525050565b60006020820190506125f260008301846125ce565b92915050565b60008060006060848603121561261157612610612445565b5b600061261f86828701612493565b935050602061263086828701612493565b9250506040612641868287016124c9565b9150509250925092565b600060ff82169050919050565b6126618161264b565b82525050565b600060208201905061267c6000830184612658565b92915050565b61268b8161246a565b82525050565b60006020820190506126a66000830184612682565b92915050565b6000602082840312156126c2576126c1612445565b5b60006126d084828501612493565b91505092915050565b6000602082840312156126ef576126ee612445565b5b60006126fd848285016124c9565b91505092915050565b61270f8161251e565b811461271a57600080fd5b50565b60008135905061272c81612706565b92915050565b60006020828403121561274857612747612445565b5b60006127568482850161271d565b91505092915050565b6000806040838503121561277657612775612445565b5b600061278485828601612493565b925050602061279585828601612493565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006127d560208361239e565b91506127e08261279f565b602082019050919050565b60006020820190508181036000830152612804816127c8565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061286760268361239e565b91506128728261280b565b604082019050919050565b600060208201905081810360008301526128968161285a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006128f960248361239e565b91506129048261289d565b604082019050919050565b60006020820190508181036000830152612928816128ec565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061298b60228361239e565b91506129968261292f565b604082019050919050565b600060208201905081810360008301526129ba8161297e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612a1d60258361239e565b9150612a28826129c1565b604082019050919050565b60006020820190508181036000830152612a4c81612a10565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612aaf60238361239e565b9150612aba82612a53565b604082019050919050565b60006020820190508181036000830152612ade81612aa2565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612b4160298361239e565b9150612b4c82612ae5565b604082019050919050565b60006020820190508181036000830152612b7081612b34565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000612bd3603f8361239e565b9150612bde82612b77565b604082019050919050565b60006020820190508181036000830152612c0281612bc6565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000612c3f601c8361239e565b9150612c4a82612c09565b602082019050919050565b60006020820190508181036000830152612c6e81612c32565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612caf826124a8565b9150612cba836124a8565b9250828201905080821115612cd257612cd1612c75565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000612d3460238361239e565b9150612d3f82612cd8565b604082019050919050565b60006020820190508181036000830152612d6381612d27565b9050919050565b6000612d75826124a8565b9150612d80836124a8565b9250828203905081811115612d9857612d97612c75565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000612dfa602a8361239e565b9150612e0582612d9e565b604082019050919050565b60006020820190508181036000830152612e2981612ded565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612e9d8161247c565b92915050565b600060208284031215612eb957612eb8612445565b5b6000612ec784828501612e8e565b91505092915050565b6000819050919050565b6000612ef5612ef0612eeb84612ed0565b612554565b6124a8565b9050919050565b612f0581612eda565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612f408161246a565b82525050565b6000612f528383612f37565b60208301905092915050565b6000602082019050919050565b6000612f7682612f0b565b612f808185612f16565b9350612f8b83612f27565b8060005b83811015612fbc578151612fa38882612f46565b9750612fae83612f5e565b925050600181019050612f8f565b5085935050505092915050565b600060a082019050612fde60008301886125ce565b612feb6020830187612efc565b8181036040830152612ffd8186612f6b565b905061300c6060830185612682565b61301960808301846125ce565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061305d826124a8565b9150613068836124a8565b92508261307857613077613023565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006130b9601b8361239e565b91506130c482613083565b602082019050919050565b600060208201905081810360008301526130e8816130ac565b9050919050565b60006130fa826124a8565b9150613105836124a8565b9250828202613113816124a8565b9150828204841483151761312a57613129612c75565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061318d60218361239e565b915061319882613131565b604082019050919050565b600060208201905081810360008301526131bc81613180565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200e8cf207f4c507c004e9917f6fd9b331e278f5e2c6c999802b34a00187c5bcbe64736f6c63430008130033
Deployed Bytecode Sourcemap
4290:12958:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6982:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7907:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5763:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7259:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8108:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6055:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7168:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5811:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13186:276;;;;;;;;;;;;;:::i;:::-;;7362:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1742:148;;;;;;;;;;;;;:::i;:::-;;16992:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5953:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1528:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12792:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6003:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7073:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7508:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12901:277;;;;;;;;;;;;;:::i;:::-;;7715:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17130:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1898:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6982:83;7019:13;7052:5;;;;;;;;;;;;;;;;;7045:12;;6982:83;:::o;7907:193::-;8009:4;8031:39;8040:12;:10;:12::i;:::-;8054:7;8063:6;8031:8;:39::i;:::-;8088:4;8081:11;;7907:193;;;;:::o;5763:41::-;;;;;;;;;;;;;:::o;7259:95::-;7312:7;4841:15;7332:14;;7259:95;:::o;8108:446::-;8240:4;8257:36;8267:6;8275:9;8286:6;8257:9;:36::i;:::-;8304:220;8327:6;8348:12;:10;:12::i;:::-;8375:138;8431:6;8375:138;;;;;;;;;;;;;;;;;:11;:19;8387:6;8375:19;;;;;;;;;;;;;;;:33;8395:12;:10;:12::i;:::-;8375:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8304:8;:220::i;:::-;8542:4;8535:11;;8108:446;;;;;:::o;6055:48::-;;;;:::o;7168:83::-;7209:5;4515:1;7227:16;;7168:83;:::o;5811:28::-;;;;;;;;;;;;;:::o;13186:276::-;13266:19;;;;;;;;;;;13250:35;;:12;:10;:12::i;:::-;:35;;;:89;;;;13322:17;;;;;;;;;;;13306:33;;:12;:10;:12::i;:::-;:33;;;13250:89;13228:122;;;;;;13361:26;13390:21;13361:50;;13422:32;13435:18;13422:12;:32::i;:::-;13217:245;13186:276::o;7362:138::-;7428:7;7455:37;7475:7;:16;7483:7;7475:16;;;;;;;;;;;;;;;;7455:19;:37::i;:::-;7448:44;;7362:138;;;:::o;1742:148::-;1665:12;:10;:12::i;:::-;1655:22;;:6;;;;;;;;;;:22;;;1647:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1849:1:::1;1812:40;;1833:6;::::0;::::1;;;;;;;;1812:40;;;;;;;;;;;;1880:1;1863:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1742:148::o:0;16992:108::-;1665:12;:10;:12::i;:::-;1655:22;;:6;;;;;;;;;;:22;;;1647:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17081:11:::1;17066:12;:26;;;;16992:108:::0;:::o;5953:43::-;;;;:::o;1528:79::-;1566:7;1593:6;;;;;;;;;;;1586:13;;1528:79;:::o;12792:101::-;1665:12;:10;:12::i;:::-;1655:22;;:6;;;;;;;;;;:22;;;1647:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12873:12:::1;12859:11;;:26;;;;;;;;;;;;;;;;;;12792:101:::0;:::o;6003:45::-;;;;:::o;7073:87::-;7112:13;7145:7;;;;;;;;;;;;;;;;;7138:14;;7073:87;:::o;7508:199::-;7613:4;7635:42;7645:12;:10;:12::i;:::-;7659:9;7670:6;7635:9;:42::i;:::-;7695:4;7688:11;;7508:199;;;;:::o;12901:277::-;12981:19;;;;;;;;;;;12965:35;;:12;:10;:12::i;:::-;:35;;;:89;;;;13037:17;;;;;;;;;;;13021:33;;:12;:10;:12::i;:::-;:33;;;12965:89;12943:122;;;;;;13076:23;13102:24;13120:4;13102:9;:24::i;:::-;13076:50;;13137:33;13154:15;13137:16;:33::i;:::-;12932:246;12901:277::o;7715:184::-;7832:7;7864:11;:18;7876:5;7864:18;;;;;;;;;;;;;;;:27;7883:7;7864:27;;;;;;;;;;;;;;;;7857:34;;7715:184;;;;:::o;17130:115::-;1665:12;:10;:12::i;:::-;1655:22;;:6;;;;;;;;;;:22;;;1647:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17224:13:::1;17207:14;:30;;;;17130:115:::0;:::o;1898:281::-;1665:12;:10;:12::i;:::-;1655:22;;:6;;;;;;;;;;:22;;;1647:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2021:1:::1;2001:22;;:8;:22;;::::0;1979:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2134:8;2105:38;;2126:6;::::0;::::1;;;;;;;;2105:38;;;;;;;;;;;;2163:8;2154:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1898:281:::0;:::o;242:98::-;295:7;322:10;315:17;;242:98;:::o;9245:369::-;9389:1;9372:19;;:5;:19;;;9364:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9470:1;9451:21;;:7;:21;;;9443:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9552:6;9522:11;:18;9534:5;9522:18;;;;;;;;;;;;;;;:27;9541:7;9522:27;;;;;;;;;;;;;;;:36;;;;9590:7;9574:32;;9583:5;9574:32;;;9599:6;9574:32;;;;;;:::i;:::-;;;;;;;;9245:369;;;:::o;9622:2503::-;9760:1;9744:18;;:4;:18;;;9736:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9837:1;9823:16;;:2;:16;;;9815:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9907:1;9898:6;:10;9890:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9979:7;:5;:7::i;:::-;9971:15;;:4;:15;;;;:32;;;;;9996:7;:5;:7::i;:::-;9990:13;;:2;:13;;;;9971:32;9967:1398;;;10058:11;;;;;;;;;;;10053:205;;10128:7;:5;:7::i;:::-;10120:15;;:4;:15;;;10090:152;;;;;;;;;;;;:::i;:::-;;;;;;;;;10053:205;10292:12;;10282:6;:22;;10274:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10364:13;;;;;;;;;;;10358:19;;:2;:19;;;10354:208;;10453:14;;10444:6;10428:13;10438:2;10428:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10398:148;;;;;;;;;;;;:::i;:::-;;;;;;;;;10354:208;10578:28;10609:24;10627:4;10609:9;:24::i;:::-;10578:55;;10648:12;10687:19;;10663:20;:43;;10648:58;;10751:12;;10727:20;:36;10723:112;;10807:12;;10784:35;;10723:112;10873:7;:35;;;;;10902:6;;;;;;;;;;10901:7;10873:35;:77;;;;;10937:13;;;;;;;;;;;10929:21;;:4;:21;;;;10873:77;:109;;;;;10971:11;;;;;;;;;;;10873:109;:155;;;;;11004:18;:24;11023:4;11004:24;;;;;;;;;;;;;;;;;;;;;;;;;11003:25;10873:155;:199;;;;;11050:18;:22;11069:2;11050:22;;;;;;;;;;;;;;;;;;;;;;;;;11049:23;10873:199;10851:503;;;11107:38;11124:20;11107:16;:38::i;:::-;11164:26;11193:21;11164:50;;11258:1;11237:18;:22;11233:106;;;11284:35;11297:21;11284:12;:35::i;:::-;11233:106;11088:266;10851:503;10005:1360;;9967:1398;11377:12;11392:4;11377:19;;11455:18;:24;11474:4;11455:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11483:18;:22;11502:2;11483:22;;;;;;;;;;;;;;;;;;;;;;;;;11455:50;11454:115;;;;11532:13;;;;;;;;;;;11524:21;;:4;:21;;;;:44;;;;;11555:13;;;;;;;;;;;11549:19;;:2;:19;;;;11524:44;11454:115;11436:628;;;11606:5;11596:15;;11436:628;;;11688:13;;;;;;;;;;;11680:21;;:4;:21;;;:55;;;;;11719:15;;;;;;;;;;;11705:30;;:2;:30;;;;11680:55;11676:163;;;11768:14;;11756:9;:26;;;;11811:12;;11801:7;:22;;;;11676:163;11898:13;;;;;;;;;;;11892:19;;:2;:19;;;:55;;;;;11931:15;;;;;;;;;;;11915:32;;:4;:32;;;;11892:55;11888:165;;;11980:15;;11968:9;:27;;;;12024:13;;12014:7;:23;;;;11888:165;11436:628;12076:41;12091:4;12097:2;12101:6;12109:7;12076:14;:41::i;:::-;9725:2400;9622:2503;;;:::o;2541:224::-;2661:7;2694:1;2689;:6;;2697:12;2681:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2721:9;2737:1;2733;:5;;;;:::i;:::-;2721:17;;2756:1;2749:8;;;2541:224;;;;;:::o;12624:160::-;12681:19;;;;;;;;;;;:28;;:43;12710:13;12721:1;12710:6;:10;;:13;;;;:::i;:::-;12681:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12735:17;;;;;;;;;;;:26;;:41;12762:13;12773:1;12762:6;:10;;:13;;;;:::i;:::-;12735:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12624:160;:::o;8562:323::-;8657:7;8715;;8704;:18;;8682:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8803:19;8825:10;:8;:10::i;:::-;8803:32;;8853:24;8865:11;8853:7;:11;;:24;;;;:::i;:::-;8846:31;;;8562:323;;;:::o;12133:483::-;6208:4;6199:6;;:13;;;;;;;;;;;;;;;;;;12211:21:::1;12249:1;12235:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12211:40;;12280:4;12262;12267:1;12262:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12306:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12296:4;12301:1;12296:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12339:62;12356:4;12371:15;;;;;;;;;;;12389:11;12339:8;:62::i;:::-;12412:15;;;;;;;;;;;:66;;;12493:11;12519:1;12535:4;12562;12582:15;12412:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12200:416;6244:5:::0;6235:6;;:14;;;;;;;;;;;;;;;;;;12133:483;:::o;13470:282::-;13626:7;13621:28;;13635:14;:12;:14::i;:::-;13621:28;13660:44;13678:6;13686:9;13697:6;13660:17;:44::i;:::-;13720:7;13715:29;;13729:15;:13;:15::i;:::-;13715:29;13470:282;;;;:::o;3027:132::-;3085:7;3112:39;3116:1;3119;3112:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3105:46;;3027:132;;;;:::o;16524:166::-;16566:7;16587:15;16604;16623:19;:17;:19::i;:::-;16586:56;;;;16662:20;16674:7;16662;:11;;:20;;;;:::i;:::-;16655:27;;;;16524:166;:::o;8893:219::-;8953:1;8940:9;;:14;:30;;;;;8969:1;8958:7;;:12;8940:30;8972:7;8936:43;9011:9;;8991:17;:29;;;;9049:7;;9031:15;:25;;;;9081:1;9069:9;:13;;;;9103:1;9093:7;:11;;;;8893:219;:::o;13760:610::-;13907:15;13937:23;13975:12;14002:23;14040:12;14067:13;14094:19;14105:7;14094:10;:19::i;:::-;13892:221;;;;;;;;;;;;14142:28;14162:7;14142;:15;14150:6;14142:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14124:7;:15;14132:6;14124:15;;;;;;;;;;;;;;;:46;;;;14202:39;14225:15;14202:7;:18;14210:9;14202:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14181:7;:18;14189:9;14181:18;;;;;;;;;;;;;;;:60;;;;14252:16;14262:5;14252:9;:16::i;:::-;14279:23;14291:4;14297;14279:11;:23::i;:::-;14335:9;14318:44;;14327:6;14318:44;;;14346:15;14318:44;;;;;;:::i;:::-;;;;;;;;13881:489;;;;;;13760:610;;;:::o;9120:117::-;9176:17;;9164:9;:29;;;;9214:15;;9204:7;:25;;;;9120:117::o;3167:223::-;3287:7;3319:1;3315;:5;3322:12;3307:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3346:9;3362:1;3358;:5;;;;:::i;:::-;3346:17;;3381:1;3374:8;;;3167:223;;;;;:::o;16698:259::-;16749:7;16758;16778:15;16796:7;;16778:25;;16814:15;4841;16814:25;;16864:20;4841:15;16864:7;;:11;;:20;;;;:::i;:::-;16854:7;:30;16850:61;;;16894:7;;4841:15;16886:25;;;;;;;;16850:61;16932:7;16941;16924:25;;;;;;16698:259;;;:::o;14789:704::-;14889:7;14911;14933;14955;14977;14999;15035:23;15060:12;15074:13;15091:90;15117:7;15139:9;;15163:7;;15091:11;:90::i;:::-;15034:147;;;;;;15192:19;15214:10;:8;:10::i;:::-;15192:32;;15236:15;15253:23;15278:12;15294:109;15320:7;15342:4;15361:5;15381:11;15294;:109::i;:::-;15235:168;;;;;;15424:7;15433:15;15450:4;15456:15;15473:4;15479:5;15416:69;;;;;;;;;;;;;;;;;;;14789:704;;;;;;;:::o;2397:136::-;2455:7;2482:43;2486:1;2489;2482:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2475:50;;2397:136;;;;:::o;2210:179::-;2268:7;2288:9;2304:1;2300;:5;;;;:::i;:::-;2288:17;;2329:1;2324;:6;;2316:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2380:1;2373:8;;;2210:179;;;;:::o;14378:211::-;14431:19;14453:10;:8;:10::i;:::-;14431:32;;14474:13;14490:22;14500:11;14490:5;:9;;:22;;;;:::i;:::-;14474:38;;14548:33;14575:5;14548:7;:22;14564:4;14548:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14523:7;:22;14539:4;14523:22;;;;;;;;;;;;;;;:58;;;;14420:169;;14378:211;:::o;14597:147::-;14675:17;14687:4;14675:7;;:11;;:17;;;;:::i;:::-;14665:7;:27;;;;14716:20;14731:4;14716:10;;:14;;:20;;;;:::i;:::-;14703:10;:33;;;;14597:147;;:::o;15501:471::-;15670:7;15692;15714;15749:12;15764:30;15790:3;15764:21;15776:8;15764:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15749:45;;15805:13;15821:28;15845:3;15821:19;15833:6;15821:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15805:44;;15860:23;15886:28;15908:5;15886:17;15898:4;15886:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15860:54;;15935:15;15952:4;15958:5;15927:37;;;;;;;;;15501:471;;;;;;;:::o;15980:536::-;16174:7;16196;16218;16253:15;16271:24;16283:11;16271:7;:11;;:24;;;;:::i;:::-;16253:42;;16306:12;16321:21;16330:11;16321:4;:8;;:21;;;;:::i;:::-;16306:36;;16353:13;16369:22;16379:11;16369:5;:9;;:22;;;;:::i;:::-;16353:38;;16402:23;16428:28;16450:5;16428:17;16440:4;16428:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16402:54;;16477:7;16486:15;16503:4;16469:39;;;;;;;;;;15980:536;;;;;;;;:::o;2773:246::-;2831:7;2860:1;2855;:6;2851:47;;2885:1;2878:8;;;;2851:47;2908:9;2924:1;2920;:5;;;;:::i;:::-;2908:17;;2953:1;2948;2944;:5;;;;:::i;:::-;:10;2936:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3010:1;3003:8;;;2773:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:86::-;5431:7;5471:4;5464:5;5460:16;5449:27;;5396:86;;;:::o;5488:112::-;5571:22;5587:5;5571:22;:::i;:::-;5566:3;5559:35;5488:112;;:::o;5606:214::-;5695:4;5733:2;5722:9;5718:18;5710:26;;5746:67;5810:1;5799:9;5795:17;5786:6;5746:67;:::i;:::-;5606:214;;;;:::o;5826:118::-;5913:24;5931:5;5913:24;:::i;:::-;5908:3;5901:37;5826:118;;:::o;5950:222::-;6043:4;6081:2;6070:9;6066:18;6058:26;;6094:71;6162:1;6151:9;6147:17;6138:6;6094:71;:::i;:::-;5950:222;;;;:::o;6178:329::-;6237:6;6286:2;6274:9;6265:7;6261:23;6257:32;6254:119;;;6292:79;;:::i;:::-;6254:119;6412:1;6437:53;6482:7;6473:6;6462:9;6458:22;6437:53;:::i;:::-;6427:63;;6383:117;6178:329;;;;:::o;6513:::-;6572:6;6621:2;6609:9;6600:7;6596:23;6592:32;6589:119;;;6627:79;;:::i;:::-;6589:119;6747:1;6772:53;6817:7;6808:6;6797:9;6793:22;6772:53;:::i;:::-;6762:63;;6718:117;6513:329;;;;:::o;6848:116::-;6918:21;6933:5;6918:21;:::i;:::-;6911:5;6908:32;6898:60;;6954:1;6951;6944:12;6898:60;6848:116;:::o;6970:133::-;7013:5;7051:6;7038:20;7029:29;;7067:30;7091:5;7067:30;:::i;:::-;6970:133;;;;:::o;7109:323::-;7165:6;7214:2;7202:9;7193:7;7189:23;7185:32;7182:119;;;7220:79;;:::i;:::-;7182:119;7340:1;7365:50;7407:7;7398:6;7387:9;7383:22;7365:50;:::i;:::-;7355:60;;7311:114;7109:323;;;;:::o;7438:474::-;7506:6;7514;7563:2;7551:9;7542:7;7538:23;7534:32;7531:119;;;7569:79;;:::i;:::-;7531:119;7689:1;7714:53;7759:7;7750:6;7739:9;7735:22;7714:53;:::i;:::-;7704:63;;7660:117;7816:2;7842:53;7887:7;7878:6;7867:9;7863:22;7842:53;:::i;:::-;7832:63;;7787:118;7438:474;;;;;:::o;7918:182::-;8058:34;8054:1;8046:6;8042:14;8035:58;7918:182;:::o;8106:366::-;8248:3;8269:67;8333:2;8328:3;8269:67;:::i;:::-;8262:74;;8345:93;8434:3;8345:93;:::i;:::-;8463:2;8458:3;8454:12;8447:19;;8106:366;;;:::o;8478:419::-;8644:4;8682:2;8671:9;8667:18;8659:26;;8731:9;8725:4;8721:20;8717:1;8706:9;8702:17;8695:47;8759:131;8885:4;8759:131;:::i;:::-;8751:139;;8478:419;;;:::o;8903:225::-;9043:34;9039:1;9031:6;9027:14;9020:58;9112:8;9107:2;9099:6;9095:15;9088:33;8903:225;:::o;9134:366::-;9276:3;9297:67;9361:2;9356:3;9297:67;:::i;:::-;9290:74;;9373:93;9462:3;9373:93;:::i;:::-;9491:2;9486:3;9482:12;9475:19;;9134:366;;;:::o;9506:419::-;9672:4;9710:2;9699:9;9695:18;9687:26;;9759:9;9753:4;9749:20;9745:1;9734:9;9730:17;9723:47;9787:131;9913:4;9787:131;:::i;:::-;9779:139;;9506:419;;;:::o;9931:223::-;10071:34;10067:1;10059:6;10055:14;10048:58;10140:6;10135:2;10127:6;10123:15;10116:31;9931:223;:::o;10160:366::-;10302:3;10323:67;10387:2;10382:3;10323:67;:::i;:::-;10316:74;;10399:93;10488:3;10399:93;:::i;:::-;10517:2;10512:3;10508:12;10501:19;;10160:366;;;:::o;10532:419::-;10698:4;10736:2;10725:9;10721:18;10713:26;;10785:9;10779:4;10775:20;10771:1;10760:9;10756:17;10749:47;10813:131;10939:4;10813:131;:::i;:::-;10805:139;;10532:419;;;:::o;10957:221::-;11097:34;11093:1;11085:6;11081:14;11074:58;11166:4;11161:2;11153:6;11149:15;11142:29;10957:221;:::o;11184:366::-;11326:3;11347:67;11411:2;11406:3;11347:67;:::i;:::-;11340:74;;11423:93;11512:3;11423:93;:::i;:::-;11541:2;11536:3;11532:12;11525:19;;11184:366;;;:::o;11556:419::-;11722:4;11760:2;11749:9;11745:18;11737:26;;11809:9;11803:4;11799:20;11795:1;11784:9;11780:17;11773:47;11837:131;11963:4;11837:131;:::i;:::-;11829:139;;11556:419;;;:::o;11981:224::-;12121:34;12117:1;12109:6;12105:14;12098:58;12190:7;12185:2;12177:6;12173:15;12166:32;11981:224;:::o;12211:366::-;12353:3;12374:67;12438:2;12433:3;12374:67;:::i;:::-;12367:74;;12450:93;12539:3;12450:93;:::i;:::-;12568:2;12563:3;12559:12;12552:19;;12211:366;;;:::o;12583:419::-;12749:4;12787:2;12776:9;12772:18;12764:26;;12836:9;12830:4;12826:20;12822:1;12811:9;12807:17;12800:47;12864:131;12990:4;12864:131;:::i;:::-;12856:139;;12583:419;;;:::o;13008:222::-;13148:34;13144:1;13136:6;13132:14;13125:58;13217:5;13212:2;13204:6;13200:15;13193:30;13008:222;:::o;13236:366::-;13378:3;13399:67;13463:2;13458:3;13399:67;:::i;:::-;13392:74;;13475:93;13564:3;13475:93;:::i;:::-;13593:2;13588:3;13584:12;13577:19;;13236:366;;;:::o;13608:419::-;13774:4;13812:2;13801:9;13797:18;13789:26;;13861:9;13855:4;13851:20;13847:1;13836:9;13832:17;13825:47;13889:131;14015:4;13889:131;:::i;:::-;13881:139;;13608:419;;;:::o;14033:228::-;14173:34;14169:1;14161:6;14157:14;14150:58;14242:11;14237:2;14229:6;14225:15;14218:36;14033:228;:::o;14267:366::-;14409:3;14430:67;14494:2;14489:3;14430:67;:::i;:::-;14423:74;;14506:93;14595:3;14506:93;:::i;:::-;14624:2;14619:3;14615:12;14608:19;;14267:366;;;:::o;14639:419::-;14805:4;14843:2;14832:9;14828:18;14820:26;;14892:9;14886:4;14882:20;14878:1;14867:9;14863:17;14856:47;14920:131;15046:4;14920:131;:::i;:::-;14912:139;;14639:419;;;:::o;15064:250::-;15204:34;15200:1;15192:6;15188:14;15181:58;15273:33;15268:2;15260:6;15256:15;15249:58;15064:250;:::o;15320:366::-;15462:3;15483:67;15547:2;15542:3;15483:67;:::i;:::-;15476:74;;15559:93;15648:3;15559:93;:::i;:::-;15677:2;15672:3;15668:12;15661:19;;15320:366;;;:::o;15692:419::-;15858:4;15896:2;15885:9;15881:18;15873:26;;15945:9;15939:4;15935:20;15931:1;15920:9;15916:17;15909:47;15973:131;16099:4;15973:131;:::i;:::-;15965:139;;15692:419;;;:::o;16117:178::-;16257:30;16253:1;16245:6;16241:14;16234:54;16117:178;:::o;16301:366::-;16443:3;16464:67;16528:2;16523:3;16464:67;:::i;:::-;16457:74;;16540:93;16629:3;16540:93;:::i;:::-;16658:2;16653:3;16649:12;16642:19;;16301:366;;;:::o;16673:419::-;16839:4;16877:2;16866:9;16862:18;16854:26;;16926:9;16920:4;16916:20;16912:1;16901:9;16897:17;16890:47;16954:131;17080:4;16954:131;:::i;:::-;16946:139;;16673:419;;;:::o;17098:180::-;17146:77;17143:1;17136:88;17243:4;17240:1;17233:15;17267:4;17264:1;17257:15;17284:191;17324:3;17343:20;17361:1;17343:20;:::i;:::-;17338:25;;17377:20;17395:1;17377:20;:::i;:::-;17372:25;;17420:1;17417;17413:9;17406:16;;17441:3;17438:1;17435:10;17432:36;;;17448:18;;:::i;:::-;17432:36;17284:191;;;;:::o;17481:222::-;17621:34;17617:1;17609:6;17605:14;17598:58;17690:5;17685:2;17677:6;17673:15;17666:30;17481:222;:::o;17709:366::-;17851:3;17872:67;17936:2;17931:3;17872:67;:::i;:::-;17865:74;;17948:93;18037:3;17948:93;:::i;:::-;18066:2;18061:3;18057:12;18050:19;;17709:366;;;:::o;18081:419::-;18247:4;18285:2;18274:9;18270:18;18262:26;;18334:9;18328:4;18324:20;18320:1;18309:9;18305:17;18298:47;18362:131;18488:4;18362:131;:::i;:::-;18354:139;;18081:419;;;:::o;18506:194::-;18546:4;18566:20;18584:1;18566:20;:::i;:::-;18561:25;;18600:20;18618:1;18600:20;:::i;:::-;18595:25;;18644:1;18641;18637:9;18629:17;;18668:1;18662:4;18659:11;18656:37;;;18673:18;;:::i;:::-;18656:37;18506:194;;;;:::o;18706:229::-;18846:34;18842:1;18834:6;18830:14;18823:58;18915:12;18910:2;18902:6;18898:15;18891:37;18706:229;:::o;18941:366::-;19083:3;19104:67;19168:2;19163:3;19104:67;:::i;:::-;19097:74;;19180:93;19269:3;19180:93;:::i;:::-;19298:2;19293:3;19289:12;19282:19;;18941:366;;;:::o;19313:419::-;19479:4;19517:2;19506:9;19502:18;19494:26;;19566:9;19560:4;19556:20;19552:1;19541:9;19537:17;19530:47;19594:131;19720:4;19594:131;:::i;:::-;19586:139;;19313:419;;;:::o;19738:180::-;19786:77;19783:1;19776:88;19883:4;19880:1;19873:15;19907:4;19904:1;19897:15;19924:180;19972:77;19969:1;19962:88;20069:4;20066:1;20059:15;20093:4;20090:1;20083:15;20110:143;20167:5;20198:6;20192:13;20183:22;;20214:33;20241:5;20214:33;:::i;:::-;20110:143;;;;:::o;20259:351::-;20329:6;20378:2;20366:9;20357:7;20353:23;20349:32;20346:119;;;20384:79;;:::i;:::-;20346:119;20504:1;20529:64;20585:7;20576:6;20565:9;20561:22;20529:64;:::i;:::-;20519:74;;20475:128;20259:351;;;;:::o;20616:85::-;20661:7;20690:5;20679:16;;20616:85;;;:::o;20707:158::-;20765:9;20798:61;20816:42;20825:32;20851:5;20825:32;:::i;:::-;20816:42;:::i;:::-;20798:61;:::i;:::-;20785:74;;20707:158;;;:::o;20871:147::-;20966:45;21005:5;20966:45;:::i;:::-;20961:3;20954:58;20871:147;;:::o;21024:114::-;21091:6;21125:5;21119:12;21109:22;;21024:114;;;:::o;21144:184::-;21243:11;21277:6;21272:3;21265:19;21317:4;21312:3;21308:14;21293:29;;21144:184;;;;:::o;21334:132::-;21401:4;21424:3;21416:11;;21454:4;21449:3;21445:14;21437:22;;21334:132;;;:::o;21472:108::-;21549:24;21567:5;21549:24;:::i;:::-;21544:3;21537:37;21472:108;;:::o;21586:179::-;21655:10;21676:46;21718:3;21710:6;21676:46;:::i;:::-;21754:4;21749:3;21745:14;21731:28;;21586:179;;;;:::o;21771:113::-;21841:4;21873;21868:3;21864:14;21856:22;;21771:113;;;:::o;21920:732::-;22039:3;22068:54;22116:5;22068:54;:::i;:::-;22138:86;22217:6;22212:3;22138:86;:::i;:::-;22131:93;;22248:56;22298:5;22248:56;:::i;:::-;22327:7;22358:1;22343:284;22368:6;22365:1;22362:13;22343:284;;;22444:6;22438:13;22471:63;22530:3;22515:13;22471:63;:::i;:::-;22464:70;;22557:60;22610:6;22557:60;:::i;:::-;22547:70;;22403:224;22390:1;22387;22383:9;22378:14;;22343:284;;;22347:14;22643:3;22636:10;;22044:608;;;21920:732;;;;:::o;22658:831::-;22921:4;22959:3;22948:9;22944:19;22936:27;;22973:71;23041:1;23030:9;23026:17;23017:6;22973:71;:::i;:::-;23054:80;23130:2;23119:9;23115:18;23106:6;23054:80;:::i;:::-;23181:9;23175:4;23171:20;23166:2;23155:9;23151:18;23144:48;23209:108;23312:4;23303:6;23209:108;:::i;:::-;23201:116;;23327:72;23395:2;23384:9;23380:18;23371:6;23327:72;:::i;:::-;23409:73;23477:3;23466:9;23462:19;23453:6;23409:73;:::i;:::-;22658:831;;;;;;;;:::o;23495:180::-;23543:77;23540:1;23533:88;23640:4;23637:1;23630:15;23664:4;23661:1;23654:15;23681:185;23721:1;23738:20;23756:1;23738:20;:::i;:::-;23733:25;;23772:20;23790:1;23772:20;:::i;:::-;23767:25;;23811:1;23801:35;;23816:18;;:::i;:::-;23801:35;23858:1;23855;23851:9;23846:14;;23681:185;;;;:::o;23872:177::-;24012:29;24008:1;24000:6;23996:14;23989:53;23872:177;:::o;24055:366::-;24197:3;24218:67;24282:2;24277:3;24218:67;:::i;:::-;24211:74;;24294:93;24383:3;24294:93;:::i;:::-;24412:2;24407:3;24403:12;24396:19;;24055:366;;;:::o;24427:419::-;24593:4;24631:2;24620:9;24616:18;24608:26;;24680:9;24674:4;24670:20;24666:1;24655:9;24651:17;24644:47;24708:131;24834:4;24708:131;:::i;:::-;24700:139;;24427:419;;;:::o;24852:410::-;24892:7;24915:20;24933:1;24915:20;:::i;:::-;24910:25;;24949:20;24967:1;24949:20;:::i;:::-;24944:25;;25004:1;25001;24997:9;25026:30;25044:11;25026:30;:::i;:::-;25015:41;;25205:1;25196:7;25192:15;25189:1;25186:22;25166:1;25159:9;25139:83;25116:139;;25235:18;;:::i;:::-;25116:139;24900:362;24852:410;;;;:::o;25268:220::-;25408:34;25404:1;25396:6;25392:14;25385:58;25477:3;25472:2;25464:6;25460:15;25453:28;25268:220;:::o;25494:366::-;25636:3;25657:67;25721:2;25716:3;25657:67;:::i;:::-;25650:74;;25733:93;25822:3;25733:93;:::i;:::-;25851:2;25846:3;25842:12;25835:19;;25494:366;;;:::o;25866:419::-;26032:4;26070:2;26059:9;26055:18;26047:26;;26119:9;26113:4;26109:20;26105:1;26094:9;26090:17;26083:47;26147:131;26273:4;26147:131;:::i;:::-;26139:139;;25866:419;;;:::o
Swarm Source
ipfs://0e8cf207f4c507c004e9917f6fd9b331e278f5e2c6c999802b34a00187c5bcbe
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.