ERC-20
Overview
Max Total Supply
1,000,000,000 ALICEAI
Holders
36
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
0.000000001 ALICEAIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
AliceAI
Compiler Version
v0.8.9+commit.e5eed63a
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
/** Alice is your AI anime girlfriend who loves to paint. You can ask her to paint anything you want, help Alice learn new things as her AI keeps improving everyday. Ask her yourself and try Alice Paint AI bot. Alice can draw paintings for you, just request her on the Alice AI Paint Bot and she will try her best! ALICE CHAT BOT Chat with Alice as she is your anime girlfriend, She will try to give you the best advice and share love! Telegram: https://t.me/AliceAI_Erc20 Website: https://www.aliceaipaint.com/ Twitter: https://mobile.twitter.com/AliceAI_Eth */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.9; 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 AliceAI is Context, IERC20, Ownable { using SafeMath for uint256; string private constant _name ="ALICE AI"; string private constant _symbol ="ALICEAI"; 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 = 1000000000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 private _redisFeeOnBuy = 0; uint256 private _taxFeeOnBuy = 15; uint256 private _redisFeeOnSell = 0; uint256 private _taxFeeOnSell = 35; //Original Fee uint256 private _redisFee = _redisFeeOnSell; uint256 private _taxFee = _taxFeeOnSell; uint256 private _previousredisFee = _redisFee; uint256 private _previoustaxFee = _taxFee; mapping(address => bool) public bots; mapping (address => uint256) public _buyMap; address payable private _developmentAddress = payable(0xed2CAeF0Bf04185C71C4b9e95AB9b8C2C6ab8b09); address payable private _marketingAddress = payable(0xed2CAeF0Bf04185C71C4b9e95AB9b8C2C6ab8b09); IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool private tradingOpen; bool private inSwap = false; bool private swapEnabled = true; uint256 public _maxTxAmount = 20000000 * 10**9; uint256 public _maxWalletSize = 20000000 * 10**9; uint256 public _swapTokensAtAmount = 10000 * 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; 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"); require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!"); 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 { _marketingAddress.transfer(amount); } 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 blockTheFuckingBots(address[] memory bots_) public onlyOwner { for (uint256 i = 0; i < bots_.length; i++) { bots[bots_[i]] = true; } } function unblockTheBots(address notbot) public onlyOwner { bots[notbot] = false; } 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); } function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner { _redisFeeOnBuy = redisFeeOnBuy; _redisFeeOnSell = redisFeeOnSell; _taxFeeOnBuy = taxFeeOnBuy; _taxFeeOnSell = taxFeeOnSell; } //Set minimum tokens required to swap. function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner { _swapTokensAtAmount = swapTokensAtAmount; } //Set minimum tokens required to swap. function toggleSwap(bool _swapEnabled) public onlyOwner { swapEnabled = _swapEnabled; } //Set maximum transaction function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner { _maxTxAmount = maxTxAmount; } function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner { _maxWalletSize = maxWalletSize; } function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner { for(uint256 i = 0; i < accounts.length; i++) { _isExcludedFromFee[accounts[i]] = excluded; } } }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
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":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_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":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockTheFuckingBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","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":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","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":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","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":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockTheBots","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
6080604052670de0b6b3a76400006000196200001c91906200073e565b6000196200002b9190620007a5565b6006556000600855600f6009556000600a556023600b55600a54600c55600b54600d55600c54600e55600d54600f5573ed2caef0bf04185c71c4b9e95ab9b8c2c6ab8b09601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073ed2caef0bf04185c71c4b9e95ab9b8c2c6ab8b09601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555066470de4df82000060165566470de4df8200006017556509184e72a0006018553480156200016657600080fd5b50600062000179620006d460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600654600260006200022e620006d460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200030d57600080fd5b505afa15801562000322573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034891906200084a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003ab57600080fd5b505afa158015620003c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e691906200084a565b6040518363ffffffff1660e01b8152600401620004059291906200088d565b602060405180830381600087803b1580156200042057600080fd5b505af115801562000435573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200045b91906200084a565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004b1620006dc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200065e620006d460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620006c59190620008cb565b60405180910390a350620008e8565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200074b8262000705565b9150620007588362000705565b9250826200076b576200076a6200070f565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007b28262000705565b9150620007bf8362000705565b925082821015620007d557620007d462000776565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200081282620007e5565b9050919050565b620008248162000805565b81146200083057600080fd5b50565b600081519050620008448162000819565b92915050565b600060208284031215620008635762000862620007e0565b5b6000620008738482850162000833565b91505092915050565b620008878162000805565b82525050565b6000604082019050620008a460008301856200087c565b620008b360208301846200087c565b9392505050565b620008c58162000705565b82525050565b6000602082019050620008e26000830184620008ba565b92915050565b613de180620008f86000396000f3fe6080604052600436106101d15760003560e01c80637d1db4a5116100f7578063a2a957bb11610095578063c492f04611610064578063c492f0461461065d578063dd62ed3e14610686578063ea1644d5146106c3578063f2fde38b146106ec576101d8565b8063a2a957bb146105a3578063a9059cbb146105cc578063bfd7928414610609578063c3c8cd8014610646576101d8565b80638f70ccf7116100d15780638f70ccf7146104fb5780638f9a55c01461052457806395d89b411461054f57806398a5c3151461057a576101d8565b80637d1db4a5146104685780637f2feddc146104935780638da5cb5b146104d0576101d8565b8063313ce5671161016f5780636fc3eaec1161013e5780636fc3eaec146103d457806370a08231146103eb578063715018a61461042857806374010ece1461043f576101d8565b8063313ce5671461032c57806349bd5a5e146103575780636d8aa8f8146103825780636e76d54f146103ab576101d8565b806318160ddd116101ab57806318160ddd14610270578063210c37ff1461029b57806323b872dd146102c45780632fd689e314610301576101d8565b806306fdde03146101dd578063095ea7b3146102085780631694505e14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610715565b6040516101ff9190612c3b565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190612d05565b610752565b60405161023c9190612d60565b60405180910390f35b34801561025157600080fd5b5061025a610770565b6040516102679190612dda565b60405180910390f35b34801561027c57600080fd5b50610285610796565b6040516102929190612e04565b60405180910390f35b3480156102a757600080fd5b506102c260048036038101906102bd9190612e1f565b6107a6565b005b3480156102d057600080fd5b506102eb60048036038101906102e69190612e4c565b610896565b6040516102f89190612d60565b60405180910390f35b34801561030d57600080fd5b5061031661096f565b6040516103239190612e04565b60405180910390f35b34801561033857600080fd5b50610341610975565b60405161034e9190612ebb565b60405180910390f35b34801561036357600080fd5b5061036c61097e565b6040516103799190612ee5565b60405180910390f35b34801561038e57600080fd5b506103a960048036038101906103a49190612f2c565b6109a4565b005b3480156103b757600080fd5b506103d260048036038101906103cd91906130a1565b610a56565b005b3480156103e057600080fd5b506103e9610b80565b005b3480156103f757600080fd5b50610412600480360381019061040d9190612e1f565b610c51565b60405161041f9190612e04565b60405180910390f35b34801561043457600080fd5b5061043d610ca2565b005b34801561044b57600080fd5b50610466600480360381019061046191906130ea565b610df5565b005b34801561047457600080fd5b5061047d610e94565b60405161048a9190612e04565b60405180910390f35b34801561049f57600080fd5b506104ba60048036038101906104b59190612e1f565b610e9a565b6040516104c79190612e04565b60405180910390f35b3480156104dc57600080fd5b506104e5610eb2565b6040516104f29190612ee5565b60405180910390f35b34801561050757600080fd5b50610522600480360381019061051d9190612f2c565b610edb565b005b34801561053057600080fd5b50610539610f8d565b6040516105469190612e04565b60405180910390f35b34801561055b57600080fd5b50610564610f93565b6040516105719190612c3b565b60405180910390f35b34801561058657600080fd5b506105a1600480360381019061059c91906130ea565b610fd0565b005b3480156105af57600080fd5b506105ca60048036038101906105c59190613117565b61106f565b005b3480156105d857600080fd5b506105f360048036038101906105ee9190612d05565b611126565b6040516106009190612d60565b60405180910390f35b34801561061557600080fd5b50610630600480360381019061062b9190612e1f565b611144565b60405161063d9190612d60565b60405180910390f35b34801561065257600080fd5b5061065b611164565b005b34801561066957600080fd5b50610684600480360381019061067f91906131d9565b61123d565b005b34801561069257600080fd5b506106ad60048036038101906106a89190613239565b611377565b6040516106ba9190612e04565b60405180910390f35b3480156106cf57600080fd5b506106ea60048036038101906106e591906130ea565b6113fe565b005b3480156106f857600080fd5b50610713600480360381019061070e9190612e1f565b61149d565b005b60606040518060400160405280600881526020017f414c494345204149000000000000000000000000000000000000000000000000815250905090565b600061076661075f61165f565b8484611667565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b6107ae61165f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461083b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610832906132c5565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006108a3848484611832565b610964846108af61165f565b61095f85604051806060016040528060288152602001613d8460289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061091561165f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b79092919063ffffffff16565b611667565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109ac61165f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a30906132c5565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b610a5e61165f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae2906132c5565b60405180910390fd5b60005b8151811015610b7c57600160106000848481518110610b1057610b0f6132e5565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610b7490613343565b915050610aee565b5050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bc161165f565b73ffffffffffffffffffffffffffffffffffffffff161480610c375750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c1f61165f565b73ffffffffffffffffffffffffffffffffffffffff16145b610c4057600080fd5b6000479050610c4e8161211b565b50565b6000610c9b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612187565b9050919050565b610caa61165f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2e906132c5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610dfd61165f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e81906132c5565b60405180910390fd5b8060168190555050565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ee361165f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f67906132c5565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600781526020017f414c494345414900000000000000000000000000000000000000000000000000815250905090565b610fd861165f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105c906132c5565b60405180910390fd5b8060188190555050565b61107761165f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611104576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fb906132c5565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b600061113a61113361165f565b8484611832565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111a561165f565b73ffffffffffffffffffffffffffffffffffffffff16148061121b5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661120361165f565b73ffffffffffffffffffffffffffffffffffffffff16145b61122457600080fd5b600061122f30610c51565b905061123a816121f5565b50565b61124561165f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c9906132c5565b60405180910390fd5b60005b838390508110156113715781600560008686858181106112f8576112f76132e5565b5b905060200201602081019061130d9190612e1f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061136990613343565b9150506112d5565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61140661165f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148a906132c5565b60405180910390fd5b8060178190555050565b6114a561165f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611532576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611529906132c5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156115a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611599906133fe565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ce90613490565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611747576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173e90613522565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118259190612e04565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156118a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611899906135b4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611912576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190990613646565b60405180910390fd5b60008111611955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194c906136d8565b60405180910390fd5b61195d610eb2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119cb575061199b610eb2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611db657601560149054906101000a900460ff16611a5a576119ec610eb2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a509061376a565b60405180910390fd5b5b601654811115611a9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a96906137d6565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b435750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611b82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7990613868565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611c2f5760175481611be484610c51565b611bee9190613888565b10611c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2590613950565b60405180910390fd5b5b6000611c3a30610c51565b9050600060185482101590506016548210611c555760165491505b808015611c6d575060158054906101000a900460ff16155b8015611cc75750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611cdf5750601560169054906101000a900460ff165b8015611d355750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d8b5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611db357611d99826121f5565b60004790506000811115611db157611db04761211b565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e5d5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611f105750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f0f5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611f1e57600090506120a5565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611fc95750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611fe157600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561208c5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156120a457600a54600c81905550600b54600d819055505b5b6120b18484848461247b565b50505050565b60008383111582906120ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f69190612c3b565b60405180910390fd5b506000838561210e9190613970565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612183573d6000803e3d6000fd5b5050565b60006006548211156121ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c590613a16565b60405180910390fd5b60006121d86124a8565b90506121ed81846124d390919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561222c5761222b612f5e565b5b60405190808252806020026020018201604052801561225a5781602001602082028036833780820191505090505b5090503081600081518110612272576122716132e5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561231457600080fd5b505afa158015612328573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061234c9190613a4b565b816001815181106123605761235f6132e5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123c730601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611667565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161242b959493929190613b71565b600060405180830381600087803b15801561244557600080fd5b505af1158015612459573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806124895761248861251d565b5b612494848484612560565b806124a2576124a161272b565b5b50505050565b60008060006124b561273f565b915091506124cc81836124d390919063ffffffff16565b9250505090565b600061251583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061279e565b905092915050565b6000600c5414801561253157506000600d54145b1561253b5761255e565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061257287612801565b9550955095509550955095506125d086600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461286990919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061266585600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128b390919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126b181612911565b6126bb84836129ce565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127189190612e04565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a76400009050612773670de0b6b3a76400006006546124d390919063ffffffff16565b82101561279157600654670de0b6b3a764000093509350505061279a565b81819350935050505b9091565b600080831182906127e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127dc9190612c3b565b60405180910390fd5b50600083856127f49190613bfa565b9050809150509392505050565b600080600080600080600080600061281e8a600c54600d54612a08565b925092509250600061282e6124a8565b905060008060006128418e878787612a9e565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006128ab83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120b7565b905092915050565b60008082846128c29190613888565b905083811015612907576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128fe90613c77565b60405180910390fd5b8091505092915050565b600061291b6124a8565b905060006129328284612b2790919063ffffffff16565b905061298681600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128b390919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6129e38260065461286990919063ffffffff16565b6006819055506129fe816007546128b390919063ffffffff16565b6007819055505050565b600080600080612a346064612a26888a612b2790919063ffffffff16565b6124d390919063ffffffff16565b90506000612a5e6064612a50888b612b2790919063ffffffff16565b6124d390919063ffffffff16565b90506000612a8782612a79858c61286990919063ffffffff16565b61286990919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612ab78589612b2790919063ffffffff16565b90506000612ace8689612b2790919063ffffffff16565b90506000612ae58789612b2790919063ffffffff16565b90506000612b0e82612b00858761286990919063ffffffff16565b61286990919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612b3a5760009050612b9c565b60008284612b489190613c97565b9050828482612b579190613bfa565b14612b97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8e90613d63565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612bdc578082015181840152602081019050612bc1565b83811115612beb576000848401525b50505050565b6000601f19601f8301169050919050565b6000612c0d82612ba2565b612c178185612bad565b9350612c27818560208601612bbe565b612c3081612bf1565b840191505092915050565b60006020820190508181036000830152612c558184612c02565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c9c82612c71565b9050919050565b612cac81612c91565b8114612cb757600080fd5b50565b600081359050612cc981612ca3565b92915050565b6000819050919050565b612ce281612ccf565b8114612ced57600080fd5b50565b600081359050612cff81612cd9565b92915050565b60008060408385031215612d1c57612d1b612c67565b5b6000612d2a85828601612cba565b9250506020612d3b85828601612cf0565b9150509250929050565b60008115159050919050565b612d5a81612d45565b82525050565b6000602082019050612d756000830184612d51565b92915050565b6000819050919050565b6000612da0612d9b612d9684612c71565b612d7b565b612c71565b9050919050565b6000612db282612d85565b9050919050565b6000612dc482612da7565b9050919050565b612dd481612db9565b82525050565b6000602082019050612def6000830184612dcb565b92915050565b612dfe81612ccf565b82525050565b6000602082019050612e196000830184612df5565b92915050565b600060208284031215612e3557612e34612c67565b5b6000612e4384828501612cba565b91505092915050565b600080600060608486031215612e6557612e64612c67565b5b6000612e7386828701612cba565b9350506020612e8486828701612cba565b9250506040612e9586828701612cf0565b9150509250925092565b600060ff82169050919050565b612eb581612e9f565b82525050565b6000602082019050612ed06000830184612eac565b92915050565b612edf81612c91565b82525050565b6000602082019050612efa6000830184612ed6565b92915050565b612f0981612d45565b8114612f1457600080fd5b50565b600081359050612f2681612f00565b92915050565b600060208284031215612f4257612f41612c67565b5b6000612f5084828501612f17565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612f9682612bf1565b810181811067ffffffffffffffff82111715612fb557612fb4612f5e565b5b80604052505050565b6000612fc8612c5d565b9050612fd48282612f8d565b919050565b600067ffffffffffffffff821115612ff457612ff3612f5e565b5b602082029050602081019050919050565b600080fd5b600061301d61301884612fd9565b612fbe565b905080838252602082019050602084028301858111156130405761303f613005565b5b835b8181101561306957806130558882612cba565b845260208401935050602081019050613042565b5050509392505050565b600082601f83011261308857613087612f59565b5b813561309884826020860161300a565b91505092915050565b6000602082840312156130b7576130b6612c67565b5b600082013567ffffffffffffffff8111156130d5576130d4612c6c565b5b6130e184828501613073565b91505092915050565b600060208284031215613100576130ff612c67565b5b600061310e84828501612cf0565b91505092915050565b6000806000806080858703121561313157613130612c67565b5b600061313f87828801612cf0565b945050602061315087828801612cf0565b935050604061316187828801612cf0565b925050606061317287828801612cf0565b91505092959194509250565b600080fd5b60008083601f84011261319957613198612f59565b5b8235905067ffffffffffffffff8111156131b6576131b561317e565b5b6020830191508360208202830111156131d2576131d1613005565b5b9250929050565b6000806000604084860312156131f2576131f1612c67565b5b600084013567ffffffffffffffff8111156132105761320f612c6c565b5b61321c86828701613183565b9350935050602061322f86828701612f17565b9150509250925092565b600080604083850312156132505761324f612c67565b5b600061325e85828601612cba565b925050602061326f85828601612cba565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006132af602083612bad565b91506132ba82613279565b602082019050919050565b600060208201905081810360008301526132de816132a2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061334e82612ccf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561338157613380613314565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006133e8602683612bad565b91506133f38261338c565b604082019050919050565b60006020820190508181036000830152613417816133db565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061347a602483612bad565b91506134858261341e565b604082019050919050565b600060208201905081810360008301526134a98161346d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061350c602283612bad565b9150613517826134b0565b604082019050919050565b6000602082019050818103600083015261353b816134ff565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061359e602583612bad565b91506135a982613542565b604082019050919050565b600060208201905081810360008301526135cd81613591565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613630602383612bad565b915061363b826135d4565b604082019050919050565b6000602082019050818103600083015261365f81613623565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006136c2602983612bad565b91506136cd82613666565b604082019050919050565b600060208201905081810360008301526136f1816136b5565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613754603f83612bad565b915061375f826136f8565b604082019050919050565b6000602082019050818103600083015261378381613747565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006137c0601c83612bad565b91506137cb8261378a565b602082019050919050565b600060208201905081810360008301526137ef816137b3565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613852602383612bad565b915061385d826137f6565b604082019050919050565b6000602082019050818103600083015261388181613845565b9050919050565b600061389382612ccf565b915061389e83612ccf565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156138d3576138d2613314565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061393a602383612bad565b9150613945826138de565b604082019050919050565b600060208201905081810360008301526139698161392d565b9050919050565b600061397b82612ccf565b915061398683612ccf565b92508282101561399957613998613314565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613a00602a83612bad565b9150613a0b826139a4565b604082019050919050565b60006020820190508181036000830152613a2f816139f3565b9050919050565b600081519050613a4581612ca3565b92915050565b600060208284031215613a6157613a60612c67565b5b6000613a6f84828501613a36565b91505092915050565b6000819050919050565b6000613a9d613a98613a9384613a78565b612d7b565b612ccf565b9050919050565b613aad81613a82565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ae881612c91565b82525050565b6000613afa8383613adf565b60208301905092915050565b6000602082019050919050565b6000613b1e82613ab3565b613b288185613abe565b9350613b3383613acf565b8060005b83811015613b64578151613b4b8882613aee565b9750613b5683613b06565b925050600181019050613b37565b5085935050505092915050565b600060a082019050613b866000830188612df5565b613b936020830187613aa4565b8181036040830152613ba58186613b13565b9050613bb46060830185612ed6565b613bc16080830184612df5565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c0582612ccf565b9150613c1083612ccf565b925082613c2057613c1f613bcb565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c61601b83612bad565b9150613c6c82613c2b565b602082019050919050565b60006020820190508181036000830152613c9081613c54565b9050919050565b6000613ca282612ccf565b9150613cad83612ccf565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613ce657613ce5613314565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d4d602183612bad565b9150613d5882613cf1565b604082019050919050565b60006020820190508181036000830152613d7c81613d40565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a0df7ced48322fd62f85ae4ccee29f6d835ffd956deb55f627546b4511a6142a64736f6c63430008090033
Deployed Bytecode
0x6080604052600436106101d15760003560e01c80637d1db4a5116100f7578063a2a957bb11610095578063c492f04611610064578063c492f0461461065d578063dd62ed3e14610686578063ea1644d5146106c3578063f2fde38b146106ec576101d8565b8063a2a957bb146105a3578063a9059cbb146105cc578063bfd7928414610609578063c3c8cd8014610646576101d8565b80638f70ccf7116100d15780638f70ccf7146104fb5780638f9a55c01461052457806395d89b411461054f57806398a5c3151461057a576101d8565b80637d1db4a5146104685780637f2feddc146104935780638da5cb5b146104d0576101d8565b8063313ce5671161016f5780636fc3eaec1161013e5780636fc3eaec146103d457806370a08231146103eb578063715018a61461042857806374010ece1461043f576101d8565b8063313ce5671461032c57806349bd5a5e146103575780636d8aa8f8146103825780636e76d54f146103ab576101d8565b806318160ddd116101ab57806318160ddd14610270578063210c37ff1461029b57806323b872dd146102c45780632fd689e314610301576101d8565b806306fdde03146101dd578063095ea7b3146102085780631694505e14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610715565b6040516101ff9190612c3b565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190612d05565b610752565b60405161023c9190612d60565b60405180910390f35b34801561025157600080fd5b5061025a610770565b6040516102679190612dda565b60405180910390f35b34801561027c57600080fd5b50610285610796565b6040516102929190612e04565b60405180910390f35b3480156102a757600080fd5b506102c260048036038101906102bd9190612e1f565b6107a6565b005b3480156102d057600080fd5b506102eb60048036038101906102e69190612e4c565b610896565b6040516102f89190612d60565b60405180910390f35b34801561030d57600080fd5b5061031661096f565b6040516103239190612e04565b60405180910390f35b34801561033857600080fd5b50610341610975565b60405161034e9190612ebb565b60405180910390f35b34801561036357600080fd5b5061036c61097e565b6040516103799190612ee5565b60405180910390f35b34801561038e57600080fd5b506103a960048036038101906103a49190612f2c565b6109a4565b005b3480156103b757600080fd5b506103d260048036038101906103cd91906130a1565b610a56565b005b3480156103e057600080fd5b506103e9610b80565b005b3480156103f757600080fd5b50610412600480360381019061040d9190612e1f565b610c51565b60405161041f9190612e04565b60405180910390f35b34801561043457600080fd5b5061043d610ca2565b005b34801561044b57600080fd5b50610466600480360381019061046191906130ea565b610df5565b005b34801561047457600080fd5b5061047d610e94565b60405161048a9190612e04565b60405180910390f35b34801561049f57600080fd5b506104ba60048036038101906104b59190612e1f565b610e9a565b6040516104c79190612e04565b60405180910390f35b3480156104dc57600080fd5b506104e5610eb2565b6040516104f29190612ee5565b60405180910390f35b34801561050757600080fd5b50610522600480360381019061051d9190612f2c565b610edb565b005b34801561053057600080fd5b50610539610f8d565b6040516105469190612e04565b60405180910390f35b34801561055b57600080fd5b50610564610f93565b6040516105719190612c3b565b60405180910390f35b34801561058657600080fd5b506105a1600480360381019061059c91906130ea565b610fd0565b005b3480156105af57600080fd5b506105ca60048036038101906105c59190613117565b61106f565b005b3480156105d857600080fd5b506105f360048036038101906105ee9190612d05565b611126565b6040516106009190612d60565b60405180910390f35b34801561061557600080fd5b50610630600480360381019061062b9190612e1f565b611144565b60405161063d9190612d60565b60405180910390f35b34801561065257600080fd5b5061065b611164565b005b34801561066957600080fd5b50610684600480360381019061067f91906131d9565b61123d565b005b34801561069257600080fd5b506106ad60048036038101906106a89190613239565b611377565b6040516106ba9190612e04565b60405180910390f35b3480156106cf57600080fd5b506106ea60048036038101906106e591906130ea565b6113fe565b005b3480156106f857600080fd5b50610713600480360381019061070e9190612e1f565b61149d565b005b60606040518060400160405280600881526020017f414c494345204149000000000000000000000000000000000000000000000000815250905090565b600061076661075f61165f565b8484611667565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b6107ae61165f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461083b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610832906132c5565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006108a3848484611832565b610964846108af61165f565b61095f85604051806060016040528060288152602001613d8460289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061091561165f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b79092919063ffffffff16565b611667565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109ac61165f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a30906132c5565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b610a5e61165f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae2906132c5565b60405180910390fd5b60005b8151811015610b7c57600160106000848481518110610b1057610b0f6132e5565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610b7490613343565b915050610aee565b5050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bc161165f565b73ffffffffffffffffffffffffffffffffffffffff161480610c375750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c1f61165f565b73ffffffffffffffffffffffffffffffffffffffff16145b610c4057600080fd5b6000479050610c4e8161211b565b50565b6000610c9b600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612187565b9050919050565b610caa61165f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2e906132c5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610dfd61165f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e81906132c5565b60405180910390fd5b8060168190555050565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ee361165f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f67906132c5565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600781526020017f414c494345414900000000000000000000000000000000000000000000000000815250905090565b610fd861165f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105c906132c5565b60405180910390fd5b8060188190555050565b61107761165f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611104576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fb906132c5565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b600061113a61113361165f565b8484611832565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111a561165f565b73ffffffffffffffffffffffffffffffffffffffff16148061121b5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661120361165f565b73ffffffffffffffffffffffffffffffffffffffff16145b61122457600080fd5b600061122f30610c51565b905061123a816121f5565b50565b61124561165f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c9906132c5565b60405180910390fd5b60005b838390508110156113715781600560008686858181106112f8576112f76132e5565b5b905060200201602081019061130d9190612e1f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061136990613343565b9150506112d5565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61140661165f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148a906132c5565b60405180910390fd5b8060178190555050565b6114a561165f565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611532576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611529906132c5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156115a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611599906133fe565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ce90613490565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611747576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173e90613522565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118259190612e04565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156118a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611899906135b4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611912576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190990613646565b60405180910390fd5b60008111611955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194c906136d8565b60405180910390fd5b61195d610eb2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119cb575061199b610eb2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611db657601560149054906101000a900460ff16611a5a576119ec610eb2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a509061376a565b60405180910390fd5b5b601654811115611a9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a96906137d6565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b435750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611b82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7990613868565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611c2f5760175481611be484610c51565b611bee9190613888565b10611c2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2590613950565b60405180910390fd5b5b6000611c3a30610c51565b9050600060185482101590506016548210611c555760165491505b808015611c6d575060158054906101000a900460ff16155b8015611cc75750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611cdf5750601560169054906101000a900460ff165b8015611d355750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d8b5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611db357611d99826121f5565b60004790506000811115611db157611db04761211b565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611e5d5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611f105750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f0f5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611f1e57600090506120a5565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611fc95750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611fe157600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561208c5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156120a457600a54600c81905550600b54600d819055505b5b6120b18484848461247b565b50505050565b60008383111582906120ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f69190612c3b565b60405180910390fd5b506000838561210e9190613970565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612183573d6000803e3d6000fd5b5050565b60006006548211156121ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c590613a16565b60405180910390fd5b60006121d86124a8565b90506121ed81846124d390919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561222c5761222b612f5e565b5b60405190808252806020026020018201604052801561225a5781602001602082028036833780820191505090505b5090503081600081518110612272576122716132e5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561231457600080fd5b505afa158015612328573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061234c9190613a4b565b816001815181106123605761235f6132e5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123c730601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611667565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161242b959493929190613b71565b600060405180830381600087803b15801561244557600080fd5b505af1158015612459573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806124895761248861251d565b5b612494848484612560565b806124a2576124a161272b565b5b50505050565b60008060006124b561273f565b915091506124cc81836124d390919063ffffffff16565b9250505090565b600061251583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061279e565b905092915050565b6000600c5414801561253157506000600d54145b1561253b5761255e565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061257287612801565b9550955095509550955095506125d086600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461286990919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061266585600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128b390919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126b181612911565b6126bb84836129ce565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127189190612e04565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a76400009050612773670de0b6b3a76400006006546124d390919063ffffffff16565b82101561279157600654670de0b6b3a764000093509350505061279a565b81819350935050505b9091565b600080831182906127e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127dc9190612c3b565b60405180910390fd5b50600083856127f49190613bfa565b9050809150509392505050565b600080600080600080600080600061281e8a600c54600d54612a08565b925092509250600061282e6124a8565b905060008060006128418e878787612a9e565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006128ab83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120b7565b905092915050565b60008082846128c29190613888565b905083811015612907576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128fe90613c77565b60405180910390fd5b8091505092915050565b600061291b6124a8565b905060006129328284612b2790919063ffffffff16565b905061298681600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128b390919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6129e38260065461286990919063ffffffff16565b6006819055506129fe816007546128b390919063ffffffff16565b6007819055505050565b600080600080612a346064612a26888a612b2790919063ffffffff16565b6124d390919063ffffffff16565b90506000612a5e6064612a50888b612b2790919063ffffffff16565b6124d390919063ffffffff16565b90506000612a8782612a79858c61286990919063ffffffff16565b61286990919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612ab78589612b2790919063ffffffff16565b90506000612ace8689612b2790919063ffffffff16565b90506000612ae58789612b2790919063ffffffff16565b90506000612b0e82612b00858761286990919063ffffffff16565b61286990919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612b3a5760009050612b9c565b60008284612b489190613c97565b9050828482612b579190613bfa565b14612b97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8e90613d63565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612bdc578082015181840152602081019050612bc1565b83811115612beb576000848401525b50505050565b6000601f19601f8301169050919050565b6000612c0d82612ba2565b612c178185612bad565b9350612c27818560208601612bbe565b612c3081612bf1565b840191505092915050565b60006020820190508181036000830152612c558184612c02565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c9c82612c71565b9050919050565b612cac81612c91565b8114612cb757600080fd5b50565b600081359050612cc981612ca3565b92915050565b6000819050919050565b612ce281612ccf565b8114612ced57600080fd5b50565b600081359050612cff81612cd9565b92915050565b60008060408385031215612d1c57612d1b612c67565b5b6000612d2a85828601612cba565b9250506020612d3b85828601612cf0565b9150509250929050565b60008115159050919050565b612d5a81612d45565b82525050565b6000602082019050612d756000830184612d51565b92915050565b6000819050919050565b6000612da0612d9b612d9684612c71565b612d7b565b612c71565b9050919050565b6000612db282612d85565b9050919050565b6000612dc482612da7565b9050919050565b612dd481612db9565b82525050565b6000602082019050612def6000830184612dcb565b92915050565b612dfe81612ccf565b82525050565b6000602082019050612e196000830184612df5565b92915050565b600060208284031215612e3557612e34612c67565b5b6000612e4384828501612cba565b91505092915050565b600080600060608486031215612e6557612e64612c67565b5b6000612e7386828701612cba565b9350506020612e8486828701612cba565b9250506040612e9586828701612cf0565b9150509250925092565b600060ff82169050919050565b612eb581612e9f565b82525050565b6000602082019050612ed06000830184612eac565b92915050565b612edf81612c91565b82525050565b6000602082019050612efa6000830184612ed6565b92915050565b612f0981612d45565b8114612f1457600080fd5b50565b600081359050612f2681612f00565b92915050565b600060208284031215612f4257612f41612c67565b5b6000612f5084828501612f17565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612f9682612bf1565b810181811067ffffffffffffffff82111715612fb557612fb4612f5e565b5b80604052505050565b6000612fc8612c5d565b9050612fd48282612f8d565b919050565b600067ffffffffffffffff821115612ff457612ff3612f5e565b5b602082029050602081019050919050565b600080fd5b600061301d61301884612fd9565b612fbe565b905080838252602082019050602084028301858111156130405761303f613005565b5b835b8181101561306957806130558882612cba565b845260208401935050602081019050613042565b5050509392505050565b600082601f83011261308857613087612f59565b5b813561309884826020860161300a565b91505092915050565b6000602082840312156130b7576130b6612c67565b5b600082013567ffffffffffffffff8111156130d5576130d4612c6c565b5b6130e184828501613073565b91505092915050565b600060208284031215613100576130ff612c67565b5b600061310e84828501612cf0565b91505092915050565b6000806000806080858703121561313157613130612c67565b5b600061313f87828801612cf0565b945050602061315087828801612cf0565b935050604061316187828801612cf0565b925050606061317287828801612cf0565b91505092959194509250565b600080fd5b60008083601f84011261319957613198612f59565b5b8235905067ffffffffffffffff8111156131b6576131b561317e565b5b6020830191508360208202830111156131d2576131d1613005565b5b9250929050565b6000806000604084860312156131f2576131f1612c67565b5b600084013567ffffffffffffffff8111156132105761320f612c6c565b5b61321c86828701613183565b9350935050602061322f86828701612f17565b9150509250925092565b600080604083850312156132505761324f612c67565b5b600061325e85828601612cba565b925050602061326f85828601612cba565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006132af602083612bad565b91506132ba82613279565b602082019050919050565b600060208201905081810360008301526132de816132a2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061334e82612ccf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561338157613380613314565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006133e8602683612bad565b91506133f38261338c565b604082019050919050565b60006020820190508181036000830152613417816133db565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061347a602483612bad565b91506134858261341e565b604082019050919050565b600060208201905081810360008301526134a98161346d565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061350c602283612bad565b9150613517826134b0565b604082019050919050565b6000602082019050818103600083015261353b816134ff565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061359e602583612bad565b91506135a982613542565b604082019050919050565b600060208201905081810360008301526135cd81613591565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613630602383612bad565b915061363b826135d4565b604082019050919050565b6000602082019050818103600083015261365f81613623565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006136c2602983612bad565b91506136cd82613666565b604082019050919050565b600060208201905081810360008301526136f1816136b5565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613754603f83612bad565b915061375f826136f8565b604082019050919050565b6000602082019050818103600083015261378381613747565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006137c0601c83612bad565b91506137cb8261378a565b602082019050919050565b600060208201905081810360008301526137ef816137b3565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613852602383612bad565b915061385d826137f6565b604082019050919050565b6000602082019050818103600083015261388181613845565b9050919050565b600061389382612ccf565b915061389e83612ccf565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156138d3576138d2613314565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061393a602383612bad565b9150613945826138de565b604082019050919050565b600060208201905081810360008301526139698161392d565b9050919050565b600061397b82612ccf565b915061398683612ccf565b92508282101561399957613998613314565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613a00602a83612bad565b9150613a0b826139a4565b604082019050919050565b60006020820190508181036000830152613a2f816139f3565b9050919050565b600081519050613a4581612ca3565b92915050565b600060208284031215613a6157613a60612c67565b5b6000613a6f84828501613a36565b91505092915050565b6000819050919050565b6000613a9d613a98613a9384613a78565b612d7b565b612ccf565b9050919050565b613aad81613a82565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ae881612c91565b82525050565b6000613afa8383613adf565b60208301905092915050565b6000602082019050919050565b6000613b1e82613ab3565b613b288185613abe565b9350613b3383613acf565b8060005b83811015613b64578151613b4b8882613aee565b9750613b5683613b06565b925050600181019050613b37565b5085935050505092915050565b600060a082019050613b866000830188612df5565b613b936020830187613aa4565b8181036040830152613ba58186613b13565b9050613bb46060830185612ed6565b613bc16080830184612df5565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c0582612ccf565b9150613c1083612ccf565b925082613c2057613c1f613bcb565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c61601b83612bad565b9150613c6c82613c2b565b602082019050919050565b60006020820190508181036000830152613c9081613c54565b9050919050565b6000613ca282612ccf565b9150613cad83612ccf565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613ce657613ce5613314565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d4d602183612bad565b9150613d5882613cf1565b604082019050919050565b60006020820190508181036000830152613d7c81613d40565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a0df7ced48322fd62f85ae4ccee29f6d835ffd956deb55f627546b4511a6142a64736f6c63430008090033
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.