Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
- Contract name:
- LBRTY
- Optimization enabled
- false
- Compiler version
- v0.8.20+commit.a1b79de6
- EVM Version
- default
- Verified at
- 2025-05-28T04:06:49.739250Z
Contract source code
// SPDX-License-Identifier: LBRTY
pragma solidity ^0.8.17;
interface IBEP20 {
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the token decimals.
*/
function decimals() external view returns (uint8);
/**
* @dev Returns the token symbol.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the token name.
*/
function name() external view returns (string memory);
/**
* @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);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `sender` to `recipient` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
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);
}
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor() {
_setOwner(_msgSender());
}
function owner() public view virtual returns (address) {
return _owner;
}
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
_setOwner(address(0));
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_setOwner(newOwner);
}
function _setOwner(address newOwner) private {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
library Address {
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
(bool success, ) = recipient.call{ value: amount }("");
require(success, "Address: unable to send value, recipient may have reverted");
}
}
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
*
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
*
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts with custom message on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts with custom message when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(
uint256 a,
uint256 b,
string memory errorMessage
) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}
contract LBRTY is Context, IBEP20, Ownable {
using Address for address payable;
using SafeMath for uint256;
mapping(address => uint256) private _tOwned;
mapping(address => mapping(address => uint256)) private _allowances;
uint8 private _decimals;
uint256 private _tTotal;
string private _name;
string private _symbol;
constructor() {
_name = "LBRTY";
_symbol = "LBRTY";
_decimals = 18;
_tTotal = 21000000* 10**_decimals;
_tOwned[owner()] = _tTotal;
emit Transfer(address(0), owner(), _tTotal);
}
//std BEP20:
function name() public view returns (string memory) {
return _name;
}
function symbol() public view returns (string memory) {
return _symbol;
}
function decimals() public view returns (uint8) {
return _decimals;
}
function totalSupply() public view override returns (uint256) {
return _tTotal;
}
function balanceOf(address account) public view override returns (uint256) {
return (_tOwned[account]);
}
function allowance(address owner, address spender) public view override returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount) public override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom(
address sender,
address recipient,
uint256 amount
) public override returns (bool) {
_transfer(sender, recipient, amount);
uint256 currentAllowance = _allowances[sender][_msgSender()];
require(currentAllowance >= amount, "BEP20: transfer amount exceeds allowance");
_approve(sender, _msgSender(), currentAllowance - amount);
return true;
}
function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue)
public
returns (bool)
{
uint256 currentAllowance = _allowances[_msgSender()][spender];
require(currentAllowance >= subtractedValue, "BEP20: decreased allowance below zero");
_approve(_msgSender(), spender, currentAllowance - subtractedValue);
return true;
}
function transfer(address recipient, uint256 amount) public override returns (bool) {
_transfer(msg.sender, recipient, amount);
return true;
}
function _approve(
address owner,
address spender,
uint256 amount
) private {
require(owner != address(0), "BEP20: approve from the zero address");
require(spender != address(0), "BEP20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function _transfer(
address from,
address to,
uint256 amount
) private {
require(from != address(0), "BEP20: transfer from the zero address");
require(to != address(0), "BEP20: transfer to the zero address");
require(amount > 0, "Transfer amount must be greater than zero");
require(amount <= balanceOf(from), "You are trying to transfer more than your balance");
_tokenTransfer(from, to, amount);
}
//this method is responsible for taking all fee, if takeFee is true
function _tokenTransfer(
address sender,
address recipient,
uint256 tAmount
) private {
_tOwned[sender] = _tOwned[sender] - tAmount;
_tOwned[recipient] = _tOwned[recipient] + tAmount;
emit Transfer(sender, recipient, tAmount);
}
}
Contract ABI
[{"type":"constructor","stateMutability":"nonpayable","inputs":[]},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"spender","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","internalType":"address","indexed":true},{"type":"address","name":"newOwner","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"owner","internalType":"address"},{"type":"address","name":"spender","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approve","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"decreaseAllowance","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"subtractedValue","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"increaseAllowance","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"addedValue","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"renounceOwnership","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transfer","inputs":[{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transferFrom","inputs":[{"type":"address","name":"sender","internalType":"address"},{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"newOwner","internalType":"address"}]}]
Contract Creation Code
0x608060405234801562000010575f80fd5b506200003162000025620001df60201b60201c565b620001e660201b60201c565b6040518060400160405280600581526020017f4c425254590000000000000000000000000000000000000000000000000000008152506005908162000077919062000532565b506040518060400160405280600581526020017f4c4252545900000000000000000000000000000000000000000000000000000081525060069081620000be919062000532565b50601260035f6101000a81548160ff021916908360ff16021790555060035f9054906101000a900460ff16600a620000f791906200079f565b6301406f40620001089190620007ef565b60048190555060045460015f62000124620002a760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555062000171620002a760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600454604051620001d191906200084a565b60405180910390a362000865565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200034a57607f821691505b60208210810362000360576200035f62000305565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620003c47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000387565b620003d0868362000387565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6200041a620004146200040e84620003e8565b620003f1565b620003e8565b9050919050565b5f819050919050565b6200043583620003fa565b6200044d620004448262000421565b84845462000393565b825550505050565b5f90565b6200046362000455565b620004708184846200042a565b505050565b5b8181101562000497576200048b5f8262000459565b60018101905062000476565b5050565b601f821115620004e657620004b08162000366565b620004bb8462000378565b81016020851015620004cb578190505b620004e3620004da8562000378565b83018262000475565b50505b505050565b5f82821c905092915050565b5f620005085f1984600802620004eb565b1980831691505092915050565b5f620005228383620004f7565b9150826002028217905092915050565b6200053d82620002ce565b67ffffffffffffffff811115620005595762000558620002d8565b5b62000565825462000332565b620005728282856200049b565b5f60209050601f831160018114620005a8575f841562000593578287015190505b6200059f858262000515565b8655506200060e565b601f198416620005b88662000366565b5f5b82811015620005e157848901518255600182019150602085019450602081019050620005ba565b86831015620006015784890151620005fd601f891682620004f7565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620006a05780860481111562000678576200067762000616565b5b6001851615620006885780820291505b8081029050620006988562000643565b945062000658565b94509492505050565b5f82620006ba57600190506200078c565b81620006c9575f90506200078c565b8160018114620006e25760028114620006ed5762000723565b60019150506200078c565b60ff84111562000702576200070162000616565b5b8360020a9150848211156200071c576200071b62000616565b5b506200078c565b5060208310610133831016604e8410600b84101617156200075d5782820a90508381111562000757576200075662000616565b5b6200078c565b6200076c84848460016200064f565b9250905081840481111562000786576200078562000616565b5b81810290505b9392505050565b5f60ff82169050919050565b5f620007ab82620003e8565b9150620007b88362000793565b9250620007e77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006a9565b905092915050565b5f620007fb82620003e8565b91506200080883620003e8565b92508282026200081881620003e8565b9150828204841483151762000832576200083162000616565b5b5092915050565b6200084481620003e8565b82525050565b5f6020820190506200085f5f83018462000839565b92915050565b61185d80620008735f395ff3fe608060405234801561000f575f80fd5b50600436106100e8575f3560e01c8063715018a61161008a578063a457c2d711610064578063a457c2d71461024c578063a9059cbb1461027c578063dd62ed3e146102ac578063f2fde38b146102dc576100e8565b8063715018a6146102065780638da5cb5b1461021057806395d89b411461022e576100e8565b806323b872dd116100c657806323b872dd14610158578063313ce5671461018857806339509351146101a657806370a08231146101d6576100e8565b806306fdde03146100ec578063095ea7b31461010a57806318160ddd1461013a575b5f80fd5b6100f46102f8565b6040516101019190610f72565b60405180910390f35b610124600480360381019061011f9190611023565b610388565b604051610131919061107b565b60405180910390f35b6101426103a5565b60405161014f91906110a3565b60405180910390f35b610172600480360381019061016d91906110bc565b6103ae565b60405161017f919061107b565b60405180910390f35b6101906104a9565b60405161019d9190611127565b60405180910390f35b6101c060048036038101906101bb9190611023565b6104be565b6040516101cd919061107b565b60405180910390f35b6101f060048036038101906101eb9190611140565b610565565b6040516101fd91906110a3565b60405180910390f35b61020e6105ab565b005b610218610632565b604051610225919061117a565b60405180910390f35b610236610659565b6040516102439190610f72565b60405180910390f35b61026660048036038101906102619190611023565b6106e9565b604051610273919061107b565b60405180910390f35b61029660048036038101906102919190611023565b6107d8565b6040516102a3919061107b565b60405180910390f35b6102c660048036038101906102c19190611193565b6107ee565b6040516102d391906110a3565b60405180910390f35b6102f660048036038101906102f19190611140565b610870565b005b606060058054610307906111fe565b80601f0160208091040260200160405190810160405280929190818152602001828054610333906111fe565b801561037e5780601f106103555761010080835404028352916020019161037e565b820191905f5260205f20905b81548152906001019060200180831161036157829003601f168201915b5050505050905090565b5f61039b610394610966565b848461096d565b6001905092915050565b5f600454905090565b5f6103ba848484610b30565b5f60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610401610966565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610480576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104779061129e565b60405180910390fd5b61049d8561048c610966565b858461049891906112e9565b61096d565b60019150509392505050565b5f60035f9054906101000a900460ff16905090565b5f61055b6104ca610966565b848460025f6104d7610966565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610556919061131c565b61096d565b6001905092915050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6105b3610966565b73ffffffffffffffffffffffffffffffffffffffff166105d1610632565b73ffffffffffffffffffffffffffffffffffffffff1614610627576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061e90611399565b60405180910390fd5b6106305f610ca9565b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060068054610668906111fe565b80601f0160208091040260200160405190810160405280929190818152602001828054610694906111fe565b80156106df5780601f106106b6576101008083540402835291602001916106df565b820191905f5260205f20905b8154815290600101906020018083116106c257829003601f168201915b5050505050905090565b5f8060025f6106f6610966565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156107b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a790611427565b60405180910390fd5b6107cd6107bb610966565b8585846107c891906112e9565b61096d565b600191505092915050565b5f6107e4338484610b30565b6001905092915050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610878610966565b73ffffffffffffffffffffffffffffffffffffffff16610896610632565b73ffffffffffffffffffffffffffffffffffffffff16146108ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e390611399565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361095a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610951906114b5565b60405180910390fd5b61096381610ca9565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d290611543565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a40906115d1565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610b2391906110a3565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b959061165f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c03906116ed565b60405180910390fd5b5f8111610c4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c459061177b565b60405180910390fd5b610c5783610565565b811115610c99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9090611809565b60405180910390fd5b610ca4838383610d6a565b505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610db391906112e9565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610e3d919061131c565b60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610edb91906110a3565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610f1f578082015181840152602081019050610f04565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610f4482610ee8565b610f4e8185610ef2565b9350610f5e818560208601610f02565b610f6781610f2a565b840191505092915050565b5f6020820190508181035f830152610f8a8184610f3a565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610fbf82610f96565b9050919050565b610fcf81610fb5565b8114610fd9575f80fd5b50565b5f81359050610fea81610fc6565b92915050565b5f819050919050565b61100281610ff0565b811461100c575f80fd5b50565b5f8135905061101d81610ff9565b92915050565b5f806040838503121561103957611038610f92565b5b5f61104685828601610fdc565b92505060206110578582860161100f565b9150509250929050565b5f8115159050919050565b61107581611061565b82525050565b5f60208201905061108e5f83018461106c565b92915050565b61109d81610ff0565b82525050565b5f6020820190506110b65f830184611094565b92915050565b5f805f606084860312156110d3576110d2610f92565b5b5f6110e086828701610fdc565b93505060206110f186828701610fdc565b92505060406111028682870161100f565b9150509250925092565b5f60ff82169050919050565b6111218161110c565b82525050565b5f60208201905061113a5f830184611118565b92915050565b5f6020828403121561115557611154610f92565b5b5f61116284828501610fdc565b91505092915050565b61117481610fb5565b82525050565b5f60208201905061118d5f83018461116b565b92915050565b5f80604083850312156111a9576111a8610f92565b5b5f6111b685828601610fdc565b92505060206111c785828601610fdc565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061121557607f821691505b602082108103611228576112276111d1565b5b50919050565b7f42455032303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f611288602883610ef2565b91506112938261122e565b604082019050919050565b5f6020820190508181035f8301526112b58161127c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6112f382610ff0565b91506112fe83610ff0565b9250828203905081811115611316576113156112bc565b5b92915050565b5f61132682610ff0565b915061133183610ff0565b9250828201905080821115611349576113486112bc565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f611383602083610ef2565b915061138e8261134f565b602082019050919050565b5f6020820190508181035f8301526113b081611377565b9050919050565b7f42455032303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f611411602583610ef2565b915061141c826113b7565b604082019050919050565b5f6020820190508181035f83015261143e81611405565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61149f602683610ef2565b91506114aa82611445565b604082019050919050565b5f6020820190508181035f8301526114cc81611493565b9050919050565b7f42455032303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61152d602483610ef2565b9150611538826114d3565b604082019050919050565b5f6020820190508181035f83015261155a81611521565b9050919050565b7f42455032303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6115bb602283610ef2565b91506115c682611561565b604082019050919050565b5f6020820190508181035f8301526115e8816115af565b9050919050565b7f42455032303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f611649602583610ef2565b9150611654826115ef565b604082019050919050565b5f6020820190508181035f8301526116768161163d565b9050919050565b7f42455032303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6116d7602383610ef2565b91506116e28261167d565b604082019050919050565b5f6020820190508181035f830152611704816116cb565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f611765602983610ef2565b91506117708261170b565b604082019050919050565b5f6020820190508181035f83015261179281611759565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f7265205f8201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b5f6117f3603183610ef2565b91506117fe82611799565b604082019050919050565b5f6020820190508181035f830152611820816117e7565b905091905056fea26469706673582212205f4aac8308f0d9bc2e7574f9f59ca35552efb43f0ee7e591a65c3e7ae206b90664736f6c63430008140033
Deployed ByteCode
0x608060405234801561000f575f80fd5b50600436106100e8575f3560e01c8063715018a61161008a578063a457c2d711610064578063a457c2d71461024c578063a9059cbb1461027c578063dd62ed3e146102ac578063f2fde38b146102dc576100e8565b8063715018a6146102065780638da5cb5b1461021057806395d89b411461022e576100e8565b806323b872dd116100c657806323b872dd14610158578063313ce5671461018857806339509351146101a657806370a08231146101d6576100e8565b806306fdde03146100ec578063095ea7b31461010a57806318160ddd1461013a575b5f80fd5b6100f46102f8565b6040516101019190610f72565b60405180910390f35b610124600480360381019061011f9190611023565b610388565b604051610131919061107b565b60405180910390f35b6101426103a5565b60405161014f91906110a3565b60405180910390f35b610172600480360381019061016d91906110bc565b6103ae565b60405161017f919061107b565b60405180910390f35b6101906104a9565b60405161019d9190611127565b60405180910390f35b6101c060048036038101906101bb9190611023565b6104be565b6040516101cd919061107b565b60405180910390f35b6101f060048036038101906101eb9190611140565b610565565b6040516101fd91906110a3565b60405180910390f35b61020e6105ab565b005b610218610632565b604051610225919061117a565b60405180910390f35b610236610659565b6040516102439190610f72565b60405180910390f35b61026660048036038101906102619190611023565b6106e9565b604051610273919061107b565b60405180910390f35b61029660048036038101906102919190611023565b6107d8565b6040516102a3919061107b565b60405180910390f35b6102c660048036038101906102c19190611193565b6107ee565b6040516102d391906110a3565b60405180910390f35b6102f660048036038101906102f19190611140565b610870565b005b606060058054610307906111fe565b80601f0160208091040260200160405190810160405280929190818152602001828054610333906111fe565b801561037e5780601f106103555761010080835404028352916020019161037e565b820191905f5260205f20905b81548152906001019060200180831161036157829003601f168201915b5050505050905090565b5f61039b610394610966565b848461096d565b6001905092915050565b5f600454905090565b5f6103ba848484610b30565b5f60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610401610966565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610480576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104779061129e565b60405180910390fd5b61049d8561048c610966565b858461049891906112e9565b61096d565b60019150509392505050565b5f60035f9054906101000a900460ff16905090565b5f61055b6104ca610966565b848460025f6104d7610966565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610556919061131c565b61096d565b6001905092915050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6105b3610966565b73ffffffffffffffffffffffffffffffffffffffff166105d1610632565b73ffffffffffffffffffffffffffffffffffffffff1614610627576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061e90611399565b60405180910390fd5b6106305f610ca9565b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060068054610668906111fe565b80601f0160208091040260200160405190810160405280929190818152602001828054610694906111fe565b80156106df5780601f106106b6576101008083540402835291602001916106df565b820191905f5260205f20905b8154815290600101906020018083116106c257829003601f168201915b5050505050905090565b5f8060025f6106f6610966565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156107b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a790611427565b60405180910390fd5b6107cd6107bb610966565b8585846107c891906112e9565b61096d565b600191505092915050565b5f6107e4338484610b30565b6001905092915050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610878610966565b73ffffffffffffffffffffffffffffffffffffffff16610896610632565b73ffffffffffffffffffffffffffffffffffffffff16146108ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e390611399565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361095a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610951906114b5565b60405180910390fd5b61096381610ca9565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d290611543565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a40906115d1565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610b2391906110a3565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b959061165f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c03906116ed565b60405180910390fd5b5f8111610c4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c459061177b565b60405180910390fd5b610c5783610565565b811115610c99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9090611809565b60405180910390fd5b610ca4838383610d6a565b505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610db391906112e9565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610e3d919061131c565b60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610edb91906110a3565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610f1f578082015181840152602081019050610f04565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610f4482610ee8565b610f4e8185610ef2565b9350610f5e818560208601610f02565b610f6781610f2a565b840191505092915050565b5f6020820190508181035f830152610f8a8184610f3a565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610fbf82610f96565b9050919050565b610fcf81610fb5565b8114610fd9575f80fd5b50565b5f81359050610fea81610fc6565b92915050565b5f819050919050565b61100281610ff0565b811461100c575f80fd5b50565b5f8135905061101d81610ff9565b92915050565b5f806040838503121561103957611038610f92565b5b5f61104685828601610fdc565b92505060206110578582860161100f565b9150509250929050565b5f8115159050919050565b61107581611061565b82525050565b5f60208201905061108e5f83018461106c565b92915050565b61109d81610ff0565b82525050565b5f6020820190506110b65f830184611094565b92915050565b5f805f606084860312156110d3576110d2610f92565b5b5f6110e086828701610fdc565b93505060206110f186828701610fdc565b92505060406111028682870161100f565b9150509250925092565b5f60ff82169050919050565b6111218161110c565b82525050565b5f60208201905061113a5f830184611118565b92915050565b5f6020828403121561115557611154610f92565b5b5f61116284828501610fdc565b91505092915050565b61117481610fb5565b82525050565b5f60208201905061118d5f83018461116b565b92915050565b5f80604083850312156111a9576111a8610f92565b5b5f6111b685828601610fdc565b92505060206111c785828601610fdc565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061121557607f821691505b602082108103611228576112276111d1565b5b50919050565b7f42455032303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f611288602883610ef2565b91506112938261122e565b604082019050919050565b5f6020820190508181035f8301526112b58161127c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6112f382610ff0565b91506112fe83610ff0565b9250828203905081811115611316576113156112bc565b5b92915050565b5f61132682610ff0565b915061133183610ff0565b9250828201905080821115611349576113486112bc565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f611383602083610ef2565b915061138e8261134f565b602082019050919050565b5f6020820190508181035f8301526113b081611377565b9050919050565b7f42455032303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f611411602583610ef2565b915061141c826113b7565b604082019050919050565b5f6020820190508181035f83015261143e81611405565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61149f602683610ef2565b91506114aa82611445565b604082019050919050565b5f6020820190508181035f8301526114cc81611493565b9050919050565b7f42455032303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61152d602483610ef2565b9150611538826114d3565b604082019050919050565b5f6020820190508181035f83015261155a81611521565b9050919050565b7f42455032303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6115bb602283610ef2565b91506115c682611561565b604082019050919050565b5f6020820190508181035f8301526115e8816115af565b9050919050565b7f42455032303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f611649602583610ef2565b9150611654826115ef565b604082019050919050565b5f6020820190508181035f8301526116768161163d565b9050919050565b7f42455032303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6116d7602383610ef2565b91506116e28261167d565b604082019050919050565b5f6020820190508181035f830152611704816116cb565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f611765602983610ef2565b91506117708261170b565b604082019050919050565b5f6020820190508181035f83015261179281611759565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f7265205f8201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b5f6117f3603183610ef2565b91506117fe82611799565b604082019050919050565b5f6020820190508181035f830152611820816117e7565b905091905056fea26469706673582212205f4aac8308f0d9bc2e7574f9f59ca35552efb43f0ee7e591a65c3e7ae206b90664736f6c63430008140033