ERC-20
Overview
Max Total Supply
10,000,050 C50
Holders
128
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 Source Code Verified (Exact Match)
Contract Name:
C50
Compiler Version
v0.5.0+commit.1d4f565a
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-06-02 */ pragma solidity ^0.5.0; /** * @title ERC20 interface * @dev see https://github.com/ethereum/EIPs/issues/20 */ interface IERC20 { function transfer(address to, uint256 value) external returns (bool); function approve(address spender, uint256 value) external returns (bool); function transferFrom(address from, address to, uint256 value) external returns (bool); function totalSupply() external view returns (uint256); function balanceOf(address who) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @title SafeMath * @dev Unsigned math operations with safety checks that revert on error */ library SafeMath { /** * @dev Multiplies two unsigned integers, reverts on 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-solidity/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b); return c; } /** * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a); uint256 c = a - b; return c; } /** * @dev Adds two unsigned integers, reverts on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a); return c; } /** * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo), * reverts when dividing by zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0); return a % b; } } /** * @title Standard ERC20 token * * @dev Implementation of the basic standard token. * https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md * Originally based on code by FirstBlood: * https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol * * This implementation emits additional Approval events, allowing applications to reconstruct the allowance status for * all accounts just by listening to said events. Note that this isn't required by the specification, and other * compliant implementations may not do it. */ contract ERC20 is IERC20 { using SafeMath for uint256; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowed; uint256 private _totalSupply; /** * @dev Total number of tokens in existence */ function totalSupply() public view returns (uint256) { return _totalSupply; } /** * @dev Gets the balance of the specified address. * @param owner The address to query the balance of. * @return An uint256 representing the amount owned by the passed address. */ function balanceOf(address owner) public view returns (uint256) { return _balances[owner]; } /** * @dev Function to check the amount of tokens that an owner allowed to a spender. * @param owner address The address which owns the funds. * @param spender address The address which will spend the funds. * @return A uint256 specifying the amount of tokens still available for the spender. */ function allowance(address owner, address spender) public view returns (uint256) { return _allowed[owner][spender]; } /** * @dev Transfer token for a specified address * @param to The address to transfer to. * @param value The amount to be transferred. */ function transfer(address to, uint256 value) public returns (bool) { _transfer(msg.sender, to, value); return true; } /** * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. * 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 * @param spender The address which will spend the funds. * @param value The amount of tokens to be spent. */ function approve(address spender, uint256 value) public returns (bool) { require(spender != address(0)); _allowed[msg.sender][spender] = value; emit Approval(msg.sender, spender, value); return true; } /** * @dev Transfer tokens from one address to another. * Note that while this function emits an Approval event, this is not required as per the specification, * and other compliant implementations may not emit the event. * @param from address The address which you want to send tokens from * @param to address The address which you want to transfer to * @param value uint256 the amount of tokens to be transferred */ function transferFrom(address from, address to, uint256 value) public returns (bool) { _allowed[from][msg.sender] = _allowed[from][msg.sender].sub(value); _transfer(from, to, value); emit Approval(from, msg.sender, _allowed[from][msg.sender]); return true; } /** * @dev Increase the amount of tokens that an owner allowed to a spender. * approve should be called when allowed_[_spender] == 0. To increment * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol * Emits an Approval event. * @param spender The address which will spend the funds. * @param addedValue The amount of tokens to increase the allowance by. */ function increaseAllowance(address spender, uint256 addedValue) public returns (bool) { require(spender != address(0)); _allowed[msg.sender][spender] = _allowed[msg.sender][spender].add(addedValue); emit Approval(msg.sender, spender, _allowed[msg.sender][spender]); return true; } /** * @dev Decrease the amount of tokens that an owner allowed to a spender. * approve should be called when allowed_[_spender] == 0. To decrement * allowed value is better to use this function to avoid 2 calls (and wait until * the first transaction is mined) * From MonolithDAO Token.sol * Emits an Approval event. * @param spender The address which will spend the funds. * @param subtractedValue The amount of tokens to decrease the allowance by. */ function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) { require(spender != address(0)); _allowed[msg.sender][spender] = _allowed[msg.sender][spender].sub(subtractedValue); emit Approval(msg.sender, spender, _allowed[msg.sender][spender]); return true; } /** * @dev Transfer token for a specified addresses * @param from The address to transfer from. * @param to The address to transfer to. * @param value The amount to be transferred. */ function _transfer(address from, address to, uint256 value) internal { require(to != address(0)); _balances[from] = _balances[from].sub(value); _balances[to] = _balances[to].add(value); emit Transfer(from, to, value); } /** * @dev Internal function that mints an amount of the token and assigns it to * an account. This encapsulates the modification of balances such that the * proper events are emitted. * @param account The account that will receive the created tokens. * @param value The amount that will be created. */ function _mint(address account, uint256 value) internal { require(account != address(0)); _totalSupply = _totalSupply.add(value); _balances[account] = _balances[account].add(value); emit Transfer(address(0), account, value); } /** * @dev Internal function that burns an amount of the token of a given * account. * @param account The account whose tokens will be burnt. * @param value The amount that will be burnt. */ function _burn(address account, uint256 value) internal { require(account != address(0)); _totalSupply = _totalSupply.sub(value); _balances[account] = _balances[account].sub(value); emit Transfer(account, address(0), value); } /** * @dev Internal function that burns an amount of the token of a given * account, deducting from the sender's allowance for said account. Uses the * internal burn function. * Emits an Approval event (reflecting the reduced allowance). * @param account The account whose tokens will be burnt. * @param value The amount that will be burnt. */ function _burnFrom(address account, uint256 value) internal { _allowed[account][msg.sender] = _allowed[account][msg.sender].sub(value); _burn(account, value); emit Approval(account, msg.sender, _allowed[account][msg.sender]); } } /** * @title Roles * @dev Library for managing addresses assigned to a Role. */ library Roles { struct Role { mapping (address => bool) bearer; } /** * @dev give an account access to this role */ function add(Role storage role, address account) internal { require(account != address(0)); require(!has(role, account)); role.bearer[account] = true; } /** * @dev remove an account's access to this role */ function remove(Role storage role, address account) internal { require(account != address(0)); require(has(role, account)); role.bearer[account] = false; } /** * @dev check if an account has this role * @return bool */ function has(Role storage role, address account) internal view returns (bool) { require(account != address(0)); return role.bearer[account]; } } contract MinterRole { using Roles for Roles.Role; event MinterAdded(address indexed account); event MinterRemoved(address indexed account); Roles.Role private _minters; constructor () internal { _addMinter(msg.sender); } modifier onlyMinter() { require(isMinter(msg.sender)); _; } function isMinter(address account) public view returns (bool) { return _minters.has(account); } function addMinter(address account) public onlyMinter { _addMinter(account); } function renounceMinter() public { _removeMinter(msg.sender); } function _addMinter(address account) internal { _minters.add(account); emit MinterAdded(account); } function _removeMinter(address account) internal { _minters.remove(account); emit MinterRemoved(account); } } /** * @title ERC20Mintable * @dev ERC20 minting logic */ contract ERC20Mintable is ERC20, MinterRole { /** * @dev Function to mint tokens * @param to The address that will receive the minted tokens. * @param value The amount of tokens to mint. * @return A boolean that indicates if the operation was successful. */ function mint(address to, uint256 value) public onlyMinter returns (bool) { _mint(to, value); return true; } } contract PauserRole { using Roles for Roles.Role; event PauserAdded(address indexed account); event PauserRemoved(address indexed account); Roles.Role private _pausers; constructor () internal { _addPauser(msg.sender); } modifier onlyPauser() { require(isPauser(msg.sender)); _; } function isPauser(address account) public view returns (bool) { return _pausers.has(account); } function addPauser(address account) public onlyPauser { _addPauser(account); } function renouncePauser() public { _removePauser(msg.sender); } function _addPauser(address account) internal { _pausers.add(account); emit PauserAdded(account); } function _removePauser(address account) internal { _pausers.remove(account); emit PauserRemoved(account); } } /** * @title Pausable * @dev Base contract which allows children to implement an emergency stop mechanism. */ contract Pausable is PauserRole { event Paused(address account); event Unpaused(address account); bool private _paused; constructor () internal { _paused = false; } /** * @return true if the contract is paused, false otherwise. */ function paused() public view returns (bool) { return _paused; } /** * @dev Modifier to make a function callable only when the contract is not paused. */ modifier whenNotPaused() { require(!_paused); _; } /** * @dev Modifier to make a function callable only when the contract is paused. */ modifier whenPaused() { require(_paused); _; } /** * @dev called by the owner to pause, triggers stopped state */ function pause() public onlyPauser whenNotPaused { _paused = true; emit Paused(msg.sender); } /** * @dev called by the owner to unpause, returns to normal state */ function unpause() public onlyPauser whenPaused { _paused = false; emit Unpaused(msg.sender); } } /** * @title Helps contracts guard against reentrancy attacks. * @author Remco Bloemen <remco@2π.com>, Eenae <[email protected]> * @dev If you mark a function `nonReentrant`, you should also * mark it `external`. */ contract ReentrancyGuard { /// @dev counter to allow mutex lock with only one SSTORE operation uint256 private _guardCounter; constructor () internal { // The counter starts at one to prevent changing it from zero to a non-zero // value, which is a more expensive operation. _guardCounter = 1; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and make it call a * `private` function that does the actual work. */ modifier nonReentrant() { _guardCounter += 1; uint256 localCounter = _guardCounter; _; require(localCounter == _guardCounter); } } /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ contract Ownable { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor () internal { _owner = msg.sender; emit OwnershipTransferred(address(0), _owner); } /** * @return the address of the owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(isOwner()); _; } /** * @return true if `msg.sender` is the owner of the contract. */ function isOwner() public view returns (bool) { return msg.sender == _owner; } /** * @dev Allows the current owner to relinquish control of the contract. * @notice Renouncing to ownership will leave the contract without an owner. * It will not be possible to call the functions with the `onlyOwner` * modifier anymore. */ function renounceOwnership() public onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function transferOwnership(address newOwner) public onlyOwner { _transferOwnership(newOwner); } /** * @dev Transfers control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function _transferOwnership(address newOwner) internal { require(newOwner != address(0)); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } /** * @title Administrable */ contract Administrable is Ownable { mapping (address => bool) public administrators; event AddAdministrator(address administrator); event RemoveAdministrator(address administrator); /** * @dev Throws if an account that is not an admin */ modifier onlyAdministrator() { require(msg.sender == owner() || isAdministrator(msg.sender)); _; } function isAdministrator(address _address) public view returns (bool) { return administrators[_address]; } function addAdministrator(address _address) onlyAdministrator public { emit AddAdministrator(_address); administrators[_address] = true; } function removeAdministrator(address _address) onlyAdministrator public { emit RemoveAdministrator(_address); administrators[_address] = false; } } /** * @title WhiteList * @dev The WhiteList shows who can buy a token */ contract WhiteList is Administrable { mapping (address => bool) public whitelist; event AddToWhiteList(address investor); event RemoveFromWhiteList(address investor); function addToWhiteList(address _address) onlyAdministrator public { emit AddToWhiteList(_address); whitelist[_address] = true; } function removeFromWhiteList(address _address) onlyAdministrator public { emit RemoveFromWhiteList(_address); whitelist[_address] = false; } function onWhitelist(address _address) public view returns (bool) { return whitelist[_address]; } } contract C50 is ERC20Mintable, Pausable, WhiteList, ReentrancyGuard { string public name = "Cryptocurrency 50 Index"; string public symbol = "C50"; uint8 public decimals = 18; uint256 public constant INITIAL_SUPPLY = 10000000 * (10 ** uint256(18)); uint256 public constant MAX_SUPPLY = 250000000000 * (10 ** uint256(18)); uint256 public rate; // How many token units a buyer gets per wei address payable private wallet; // Address where funds are collected uint256 public weiRaised; // Amount of wei raised /** * Event for token purchase logging * @param purchaser who paid for the tokens * @param beneficiary who got the tokens * @param value weis paid for purchase * @param amount amount of tokens purchased */ event TokenPurchase( address indexed purchaser, address indexed beneficiary, uint256 value, uint256 amount ); event SetWallet(address wallet); event SetRate(uint256 indexed rate); constructor() public { _mint(msg.sender, INITIAL_SUPPLY); rate = 500; wallet = msg.sender; } //Fallback function function () external payable { buyTokens(msg.sender); } function buyTokens(address _beneficiary) whenNotPaused nonReentrant public payable { uint256 _weiAmount = msg.value; require(_beneficiary != address(0)); require(_weiAmount > 0); require(onWhitelist(_beneficiary)); // calculate token amount to be created uint256 _amount = _weiAmount.mul(rate); // update state require(totalSupply().add(_amount) <= MAX_SUPPLY); _mint(_beneficiary, _amount); weiRaised = weiRaised.add(_weiAmount); address(wallet).transfer(_weiAmount); emit TokenPurchase(msg.sender, _beneficiary, _weiAmount, _amount); } function setWallet(address payable _wallet) onlyOwner whenNotPaused public { require(_wallet != address(0)); wallet = _wallet; emit SetWallet(wallet); } function setRate(uint256 _rate) onlyOwner whenNotPaused public { require(_rate > 0); rate = _rate; emit SetRate(rate); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"removeFromWhiteList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"isAdministrator","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"onWhitelist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"INITIAL_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MAX_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_rate","type":"uint256"}],"name":"setRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isPauser","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"addToWhiteList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"removeAdministrator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renouncePauser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"administrators","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addPauser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"}],"name":"addMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"isMinter","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"addAdministrator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_wallet","type":"address"}],"name":"setWallet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"}],"name":"buyTokens","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"purchaser","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenPurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"wallet","type":"address"}],"name":"SetWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"rate","type":"uint256"}],"name":"SetRate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"investor","type":"address"}],"name":"AddToWhiteList","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"investor","type":"address"}],"name":"RemoveFromWhiteList","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"administrator","type":"address"}],"name":"AddAdministrator","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"administrator","type":"address"}],"name":"RemoveAdministrator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"PauserAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"PauserRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"MinterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"MinterRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]
Contract Creation Code
60806040526040805190810160405280601781526020017f43727970746f63757272656e637920353020496e646578000000000000000000815250600990805190602001906200005192919062000616565b506040805190810160405280600381526020017f4335300000000000000000000000000000000000000000000000000000000000815250600a90805190602001906200009f92919062000616565b506012600b60006101000a81548160ff021916908360ff160217905550348015620000c957600080fd5b50620000e43362000253640100000000026401000000009004565b620000fe33620002bd640100000000026401000000009004565b6000600560006101000a81548160ff02191690831515021790555033600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160088190555062000203336012600a0a629896800262000327640100000000026401000000009004565b6101f4600c8190555033600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620006c5565b620002778160036200049c6401000000000262002c41179091906401000000009004565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b620002e18160046200049c6401000000000262002c41179091906401000000009004565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156200036457600080fd5b62000389816002546200055f6401000000000262002537179091906401000000009004565b600281905550620003f0816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200055f6401000000000262002537179091906401000000009004565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515620004d957600080fd5b620004f4828262000581640100000000026401000000009004565b1515156200050157600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008082840190508381101515156200057757600080fd5b8091505092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515620005bf57600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200065957805160ff19168380011785556200068a565b828001600101855582156200068a579182015b82811115620006895782518255916020019190600101906200066c565b5b5090506200069991906200069d565b5090565b620006c291905b80821115620006be576000816000905550600101620006a4565b5090565b90565b612d1d80620006d56000396000f3fe6080604052600436106101ee576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301bf6648146101f957806306fdde031461024a578063095ea7b3146102da5780630a2eb3011461034d57806318160ddd146103b65780631d608659146103e157806323b872dd1461044a5780632c4e722e146104dd5780632ff2e9dc14610508578063313ce5671461053357806332cb6b0c1461056457806334fcf4371461058f57806339509351146105ca5780633f4ba83a1461063d5780634042b66f1461065457806340c10f191461067f57806346fbf68e146106f257806347ee03941461075b5780635c975abb146107ac57806368fa8134146107db5780636ef8d66d1461082c57806370a0823114610843578063715018a6146108a857806376be1585146108bf57806382dc1ec4146109285780638456cb59146109795780638da5cb5b146109905780638f32d59b146109e757806395d89b4114610a16578063983b2d5614610aa65780639865027514610af75780639b19251a14610b0e578063a457c2d714610b77578063a9059cbb14610bea578063aa271e1a14610c5d578063c999117614610cc6578063dd62ed3e14610d17578063deaa59df14610d9c578063ec8ac4d814610ded578063f2fde38b14610e31575b6101f733610e82565b005b34801561020557600080fd5b506102486004803603602081101561021c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611077565b005b34801561025657600080fd5b5061025f611186565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561029f578082015181840152602081019050610284565b50505050905090810190601f1680156102cc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102e657600080fd5b50610333600480360360408110156102fd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611224565b604051808215151515815260200191505060405180910390f35b34801561035957600080fd5b5061039c6004803603602081101561037057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611351565b604051808215151515815260200191505060405180910390f35b3480156103c257600080fd5b506103cb6113a7565b6040518082815260200191505060405180910390f35b3480156103ed57600080fd5b506104306004803603602081101561040457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113b1565b604051808215151515815260200191505060405180910390f35b34801561045657600080fd5b506104c36004803603606081101561046d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611407565b604051808215151515815260200191505060405180910390f35b3480156104e957600080fd5b506104f261160f565b6040518082815260200191505060405180910390f35b34801561051457600080fd5b5061051d611615565b6040518082815260200191505060405180910390f35b34801561053f57600080fd5b50610548611622565b604051808260ff1660ff16815260200191505060405180910390f35b34801561057057600080fd5b50610579611635565b6040518082815260200191505060405180910390f35b34801561059b57600080fd5b506105c8600480360360208110156105b257600080fd5b8101908080359060200190929190505050611644565b005b3480156105d657600080fd5b50610623600480360360408110156105ed57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506116bb565b604051808215151515815260200191505060405180910390f35b34801561064957600080fd5b506106526118f2565b005b34801561066057600080fd5b506106696119a1565b6040518082815260200191505060405180910390f35b34801561068b57600080fd5b506106d8600480360360408110156106a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506119a7565b604051808215151515815260200191505060405180910390f35b3480156106fe57600080fd5b506107416004803603602081101561071557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119d1565b604051808215151515815260200191505060405180910390f35b34801561076757600080fd5b506107aa6004803603602081101561077e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119ee565b005b3480156107b857600080fd5b506107c1611afd565b604051808215151515815260200191505060405180910390f35b3480156107e757600080fd5b5061082a600480360360208110156107fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b14565b005b34801561083857600080fd5b50610841611c23565b005b34801561084f57600080fd5b506108926004803603602081101561086657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c2e565b6040518082815260200191505060405180910390f35b3480156108b457600080fd5b506108bd611c76565b005b3480156108cb57600080fd5b5061090e600480360360208110156108e257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d4a565b604051808215151515815260200191505060405180910390f35b34801561093457600080fd5b506109776004803603602081101561094b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d6a565b005b34801561098557600080fd5b5061098e611d8a565b005b34801561099c57600080fd5b506109a5611e3a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109f357600080fd5b506109fc611e64565b604051808215151515815260200191505060405180910390f35b348015610a2257600080fd5b50610a2b611ebc565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a6b578082015181840152602081019050610a50565b50505050905090810190601f168015610a985780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610ab257600080fd5b50610af560048036036020811015610ac957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f5a565b005b348015610b0357600080fd5b50610b0c611f7a565b005b348015610b1a57600080fd5b50610b5d60048036036020811015610b3157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f85565b604051808215151515815260200191505060405180910390f35b348015610b8357600080fd5b50610bd060048036036040811015610b9a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611fa5565b604051808215151515815260200191505060405180910390f35b348015610bf657600080fd5b50610c4360048036036040811015610c0d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506121dc565b604051808215151515815260200191505060405180910390f35b348015610c6957600080fd5b50610cac60048036036020811015610c8057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121f3565b604051808215151515815260200191505060405180910390f35b348015610cd257600080fd5b50610d1560048036036020811015610ce957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612210565b005b348015610d2357600080fd5b50610d8660048036036040811015610d3a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061231f565b6040518082815260200191505060405180910390f35b348015610da857600080fd5b50610deb60048036036020811015610dbf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123a6565b005b610e2f60048036036020811015610e0357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e82565b005b348015610e3d57600080fd5b50610e8060048036036020811015610e5457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124da565b005b600560009054906101000a900460ff16151515610e9e57600080fd5b6001600860008282540192505081905550600060085490506000349050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610ef757600080fd5b600081111515610f0657600080fd5b610f0f836113b1565b1515610f1a57600080fd5b6000610f31600c54836124f990919063ffffffff16565b90506012600a0a643a3529440002610f5982610f4b6113a7565b61253790919063ffffffff16565b11151515610f6657600080fd5b610f708482612558565b610f8582600e5461253790919063ffffffff16565b600e81905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015610ff3573d6000803e3d6000fd5b508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad188484604051808381526020018281526020019250505060405180910390a350506008548114151561107357600080fd5b5050565b61107f611e3a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806110bd57506110bc33611351565b5b15156110c857600080fd5b7f80f4d7be9d601c8487132194fd218772956b9b20b704060810edd362c193220c81604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a16000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60098054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561121c5780601f106111f15761010080835404028352916020019161121c565b820191906000526020600020905b8154815290600101906020018083116111ff57829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561126157600080fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600254905090565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600061149882600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ac90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506115238484846126ce565b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600190509392505050565b600c5481565b6012600a0a629896800281565b600b60009054906101000a900460ff1681565b6012600a0a643a352944000281565b61164c611e64565b151561165757600080fd5b600560009054906101000a900460ff1615151561167357600080fd5b60008111151561168257600080fd5b80600c81905550600c547f2640b4015d3473fd09bf2b30939e17deb4068cdacf3892136e737e166ceb321060405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156116f857600080fd5b61178782600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461253790919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6118fb336119d1565b151561190657600080fd5b600560009054906101000a900460ff16151561192157600080fd5b6000600560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600e5481565b60006119b2336121f3565b15156119bd57600080fd5b6119c78383612558565b6001905092915050565b60006119e782600461289a90919063ffffffff16565b9050919050565b6119f6611e3a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611a345750611a3333611351565b5b1515611a3f57600080fd5b7f16220188fd357ae3d9cf432f984d1ea5c73787b829a3e72a4b807e8c0ebf5b0c81604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a16001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600560009054906101000a900460ff16905090565b611b1c611e3a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611b5a5750611b5933611351565b5b1515611b6557600080fd5b7f5e40a439a19faa971f5d14cf300dcd7ee0d236808b9a988c9b4ca89cb833e96181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a16000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611c2c3361292e565b565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611c7e611e64565b1515611c8957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60066020528060005260406000206000915054906101000a900460ff1681565b611d73336119d1565b1515611d7e57600080fd5b611d8781612988565b50565b611d93336119d1565b1515611d9e57600080fd5b600560009054906101000a900460ff16151515611dba57600080fd5b6001600560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b600a8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611f525780601f10611f2757610100808354040283529160200191611f52565b820191906000526020600020905b815481529060010190602001808311611f3557829003601f168201915b505050505081565b611f63336121f3565b1515611f6e57600080fd5b611f77816129e2565b50565b611f8333612a3c565b565b60076020528060005260406000206000915054906101000a900460ff1681565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515611fe257600080fd5b61207182600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ac90919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b60006121e93384846126ce565b6001905092915050565b600061220982600361289a90919063ffffffff16565b9050919050565b612218611e3a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612256575061225533611351565b5b151561226157600080fd5b7f6e5eedde7d0d690d55dea362660be04ef1eb36252e48817545afb1ae6b245a4081604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a16001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6123ae611e64565b15156123b957600080fd5b600560009054906101000a900460ff161515156123d557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561241157600080fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe80d9383fb35934b174e9a5986b6ec524e533eae802ba534282f7b0c5fdd42cc600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6124e2611e64565b15156124ed57600080fd5b6124f681612a96565b50565b60008083141561250c5760009050612531565b6000828402905082848281151561251f57fe5b0414151561252c57600080fd5b809150505b92915050565b600080828401905083811015151561254e57600080fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561259457600080fd5b6125a98160025461253790919063ffffffff16565b600281905550612600816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461253790919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008282111515156126bd57600080fd5b600082840390508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561270a57600080fd5b61275b816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ac90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127ee816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461253790919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156128d757600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b612942816004612b9290919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e60405160405180910390a250565b61299c816004612c4190919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b6129f6816003612c4190919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b612a50816003612b9290919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612ad257600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612bce57600080fd5b612bd8828261289a565b1515612be357600080fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612c7d57600080fd5b612c87828261289a565b151515612c9357600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fea165627a7a72305820a4af628dc6996beb6143c61fc173fde76a57ba39b829f3d52a952449154103280029
Deployed Bytecode
0x6080604052600436106101ee576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301bf6648146101f957806306fdde031461024a578063095ea7b3146102da5780630a2eb3011461034d57806318160ddd146103b65780631d608659146103e157806323b872dd1461044a5780632c4e722e146104dd5780632ff2e9dc14610508578063313ce5671461053357806332cb6b0c1461056457806334fcf4371461058f57806339509351146105ca5780633f4ba83a1461063d5780634042b66f1461065457806340c10f191461067f57806346fbf68e146106f257806347ee03941461075b5780635c975abb146107ac57806368fa8134146107db5780636ef8d66d1461082c57806370a0823114610843578063715018a6146108a857806376be1585146108bf57806382dc1ec4146109285780638456cb59146109795780638da5cb5b146109905780638f32d59b146109e757806395d89b4114610a16578063983b2d5614610aa65780639865027514610af75780639b19251a14610b0e578063a457c2d714610b77578063a9059cbb14610bea578063aa271e1a14610c5d578063c999117614610cc6578063dd62ed3e14610d17578063deaa59df14610d9c578063ec8ac4d814610ded578063f2fde38b14610e31575b6101f733610e82565b005b34801561020557600080fd5b506102486004803603602081101561021c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611077565b005b34801561025657600080fd5b5061025f611186565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561029f578082015181840152602081019050610284565b50505050905090810190601f1680156102cc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102e657600080fd5b50610333600480360360408110156102fd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611224565b604051808215151515815260200191505060405180910390f35b34801561035957600080fd5b5061039c6004803603602081101561037057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611351565b604051808215151515815260200191505060405180910390f35b3480156103c257600080fd5b506103cb6113a7565b6040518082815260200191505060405180910390f35b3480156103ed57600080fd5b506104306004803603602081101561040457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113b1565b604051808215151515815260200191505060405180910390f35b34801561045657600080fd5b506104c36004803603606081101561046d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611407565b604051808215151515815260200191505060405180910390f35b3480156104e957600080fd5b506104f261160f565b6040518082815260200191505060405180910390f35b34801561051457600080fd5b5061051d611615565b6040518082815260200191505060405180910390f35b34801561053f57600080fd5b50610548611622565b604051808260ff1660ff16815260200191505060405180910390f35b34801561057057600080fd5b50610579611635565b6040518082815260200191505060405180910390f35b34801561059b57600080fd5b506105c8600480360360208110156105b257600080fd5b8101908080359060200190929190505050611644565b005b3480156105d657600080fd5b50610623600480360360408110156105ed57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506116bb565b604051808215151515815260200191505060405180910390f35b34801561064957600080fd5b506106526118f2565b005b34801561066057600080fd5b506106696119a1565b6040518082815260200191505060405180910390f35b34801561068b57600080fd5b506106d8600480360360408110156106a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506119a7565b604051808215151515815260200191505060405180910390f35b3480156106fe57600080fd5b506107416004803603602081101561071557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119d1565b604051808215151515815260200191505060405180910390f35b34801561076757600080fd5b506107aa6004803603602081101561077e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119ee565b005b3480156107b857600080fd5b506107c1611afd565b604051808215151515815260200191505060405180910390f35b3480156107e757600080fd5b5061082a600480360360208110156107fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b14565b005b34801561083857600080fd5b50610841611c23565b005b34801561084f57600080fd5b506108926004803603602081101561086657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c2e565b6040518082815260200191505060405180910390f35b3480156108b457600080fd5b506108bd611c76565b005b3480156108cb57600080fd5b5061090e600480360360208110156108e257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d4a565b604051808215151515815260200191505060405180910390f35b34801561093457600080fd5b506109776004803603602081101561094b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d6a565b005b34801561098557600080fd5b5061098e611d8a565b005b34801561099c57600080fd5b506109a5611e3a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156109f357600080fd5b506109fc611e64565b604051808215151515815260200191505060405180910390f35b348015610a2257600080fd5b50610a2b611ebc565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a6b578082015181840152602081019050610a50565b50505050905090810190601f168015610a985780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610ab257600080fd5b50610af560048036036020811015610ac957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f5a565b005b348015610b0357600080fd5b50610b0c611f7a565b005b348015610b1a57600080fd5b50610b5d60048036036020811015610b3157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f85565b604051808215151515815260200191505060405180910390f35b348015610b8357600080fd5b50610bd060048036036040811015610b9a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611fa5565b604051808215151515815260200191505060405180910390f35b348015610bf657600080fd5b50610c4360048036036040811015610c0d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506121dc565b604051808215151515815260200191505060405180910390f35b348015610c6957600080fd5b50610cac60048036036020811015610c8057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506121f3565b604051808215151515815260200191505060405180910390f35b348015610cd257600080fd5b50610d1560048036036020811015610ce957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612210565b005b348015610d2357600080fd5b50610d8660048036036040811015610d3a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061231f565b6040518082815260200191505060405180910390f35b348015610da857600080fd5b50610deb60048036036020811015610dbf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123a6565b005b610e2f60048036036020811015610e0357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e82565b005b348015610e3d57600080fd5b50610e8060048036036020811015610e5457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124da565b005b600560009054906101000a900460ff16151515610e9e57600080fd5b6001600860008282540192505081905550600060085490506000349050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610ef757600080fd5b600081111515610f0657600080fd5b610f0f836113b1565b1515610f1a57600080fd5b6000610f31600c54836124f990919063ffffffff16565b90506012600a0a643a3529440002610f5982610f4b6113a7565b61253790919063ffffffff16565b11151515610f6657600080fd5b610f708482612558565b610f8582600e5461253790919063ffffffff16565b600e81905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015610ff3573d6000803e3d6000fd5b508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad188484604051808381526020018281526020019250505060405180910390a350506008548114151561107357600080fd5b5050565b61107f611e3a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806110bd57506110bc33611351565b5b15156110c857600080fd5b7f80f4d7be9d601c8487132194fd218772956b9b20b704060810edd362c193220c81604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a16000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60098054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561121c5780601f106111f15761010080835404028352916020019161121c565b820191906000526020600020905b8154815290600101906020018083116111ff57829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561126157600080fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600254905090565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600061149882600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ac90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506115238484846126ce565b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600190509392505050565b600c5481565b6012600a0a629896800281565b600b60009054906101000a900460ff1681565b6012600a0a643a352944000281565b61164c611e64565b151561165757600080fd5b600560009054906101000a900460ff1615151561167357600080fd5b60008111151561168257600080fd5b80600c81905550600c547f2640b4015d3473fd09bf2b30939e17deb4068cdacf3892136e737e166ceb321060405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141515156116f857600080fd5b61178782600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461253790919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6118fb336119d1565b151561190657600080fd5b600560009054906101000a900460ff16151561192157600080fd5b6000600560006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b600e5481565b60006119b2336121f3565b15156119bd57600080fd5b6119c78383612558565b6001905092915050565b60006119e782600461289a90919063ffffffff16565b9050919050565b6119f6611e3a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611a345750611a3333611351565b5b1515611a3f57600080fd5b7f16220188fd357ae3d9cf432f984d1ea5c73787b829a3e72a4b807e8c0ebf5b0c81604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a16001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600560009054906101000a900460ff16905090565b611b1c611e3a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611b5a5750611b5933611351565b5b1515611b6557600080fd5b7f5e40a439a19faa971f5d14cf300dcd7ee0d236808b9a988c9b4ca89cb833e96181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a16000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611c2c3361292e565b565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611c7e611e64565b1515611c8957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60066020528060005260406000206000915054906101000a900460ff1681565b611d73336119d1565b1515611d7e57600080fd5b611d8781612988565b50565b611d93336119d1565b1515611d9e57600080fd5b600560009054906101000a900460ff16151515611dba57600080fd5b6001600560006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b600a8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611f525780601f10611f2757610100808354040283529160200191611f52565b820191906000526020600020905b815481529060010190602001808311611f3557829003601f168201915b505050505081565b611f63336121f3565b1515611f6e57600080fd5b611f77816129e2565b50565b611f8333612a3c565b565b60076020528060005260406000206000915054906101000a900460ff1681565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515611fe257600080fd5b61207182600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ac90919063ffffffff16565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b60006121e93384846126ce565b6001905092915050565b600061220982600361289a90919063ffffffff16565b9050919050565b612218611e3a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612256575061225533611351565b5b151561226157600080fd5b7f6e5eedde7d0d690d55dea362660be04ef1eb36252e48817545afb1ae6b245a4081604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a16001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6123ae611e64565b15156123b957600080fd5b600560009054906101000a900460ff161515156123d557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561241157600080fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe80d9383fb35934b174e9a5986b6ec524e533eae802ba534282f7b0c5fdd42cc600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b6124e2611e64565b15156124ed57600080fd5b6124f681612a96565b50565b60008083141561250c5760009050612531565b6000828402905082848281151561251f57fe5b0414151561252c57600080fd5b809150505b92915050565b600080828401905083811015151561254e57600080fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561259457600080fd5b6125a98160025461253790919063ffffffff16565b600281905550612600816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461253790919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008282111515156126bd57600080fd5b600082840390508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561270a57600080fd5b61275b816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ac90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127ee816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461253790919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515156128d757600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b612942816004612b9290919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e60405160405180910390a250565b61299c816004612c4190919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f860405160405180910390a250565b6129f6816003612c4190919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b612a50816003612b9290919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612ad257600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612bce57600080fd5b612bd8828261289a565b1515612be357600080fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515612c7d57600080fd5b612c87828261289a565b151515612c9357600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fea165627a7a72305820a4af628dc6996beb6143c61fc173fde76a57ba39b829f3d52a952449154103280029
Deployed Bytecode Sourcemap
19847:2145:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21024:21;21034:10;21024:9;:21::i;:::-;19847:2145;19562:159;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19562:159:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19562:159:0;;;;;;;;;;;;;;;;;;;;;;19922:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19922:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;19922:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5400:244;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5400:244:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5400:244:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18691:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18691:114:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18691:114:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3559:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3559:91:0;;;;;;;;;;;;;;;;;;;;;;;19729:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19729:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19729:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6117:299;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6117:299:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6117:299:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20199:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20199:19:0;;;;;;;;;;;;;;;;;;;;;;;20043:71;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20043:71:0;;;;;;;;;;;;;;;;;;;;;;;20010:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20010:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;20121:71;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20121:71:0;;;;;;;;;;;;;;;;;;;;;;;21851:138;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21851:138:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21851:138:0;;;;;;;;;;;;;;;;;;;;6931:323;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6931:323:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6931:323:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14875:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14875:118:0;;;;;;20345:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20345:24:0;;;;;;;;;;;;;;;;;;;;;;;12644:131;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12644:131:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12644:131:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13149:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13149:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13149:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19406:148;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19406:148:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19406:148:0;;;;;;;;;;;;;;;;;;;;;;14128:78;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14128:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;18968:158;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18968:158:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18968:158:0;;;;;;;;;;;;;;;;;;;;;;13366:77;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13366:77:0;;;;;;3866:106;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3866:106:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3866:106:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17504:140;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17504:140:0;;;;;;18350:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18350:47:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18350:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13266:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13266:92:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13266:92:0;;;;;;;;;;;;;;;;;;;;;;14664:116;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14664:116:0;;;;;;16791:79;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16791:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;17126:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17126:92:0;;;;;;;;;;;;;;;;;;;;;;;;;;;19975:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19975:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;19975:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11828:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11828:92:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11828:92:0;;;;;;;;;;;;;;;;;;;;;;11928:77;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11928:77:0;;;;;;19260:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19260:42:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19260:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7774:333;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7774:333:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7774:333:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4613:140;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4613:140:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4613:140:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11711:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11711:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11711:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18811:151;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18811:151:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18811:151:0;;;;;;;;;;;;;;;;;;;;;;4311:131;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4311:131:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4311:131:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21673:170;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21673:170:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21673:170:0;;;;;;;;;;;;;;;;;;;;;;21057:608;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21057:608:0;;;;;;;;;;;;;;;;;;;;;;17821:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17821:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17821:109:0;;;;;;;;;;;;;;;;;;;;;;21057:608;14365:7;;;;;;;;;;;14364:8;14356:17;;;;;;;;16011:1;15994:13;;:18;;;;;;;;;;;16023:20;16046:13;;16023:36;;21147:18;21168:9;21147:30;;21216:1;21192:26;;:12;:26;;;;21184:35;;;;;;;;21247:1;21234:10;:14;21226:23;;;;;;;;21264:25;21276:12;21264:11;:25::i;:::-;21256:34;;;;;;;;21344:15;21362:20;21377:4;;21362:10;:14;;:20;;;;:::i;:::-;21344:38;;20188:2;20174;:17;20158:12;:34;21422:26;21440:7;21422:13;:11;:13::i;:::-;:17;;:26;;;;:::i;:::-;:40;;21414:49;;;;;;;;21470:28;21476:12;21490:7;21470:5;:28::i;:::-;21517:25;21531:10;21517:9;;:13;;:25;;;;:::i;:::-;21505:9;:37;;;;21559:6;;;;;;;;;;;21551:24;;:36;21576:10;21551:36;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21551:36:0;21625:12;21599:60;;21613:10;21599:60;;;21639:10;21651:7;21599:60;;;;;;;;;;;;;;;;;;;;;;;;16070:1;;16106:13;;16090:12;:29;16082:38;;;;;;;;14384:1;21057:608;:::o;19562:159::-;18632:7;:5;:7::i;:::-;18618:21;;:10;:21;;;:52;;;;18643:27;18659:10;18643:15;:27::i;:::-;18618:52;18610:61;;;;;;;;19648:29;19668:8;19648:29;;;;;;;;;;;;;;;;;;;;;;19708:5;19686:9;:19;19696:8;19686:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;19562:159;:::o;19922:46::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5400:244::-;5465:4;5509:1;5490:21;;:7;:21;;;;5482:30;;;;;;;;5557:5;5525:8;:20;5534:10;5525:20;;;;;;;;;;;;;;;:29;5546:7;5525:29;;;;;;;;;;;;;;;:37;;;;5599:7;5578:36;;5587:10;5578:36;;;5608:5;5578:36;;;;;;;;;;;;;;;;;;5632:4;5625:11;;5400:244;;;;:::o;18691:114::-;18755:4;18775:14;:24;18790:8;18775:24;;;;;;;;;;;;;;;;;;;;;;;;;18768:31;;18691:114;;;:::o;3559:91::-;3603:7;3630:12;;3623:19;;3559:91;:::o;19729:109::-;19789:4;19811:9;:19;19821:8;19811:19;;;;;;;;;;;;;;;;;;;;;;;;;19804:26;;19729:109;;;:::o;6117:299::-;6196:4;6242:37;6273:5;6242:8;:14;6251:4;6242:14;;;;;;;;;;;;;;;:26;6257:10;6242:26;;;;;;;;;;;;;;;;:30;;:37;;;;:::i;:::-;6213:8;:14;6222:4;6213:14;;;;;;;;;;;;;;;:26;6228:10;6213:26;;;;;;;;;;;;;;;:66;;;;6290:26;6300:4;6306:2;6310:5;6290:9;:26::i;:::-;6347:10;6332:54;;6341:4;6332:54;;;6359:8;:14;6368:4;6359:14;;;;;;;;;;;;;;;:26;6374:10;6359:26;;;;;;;;;;;;;;;;6332:54;;;;;;;;;;;;;;;;;;6404:4;6397:11;;6117:299;;;;;:::o;20199:19::-;;;;:::o;20043:71::-;20110:2;20096;:17;20084:8;:30;20043:71;:::o;20010:26::-;;;;;;;;;;;;;:::o;20121:71::-;20188:2;20174;:17;20158:12;:34;20121:71;:::o;21851:138::-;17003:9;:7;:9::i;:::-;16995:18;;;;;;;;14365:7;;;;;;;;;;;14364:8;14356:17;;;;;;;;21937:1;21929:5;:9;21921:18;;;;;;;;21953:5;21946:4;:12;;;;21978:4;;21970:13;;;;;;;;;;21851:138;:::o;6931:323::-;7011:4;7055:1;7036:21;;:7;:21;;;;7028:30;;;;;;;;7103:45;7137:10;7103:8;:20;7112:10;7103:20;;;;;;;;;;;;;;;:29;7124:7;7103:29;;;;;;;;;;;;;;;;:33;;:45;;;;:::i;:::-;7071:8;:20;7080:10;7071:20;;;;;;;;;;;;;;;:29;7092:7;7071:29;;;;;;;;;;;;;;;:77;;;;7185:7;7164:60;;7173:10;7164:60;;;7194:8;:20;7203:10;7194:20;;;;;;;;;;;;;;;:29;7215:7;7194:29;;;;;;;;;;;;;;;;7164:60;;;;;;;;;;;;;;;;;;7242:4;7235:11;;6931:323;;;;:::o;14875:118::-;13100:20;13109:10;13100:8;:20::i;:::-;13092:29;;;;;;;;14544:7;;;;;;;;;;;14536:16;;;;;;;;14944:5;14934:7;;:15;;;;;;;;;;;;;;;;;;14965:20;14974:10;14965:20;;;;;;;;;;;;;;;;;;;;;;14875:118::o;20345:24::-;;;;:::o;12644:131::-;12712:4;11662:20;11671:10;11662:8;:20::i;:::-;11654:29;;;;;;;;12729:16;12735:2;12739:5;12729;:16::i;:::-;12763:4;12756:11;;12644:131;;;;:::o;13149:109::-;13205:4;13229:21;13242:7;13229:8;:12;;:21;;;;:::i;:::-;13222:28;;13149:109;;;:::o;19406:148::-;18632:7;:5;:7::i;:::-;18618:21;;:10;:21;;;:52;;;;18643:27;18659:10;18643:15;:27::i;:::-;18618:52;18610:61;;;;;;;;19487:24;19502:8;19487:24;;;;;;;;;;;;;;;;;;;;;;19542:4;19520:9;:19;19530:8;19520:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;19406:148;:::o;14128:78::-;14167:4;14191:7;;;;;;;;;;;14184:14;;14128:78;:::o;18968:158::-;18632:7;:5;:7::i;:::-;18618:21;;:10;:21;;;:52;;;;18643:27;18659:10;18643:15;:27::i;:::-;18618:52;18610:61;;;;;;;;19052:29;19072:8;19052:29;;;;;;;;;;;;;;;;;;;;;;19115:5;19088:14;:24;19103:8;19088:24;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;18968:158;:::o;13366:77::-;13410:25;13424:10;13410:13;:25::i;:::-;13366:77::o;3866:106::-;3921:7;3948:9;:16;3958:5;3948:16;;;;;;;;;;;;;;;;3941:23;;3866:106;;;:::o;17504:140::-;17003:9;:7;:9::i;:::-;16995:18;;;;;;;;17603:1;17566:40;;17587:6;;;;;;;;;;;17566:40;;;;;;;;;;;;17634:1;17617:6;;:19;;;;;;;;;;;;;;;;;;17504:140::o;18350:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;13266:92::-;13100:20;13109:10;13100:8;:20::i;:::-;13092:29;;;;;;;;13331:19;13342:7;13331:10;:19::i;:::-;13266:92;:::o;14664:116::-;13100:20;13109:10;13100:8;:20::i;:::-;13092:29;;;;;;;;14365:7;;;;;;;;;;;14364:8;14356:17;;;;;;;;14734:4;14724:7;;:14;;;;;;;;;;;;;;;;;;14754:18;14761:10;14754:18;;;;;;;;;;;;;;;;;;;;;;14664:116::o;16791:79::-;16829:7;16856:6;;;;;;;;;;;16849:13;;16791:79;:::o;17126:92::-;17166:4;17204:6;;;;;;;;;;;17190:20;;:10;:20;;;17183:27;;17126:92;:::o;19975:28::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11828:92::-;11662:20;11671:10;11662:8;:20::i;:::-;11654:29;;;;;;;;11893:19;11904:7;11893:10;:19::i;:::-;11828:92;:::o;11928:77::-;11972:25;11986:10;11972:13;:25::i;:::-;11928:77::o;19260:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;7774:333::-;7859:4;7903:1;7884:21;;:7;:21;;;;7876:30;;;;;;;;7951:50;7985:15;7951:8;:20;7960:10;7951:20;;;;;;;;;;;;;;;:29;7972:7;7951:29;;;;;;;;;;;;;;;;:33;;:50;;;;:::i;:::-;7919:8;:20;7928:10;7919:20;;;;;;;;;;;;;;;:29;7940:7;7919:29;;;;;;;;;;;;;;;:82;;;;8038:7;8017:60;;8026:10;8017:60;;;8047:8;:20;8056:10;8047:20;;;;;;;;;;;;;;;:29;8068:7;8047:29;;;;;;;;;;;;;;;;8017:60;;;;;;;;;;;;;;;;;;8095:4;8088:11;;7774:333;;;;:::o;4613:140::-;4674:4;4691:32;4701:10;4713:2;4717:5;4691:9;:32::i;:::-;4741:4;4734:11;;4613:140;;;;:::o;11711:109::-;11767:4;11791:21;11804:7;11791:8;:12;;:21;;;;:::i;:::-;11784:28;;11711:109;;;:::o;18811:151::-;18632:7;:5;:7::i;:::-;18618:21;;:10;:21;;;:52;;;;18643:27;18659:10;18643:15;:27::i;:::-;18618:52;18610:61;;;;;;;;18892:26;18909:8;18892:26;;;;;;;;;;;;;;;;;;;;;;18952:4;18925:14;:24;18940:8;18925:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;18811:151;:::o;4311:131::-;4383:7;4410:8;:15;4419:5;4410:15;;;;;;;;;;;;;;;:24;4426:7;4410:24;;;;;;;;;;;;;;;;4403:31;;4311:131;;;;:::o;21673:170::-;17003:9;:7;:9::i;:::-;16995:18;;;;;;;;14365:7;;;;;;;;;;;14364:8;14356:17;;;;;;;;21782:1;21763:21;;:7;:21;;;;21755:30;;;;;;;;21801:7;21792:6;;:16;;;;;;;;;;;;;;;;;;21820:17;21830:6;;;;;;;;;;;21820:17;;;;;;;;;;;;;;;;;;;;;;21673:170;:::o;17821:109::-;17003:9;:7;:9::i;:::-;16995:18;;;;;;;;17894:28;17913:8;17894:18;:28::i;:::-;17821:109;:::o;1000:433::-;1058:7;1307:1;1302;:6;1298:47;;;1332:1;1325:8;;;;1298:47;1357:9;1373:1;1369;:5;1357:17;;1402:1;1397;1393;:5;;;;;;;;:10;1385:19;;;;;;;;1424:1;1417:8;;;1000:433;;;;;:::o;2241:150::-;2299:7;2319:9;2335:1;2331;:5;2319:17;;2360:1;2355;:6;;2347:15;;;;;;;;2382:1;2375:8;;;2241:150;;;;:::o;8943:269::-;9037:1;9018:21;;:7;:21;;;;9010:30;;;;;;;;9068:23;9085:5;9068:12;;:16;;:23;;;;:::i;:::-;9053:12;:38;;;;9123:29;9146:5;9123:9;:18;9133:7;9123:18;;;;;;;;;;;;;;;;:22;;:29;;;;:::i;:::-;9102:9;:18;9112:7;9102:18;;;;;;;;;;;;;;;:50;;;;9189:7;9168:36;;9185:1;9168:36;;;9198:5;9168:36;;;;;;;;;;;;;;;;;;8943:269;;:::o;2005:150::-;2063:7;2096:1;2091;:6;;2083:15;;;;;;;;2109:9;2125:1;2121;:5;2109:17;;2146:1;2139:8;;;2005:150;;;;:::o;8329:262::-;8431:1;8417:16;;:2;:16;;;;8409:25;;;;;;;;8465:26;8485:5;8465:9;:15;8475:4;8465:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;8447:9;:15;8457:4;8447:15;;;;;;;;;;;;;;;:44;;;;8518:24;8536:5;8518:9;:13;8528:2;8518:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;8502:9;:13;8512:2;8502:13;;;;;;;;;;;;;;;:40;;;;8573:2;8558:25;;8567:4;8558:25;;;8577:5;8558:25;;;;;;;;;;;;;;;;;;8329:262;;;:::o;11176:165::-;11248:4;11292:1;11273:21;;:7;:21;;;;11265:30;;;;;;;;11313:4;:11;;:20;11325:7;11313:20;;;;;;;;;;;;;;;;;;;;;;;;;11306:27;;11176:165;;;;:::o;13581:130::-;13641:24;13657:7;13641:8;:15;;:24;;;;:::i;:::-;13695:7;13681:22;;;;;;;;;;;;13581:130;:::o;13451:122::-;13508:21;13521:7;13508:8;:12;;:21;;;;:::i;:::-;13557:7;13545:20;;;;;;;;;;;;13451:122;:::o;12013:::-;12070:21;12083:7;12070:8;:12;;:21;;;;:::i;:::-;12119:7;12107:20;;;;;;;;;;;;12013:122;:::o;12143:130::-;12203:24;12219:7;12203:8;:15;;:24;;;;:::i;:::-;12257:7;12243:22;;;;;;;;;;;;12143:130;:::o;18080:187::-;18174:1;18154:22;;:8;:22;;;;18146:31;;;;;;;;18222:8;18193:38;;18214:6;;;;;;;;;;;18193:38;;;;;;;;;;;;18251:8;18242:6;;:17;;;;;;;;;;;;;;;;;;18080:187;:::o;10893:189::-;10992:1;10973:21;;:7;:21;;;;10965:30;;;;;;;;11014:18;11018:4;11024:7;11014:3;:18::i;:::-;11006:27;;;;;;;;11069:5;11046:4;:11;;:20;11058:7;11046:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;10893:189;;:::o;10628:186::-;10724:1;10705:21;;:7;:21;;;;10697:30;;;;;;;;10747:18;10751:4;10757:7;10747:3;:18::i;:::-;10746:19;10738:28;;;;;;;;10802:4;10779;:11;;:20;10791:7;10779:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;10628:186;;:::o
Swarm Source
bzzr://a4af628dc6996beb6143c61fc173fde76a57ba39b829f3d52a95244915410328
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.