ERC-20
Overview
Max Total Supply
10,000,000 NIGIRI
Holders
69
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
NIGIRI
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT /** NIGIRI (NIGIRI) NIGIRI is a versatile community driven project that will transcend space & time with a Roadmap focused on entertainment & utility, holders will have access to our partner’s private group that is sharing ECA of ALPHA projects with big potential. tg: t.me/nigiri_official Website: https://nigiritoken.net */ pragma solidity ^0.8.9; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ 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); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } /* */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } /** */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } /** */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } /** */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } /** */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); _afterTokenTransfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) internal { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } /** */ abstract contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor() { _paused = false; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { require(!paused(), "Pausable: paused"); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { require(paused(), "Pausable: not paused"); _; } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract NIGIRI is ERC20, Ownable, Pausable { // variables uint256 private initialSupply; uint256 private denominator = 100; uint256 private swapThreshold = 0.000005 ether; // uint256 private devTaxBuy; uint256 private liquidityTaxBuy; uint256 private devTaxSell; uint256 private liquidityTaxSell; uint256 public maxWallet; address private devTaxWallet; address private liquidityTaxWallet; // Mappings mapping (address => bool) private blacklist; mapping (address => bool) private excludeList; mapping (string => uint256) private buyTaxes; mapping (string => uint256) private sellTaxes; mapping (string => address) private taxWallets; bool public taxStatus = true; IUniswapV2Router02 private uniswapV2Router02; IUniswapV2Factory private uniswapV2Factory; IUniswapV2Pair private uniswapV2Pair; constructor(string memory _tokenName,string memory _tokenSymbol,uint256 _supply) ERC20(_tokenName, _tokenSymbol) payable { initialSupply =_supply * (10**18); maxWallet = initialSupply * 2 / 100; // _setOwner(msg.sender); uniswapV2Router02 = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Factory = IUniswapV2Factory(uniswapV2Router02.factory()); uniswapV2Pair = IUniswapV2Pair(uniswapV2Factory.createPair(address(this), uniswapV2Router02.WETH())); taxWallets["liquidity"] = address(0); setBuyTax(8,2); //dev tax, liquidity tax setSellTax(18,2); //dev tax, liquidity tax setTaxWallets(0xE820E3315435A20DE7D2aB84AcC521fC8E082C5c); // exclude(msg.sender); exclude(address(this)); exclude(devTaxWallet); _mint(msg.sender, initialSupply); } uint256 private devTokens; uint256 private liquidityTokens; /** * @dev Calculates the tax, transfer it to the contract. If the user is selling, and the swap threshold is met, it executes the tax. */ function handleTax(address from, address to, uint256 amount) private returns (uint256) { address[] memory sellPath = new address[](2); sellPath[0] = address(this); sellPath[1] = uniswapV2Router02.WETH(); if(!isExcluded(from) && !isExcluded(to)) { uint256 tax; uint256 baseUnit = amount / denominator; if(from == address(uniswapV2Pair)) { tax += baseUnit * buyTaxes["dev"]; tax += baseUnit * buyTaxes["liquidity"]; if(tax > 0) { _transfer(from, address(this), tax); } devTokens += baseUnit * buyTaxes["dev"]; liquidityTokens += baseUnit * buyTaxes["liquidity"]; } else if(to == address(uniswapV2Pair)) { tax += baseUnit * sellTaxes["dev"]; tax += baseUnit * sellTaxes["liquidity"]; if(tax > 0) { _transfer(from, address(this), tax); } devTokens += baseUnit * sellTaxes["dev"]; liquidityTokens += baseUnit * sellTaxes["liquidity"]; uint256 taxSum = devTokens + liquidityTokens; if(taxSum == 0) return amount; uint256 ethValue = uniswapV2Router02.getAmountsOut( devTokens + liquidityTokens, sellPath)[1]; if(ethValue >= swapThreshold) { uint256 startBalance = address(this).balance; uint256 toSell = devTokens + liquidityTokens / 2 ; _approve(address(this), address(uniswapV2Router02), toSell); uniswapV2Router02.swapExactTokensForETH( toSell, 0, sellPath, address(this), block.timestamp ); uint256 ethGained = address(this).balance - startBalance; uint256 liquidityToken = liquidityTokens / 2; uint256 liquidityETH = (ethGained * ((liquidityTokens / 2 * 10**18) / taxSum)) / 10**18; uint256 devETH = (ethGained * ((devTokens * 10**18) / taxSum)) / 10**18; _approve(address(this), address(uniswapV2Router02), liquidityToken); uniswapV2Router02.addLiquidityETH{value: liquidityETH}( address(this), liquidityToken, 0, 0, taxWallets["liquidity"], block.timestamp ); uint256 remainingTokens = (devTokens + liquidityTokens) - (toSell + liquidityToken); if(remainingTokens > 0) { _transfer(address(this), taxWallets["dev"], remainingTokens); } (bool success,) = taxWallets["dev"].call{value: devETH}(""); require(success, "transfer to dev wallet failed"); if(ethGained - ( devETH + liquidityETH) > 0) { (bool success1,) = taxWallets["dev"].call{value: ethGained - (devETH + liquidityETH)}(""); require(success1, "transfer to dev wallet failed"); } devTokens = 0; liquidityTokens = 0; } } amount -= tax; if (to != address(uniswapV2Pair)){ require(balanceOf(to) + amount <= maxWallet, "maxWallet limit exceeded"); } } return amount; } function _transfer( address sender, address recipient, uint256 amount ) internal override virtual { require(!paused(), "ERC20: token transfer while paused"); require(!isBlacklisted(msg.sender), "ERC20: sender blacklisted"); require(!isBlacklisted(recipient), "ERC20: recipient blacklisted"); require(!isBlacklisted(tx.origin), "ERC20: sender blacklisted"); if(taxStatus) { amount = handleTax(sender, recipient, amount); } super._transfer(sender, recipient, amount); } /** * @dev Triggers the tax handling functionality */ function triggerTax() public onlyOwner { handleTax(address(0), address(uniswapV2Pair), 0); } /** * @dev Pauses transfers on the token. */ function pause() public onlyOwner { require(!paused(), "ERC20: Contract is already paused"); _pause(); } /** * @dev Unpauses transfers on the token. */ function unpause() public onlyOwner { require(paused(), "ERC20: Contract is not paused"); _unpause(); } /** * @dev set max wallet limit per address. */ function setMaxWallet (uint256 amount) external onlyOwner { require (amount > 10000, "NO rug pull"); maxWallet = amount * 10**18; } /** * @dev Burns tokens from caller address. */ function burn(uint256 amount) public onlyOwner { _burn(msg.sender, amount); } /** * @dev Blacklists the specified account (Disables transfers to and from the account). */ function enableBlacklist(address account) public onlyOwner { require(!blacklist[account], "ERC20: Account is already blacklisted"); blacklist[account] = true; } /** * @dev Remove the specified account from the blacklist. */ function disableBlacklist(address account) public onlyOwner { require(blacklist[account], "ERC20: Account is not blacklisted"); blacklist[account] = false; } /** * @dev Excludes the specified account from tax. */ function exclude(address account) public onlyOwner { require(!isExcluded(account), "ERC20: Account is already excluded"); excludeList[account] = true; } /** * @dev Re-enables tax on the specified account. */ function removeExclude(address account) public onlyOwner { require(isExcluded(account), "ERC20: Account is not excluded"); excludeList[account] = false; } /** * @dev Sets tax for buys. */ function setBuyTax(uint256 dev,uint256 liquidity) public onlyOwner { buyTaxes["dev"] = dev; buyTaxes["liquidity"] = liquidity; } /** * @dev Sets tax for sells. */ function setSellTax(uint256 dev, uint256 liquidity) public onlyOwner { sellTaxes["dev"] = dev; sellTaxes["liquidity"] = liquidity; } /** * @dev Sets wallets for taxes. */ function setTaxWallets(address dev) public onlyOwner { taxWallets["dev"] = dev; } function claimStuckTokens(address _token) external onlyOwner { if (_token == address(0x0)) { payable(owner()).transfer(address(this).balance); return; } IERC20 erc20token = IERC20(_token); uint256 balance = erc20token.balanceOf(address(this)); erc20token.transfer(owner(), balance); } /** * @dev Enables tax globally. */ function enableTax() public onlyOwner { require(!taxStatus, "ERC20: Tax is already enabled"); taxStatus = true; } /** * @dev Disables tax globally. */ function disableTax() public onlyOwner { require(taxStatus, "ERC20: Tax is already disabled"); taxStatus = false; } /** * @dev Returns true if the account is blacklisted, and false otherwise. */ function isBlacklisted(address account) public view returns (bool) { return blacklist[account]; } /** * @dev Returns true if the account is excluded, and false otherwise. */ function isExcluded(address account) public view returns (bool) { return excludeList[account]; } receive() external payable {} }
{ "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":[{"internalType":"string","name":"_tokenName","type":"string"},{"internalType":"string","name":"_tokenSymbol","type":"string"},{"internalType":"uint256","name":"_supply","type":"uint256"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"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":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"disableBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"enableBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"exclude","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeExclude","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"setBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"setSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"dev","type":"address"}],"name":"setTaxWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"triggerTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052606460075565048c273950006008556001601560006101000a81548160ff021916908315150217905550604051620061cd380380620061cd833981810160405281019062000053919062000d23565b8282816003908162000066919062000ffe565b50806004908162000078919062000ffe565b5050506000600560146101000a81548160ff021916908315150217905550670de0b6b3a764000081620000ac919062001114565b60068190555060646002600654620000c5919062001114565b620000d191906200118e565b600d81905550620000e833620004a660201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d601560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d191906200122b565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e491906200122b565b6040518363ffffffff1660e01b8152600401620003039291906200126e565b6020604051808303816000875af115801562000323573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034991906200122b565b601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060146040516200039b90620012f6565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003fb600860026200056c60201b60201c565b6200040f601260026200064560201b60201c565b6200043473e820e3315435a20de7d2ab84acc521fc8e082c5c6200071e60201b60201c565b62000445336200080d60201b60201c565b62000456306200080d60201b60201c565b62000489600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166200080d60201b60201c565b6200049d336006546200094b60201b60201c565b5050506200156a565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6200057c62000ac360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620005a262000acb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620005fb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005f2906200136e565b60405180910390fd5b8160126040516200060c90620013e0565b9081526020016040518091039020819055508060126040516200062f90620012f6565b9081526020016040518091039020819055505050565b6200065562000ac360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200067b62000acb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620006d4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006cb906200136e565b60405180910390fd5b816013604051620006e590620013e0565b9081526020016040518091039020819055508060136040516200070890620012f6565b9081526020016040518091039020819055505050565b6200072e62000ac360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200075462000acb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620007ad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007a4906200136e565b60405180910390fd5b806014604051620007be90620013e0565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6200081d62000ac360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200084362000acb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200089c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000893906200136e565b60405180910390fd5b620008ad8162000af560201b60201c565b15620008f0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008e7906200146d565b60405180910390fd5b6001601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620009bd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009b490620014df565b60405180910390fd5b620009d16000838362000b4b60201b60201c565b8060026000828254620009e5919062001501565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000a3c919062001501565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000aa391906200154d565b60405180910390a362000abf6000838362000b5060201b60201c565b5050565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b505050565b505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000bbe8262000b73565b810181811067ffffffffffffffff8211171562000be05762000bdf62000b84565b5b80604052505050565b600062000bf562000b55565b905062000c03828262000bb3565b919050565b600067ffffffffffffffff82111562000c265762000c2562000b84565b5b62000c318262000b73565b9050602081019050919050565b60005b8381101562000c5e57808201518184015260208101905062000c41565b60008484015250505050565b600062000c8162000c7b8462000c08565b62000be9565b90508281526020810184848401111562000ca05762000c9f62000b6e565b5b62000cad84828562000c3e565b509392505050565b600082601f83011262000ccd5762000ccc62000b69565b5b815162000cdf84826020860162000c6a565b91505092915050565b6000819050919050565b62000cfd8162000ce8565b811462000d0957600080fd5b50565b60008151905062000d1d8162000cf2565b92915050565b60008060006060848603121562000d3f5762000d3e62000b5f565b5b600084015167ffffffffffffffff81111562000d605762000d5f62000b64565b5b62000d6e8682870162000cb5565b935050602084015167ffffffffffffffff81111562000d925762000d9162000b64565b5b62000da08682870162000cb5565b925050604062000db38682870162000d0c565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000e1057607f821691505b60208210810362000e265762000e2562000dc8565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000e907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000e51565b62000e9c868362000e51565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000edf62000ed962000ed38462000ce8565b62000eb4565b62000ce8565b9050919050565b6000819050919050565b62000efb8362000ebe565b62000f1362000f0a8262000ee6565b84845462000e5e565b825550505050565b600090565b62000f2a62000f1b565b62000f3781848462000ef0565b505050565b5b8181101562000f5f5762000f5360008262000f20565b60018101905062000f3d565b5050565b601f82111562000fae5762000f788162000e2c565b62000f838462000e41565b8101602085101562000f93578190505b62000fab62000fa28562000e41565b83018262000f3c565b50505b505050565b600082821c905092915050565b600062000fd36000198460080262000fb3565b1980831691505092915050565b600062000fee838362000fc0565b9150826002028217905092915050565b620010098262000dbd565b67ffffffffffffffff81111562001025576200102462000b84565b5b62001031825462000df7565b6200103e82828562000f63565b600060209050601f83116001811462001076576000841562001061578287015190505b6200106d858262000fe0565b865550620010dd565b601f198416620010868662000e2c565b60005b82811015620010b05784890151825560018201915060208501945060208101905062001089565b86831015620010d05784890151620010cc601f89168262000fc0565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620011218262000ce8565b91506200112e8362000ce8565b92508282026200113e8162000ce8565b91508282048414831517620011585762001157620010e5565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200119b8262000ce8565b9150620011a88362000ce8565b925082620011bb57620011ba6200115f565b5b828204905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620011f382620011c6565b9050919050565b6200120581620011e6565b81146200121157600080fd5b50565b6000815190506200122581620011fa565b92915050565b60006020828403121562001244576200124362000b5f565b5b6000620012548482850162001214565b91505092915050565b6200126881620011e6565b82525050565b60006040820190506200128560008301856200125d565b6200129460208301846200125d565b9392505050565b600081905092915050565b7f6c69717569646974790000000000000000000000000000000000000000000000600082015250565b6000620012de6009836200129b565b9150620012eb82620012a6565b600982019050919050565b60006200130382620012cf565b9150819050919050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620013566020836200130d565b915062001363826200131e565b602082019050919050565b60006020820190508181036000830152620013898162001347565b9050919050565b7f6465760000000000000000000000000000000000000000000000000000000000600082015250565b6000620013c86003836200129b565b9150620013d58262001390565b600382019050919050565b6000620013ed82620013b9565b9150819050919050565b7f45524332303a204163636f756e7420697320616c7265616479206578636c756460008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b6000620014556022836200130d565b91506200146282620013f7565b604082019050919050565b60006020820190508181036000830152620014888162001446565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620014c7601f836200130d565b9150620014d4826200148f565b602082019050919050565b60006020820190508181036000830152620014fa81620014b8565b9050919050565b60006200150e8262000ce8565b91506200151b8362000ce8565b9250828201905080821115620015365762001535620010e5565b5b92915050565b620015478162000ce8565b82525050565b60006020820190506200156460008301846200153c565b92915050565b614c53806200157a6000396000f3fe6080604052600436106101fd5760003560e01c8063715018a61161010d578063cba0e996116100a0578063dd62ed3e1161006f578063dd62ed3e146106dc578063f2fde38b14610719578063f8b45b0514610742578063f9d0831a1461076d578063fe575a871461079657610204565b8063cba0e99614610636578063ced695a414610673578063cfefd79e1461068a578063d01dc84b146106b357610204565b806395d89b41116100dc57806395d89b4114610568578063a457c2d714610593578063a9059cbb146105d0578063abe4f11d1461060d57610204565b8063715018a6146104e6578063717a8651146104fd5780638456cb59146105265780638da5cb5b1461053d57610204565b8063313ce567116101905780634febf53d1161015f5780634febf53d1461041557806353eb3bcf1461043e5780635c975abb146104555780635d0044ca1461048057806370a08231146104a957610204565b8063313ce5671461036d57806339509351146103985780633f4ba83a146103d557806342966c68146103ec57610204565b806323a38a38116101cc57806323a38a38146102c557806323b872dd146102f0578063247b912d1461032d5780632c32abc21461035657610204565b806305a1f36d1461020957806306fdde0314610232578063095ea7b31461025d57806318160ddd1461029a57610204565b3661020457005b600080fd5b34801561021557600080fd5b50610230600480360381019061022b919061338e565b6107d3565b005b34801561023e57600080fd5b50610247610895565b604051610254919061345e565b60405180910390f35b34801561026957600080fd5b50610284600480360381019061027f91906134de565b610927565b6040516102919190613539565b60405180910390f35b3480156102a657600080fd5b506102af610945565b6040516102bc9190613563565b60405180910390f35b3480156102d157600080fd5b506102da61094f565b6040516102e79190613539565b60405180910390f35b3480156102fc57600080fd5b506103176004803603810190610312919061357e565b610962565b6040516103249190613539565b60405180910390f35b34801561033957600080fd5b50610354600480360381019061034f919061338e565b610a5a565b005b34801561036257600080fd5b5061036b610b1c565b005b34801561037957600080fd5b50610382610bca565b60405161038f91906135ed565b60405180910390f35b3480156103a457600080fd5b506103bf60048036038101906103ba91906134de565b610bd3565b6040516103cc9190613539565b60405180910390f35b3480156103e157600080fd5b506103ea610c7f565b005b3480156103f857600080fd5b50610413600480360381019061040e9190613608565b610d4c565b005b34801561042157600080fd5b5061043c60048036038101906104379190613635565b610dd5565b005b34801561044a57600080fd5b50610453610ef5565b005b34801561046157600080fd5b5061046a610fde565b6040516104779190613539565b60405180910390f35b34801561048c57600080fd5b506104a760048036038101906104a29190613608565b610ff5565b005b3480156104b557600080fd5b506104d060048036038101906104cb9190613635565b6110d2565b6040516104dd9190613563565b60405180910390f35b3480156104f257600080fd5b506104fb61111a565b005b34801561050957600080fd5b50610524600480360381019061051f9190613635565b6111a2565b005b34801561053257600080fd5b5061053b611306565b005b34801561054957600080fd5b506105526113d4565b60405161055f9190613671565b60405180910390f35b34801561057457600080fd5b5061057d6113fe565b60405161058a919061345e565b60405180910390f35b34801561059f57600080fd5b506105ba60048036038101906105b591906134de565b611490565b6040516105c79190613539565b60405180910390f35b3480156105dc57600080fd5b506105f760048036038101906105f291906134de565b61157b565b6040516106049190613539565b60405180910390f35b34801561061957600080fd5b50610634600480360381019061062f9190613635565b611599565b005b34801561064257600080fd5b5061065d60048036038101906106589190613635565b6116b8565b60405161066a9190613539565b60405180910390f35b34801561067f57600080fd5b5061068861170e565b005b34801561069657600080fd5b506106b160048036038101906106ac9190613635565b6117f6565b005b3480156106bf57600080fd5b506106da60048036038101906106d59190613635565b611959565b005b3480156106e857600080fd5b5061070360048036038101906106fe919061368c565b611a33565b6040516107109190613563565b60405180910390f35b34801561072557600080fd5b50610740600480360381019061073b9190613635565b611aba565b005b34801561074e57600080fd5b50610757611bb1565b6040516107649190613563565b60405180910390f35b34801561077957600080fd5b50610794600480360381019061078f9190613635565b611bb7565b005b3480156107a257600080fd5b506107bd60048036038101906107b89190613635565b611dc9565b6040516107ca9190613539565b60405180910390f35b6107db611e1f565b73ffffffffffffffffffffffffffffffffffffffff166107f96113d4565b73ffffffffffffffffffffffffffffffffffffffff161461084f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084690613718565b60405180910390fd5b81601260405161085e9061378f565b90815260200160405180910390208190555080601260405161087f906137f0565b9081526020016040518091039020819055505050565b6060600380546108a490613834565b80601f01602080910402602001604051908101604052809291908181526020018280546108d090613834565b801561091d5780601f106108f25761010080835404028352916020019161091d565b820191906000526020600020905b81548152906001019060200180831161090057829003601f168201915b5050505050905090565b600061093b610934611e1f565b8484611e27565b6001905092915050565b6000600254905090565b601560009054906101000a900460ff1681565b600061096f848484611ff0565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109ba611e1f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a31906138d7565b60405180910390fd5b610a4e85610a46611e1f565b858403611e27565b60019150509392505050565b610a62611e1f565b73ffffffffffffffffffffffffffffffffffffffff16610a806113d4565b73ffffffffffffffffffffffffffffffffffffffff1614610ad6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acd90613718565b60405180910390fd5b816013604051610ae59061378f565b908152602001604051809103902081905550806013604051610b06906137f0565b9081526020016040518091039020819055505050565b610b24611e1f565b73ffffffffffffffffffffffffffffffffffffffff16610b426113d4565b73ffffffffffffffffffffffffffffffffffffffff1614610b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8f90613718565b60405180910390fd5b610bc76000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000612146565b50565b60006012905090565b6000610c75610be0611e1f565b848460016000610bee611e1f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c709190613926565b611e27565b6001905092915050565b610c87611e1f565b73ffffffffffffffffffffffffffffffffffffffff16610ca56113d4565b73ffffffffffffffffffffffffffffffffffffffff1614610cfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf290613718565b60405180910390fd5b610d03610fde565b610d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d39906139a6565b60405180910390fd5b610d4a612cda565b565b610d54611e1f565b73ffffffffffffffffffffffffffffffffffffffff16610d726113d4565b73ffffffffffffffffffffffffffffffffffffffff1614610dc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbf90613718565b60405180910390fd5b610dd23382612d7c565b50565b610ddd611e1f565b73ffffffffffffffffffffffffffffffffffffffff16610dfb6113d4565b73ffffffffffffffffffffffffffffffffffffffff1614610e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4890613718565b60405180910390fd5b610e5a816116b8565b15610e9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9190613a38565b60405180910390fd5b6001601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610efd611e1f565b73ffffffffffffffffffffffffffffffffffffffff16610f1b6113d4565b73ffffffffffffffffffffffffffffffffffffffff1614610f71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6890613718565b60405180910390fd5b601560009054906101000a900460ff1615610fc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb890613aa4565b60405180910390fd5b6001601560006101000a81548160ff021916908315150217905550565b6000600560149054906101000a900460ff16905090565b610ffd611e1f565b73ffffffffffffffffffffffffffffffffffffffff1661101b6113d4565b73ffffffffffffffffffffffffffffffffffffffff1614611071576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106890613718565b60405180910390fd5b61271081116110b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ac90613b10565b60405180910390fd5b670de0b6b3a7640000816110c99190613b30565b600d8190555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611122611e1f565b73ffffffffffffffffffffffffffffffffffffffff166111406113d4565b73ffffffffffffffffffffffffffffffffffffffff1614611196576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118d90613718565b60405180910390fd5b6111a06000612f52565b565b6111aa611e1f565b73ffffffffffffffffffffffffffffffffffffffff166111c86113d4565b73ffffffffffffffffffffffffffffffffffffffff161461121e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121590613718565b60405180910390fd5b601060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156112ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a290613be4565b60405180910390fd5b6001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61130e611e1f565b73ffffffffffffffffffffffffffffffffffffffff1661132c6113d4565b73ffffffffffffffffffffffffffffffffffffffff1614611382576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137990613718565b60405180910390fd5b61138a610fde565b156113ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c190613c76565b60405180910390fd5b6113d2613018565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461140d90613834565b80601f016020809104026020016040519081016040528092919081815260200182805461143990613834565b80156114865780601f1061145b57610100808354040283529160200191611486565b820191906000526020600020905b81548152906001019060200180831161146957829003601f168201915b5050505050905090565b6000806001600061149f611e1f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561155c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155390613d08565b60405180910390fd5b611570611567611e1f565b85858403611e27565b600191505092915050565b600061158f611588611e1f565b8484611ff0565b6001905092915050565b6115a1611e1f565b73ffffffffffffffffffffffffffffffffffffffff166115bf6113d4565b73ffffffffffffffffffffffffffffffffffffffff1614611615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160c90613718565b60405180910390fd5b61161e816116b8565b61165d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165490613d74565b60405180910390fd5b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611716611e1f565b73ffffffffffffffffffffffffffffffffffffffff166117346113d4565b73ffffffffffffffffffffffffffffffffffffffff161461178a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178190613718565b60405180910390fd5b601560009054906101000a900460ff166117d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d090613de0565b60405180910390fd5b6000601560006101000a81548160ff021916908315150217905550565b6117fe611e1f565b73ffffffffffffffffffffffffffffffffffffffff1661181c6113d4565b73ffffffffffffffffffffffffffffffffffffffff1614611872576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186990613718565b60405180910390fd5b601060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166118fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f590613e72565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611961611e1f565b73ffffffffffffffffffffffffffffffffffffffff1661197f6113d4565b73ffffffffffffffffffffffffffffffffffffffff16146119d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cc90613718565b60405180910390fd5b8060146040516119e49061378f565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611ac2611e1f565b73ffffffffffffffffffffffffffffffffffffffff16611ae06113d4565b73ffffffffffffffffffffffffffffffffffffffff1614611b36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2d90613718565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9c90613f04565b60405180910390fd5b611bae81612f52565b50565b600d5481565b611bbf611e1f565b73ffffffffffffffffffffffffffffffffffffffff16611bdd6113d4565b73ffffffffffffffffffffffffffffffffffffffff1614611c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2a90613718565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611cba57611c6f6113d4565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611cb4573d6000803e3d6000fd5b50611dc6565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611cfa9190613671565b602060405180830381865afa158015611d17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3b9190613f39565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb611d616113d4565b836040518363ffffffff1660e01b8152600401611d7f929190613f66565b6020604051808303816000875af1158015611d9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc29190613fbb565b5050505b50565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8d9061405a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efc906140ec565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611fe39190613563565b60405180910390a3505050565b611ff8610fde565b15612038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202f9061417e565b60405180910390fd5b61204133611dc9565b15612081576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612078906141ea565b60405180910390fd5b61208a82611dc9565b156120ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c190614256565b60405180910390fd5b6120d332611dc9565b15612113576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210a906141ea565b60405180910390fd5b601560009054906101000a900460ff161561213657612133838383612146565b90505b6121418383836130bb565b505050565b600080600267ffffffffffffffff81111561216457612163614276565b5b6040519080825280602002602001820160405280156121925781602001602082028036833780820191505090505b50905030816000815181106121aa576121a96142a5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612251573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227591906142e9565b81600181518110612289576122886142a5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506122cc856116b8565b1580156122df57506122dd846116b8565b155b15612cce57600080600754856122f59190614345565b9050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff160361245057601260405161235a9061378f565b908152602001604051809103902054816123749190613b30565b8261237f9190613926565b9150601260405161238f906137f0565b908152602001604051809103902054816123a99190613b30565b826123b49190613926565b915060008211156123cb576123ca873084611ff0565b5b60126040516123d99061378f565b908152602001604051809103902054816123f39190613b30565b601860008282546124049190613926565b925050819055506012604051612419906137f0565b908152602001604051809103902054816124339190613b30565b601960008282546124449190613926565b92505081905550612c0f565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603612c0e5760136040516124b39061378f565b908152602001604051809103902054816124cd9190613b30565b826124d89190613926565b915060136040516124e8906137f0565b908152602001604051809103902054816125029190613b30565b8261250d9190613926565b9150600082111561252457612523873084611ff0565b5b60136040516125329061378f565b9081526020016040518091039020548161254c9190613b30565b6018600082825461255d9190613926565b925050819055506013604051612572906137f0565b9081526020016040518091039020548161258c9190613b30565b6019600082825461259d9190613926565b9250508190555060006019546018546125b69190613926565b9050600081036125cc5785945050505050612cd3565b6000601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f60195460185461261c9190613926565b876040518363ffffffff1660e01b815260040161263a929190614434565b600060405180830381865afa158015612657573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190612680919061457d565b600181518110612693576126926142a5565b5b602002602001015190506008548110612c0b576000479050600060026019546126bc9190614345565b6018546126c99190613926565b90506126f830601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611e27565b601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318cbafe58260008a30426040518663ffffffff1660e01b815260040161275c95949392919061460b565b6000604051808303816000875af115801561277b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906127a4919061457d565b50600082476127b39190614665565b9050600060026019546127c69190614345565b90506000670de0b6b3a764000087670de0b6b3a764000060026019546127ec9190614345565b6127f69190613b30565b6128009190614345565b8461280b9190613b30565b6128159190614345565b90506000670de0b6b3a764000088670de0b6b3a76400006018546128399190613b30565b6128439190614345565b8561284e9190613b30565b6128589190614345565b905061288730601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685611e27565b601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308660008060146040516128d9906137f0565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161292a96959493929190614699565b60606040518083038185885af1158015612948573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061296d91906146fa565b5050506000838661297e9190613926565b60195460185461298e9190613926565b6129989190614665565b905060008111156129eb576129ea3060146040516129b59061378f565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611ff0565b5b600060146040516129fb9061378f565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051612a4d9061477e565b60006040518083038185875af1925050503d8060008114612a8a576040519150601f19603f3d011682016040523d82523d6000602084013e612a8f565b606091505b5050905080612ad3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aca906147df565b60405180910390fd5b60008484612ae19190613926565b87612aec9190614665565b1115612bf25760006014604051612b029061378f565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168585612b539190613926565b88612b5e9190614665565b604051612b6a9061477e565b60006040518083038185875af1925050503d8060008114612ba7576040519150601f19603f3d011682016040523d82523d6000602084013e612bac565b606091505b5050905080612bf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be7906147df565b60405180910390fd5b505b6000601881905550600060198190555050505050505050505b50505b5b8185612c1b9190614665565b9450601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614612ccb57600d5485612c7f886110d2565b612c899190613926565b1115612cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc19061484b565b60405180910390fd5b5b50505b829150505b9392505050565b612ce2610fde565b612d21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d18906148b7565b60405180910390fd5b6000600560146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612d65611e1f565b604051612d729190613671565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612deb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de290614949565b60405180910390fd5b612df78260008361333a565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612e7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e74906149db565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254612ed49190614665565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612f399190613563565b60405180910390a3612f4d8360008461333f565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b613020610fde565b15613060576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305790614a47565b60405180910390fd5b6001600560146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586130a4611e1f565b6040516130b19190613671565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361312a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312190614ad9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613199576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161319090614b6b565b60405180910390fd5b6131a483838361333a565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561322a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161322190614bfd565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546132bd9190613926565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516133219190613563565b60405180910390a361333484848461333f565b50505050565b505050565b505050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61336b81613358565b811461337657600080fd5b50565b60008135905061338881613362565b92915050565b600080604083850312156133a5576133a461334e565b5b60006133b385828601613379565b92505060206133c485828601613379565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b838110156134085780820151818401526020810190506133ed565b60008484015250505050565b6000601f19601f8301169050919050565b6000613430826133ce565b61343a81856133d9565b935061344a8185602086016133ea565b61345381613414565b840191505092915050565b600060208201905081810360008301526134788184613425565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006134ab82613480565b9050919050565b6134bb816134a0565b81146134c657600080fd5b50565b6000813590506134d8816134b2565b92915050565b600080604083850312156134f5576134f461334e565b5b6000613503858286016134c9565b925050602061351485828601613379565b9150509250929050565b60008115159050919050565b6135338161351e565b82525050565b600060208201905061354e600083018461352a565b92915050565b61355d81613358565b82525050565b60006020820190506135786000830184613554565b92915050565b6000806000606084860312156135975761359661334e565b5b60006135a5868287016134c9565b93505060206135b6868287016134c9565b92505060406135c786828701613379565b9150509250925092565b600060ff82169050919050565b6135e7816135d1565b82525050565b600060208201905061360260008301846135de565b92915050565b60006020828403121561361e5761361d61334e565b5b600061362c84828501613379565b91505092915050565b60006020828403121561364b5761364a61334e565b5b6000613659848285016134c9565b91505092915050565b61366b816134a0565b82525050565b60006020820190506136866000830184613662565b92915050565b600080604083850312156136a3576136a261334e565b5b60006136b1858286016134c9565b92505060206136c2858286016134c9565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006137026020836133d9565b915061370d826136cc565b602082019050919050565b60006020820190508181036000830152613731816136f5565b9050919050565b600081905092915050565b7f6465760000000000000000000000000000000000000000000000000000000000600082015250565b6000613779600383613738565b915061378482613743565b600382019050919050565b600061379a8261376c565b9150819050919050565b7f6c69717569646974790000000000000000000000000000000000000000000000600082015250565b60006137da600983613738565b91506137e5826137a4565b600982019050919050565b60006137fb826137cd565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061384c57607f821691505b60208210810361385f5761385e613805565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006138c16028836133d9565b91506138cc82613865565b604082019050919050565b600060208201905081810360008301526138f0816138b4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061393182613358565b915061393c83613358565b9250828201905080821115613954576139536138f7565b5b92915050565b7f45524332303a20436f6e7472616374206973206e6f7420706175736564000000600082015250565b6000613990601d836133d9565b915061399b8261395a565b602082019050919050565b600060208201905081810360008301526139bf81613983565b9050919050565b7f45524332303a204163636f756e7420697320616c7265616479206578636c756460008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a226022836133d9565b9150613a2d826139c6565b604082019050919050565b60006020820190508181036000830152613a5181613a15565b9050919050565b7f45524332303a2054617820697320616c726561647920656e61626c6564000000600082015250565b6000613a8e601d836133d9565b9150613a9982613a58565b602082019050919050565b60006020820190508181036000830152613abd81613a81565b9050919050565b7f4e4f207275672070756c6c000000000000000000000000000000000000000000600082015250565b6000613afa600b836133d9565b9150613b0582613ac4565b602082019050919050565b60006020820190508181036000830152613b2981613aed565b9050919050565b6000613b3b82613358565b9150613b4683613358565b9250828202613b5481613358565b91508282048414831517613b6b57613b6a6138f7565b5b5092915050565b7f45524332303a204163636f756e7420697320616c726561647920626c61636b6c60008201527f6973746564000000000000000000000000000000000000000000000000000000602082015250565b6000613bce6025836133d9565b9150613bd982613b72565b604082019050919050565b60006020820190508181036000830152613bfd81613bc1565b9050919050565b7f45524332303a20436f6e747261637420697320616c726561647920706175736560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c606021836133d9565b9150613c6b82613c04565b604082019050919050565b60006020820190508181036000830152613c8f81613c53565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613cf26025836133d9565b9150613cfd82613c96565b604082019050919050565b60006020820190508181036000830152613d2181613ce5565b9050919050565b7f45524332303a204163636f756e74206973206e6f74206578636c756465640000600082015250565b6000613d5e601e836133d9565b9150613d6982613d28565b602082019050919050565b60006020820190508181036000830152613d8d81613d51565b9050919050565b7f45524332303a2054617820697320616c72656164792064697361626c65640000600082015250565b6000613dca601e836133d9565b9150613dd582613d94565b602082019050919050565b60006020820190508181036000830152613df981613dbd565b9050919050565b7f45524332303a204163636f756e74206973206e6f7420626c61636b6c6973746560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e5c6021836133d9565b9150613e6782613e00565b604082019050919050565b60006020820190508181036000830152613e8b81613e4f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613eee6026836133d9565b9150613ef982613e92565b604082019050919050565b60006020820190508181036000830152613f1d81613ee1565b9050919050565b600081519050613f3381613362565b92915050565b600060208284031215613f4f57613f4e61334e565b5b6000613f5d84828501613f24565b91505092915050565b6000604082019050613f7b6000830185613662565b613f886020830184613554565b9392505050565b613f988161351e565b8114613fa357600080fd5b50565b600081519050613fb581613f8f565b92915050565b600060208284031215613fd157613fd061334e565b5b6000613fdf84828501613fa6565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006140446024836133d9565b915061404f82613fe8565b604082019050919050565b6000602082019050818103600083015261407381614037565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006140d66022836133d9565b91506140e18261407a565b604082019050919050565b60006020820190508181036000830152614105816140c9565b9050919050565b7f45524332303a20746f6b656e207472616e73666572207768696c65207061757360008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b60006141686022836133d9565b91506141738261410c565b604082019050919050565b600060208201905081810360008301526141978161415b565b9050919050565b7f45524332303a2073656e64657220626c61636b6c697374656400000000000000600082015250565b60006141d46019836133d9565b91506141df8261419e565b602082019050919050565b60006020820190508181036000830152614203816141c7565b9050919050565b7f45524332303a20726563697069656e7420626c61636b6c697374656400000000600082015250565b6000614240601c836133d9565b915061424b8261420a565b602082019050919050565b6000602082019050818103600083015261426f81614233565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506142e3816134b2565b92915050565b6000602082840312156142ff576142fe61334e565b5b600061430d848285016142d4565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061435082613358565b915061435b83613358565b92508261436b5761436a614316565b5b828204905092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6143ab816134a0565b82525050565b60006143bd83836143a2565b60208301905092915050565b6000602082019050919050565b60006143e182614376565b6143eb8185614381565b93506143f683614392565b8060005b8381101561442757815161440e88826143b1565b9750614419836143c9565b9250506001810190506143fa565b5085935050505092915050565b60006040820190506144496000830185613554565b818103602083015261445b81846143d6565b90509392505050565b600080fd5b61447282613414565b810181811067ffffffffffffffff8211171561449157614490614276565b5b80604052505050565b60006144a4613344565b90506144b08282614469565b919050565b600067ffffffffffffffff8211156144d0576144cf614276565b5b602082029050602081019050919050565b600080fd5b60006144f96144f4846144b5565b61449a565b9050808382526020820190506020840283018581111561451c5761451b6144e1565b5b835b8181101561454557806145318882613f24565b84526020840193505060208101905061451e565b5050509392505050565b600082601f83011261456457614563614464565b5b81516145748482602086016144e6565b91505092915050565b6000602082840312156145935761459261334e565b5b600082015167ffffffffffffffff8111156145b1576145b0613353565b5b6145bd8482850161454f565b91505092915050565b6000819050919050565b6000819050919050565b60006145f56145f06145eb846145c6565b6145d0565b613358565b9050919050565b614605816145da565b82525050565b600060a0820190506146206000830188613554565b61462d60208301876145fc565b818103604083015261463f81866143d6565b905061464e6060830185613662565b61465b6080830184613554565b9695505050505050565b600061467082613358565b915061467b83613358565b9250828203905081811115614693576146926138f7565b5b92915050565b600060c0820190506146ae6000830189613662565b6146bb6020830188613554565b6146c860408301876145fc565b6146d560608301866145fc565b6146e26080830185613662565b6146ef60a0830184613554565b979650505050505050565b6000806000606084860312156147135761471261334e565b5b600061472186828701613f24565b935050602061473286828701613f24565b925050604061474386828701613f24565b9150509250925092565b600081905092915050565b50565b600061476860008361474d565b915061477382614758565b600082019050919050565b60006147898261475b565b9150819050919050565b7f7472616e7366657220746f20206465762077616c6c6574206661696c65640000600082015250565b60006147c9601e836133d9565b91506147d482614793565b602082019050919050565b600060208201905081810360008301526147f8816147bc565b9050919050565b7f6d617857616c6c6574206c696d69742065786365656465640000000000000000600082015250565b60006148356018836133d9565b9150614840826147ff565b602082019050919050565b6000602082019050818103600083015261486481614828565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b60006148a16014836133d9565b91506148ac8261486b565b602082019050919050565b600060208201905081810360008301526148d081614894565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006149336021836133d9565b915061493e826148d7565b604082019050919050565b6000602082019050818103600083015261496281614926565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006149c56022836133d9565b91506149d082614969565b604082019050919050565b600060208201905081810360008301526149f4816149b8565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000614a316010836133d9565b9150614a3c826149fb565b602082019050919050565b60006020820190508181036000830152614a6081614a24565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614ac36025836133d9565b9150614ace82614a67565b604082019050919050565b60006020820190508181036000830152614af281614ab6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614b556023836133d9565b9150614b6082614af9565b604082019050919050565b60006020820190508181036000830152614b8481614b48565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614be76026836133d9565b9150614bf282614b8b565b604082019050919050565b60006020820190508181036000830152614c1681614bda565b905091905056fea2646970667358221220d34f90f3356a3772cd628a01b521ec7451842491b0251fae1f3d44072de295a064736f6c63430008110033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000098968000000000000000000000000000000000000000000000000000000000000000064e4947495249000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064e49474952490000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106101fd5760003560e01c8063715018a61161010d578063cba0e996116100a0578063dd62ed3e1161006f578063dd62ed3e146106dc578063f2fde38b14610719578063f8b45b0514610742578063f9d0831a1461076d578063fe575a871461079657610204565b8063cba0e99614610636578063ced695a414610673578063cfefd79e1461068a578063d01dc84b146106b357610204565b806395d89b41116100dc57806395d89b4114610568578063a457c2d714610593578063a9059cbb146105d0578063abe4f11d1461060d57610204565b8063715018a6146104e6578063717a8651146104fd5780638456cb59146105265780638da5cb5b1461053d57610204565b8063313ce567116101905780634febf53d1161015f5780634febf53d1461041557806353eb3bcf1461043e5780635c975abb146104555780635d0044ca1461048057806370a08231146104a957610204565b8063313ce5671461036d57806339509351146103985780633f4ba83a146103d557806342966c68146103ec57610204565b806323a38a38116101cc57806323a38a38146102c557806323b872dd146102f0578063247b912d1461032d5780632c32abc21461035657610204565b806305a1f36d1461020957806306fdde0314610232578063095ea7b31461025d57806318160ddd1461029a57610204565b3661020457005b600080fd5b34801561021557600080fd5b50610230600480360381019061022b919061338e565b6107d3565b005b34801561023e57600080fd5b50610247610895565b604051610254919061345e565b60405180910390f35b34801561026957600080fd5b50610284600480360381019061027f91906134de565b610927565b6040516102919190613539565b60405180910390f35b3480156102a657600080fd5b506102af610945565b6040516102bc9190613563565b60405180910390f35b3480156102d157600080fd5b506102da61094f565b6040516102e79190613539565b60405180910390f35b3480156102fc57600080fd5b506103176004803603810190610312919061357e565b610962565b6040516103249190613539565b60405180910390f35b34801561033957600080fd5b50610354600480360381019061034f919061338e565b610a5a565b005b34801561036257600080fd5b5061036b610b1c565b005b34801561037957600080fd5b50610382610bca565b60405161038f91906135ed565b60405180910390f35b3480156103a457600080fd5b506103bf60048036038101906103ba91906134de565b610bd3565b6040516103cc9190613539565b60405180910390f35b3480156103e157600080fd5b506103ea610c7f565b005b3480156103f857600080fd5b50610413600480360381019061040e9190613608565b610d4c565b005b34801561042157600080fd5b5061043c60048036038101906104379190613635565b610dd5565b005b34801561044a57600080fd5b50610453610ef5565b005b34801561046157600080fd5b5061046a610fde565b6040516104779190613539565b60405180910390f35b34801561048c57600080fd5b506104a760048036038101906104a29190613608565b610ff5565b005b3480156104b557600080fd5b506104d060048036038101906104cb9190613635565b6110d2565b6040516104dd9190613563565b60405180910390f35b3480156104f257600080fd5b506104fb61111a565b005b34801561050957600080fd5b50610524600480360381019061051f9190613635565b6111a2565b005b34801561053257600080fd5b5061053b611306565b005b34801561054957600080fd5b506105526113d4565b60405161055f9190613671565b60405180910390f35b34801561057457600080fd5b5061057d6113fe565b60405161058a919061345e565b60405180910390f35b34801561059f57600080fd5b506105ba60048036038101906105b591906134de565b611490565b6040516105c79190613539565b60405180910390f35b3480156105dc57600080fd5b506105f760048036038101906105f291906134de565b61157b565b6040516106049190613539565b60405180910390f35b34801561061957600080fd5b50610634600480360381019061062f9190613635565b611599565b005b34801561064257600080fd5b5061065d60048036038101906106589190613635565b6116b8565b60405161066a9190613539565b60405180910390f35b34801561067f57600080fd5b5061068861170e565b005b34801561069657600080fd5b506106b160048036038101906106ac9190613635565b6117f6565b005b3480156106bf57600080fd5b506106da60048036038101906106d59190613635565b611959565b005b3480156106e857600080fd5b5061070360048036038101906106fe919061368c565b611a33565b6040516107109190613563565b60405180910390f35b34801561072557600080fd5b50610740600480360381019061073b9190613635565b611aba565b005b34801561074e57600080fd5b50610757611bb1565b6040516107649190613563565b60405180910390f35b34801561077957600080fd5b50610794600480360381019061078f9190613635565b611bb7565b005b3480156107a257600080fd5b506107bd60048036038101906107b89190613635565b611dc9565b6040516107ca9190613539565b60405180910390f35b6107db611e1f565b73ffffffffffffffffffffffffffffffffffffffff166107f96113d4565b73ffffffffffffffffffffffffffffffffffffffff161461084f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084690613718565b60405180910390fd5b81601260405161085e9061378f565b90815260200160405180910390208190555080601260405161087f906137f0565b9081526020016040518091039020819055505050565b6060600380546108a490613834565b80601f01602080910402602001604051908101604052809291908181526020018280546108d090613834565b801561091d5780601f106108f25761010080835404028352916020019161091d565b820191906000526020600020905b81548152906001019060200180831161090057829003601f168201915b5050505050905090565b600061093b610934611e1f565b8484611e27565b6001905092915050565b6000600254905090565b601560009054906101000a900460ff1681565b600061096f848484611ff0565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109ba611e1f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a31906138d7565b60405180910390fd5b610a4e85610a46611e1f565b858403611e27565b60019150509392505050565b610a62611e1f565b73ffffffffffffffffffffffffffffffffffffffff16610a806113d4565b73ffffffffffffffffffffffffffffffffffffffff1614610ad6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acd90613718565b60405180910390fd5b816013604051610ae59061378f565b908152602001604051809103902081905550806013604051610b06906137f0565b9081526020016040518091039020819055505050565b610b24611e1f565b73ffffffffffffffffffffffffffffffffffffffff16610b426113d4565b73ffffffffffffffffffffffffffffffffffffffff1614610b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8f90613718565b60405180910390fd5b610bc76000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000612146565b50565b60006012905090565b6000610c75610be0611e1f565b848460016000610bee611e1f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c709190613926565b611e27565b6001905092915050565b610c87611e1f565b73ffffffffffffffffffffffffffffffffffffffff16610ca56113d4565b73ffffffffffffffffffffffffffffffffffffffff1614610cfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf290613718565b60405180910390fd5b610d03610fde565b610d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d39906139a6565b60405180910390fd5b610d4a612cda565b565b610d54611e1f565b73ffffffffffffffffffffffffffffffffffffffff16610d726113d4565b73ffffffffffffffffffffffffffffffffffffffff1614610dc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbf90613718565b60405180910390fd5b610dd23382612d7c565b50565b610ddd611e1f565b73ffffffffffffffffffffffffffffffffffffffff16610dfb6113d4565b73ffffffffffffffffffffffffffffffffffffffff1614610e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4890613718565b60405180910390fd5b610e5a816116b8565b15610e9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9190613a38565b60405180910390fd5b6001601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610efd611e1f565b73ffffffffffffffffffffffffffffffffffffffff16610f1b6113d4565b73ffffffffffffffffffffffffffffffffffffffff1614610f71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6890613718565b60405180910390fd5b601560009054906101000a900460ff1615610fc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb890613aa4565b60405180910390fd5b6001601560006101000a81548160ff021916908315150217905550565b6000600560149054906101000a900460ff16905090565b610ffd611e1f565b73ffffffffffffffffffffffffffffffffffffffff1661101b6113d4565b73ffffffffffffffffffffffffffffffffffffffff1614611071576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106890613718565b60405180910390fd5b61271081116110b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ac90613b10565b60405180910390fd5b670de0b6b3a7640000816110c99190613b30565b600d8190555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611122611e1f565b73ffffffffffffffffffffffffffffffffffffffff166111406113d4565b73ffffffffffffffffffffffffffffffffffffffff1614611196576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118d90613718565b60405180910390fd5b6111a06000612f52565b565b6111aa611e1f565b73ffffffffffffffffffffffffffffffffffffffff166111c86113d4565b73ffffffffffffffffffffffffffffffffffffffff161461121e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121590613718565b60405180910390fd5b601060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156112ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a290613be4565b60405180910390fd5b6001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61130e611e1f565b73ffffffffffffffffffffffffffffffffffffffff1661132c6113d4565b73ffffffffffffffffffffffffffffffffffffffff1614611382576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137990613718565b60405180910390fd5b61138a610fde565b156113ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c190613c76565b60405180910390fd5b6113d2613018565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461140d90613834565b80601f016020809104026020016040519081016040528092919081815260200182805461143990613834565b80156114865780601f1061145b57610100808354040283529160200191611486565b820191906000526020600020905b81548152906001019060200180831161146957829003601f168201915b5050505050905090565b6000806001600061149f611e1f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561155c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155390613d08565b60405180910390fd5b611570611567611e1f565b85858403611e27565b600191505092915050565b600061158f611588611e1f565b8484611ff0565b6001905092915050565b6115a1611e1f565b73ffffffffffffffffffffffffffffffffffffffff166115bf6113d4565b73ffffffffffffffffffffffffffffffffffffffff1614611615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160c90613718565b60405180910390fd5b61161e816116b8565b61165d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165490613d74565b60405180910390fd5b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611716611e1f565b73ffffffffffffffffffffffffffffffffffffffff166117346113d4565b73ffffffffffffffffffffffffffffffffffffffff161461178a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178190613718565b60405180910390fd5b601560009054906101000a900460ff166117d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d090613de0565b60405180910390fd5b6000601560006101000a81548160ff021916908315150217905550565b6117fe611e1f565b73ffffffffffffffffffffffffffffffffffffffff1661181c6113d4565b73ffffffffffffffffffffffffffffffffffffffff1614611872576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186990613718565b60405180910390fd5b601060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166118fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f590613e72565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611961611e1f565b73ffffffffffffffffffffffffffffffffffffffff1661197f6113d4565b73ffffffffffffffffffffffffffffffffffffffff16146119d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cc90613718565b60405180910390fd5b8060146040516119e49061378f565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611ac2611e1f565b73ffffffffffffffffffffffffffffffffffffffff16611ae06113d4565b73ffffffffffffffffffffffffffffffffffffffff1614611b36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2d90613718565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ba5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9c90613f04565b60405180910390fd5b611bae81612f52565b50565b600d5481565b611bbf611e1f565b73ffffffffffffffffffffffffffffffffffffffff16611bdd6113d4565b73ffffffffffffffffffffffffffffffffffffffff1614611c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2a90613718565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611cba57611c6f6113d4565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611cb4573d6000803e3d6000fd5b50611dc6565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611cfa9190613671565b602060405180830381865afa158015611d17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3b9190613f39565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb611d616113d4565b836040518363ffffffff1660e01b8152600401611d7f929190613f66565b6020604051808303816000875af1158015611d9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc29190613fbb565b5050505b50565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8d9061405a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611efc906140ec565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611fe39190613563565b60405180910390a3505050565b611ff8610fde565b15612038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202f9061417e565b60405180910390fd5b61204133611dc9565b15612081576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612078906141ea565b60405180910390fd5b61208a82611dc9565b156120ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c190614256565b60405180910390fd5b6120d332611dc9565b15612113576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210a906141ea565b60405180910390fd5b601560009054906101000a900460ff161561213657612133838383612146565b90505b6121418383836130bb565b505050565b600080600267ffffffffffffffff81111561216457612163614276565b5b6040519080825280602002602001820160405280156121925781602001602082028036833780820191505090505b50905030816000815181106121aa576121a96142a5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612251573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227591906142e9565b81600181518110612289576122886142a5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506122cc856116b8565b1580156122df57506122dd846116b8565b155b15612cce57600080600754856122f59190614345565b9050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff160361245057601260405161235a9061378f565b908152602001604051809103902054816123749190613b30565b8261237f9190613926565b9150601260405161238f906137f0565b908152602001604051809103902054816123a99190613b30565b826123b49190613926565b915060008211156123cb576123ca873084611ff0565b5b60126040516123d99061378f565b908152602001604051809103902054816123f39190613b30565b601860008282546124049190613926565b925050819055506012604051612419906137f0565b908152602001604051809103902054816124339190613b30565b601960008282546124449190613926565b92505081905550612c0f565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603612c0e5760136040516124b39061378f565b908152602001604051809103902054816124cd9190613b30565b826124d89190613926565b915060136040516124e8906137f0565b908152602001604051809103902054816125029190613b30565b8261250d9190613926565b9150600082111561252457612523873084611ff0565b5b60136040516125329061378f565b9081526020016040518091039020548161254c9190613b30565b6018600082825461255d9190613926565b925050819055506013604051612572906137f0565b9081526020016040518091039020548161258c9190613b30565b6019600082825461259d9190613926565b9250508190555060006019546018546125b69190613926565b9050600081036125cc5785945050505050612cd3565b6000601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f60195460185461261c9190613926565b876040518363ffffffff1660e01b815260040161263a929190614434565b600060405180830381865afa158015612657573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190612680919061457d565b600181518110612693576126926142a5565b5b602002602001015190506008548110612c0b576000479050600060026019546126bc9190614345565b6018546126c99190613926565b90506126f830601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611e27565b601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318cbafe58260008a30426040518663ffffffff1660e01b815260040161275c95949392919061460b565b6000604051808303816000875af115801561277b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906127a4919061457d565b50600082476127b39190614665565b9050600060026019546127c69190614345565b90506000670de0b6b3a764000087670de0b6b3a764000060026019546127ec9190614345565b6127f69190613b30565b6128009190614345565b8461280b9190613b30565b6128159190614345565b90506000670de0b6b3a764000088670de0b6b3a76400006018546128399190613b30565b6128439190614345565b8561284e9190613b30565b6128589190614345565b905061288730601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685611e27565b601560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71983308660008060146040516128d9906137f0565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161292a96959493929190614699565b60606040518083038185885af1158015612948573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061296d91906146fa565b5050506000838661297e9190613926565b60195460185461298e9190613926565b6129989190614665565b905060008111156129eb576129ea3060146040516129b59061378f565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611ff0565b5b600060146040516129fb9061378f565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051612a4d9061477e565b60006040518083038185875af1925050503d8060008114612a8a576040519150601f19603f3d011682016040523d82523d6000602084013e612a8f565b606091505b5050905080612ad3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aca906147df565b60405180910390fd5b60008484612ae19190613926565b87612aec9190614665565b1115612bf25760006014604051612b029061378f565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168585612b539190613926565b88612b5e9190614665565b604051612b6a9061477e565b60006040518083038185875af1925050503d8060008114612ba7576040519150601f19603f3d011682016040523d82523d6000602084013e612bac565b606091505b5050905080612bf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be7906147df565b60405180910390fd5b505b6000601881905550600060198190555050505050505050505b50505b5b8185612c1b9190614665565b9450601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614612ccb57600d5485612c7f886110d2565b612c899190613926565b1115612cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc19061484b565b60405180910390fd5b5b50505b829150505b9392505050565b612ce2610fde565b612d21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d18906148b7565b60405180910390fd5b6000600560146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612d65611e1f565b604051612d729190613671565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612deb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de290614949565b60405180910390fd5b612df78260008361333a565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612e7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e74906149db565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254612ed49190614665565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612f399190613563565b60405180910390a3612f4d8360008461333f565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b613020610fde565b15613060576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305790614a47565b60405180910390fd5b6001600560146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586130a4611e1f565b6040516130b19190613671565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361312a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312190614ad9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613199576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161319090614b6b565b60405180910390fd5b6131a483838361333a565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561322a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161322190614bfd565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546132bd9190613926565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516133219190613563565b60405180910390a361333484848461333f565b50505050565b505050565b505050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b61336b81613358565b811461337657600080fd5b50565b60008135905061338881613362565b92915050565b600080604083850312156133a5576133a461334e565b5b60006133b385828601613379565b92505060206133c485828601613379565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b838110156134085780820151818401526020810190506133ed565b60008484015250505050565b6000601f19601f8301169050919050565b6000613430826133ce565b61343a81856133d9565b935061344a8185602086016133ea565b61345381613414565b840191505092915050565b600060208201905081810360008301526134788184613425565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006134ab82613480565b9050919050565b6134bb816134a0565b81146134c657600080fd5b50565b6000813590506134d8816134b2565b92915050565b600080604083850312156134f5576134f461334e565b5b6000613503858286016134c9565b925050602061351485828601613379565b9150509250929050565b60008115159050919050565b6135338161351e565b82525050565b600060208201905061354e600083018461352a565b92915050565b61355d81613358565b82525050565b60006020820190506135786000830184613554565b92915050565b6000806000606084860312156135975761359661334e565b5b60006135a5868287016134c9565b93505060206135b6868287016134c9565b92505060406135c786828701613379565b9150509250925092565b600060ff82169050919050565b6135e7816135d1565b82525050565b600060208201905061360260008301846135de565b92915050565b60006020828403121561361e5761361d61334e565b5b600061362c84828501613379565b91505092915050565b60006020828403121561364b5761364a61334e565b5b6000613659848285016134c9565b91505092915050565b61366b816134a0565b82525050565b60006020820190506136866000830184613662565b92915050565b600080604083850312156136a3576136a261334e565b5b60006136b1858286016134c9565b92505060206136c2858286016134c9565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006137026020836133d9565b915061370d826136cc565b602082019050919050565b60006020820190508181036000830152613731816136f5565b9050919050565b600081905092915050565b7f6465760000000000000000000000000000000000000000000000000000000000600082015250565b6000613779600383613738565b915061378482613743565b600382019050919050565b600061379a8261376c565b9150819050919050565b7f6c69717569646974790000000000000000000000000000000000000000000000600082015250565b60006137da600983613738565b91506137e5826137a4565b600982019050919050565b60006137fb826137cd565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061384c57607f821691505b60208210810361385f5761385e613805565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006138c16028836133d9565b91506138cc82613865565b604082019050919050565b600060208201905081810360008301526138f0816138b4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061393182613358565b915061393c83613358565b9250828201905080821115613954576139536138f7565b5b92915050565b7f45524332303a20436f6e7472616374206973206e6f7420706175736564000000600082015250565b6000613990601d836133d9565b915061399b8261395a565b602082019050919050565b600060208201905081810360008301526139bf81613983565b9050919050565b7f45524332303a204163636f756e7420697320616c7265616479206578636c756460008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a226022836133d9565b9150613a2d826139c6565b604082019050919050565b60006020820190508181036000830152613a5181613a15565b9050919050565b7f45524332303a2054617820697320616c726561647920656e61626c6564000000600082015250565b6000613a8e601d836133d9565b9150613a9982613a58565b602082019050919050565b60006020820190508181036000830152613abd81613a81565b9050919050565b7f4e4f207275672070756c6c000000000000000000000000000000000000000000600082015250565b6000613afa600b836133d9565b9150613b0582613ac4565b602082019050919050565b60006020820190508181036000830152613b2981613aed565b9050919050565b6000613b3b82613358565b9150613b4683613358565b9250828202613b5481613358565b91508282048414831517613b6b57613b6a6138f7565b5b5092915050565b7f45524332303a204163636f756e7420697320616c726561647920626c61636b6c60008201527f6973746564000000000000000000000000000000000000000000000000000000602082015250565b6000613bce6025836133d9565b9150613bd982613b72565b604082019050919050565b60006020820190508181036000830152613bfd81613bc1565b9050919050565b7f45524332303a20436f6e747261637420697320616c726561647920706175736560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c606021836133d9565b9150613c6b82613c04565b604082019050919050565b60006020820190508181036000830152613c8f81613c53565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613cf26025836133d9565b9150613cfd82613c96565b604082019050919050565b60006020820190508181036000830152613d2181613ce5565b9050919050565b7f45524332303a204163636f756e74206973206e6f74206578636c756465640000600082015250565b6000613d5e601e836133d9565b9150613d6982613d28565b602082019050919050565b60006020820190508181036000830152613d8d81613d51565b9050919050565b7f45524332303a2054617820697320616c72656164792064697361626c65640000600082015250565b6000613dca601e836133d9565b9150613dd582613d94565b602082019050919050565b60006020820190508181036000830152613df981613dbd565b9050919050565b7f45524332303a204163636f756e74206973206e6f7420626c61636b6c6973746560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e5c6021836133d9565b9150613e6782613e00565b604082019050919050565b60006020820190508181036000830152613e8b81613e4f565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613eee6026836133d9565b9150613ef982613e92565b604082019050919050565b60006020820190508181036000830152613f1d81613ee1565b9050919050565b600081519050613f3381613362565b92915050565b600060208284031215613f4f57613f4e61334e565b5b6000613f5d84828501613f24565b91505092915050565b6000604082019050613f7b6000830185613662565b613f886020830184613554565b9392505050565b613f988161351e565b8114613fa357600080fd5b50565b600081519050613fb581613f8f565b92915050565b600060208284031215613fd157613fd061334e565b5b6000613fdf84828501613fa6565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006140446024836133d9565b915061404f82613fe8565b604082019050919050565b6000602082019050818103600083015261407381614037565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006140d66022836133d9565b91506140e18261407a565b604082019050919050565b60006020820190508181036000830152614105816140c9565b9050919050565b7f45524332303a20746f6b656e207472616e73666572207768696c65207061757360008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b60006141686022836133d9565b91506141738261410c565b604082019050919050565b600060208201905081810360008301526141978161415b565b9050919050565b7f45524332303a2073656e64657220626c61636b6c697374656400000000000000600082015250565b60006141d46019836133d9565b91506141df8261419e565b602082019050919050565b60006020820190508181036000830152614203816141c7565b9050919050565b7f45524332303a20726563697069656e7420626c61636b6c697374656400000000600082015250565b6000614240601c836133d9565b915061424b8261420a565b602082019050919050565b6000602082019050818103600083015261426f81614233565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506142e3816134b2565b92915050565b6000602082840312156142ff576142fe61334e565b5b600061430d848285016142d4565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061435082613358565b915061435b83613358565b92508261436b5761436a614316565b5b828204905092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6143ab816134a0565b82525050565b60006143bd83836143a2565b60208301905092915050565b6000602082019050919050565b60006143e182614376565b6143eb8185614381565b93506143f683614392565b8060005b8381101561442757815161440e88826143b1565b9750614419836143c9565b9250506001810190506143fa565b5085935050505092915050565b60006040820190506144496000830185613554565b818103602083015261445b81846143d6565b90509392505050565b600080fd5b61447282613414565b810181811067ffffffffffffffff8211171561449157614490614276565b5b80604052505050565b60006144a4613344565b90506144b08282614469565b919050565b600067ffffffffffffffff8211156144d0576144cf614276565b5b602082029050602081019050919050565b600080fd5b60006144f96144f4846144b5565b61449a565b9050808382526020820190506020840283018581111561451c5761451b6144e1565b5b835b8181101561454557806145318882613f24565b84526020840193505060208101905061451e565b5050509392505050565b600082601f83011261456457614563614464565b5b81516145748482602086016144e6565b91505092915050565b6000602082840312156145935761459261334e565b5b600082015167ffffffffffffffff8111156145b1576145b0613353565b5b6145bd8482850161454f565b91505092915050565b6000819050919050565b6000819050919050565b60006145f56145f06145eb846145c6565b6145d0565b613358565b9050919050565b614605816145da565b82525050565b600060a0820190506146206000830188613554565b61462d60208301876145fc565b818103604083015261463f81866143d6565b905061464e6060830185613662565b61465b6080830184613554565b9695505050505050565b600061467082613358565b915061467b83613358565b9250828203905081811115614693576146926138f7565b5b92915050565b600060c0820190506146ae6000830189613662565b6146bb6020830188613554565b6146c860408301876145fc565b6146d560608301866145fc565b6146e26080830185613662565b6146ef60a0830184613554565b979650505050505050565b6000806000606084860312156147135761471261334e565b5b600061472186828701613f24565b935050602061473286828701613f24565b925050604061474386828701613f24565b9150509250925092565b600081905092915050565b50565b600061476860008361474d565b915061477382614758565b600082019050919050565b60006147898261475b565b9150819050919050565b7f7472616e7366657220746f20206465762077616c6c6574206661696c65640000600082015250565b60006147c9601e836133d9565b91506147d482614793565b602082019050919050565b600060208201905081810360008301526147f8816147bc565b9050919050565b7f6d617857616c6c6574206c696d69742065786365656465640000000000000000600082015250565b60006148356018836133d9565b9150614840826147ff565b602082019050919050565b6000602082019050818103600083015261486481614828565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b60006148a16014836133d9565b91506148ac8261486b565b602082019050919050565b600060208201905081810360008301526148d081614894565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006149336021836133d9565b915061493e826148d7565b604082019050919050565b6000602082019050818103600083015261496281614926565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006149c56022836133d9565b91506149d082614969565b604082019050919050565b600060208201905081810360008301526149f4816149b8565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000614a316010836133d9565b9150614a3c826149fb565b602082019050919050565b60006020820190508181036000830152614a6081614a24565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614ac36025836133d9565b9150614ace82614a67565b604082019050919050565b60006020820190508181036000830152614af281614ab6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614b556023836133d9565b9150614b6082614af9565b604082019050919050565b60006020820190508181036000830152614b8481614b48565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614be76026836133d9565b9150614bf282614b8b565b604082019050919050565b60006020820190508181036000830152614c1681614bda565b905091905056fea2646970667358221220d34f90f3356a3772cd628a01b521ec7451842491b0251fae1f3d44072de295a064736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000098968000000000000000000000000000000000000000000000000000000000000000064e4947495249000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064e49474952490000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _tokenName (string): NIGIRI
Arg [1] : _tokenSymbol (string): NIGIRI
Arg [2] : _supply (uint256): 10000000
-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000989680
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [4] : 4e49474952490000000000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [6] : 4e49474952490000000000000000000000000000000000000000000000000000
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.