Token AlienCRO

Overview CRC20

Price
$0.00 @ 0.000000 CRO
Fully Diluted Market Cap
Total Supply:
0 ALIEN

Holders:
162 addresses
Contract:
0x8bbE600b61a2CD8cD5c93036B6Abbb9314F7D59b0x8bbE600b61a2CD8cD5c93036B6Abbb9314F7D59b

Decimals:
18

Social Profiles:
Not Available, Update ?

Balance
126,000 ALIEN

Value
$0.00
0x634a5dc4cda63ea8d0699d9387cdcfffc6408b84
Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

Click here to update the token ICO / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
ALIEN

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at cronoscan.com on 2022-08-13
*/

pragma solidity =0.8.10;

// SPDX-License-Identifier: MIT

interface IERC20 {

    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {

    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return 100000000;
    }

    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
    unchecked {
        _approve(sender, _msgSender(), currentAllowance - amount);
    }

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
    unchecked {
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);
    }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
    unchecked {
        _balances[sender] = senderBalance - amount;
    }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
    unchecked {
        _balances[account] = accountBalance - amount;
    }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

interface IMintableERC20 is IERC20 {

    function mint(address _to, uint256 _amount) external;
}

interface IBurnableERC20 is IERC20 {

    function burn(address _from, uint256 _amount) external;
}

interface IERC20Permit {

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    function nonces(address owner) external view returns (uint256);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
}

library ECDSA {
    enum RecoverError {
        NoError,
        InvalidSignature,
        InvalidSignatureLength,
        InvalidSignatureS,
        InvalidSignatureV
    }

    function _throwError(RecoverError error) private pure {
        if (error == RecoverError.NoError) {
            return; // no error: do nothing
        } else if (error == RecoverError.InvalidSignature) {
            revert("ECDSA: invalid signature");
        } else if (error == RecoverError.InvalidSignatureLength) {
            revert("ECDSA: invalid signature length");
        } else if (error == RecoverError.InvalidSignatureS) {
            revert("ECDSA: invalid signature 's' value");
        } else if (error == RecoverError.InvalidSignatureV) {
            revert("ECDSA: invalid signature 'v' value");
        }
    }

    function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {

        if (signature.length == 65) {
            bytes32 r;
            bytes32 s;
            uint8 v;

            assembly {
                r := mload(add(signature, 0x20))
                s := mload(add(signature, 0x40))
                v := byte(0, mload(add(signature, 0x60)))
            }
            return tryRecover(hash, v, r, s);
        } else if (signature.length == 64) {
            bytes32 r;
            bytes32 vs;

            assembly {
                r := mload(add(signature, 0x20))
                vs := mload(add(signature, 0x40))
            }
            return tryRecover(hash, r, vs);
        } else {
            return (address(0), RecoverError.InvalidSignatureLength);
        }
    }

    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {
        (address recovered, RecoverError error) = tryRecover(hash, signature);
        _throwError(error);
        return recovered;
    }

    function tryRecover(
        bytes32 hash,
        bytes32 r,
        bytes32 vs
    ) internal pure returns (address, RecoverError) {
        bytes32 s;
        uint8 v;
        assembly {
            s := and(vs, 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)
            v := add(shr(255, vs), 27)
        }
        return tryRecover(hash, v, r, s);
    }

    function recover(
        bytes32 hash,
        bytes32 r,
        bytes32 vs
    ) internal pure returns (address) {
        (address recovered, RecoverError error) = tryRecover(hash, r, vs);
        _throwError(error);
        return recovered;
    }

    function tryRecover(
        bytes32 hash,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) internal pure returns (address, RecoverError) {

        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {
            return (address(0), RecoverError.InvalidSignatureS);
        }
        if (v != 27 && v != 28) {
            return (address(0), RecoverError.InvalidSignatureV);
        }

        address signer = ecrecover(hash, v, r, s);
        if (signer == address(0)) {
            return (address(0), RecoverError.InvalidSignature);
        }

        return (signer, RecoverError.NoError);
    }

    function recover(
        bytes32 hash,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) internal pure returns (address) {
        (address recovered, RecoverError error) = tryRecover(hash, v, r, s);
        _throwError(error);
        return recovered;
    }

    function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {

        return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash));
    }

    function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {
        return keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
    }
}

abstract contract EIP712 {

    bytes32 private immutable _CACHED_DOMAIN_SEPARATOR;
    uint256 private immutable _CACHED_CHAIN_ID;

    bytes32 private immutable _HASHED_NAME;
    bytes32 private immutable _HASHED_VERSION;
    bytes32 private immutable _TYPE_HASH;

    constructor(string memory name, string memory version) {
        bytes32 hashedName = keccak256(bytes(name));
        bytes32 hashedVersion = keccak256(bytes(version));
        bytes32 typeHash = keccak256(
            "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
        );
        _HASHED_NAME = hashedName;
        _HASHED_VERSION = hashedVersion;
        _CACHED_CHAIN_ID = block.chainid;
        _CACHED_DOMAIN_SEPARATOR = _buildDomainSeparator(typeHash, hashedName, hashedVersion);
        _TYPE_HASH = typeHash;
    }

    function _domainSeparatorV4() internal view returns (bytes32) {
        if (block.chainid == _CACHED_CHAIN_ID) {
            return _CACHED_DOMAIN_SEPARATOR;
        } else {
            return _buildDomainSeparator(_TYPE_HASH, _HASHED_NAME, _HASHED_VERSION);
        }
    }

    function _buildDomainSeparator(
        bytes32 typeHash,
        bytes32 nameHash,
        bytes32 versionHash
    ) private view returns (bytes32) {
        return keccak256(abi.encode(typeHash, nameHash, versionHash, block.chainid, address(this)));
    }

    function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {
        return ECDSA.toTypedDataHash(_domainSeparatorV4(), structHash);
    }
}

library Counters {
    struct Counter {

        uint256 _value; // default: 0
    }

    function current(Counter storage counter) internal view returns (uint256) {
        return counter._value;
    }

    function increment(Counter storage counter) internal {
    unchecked {
        counter._value += 1;
    }
    }

    function decrement(Counter storage counter) internal {
        uint256 value = counter._value;
        require(value > 0, "Counter: decrement overflow");
    unchecked {
        counter._value = value - 1;
    }
    }

    function reset(Counter storage counter) internal {
        counter._value = 0;
    }
}

abstract contract ERC20Permit is ERC20, IERC20Permit, EIP712 {
    using Counters for Counters.Counter;

    mapping(address => Counters.Counter) private _nonces;

    bytes32 private immutable _PERMIT_TYPEHASH =
    keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");

    constructor(string memory name) EIP712(name, "1") {}

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) public virtual override {
        require(block.timestamp <= deadline, "ERC20Permit: expired deadline");

        bytes32 structHash = keccak256(abi.encode(_PERMIT_TYPEHASH, owner, spender, value, _useNonce(owner), deadline));

        bytes32 hash = _hashTypedDataV4(structHash);

        address signer = ECDSA.recover(hash, v, r, s);
        require(signer == owner, "ERC20Permit: invalid signature");

        _approve(owner, spender, value);
    }

    function nonces(address owner) public view virtual override returns (uint256) {
        return _nonces[owner].current();
    }

    function DOMAIN_SEPARATOR() external view override returns (bytes32) {
        return _domainSeparatorV4();
    }

    function _useNonce(address owner) internal virtual returns (uint256 current) {
        Counters.Counter storage nonce = _nonces[owner];
        current = nonce.current();
        nonce.increment();
    }
}

interface IAccessControl {

    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);

    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);

    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);

    function hasRole(bytes32 role, address account) external view returns (bool);

    function getRoleAdmin(bytes32 role) external view returns (bytes32);

    function grantRole(bytes32 role, address account) external;

    function revokeRole(bytes32 role, address account) external;

    function renounceRole(bytes32 role, address account) external;
}

library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

    function toString(uint256 value) internal pure returns (string memory) {

        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}

interface IERC165 {

    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

abstract contract ERC165 is IERC165 {

    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}

abstract contract AccessControl is Context, IAccessControl, ERC165 {
    struct RoleData {
        mapping(address => bool) members;
        bytes32 adminRole;
    }

    mapping(bytes32 => RoleData) private _roles;

    bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;

    modifier onlyRole(bytes32 role) {
        _checkRole(role, _msgSender());
        _;
    }

    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);
    }

    function hasRole(bytes32 role, address account) public view override returns (bool) {
        return _roles[role].members[account];
    }

    function _checkRole(bytes32 role, address account) internal view {
        if (!hasRole(role, account)) {
            revert(
                string(
                    abi.encodePacked(
                        "AccessControl: account ",
                        Strings.toHexString(uint160(account), 20),
                        " is missing role ",
                        Strings.toHexString(uint256(role), 32)
                    )
                )
            );
        }
    }

    function getRoleAdmin(bytes32 role) public view override returns (bytes32) {
        return _roles[role].adminRole;
    }

    function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {
        _grantRole(role, account);
    }

    function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) {
        _revokeRole(role, account);
    }

    function renounceRole(bytes32 role, address account) public virtual override {
        require(account == _msgSender(), "AccessControl: can only renounce roles for self");

        _revokeRole(role, account);
    }

    function _setupRole(bytes32 role, address account) internal virtual {
        _grantRole(role, account);
    }

    function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {
        bytes32 previousAdminRole = getRoleAdmin(role);
        _roles[role].adminRole = adminRole;
        emit RoleAdminChanged(role, previousAdminRole, adminRole);
    }

    function _grantRole(bytes32 role, address account) private {
        if (!hasRole(role, account)) {
            _roles[role].members[account] = true;
            emit RoleGranted(role, account, _msgSender());
        }
    }

    function _revokeRole(bytes32 role, address account) private {
        if (hasRole(role, account)) {
            _roles[role].members[account] = false;
            emit RoleRevoked(role, account, _msgSender());
        }
    }
}

contract ALIEN is ERC20, ERC20Permit, IMintableERC20, IBurnableERC20, AccessControl {

    bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");

    bytes32 public constant BURNER_ROLE = keccak256("BURNER_ROLE");

    uint256 public constant UID = 0x94ea82e97e97cd54405b222b0209cbaf8bc622911b5ad1045e81ea6caf7d47fb;

    constructor(string memory _name, string memory _symbol) ERC20(_name, _symbol) ERC20Permit(_name) {
        _setupRole(DEFAULT_ADMIN_ROLE, _msgSender());

        _setupRole(MINTER_ROLE, _msgSender());
        _setupRole(BURNER_ROLE, _msgSender());
    }

    function mint(address _to, uint256 _amount) public {
        require(hasRole(MINTER_ROLE, _msgSender()), "must have minter role to mint");

        _mint(_to, _amount);
    }

    function burn(address _from, uint256 _amount) public {
        require(hasRole(BURNER_ROLE, _msgSender()), "must have burner role to burn");

        _burn(_from, _amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"BURNER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

6101406040527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9610120523480156200003757600080fd5b5060405162001ebd38038062001ebd8339810160408190526200005a91620003c8565b8180604051806040016040528060018152602001603160f81b815250848481600390805190602001906200009092919062000255565b508051620000a690600490602084019062000255565b5050825160209384012082519284019290922060c083815260e08290524660a0818152604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818a018190528183019890985260608101959095526080808601939093523085830152805180860390920182529390920190925280519401939093209092526101005250620001419050600033620001a1565b6200016d7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620001a1565b620001997f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84833620001a1565b50506200046f565b620001ad8282620001b1565b5050565b60008281526006602090815260408083206001600160a01b038516845290915290205460ff16620001ad5760008281526006602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620002113390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b828054620002639062000432565b90600052602060002090601f016020900481019282620002875760008555620002d2565b82601f10620002a257805160ff1916838001178555620002d2565b82800160010185558215620002d2579182015b82811115620002d2578251825591602001919060010190620002b5565b50620002e0929150620002e4565b5090565b5b80821115620002e05760008155600101620002e5565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200032357600080fd5b81516001600160401b0380821115620003405762000340620002fb565b604051601f8301601f19908116603f011681019082821181831017156200036b576200036b620002fb565b816040528381526020925086838588010111156200038857600080fd5b600091505b83821015620003ac57858201830151818301840152908201906200038d565b83821115620003be5760008385830101525b9695505050505050565b60008060408385031215620003dc57600080fd5b82516001600160401b0380821115620003f457600080fd5b620004028683870162000311565b935060208501519150808211156200041957600080fd5b50620004288582860162000311565b9150509250929050565b600181811c908216806200044757607f821691505b602082108114156200046957634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160e05161010051610120516119fe620004bf60003960006108d201526000610e3c01526000610e8b01526000610e6601526000610dea01526000610e1301526119fe6000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c80635cc99e35116100de578063a217fddf11610097578063d505accf11610071578063d505accf14610378578063d53913931461038b578063d547741f146103b2578063dd62ed3e146103c557600080fd5b8063a217fddf1461034a578063a457c2d714610352578063a9059cbb1461036557600080fd5b80635cc99e35146102b957806370a08231146102e05780637ecebe001461030957806391d148541461031c57806395d89b411461032f5780639dc29fac1461033757600080fd5b8063282c51f31161014b5780633644e515116101255780633644e5151461027857806336568abe14610280578063395093511461029357806340c10f19146102a657600080fd5b8063282c51f31461022d5780632f2ff15d14610254578063313ce5671461026957600080fd5b806301ffc9a71461019357806306fdde03146101bb578063095ea7b3146101d057806318160ddd146101e357806323b872dd146101f7578063248a9ca31461020a575b600080fd5b6101a66101a1366004611659565b6103fe565b60405190151581526020015b60405180910390f35b6101c3610435565b6040516101b291906116af565b6101a66101de3660046116fe565b6104c7565b6305f5e1005b6040519081526020016101b2565b6101a6610205366004611728565b6104dd565b6101e9610218366004611764565b60009081526006602052604090206001015490565b6101e97f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84881565b61026761026236600461177d565b61058c565b005b604051601281526020016101b2565b6101e96105b7565b61026761028e36600461177d565b6105c6565b6101a66102a13660046116fe565b610644565b6102676102b43660046116fe565b610680565b6101e97f94ea82e97e97cd54405b222b0209cbaf8bc622911b5ad1045e81ea6caf7d47fb81565b6101e96102ee3660046117a9565b6001600160a01b031660009081526020819052604090205490565b6101e96103173660046117a9565b610700565b6101a661032a36600461177d565b61071e565b6101c3610749565b6102676103453660046116fe565b610758565b6101e9600081565b6101a66103603660046116fe565b6107d8565b6101a66103733660046116fe565b610871565b6102676103863660046117c4565b61087e565b6101e97f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102676103c036600461177d565b6109e2565b6101e96103d3366004611837565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60006001600160e01b03198216637965db0b60e01b148061042f57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606003805461044490611861565b80601f016020809104026020016040519081016040528092919081815260200182805461047090611861565b80156104bd5780601f10610492576101008083540402835291602001916104bd565b820191906000526020600020905b8154815290600101906020018083116104a057829003601f168201915b5050505050905090565b60006104d4338484610a08565b50600192915050565b60006104ea848484610b2c565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156105745760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6105818533858403610a08565b506001949350505050565b6000828152600660205260409020600101546105a88133610cfc565b6105b28383610d60565b505050565b60006105c1610de6565b905090565b6001600160a01b03811633146106365760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161056b565b6106408282610ed9565b5050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916104d491859061067b9086906118ac565b610a08565b6106aa7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63361071e565b6106f65760405162461bcd60e51b815260206004820152601d60248201527f6d7573742068617665206d696e74657220726f6c6520746f206d696e74000000604482015260640161056b565b6106408282610f40565b6001600160a01b03811660009081526005602052604081205461042f565b60009182526006602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60606004805461044490611861565b6107827f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a8483361071e565b6107ce5760405162461bcd60e51b815260206004820152601d60248201527f6d7573742068617665206275726e657220726f6c6520746f206275726e000000604482015260640161056b565b610640828261101f565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561085a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161056b565b6108673385858403610a08565b5060019392505050565b60006104d4338484610b2c565b834211156108ce5760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015260640161056b565b60007f00000000000000000000000000000000000000000000000000000000000000008888886108fd8c61116d565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050600061095882611195565b90506000610968828787876111e3565b9050896001600160a01b0316816001600160a01b0316146109cb5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260640161056b565b6109d68a8a8a610a08565b50505050505050505050565b6000828152600660205260409020600101546109fe8133610cfc565b6105b28383610ed9565b6001600160a01b038316610a6a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161056b565b6001600160a01b038216610acb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161056b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610b905760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161056b565b6001600160a01b038216610bf25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161056b565b6001600160a01b03831660009081526020819052604090205481811015610c6a5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161056b565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610ca19084906118ac565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ced91815260200190565b60405180910390a35b50505050565b610d06828261071e565b61064057610d1e816001600160a01b0316601461120b565b610d2983602061120b565b604051602001610d3a9291906118c4565b60408051601f198184030181529082905262461bcd60e51b825261056b916004016116af565b610d6a828261071e565b6106405760008281526006602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610da23390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60007f0000000000000000000000000000000000000000000000000000000000000000461415610e3557507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b610ee3828261071e565b156106405760008281526006602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6001600160a01b038216610f965760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161056b565b8060026000828254610fa891906118ac565b90915550506001600160a01b03821660009081526020819052604081208054839290610fd59084906118ac565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b03821661107f5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161056b565b6001600160a01b038216600090815260208190526040902054818110156110f35760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161056b565b6001600160a01b0383166000908152602081905260408120838303905560028054849290611122908490611939565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b6001600160a01b03811660009081526005602052604090208054600181018255905b50919050565b600061042f6111a2610de6565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60008060006111f4878787876113ae565b915091506112018161149b565b5095945050505050565b6060600061121a836002611950565b6112259060026118ac565b67ffffffffffffffff81111561123d5761123d61196f565b6040519080825280601f01601f191660200182016040528015611267576020820181803683370190505b509050600360fc1b8160008151811061128257611282611985565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106112b1576112b1611985565b60200101906001600160f81b031916908160001a90535060006112d5846002611950565b6112e09060016118ac565b90505b6001811115611358576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061131457611314611985565b1a60f81b82828151811061132a5761132a611985565b60200101906001600160f81b031916908160001a90535060049490941c936113518161199b565b90506112e3565b5083156113a75760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161056b565b9392505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156113e55750600090506003611492565b8460ff16601b141580156113fd57508460ff16601c14155b1561140e5750600090506004611492565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611462573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661148b57600060019250925050611492565b9150600090505b94509492505050565b60008160048111156114af576114af6119b2565b14156114b85750565b60018160048111156114cc576114cc6119b2565b141561151a5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161056b565b600281600481111561152e5761152e6119b2565b141561157c5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161056b565b6003816004811115611590576115906119b2565b14156115e95760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161056b565b60048160048111156115fd576115fd6119b2565b14156116565760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161056b565b50565b60006020828403121561166b57600080fd5b81356001600160e01b0319811681146113a757600080fd5b60005b8381101561169e578181015183820152602001611686565b83811115610cf65750506000910152565b60208152600082518060208401526116ce816040850160208701611683565b601f01601f19169190910160400192915050565b80356001600160a01b03811681146116f957600080fd5b919050565b6000806040838503121561171157600080fd5b61171a836116e2565b946020939093013593505050565b60008060006060848603121561173d57600080fd5b611746846116e2565b9250611754602085016116e2565b9150604084013590509250925092565b60006020828403121561177657600080fd5b5035919050565b6000806040838503121561179057600080fd5b823591506117a0602084016116e2565b90509250929050565b6000602082840312156117bb57600080fd5b6113a7826116e2565b600080600080600080600060e0888a0312156117df57600080fd5b6117e8886116e2565b96506117f6602089016116e2565b95506040880135945060608801359350608088013560ff8116811461181a57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561184a57600080fd5b611853836116e2565b91506117a0602084016116e2565b600181811c9082168061187557607f821691505b6020821081141561118f57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156118bf576118bf611896565b500190565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516118fc816017850160208801611683565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835161192d816028840160208801611683565b01602801949350505050565b60008282101561194b5761194b611896565b500390565b600081600019048311821515161561196a5761196a611896565b500290565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000816119aa576119aa611896565b506000190190565b634e487b7160e01b600052602160045260246000fdfea26469706673582212205432d544bf3e1a2fb62f1a15b9c539fb13a1488e81e25ff1801c554e5f15cbbd64736f6c634300080a0033000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000008416c69656e43524f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005414c49454e000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061018e5760003560e01c80635cc99e35116100de578063a217fddf11610097578063d505accf11610071578063d505accf14610378578063d53913931461038b578063d547741f146103b2578063dd62ed3e146103c557600080fd5b8063a217fddf1461034a578063a457c2d714610352578063a9059cbb1461036557600080fd5b80635cc99e35146102b957806370a08231146102e05780637ecebe001461030957806391d148541461031c57806395d89b411461032f5780639dc29fac1461033757600080fd5b8063282c51f31161014b5780633644e515116101255780633644e5151461027857806336568abe14610280578063395093511461029357806340c10f19146102a657600080fd5b8063282c51f31461022d5780632f2ff15d14610254578063313ce5671461026957600080fd5b806301ffc9a71461019357806306fdde03146101bb578063095ea7b3146101d057806318160ddd146101e357806323b872dd146101f7578063248a9ca31461020a575b600080fd5b6101a66101a1366004611659565b6103fe565b60405190151581526020015b60405180910390f35b6101c3610435565b6040516101b291906116af565b6101a66101de3660046116fe565b6104c7565b6305f5e1005b6040519081526020016101b2565b6101a6610205366004611728565b6104dd565b6101e9610218366004611764565b60009081526006602052604090206001015490565b6101e97f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84881565b61026761026236600461177d565b61058c565b005b604051601281526020016101b2565b6101e96105b7565b61026761028e36600461177d565b6105c6565b6101a66102a13660046116fe565b610644565b6102676102b43660046116fe565b610680565b6101e97f94ea82e97e97cd54405b222b0209cbaf8bc622911b5ad1045e81ea6caf7d47fb81565b6101e96102ee3660046117a9565b6001600160a01b031660009081526020819052604090205490565b6101e96103173660046117a9565b610700565b6101a661032a36600461177d565b61071e565b6101c3610749565b6102676103453660046116fe565b610758565b6101e9600081565b6101a66103603660046116fe565b6107d8565b6101a66103733660046116fe565b610871565b6102676103863660046117c4565b61087e565b6101e97f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102676103c036600461177d565b6109e2565b6101e96103d3366004611837565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60006001600160e01b03198216637965db0b60e01b148061042f57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606003805461044490611861565b80601f016020809104026020016040519081016040528092919081815260200182805461047090611861565b80156104bd5780601f10610492576101008083540402835291602001916104bd565b820191906000526020600020905b8154815290600101906020018083116104a057829003601f168201915b5050505050905090565b60006104d4338484610a08565b50600192915050565b60006104ea848484610b2c565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156105745760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6105818533858403610a08565b506001949350505050565b6000828152600660205260409020600101546105a88133610cfc565b6105b28383610d60565b505050565b60006105c1610de6565b905090565b6001600160a01b03811633146106365760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161056b565b6106408282610ed9565b5050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916104d491859061067b9086906118ac565b610a08565b6106aa7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63361071e565b6106f65760405162461bcd60e51b815260206004820152601d60248201527f6d7573742068617665206d696e74657220726f6c6520746f206d696e74000000604482015260640161056b565b6106408282610f40565b6001600160a01b03811660009081526005602052604081205461042f565b60009182526006602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60606004805461044490611861565b6107827f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a8483361071e565b6107ce5760405162461bcd60e51b815260206004820152601d60248201527f6d7573742068617665206275726e657220726f6c6520746f206275726e000000604482015260640161056b565b610640828261101f565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561085a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161056b565b6108673385858403610a08565b5060019392505050565b60006104d4338484610b2c565b834211156108ce5760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015260640161056b565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886108fd8c61116d565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050600061095882611195565b90506000610968828787876111e3565b9050896001600160a01b0316816001600160a01b0316146109cb5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260640161056b565b6109d68a8a8a610a08565b50505050505050505050565b6000828152600660205260409020600101546109fe8133610cfc565b6105b28383610ed9565b6001600160a01b038316610a6a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161056b565b6001600160a01b038216610acb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161056b565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610b905760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161056b565b6001600160a01b038216610bf25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161056b565b6001600160a01b03831660009081526020819052604090205481811015610c6a5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161056b565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610ca19084906118ac565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ced91815260200190565b60405180910390a35b50505050565b610d06828261071e565b61064057610d1e816001600160a01b0316601461120b565b610d2983602061120b565b604051602001610d3a9291906118c4565b60408051601f198184030181529082905262461bcd60e51b825261056b916004016116af565b610d6a828261071e565b6106405760008281526006602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610da23390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60007f0000000000000000000000000000000000000000000000000000000000000019461415610e3557507ffbbc000d6c85594dc7e3ed4401d426b5cb0f1daee10b3564579ec83b5590122790565b50604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6020808301919091527f76643779db00afeaef9cbd49f72db934fa80a21fa59d9ffc4c685057a8131a49828401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b610ee3828261071e565b156106405760008281526006602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6001600160a01b038216610f965760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161056b565b8060026000828254610fa891906118ac565b90915550506001600160a01b03821660009081526020819052604081208054839290610fd59084906118ac565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b03821661107f5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161056b565b6001600160a01b038216600090815260208190526040902054818110156110f35760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161056b565b6001600160a01b0383166000908152602081905260408120838303905560028054849290611122908490611939565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b6001600160a01b03811660009081526005602052604090208054600181018255905b50919050565b600061042f6111a2610de6565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60008060006111f4878787876113ae565b915091506112018161149b565b5095945050505050565b6060600061121a836002611950565b6112259060026118ac565b67ffffffffffffffff81111561123d5761123d61196f565b6040519080825280601f01601f191660200182016040528015611267576020820181803683370190505b509050600360fc1b8160008151811061128257611282611985565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106112b1576112b1611985565b60200101906001600160f81b031916908160001a90535060006112d5846002611950565b6112e09060016118ac565b90505b6001811115611358576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061131457611314611985565b1a60f81b82828151811061132a5761132a611985565b60200101906001600160f81b031916908160001a90535060049490941c936113518161199b565b90506112e3565b5083156113a75760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161056b565b9392505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156113e55750600090506003611492565b8460ff16601b141580156113fd57508460ff16601c14155b1561140e5750600090506004611492565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611462573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661148b57600060019250925050611492565b9150600090505b94509492505050565b60008160048111156114af576114af6119b2565b14156114b85750565b60018160048111156114cc576114cc6119b2565b141561151a5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161056b565b600281600481111561152e5761152e6119b2565b141561157c5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161056b565b6003816004811115611590576115906119b2565b14156115e95760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161056b565b60048160048111156115fd576115fd6119b2565b14156116565760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b606482015260840161056b565b50565b60006020828403121561166b57600080fd5b81356001600160e01b0319811681146113a757600080fd5b60005b8381101561169e578181015183820152602001611686565b83811115610cf65750506000910152565b60208152600082518060208401526116ce816040850160208701611683565b601f01601f19169190910160400192915050565b80356001600160a01b03811681146116f957600080fd5b919050565b6000806040838503121561171157600080fd5b61171a836116e2565b946020939093013593505050565b60008060006060848603121561173d57600080fd5b611746846116e2565b9250611754602085016116e2565b9150604084013590509250925092565b60006020828403121561177657600080fd5b5035919050565b6000806040838503121561179057600080fd5b823591506117a0602084016116e2565b90509250929050565b6000602082840312156117bb57600080fd5b6113a7826116e2565b600080600080600080600060e0888a0312156117df57600080fd5b6117e8886116e2565b96506117f6602089016116e2565b95506040880135945060608801359350608088013560ff8116811461181a57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561184a57600080fd5b611853836116e2565b91506117a0602084016116e2565b600181811c9082168061187557607f821691505b6020821081141561118f57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156118bf576118bf611896565b500190565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516118fc816017850160208801611683565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835161192d816028840160208801611683565b01602801949350505050565b60008282101561194b5761194b611896565b500390565b600081600019048311821515161561196a5761196a611896565b500290565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000816119aa576119aa611896565b506000190190565b634e487b7160e01b600052602160045260246000fdfea26469706673582212205432d544bf3e1a2fb62f1a15b9c539fb13a1488e81e25ff1801c554e5f15cbbd64736f6c634300080a0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000008416c69656e43524f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005414c49454e000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): AlienCRO
Arg [1] : _symbol (string): ALIEN

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [3] : 416c69656e43524f000000000000000000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [5] : 414c49454e000000000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

19801:977:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17415:204;;;;;;:::i;:::-;;:::i;:::-;;;470:14:1;;463:22;445:41;;433:2;418:18;17415:204:0;;;;;;;;1670:100;;;:::i;:::-;;;;;;;:::i;2581:169::-;;;;;;:::i;:::-;;:::i;1991:105::-;2079:9;1991:105;;;1731:25:1;;;1719:2;1704:18;1991:105:0;1585:177:1;2758:480:0;;;;;;:::i;:::-;;:::i;18279:123::-;;;;;;:::i;:::-;18345:7;18372:12;;;:6;:12;;;;;:22;;;;18279:123;19965:62;;20003:24;19965:62;;18410:147;;;;;;:::i;:::-;;:::i;:::-;;1890:93;;;1973:2;2868:36:1;;2856:2;2841:18;1890:93:0;2726:184:1;14222:115:0;;;:::i;18722:218::-;;;;;;:::i;:::-;;:::i;3246:215::-;;;;;;:::i;:::-;;:::i;20407:178::-;;;;;;:::i;:::-;;:::i;20036:96::-;;20066:66;20036:96;;2104:127;;;;;;:::i;:::-;-1:-1:-1;;;;;2205:18:0;2178:7;2205:18;;;;;;;;;;;;2104:127;14086:128;;;;;;:::i;:::-;;:::i;17627:139::-;;;;;;:::i;:::-;;:::i;1778:104::-;;;:::i;20593:182::-;;;;;;:::i;:::-;;:::i;17256:49::-;;17301:4;17256:49;;3469:401;;;;;;:::i;:::-;;:::i;2239:175::-;;;;;;:::i;:::-;;:::i;13433:645::-;;;;;;:::i;:::-;;:::i;19894:62::-;;19932:24;19894:62;;18565:149;;;;;;:::i;:::-;;:::i;2422:151::-;;;;;;:::i;:::-;-1:-1:-1;;;;;2538:18:0;;;2511:7;2538:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2422:151;17415:204;17500:4;-1:-1:-1;;;;;;17524:47:0;;-1:-1:-1;;;17524:47:0;;:87;;-1:-1:-1;;;;;;;;;;16972:40:0;;;17575:36;17517:94;17415:204;-1:-1:-1;;17415:204:0:o;1670:100::-;1724:13;1757:5;1750:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1670:100;:::o;2581:169::-;2664:4;2681:39;1130:10;2704:7;2713:6;2681:8;:39::i;:::-;-1:-1:-1;2738:4:0;2581:169;;;;:::o;2758:480::-;2898:4;2915:36;2925:6;2933:9;2944:6;2915:9;:36::i;:::-;-1:-1:-1;;;;;2991:19:0;;2964:24;2991:19;;;:11;:19;;;;;;;;1130:10;2991:33;;;;;;;;3043:26;;;;3035:79;;;;-1:-1:-1;;;3035:79:0;;4656:2:1;3035:79:0;;;4638:21:1;4695:2;4675:18;;;4668:30;4734:34;4714:18;;;4707:62;-1:-1:-1;;;4785:18:1;;;4778:38;4833:19;;3035:79:0;;;;;;;;;3142:57;3151:6;1130:10;3192:6;3173:16;:25;3142:8;:57::i;:::-;-1:-1:-1;3226:4:0;;2758:480;-1:-1:-1;;;;2758:480:0:o;18410:147::-;18345:7;18372:12;;;:6;:12;;;;;:22;;;17357:30;17368:4;1130:10;17357;:30::i;:::-;18524:25:::1;18535:4;18541:7;18524:10;:25::i;:::-;18410:147:::0;;;:::o;14222:115::-;14282:7;14309:20;:18;:20::i;:::-;14302:27;;14222:115;:::o;18722:218::-;-1:-1:-1;;;;;18818:23:0;;1130:10;18818:23;18810:83;;;;-1:-1:-1;;;18810:83:0;;5065:2:1;18810:83:0;;;5047:21:1;5104:2;5084:18;;;5077:30;5143:34;5123:18;;;5116:62;-1:-1:-1;;;5194:18:1;;;5187:45;5249:19;;18810:83:0;4863:411:1;18810:83:0;18906:26;18918:4;18924:7;18906:11;:26::i;:::-;18722:218;;:::o;3246:215::-;1130:10;3334:4;3383:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3383:34:0;;;;;;;;;;3334:4;;3351:80;;3374:7;;3383:47;;3420:10;;3383:47;:::i;:::-;3351:8;:80::i;20407:178::-;20477:34;19932:24;1130:10;17627:139;:::i;20477:34::-;20469:76;;;;-1:-1:-1;;;20469:76:0;;5746:2:1;20469:76:0;;;5728:21:1;5785:2;5765:18;;;5758:30;5824:31;5804:18;;;5797:59;5873:18;;20469:76:0;5544:353:1;20469:76:0;20558:19;20564:3;20569:7;20558:5;:19::i;14086:128::-;-1:-1:-1;;;;;14182:14:0;;14155:7;14182:14;;;:7;:14;;;;;12569;14182:24;12477:114;17627:139;17705:4;17729:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;17729:29:0;;;;;;;;;;;;;;;17627:139::o;1778:104::-;1834:13;1867:7;1860:14;;;;;:::i;20593:182::-;20665:34;20003:24;1130:10;17627:139;:::i;20665:34::-;20657:76;;;;-1:-1:-1;;;20657:76:0;;6104:2:1;20657:76:0;;;6086:21:1;6143:2;6123:18;;;6116:30;6182:31;6162:18;;;6155:59;6231:18;;20657:76:0;5902:353:1;20657:76:0;20746:21;20752:5;20759:7;20746:5;:21::i;3469:401::-;1130:10;3562:4;3606:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3606:34:0;;;;;;;;;;3659:35;;;;3651:85;;;;-1:-1:-1;;;3651:85:0;;6462:2:1;3651:85:0;;;6444:21:1;6501:2;6481:18;;;6474:30;6540:34;6520:18;;;6513:62;-1:-1:-1;;;6591:18:1;;;6584:35;6636:19;;3651:85:0;6260:401:1;3651:85:0;3764:67;1130:10;3787:7;3815:15;3796:16;:34;3764:8;:67::i;:::-;-1:-1:-1;3858:4:0;;3469:401;-1:-1:-1;;;3469:401:0:o;2239:175::-;2325:4;2342:42;1130:10;2366:9;2377:6;2342:9;:42::i;13433:645::-;13677:8;13658:15;:27;;13650:69;;;;-1:-1:-1;;;13650:69:0;;6868:2:1;13650:69:0;;;6850:21:1;6907:2;6887:18;;;6880:30;6946:31;6926:18;;;6919:59;6995:18;;13650:69:0;6666:353:1;13650:69:0;13732:18;13774:16;13792:5;13799:7;13808:5;13815:16;13825:5;13815:9;:16::i;:::-;13763:79;;;;;;7311:25:1;;;;-1:-1:-1;;;;;7410:15:1;;;7390:18;;;7383:43;7462:15;;;;7442:18;;;7435:43;7494:18;;;7487:34;7537:19;;;7530:35;7581:19;;;7574:35;;;7283:19;;13763:79:0;;;;;;;;;;;;13753:90;;;;;;13732:111;;13856:12;13871:28;13888:10;13871:16;:28::i;:::-;13856:43;;13912:14;13929:28;13943:4;13949:1;13952;13955;13929:13;:28::i;:::-;13912:45;;13986:5;-1:-1:-1;;;;;13976:15:0;:6;-1:-1:-1;;;;;13976:15:0;;13968:58;;;;-1:-1:-1;;;13968:58:0;;7822:2:1;13968:58:0;;;7804:21:1;7861:2;7841:18;;;7834:30;7900:32;7880:18;;;7873:60;7950:18;;13968:58:0;7620:354:1;13968:58:0;14039:31;14048:5;14055:7;14064:5;14039:8;:31::i;:::-;13639:439;;;13433:645;;;;;;;:::o;18565:149::-;18345:7;18372:12;;;:6;:12;;;;;:22;;;17357:30;17368:4;1130:10;17357;:30::i;:::-;18680:26:::1;18692:4;18698:7;18680:11;:26::i;5601:380::-:0;-1:-1:-1;;;;;5737:19:0;;5729:68;;;;-1:-1:-1;;;5729:68:0;;8181:2:1;5729:68:0;;;8163:21:1;8220:2;8200:18;;;8193:30;8259:34;8239:18;;;8232:62;-1:-1:-1;;;8310:18:1;;;8303:34;8354:19;;5729:68:0;7979:400:1;5729:68:0;-1:-1:-1;;;;;5816:21:0;;5808:68;;;;-1:-1:-1;;;5808:68:0;;8586:2:1;5808:68:0;;;8568:21:1;8625:2;8605:18;;;8598:30;8664:34;8644:18;;;8637:62;-1:-1:-1;;;8715:18:1;;;8708:32;8757:19;;5808:68:0;8384:398:1;5808:68:0;-1:-1:-1;;;;;5889:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5941:32;;1731:25:1;;;5941:32:0;;1704:18:1;5941:32:0;;;;;;;5601:380;;;:::o;3878:721::-;-1:-1:-1;;;;;4018:20:0;;4010:70;;;;-1:-1:-1;;;4010:70:0;;8989:2:1;4010:70:0;;;8971:21:1;9028:2;9008:18;;;9001:30;9067:34;9047:18;;;9040:62;-1:-1:-1;;;9118:18:1;;;9111:35;9163:19;;4010:70:0;8787:401:1;4010:70:0;-1:-1:-1;;;;;4099:23:0;;4091:71;;;;-1:-1:-1;;;4091:71:0;;9395:2:1;4091:71:0;;;9377:21:1;9434:2;9414:18;;;9407:30;9473:34;9453:18;;;9446:62;-1:-1:-1;;;9524:18:1;;;9517:33;9567:19;;4091:71:0;9193:399:1;4091:71:0;-1:-1:-1;;;;;4259:17:0;;4235:21;4259:17;;;;;;;;;;;4295:23;;;;4287:74;;;;-1:-1:-1;;;4287:74:0;;9799:2:1;4287:74:0;;;9781:21:1;9838:2;9818:18;;;9811:30;9877:34;9857:18;;;9850:62;-1:-1:-1;;;9928:18:1;;;9921:36;9974:19;;4287:74:0;9597:402:1;4287:74:0;-1:-1:-1;;;;;4389:17:0;;;:9;:17;;;;;;;;;;;4409:22;;;4389:42;;4449:20;;;;;;;;:30;;4425:6;;4389:9;4449:30;;4425:6;;4449:30;:::i;:::-;;;;;;;;4514:9;-1:-1:-1;;;;;4497:35:0;4506:6;-1:-1:-1;;;;;4497:35:0;;4525:6;4497:35;;;;1731:25:1;;1719:2;1704:18;;1585:177;4497:35:0;;;;;;;;4545:46;3999:600;3878:721;;;:::o;17774:497::-;17855:22;17863:4;17869:7;17855;:22::i;:::-;17850:414;;18043:41;18071:7;-1:-1:-1;;;;;18043:41:0;18081:2;18043:19;:41::i;:::-;18157:38;18185:4;18192:2;18157:19;:38::i;:::-;17948:270;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;17948:270:0;;;;;;;;;;-1:-1:-1;;;17894:358:0;;;;;;;:::i;19327:229::-;19402:22;19410:4;19416:7;19402;:22::i;:::-;19397:152;;19441:12;;;;:6;:12;;;;;;;;-1:-1:-1;;;;;19441:29:0;;;;;;;;;:36;;-1:-1:-1;;19441:36:0;19473:4;19441:36;;;19524:12;1130:10;;1050:98;19524:12;-1:-1:-1;;;;;19497:40:0;19515:7;-1:-1:-1;;;;;19497:40:0;19509:4;19497:40;;;;;;;;;;19327:229;;:::o;11647:281::-;11700:7;11741:16;11724:13;:33;11720:201;;;-1:-1:-1;11781:24:0;;11647:281::o;11720:201::-;-1:-1:-1;12117:73:0;;;11867:10;12117:73;;;;13288:25:1;;;;11879:12:0;13329:18:1;;;13322:34;11893:15:0;13372:18:1;;;13365:34;12161:13:0;13415:18:1;;;13408:34;12184:4:0;13458:19:1;;;;13451:61;;;;12117:73:0;;;;;;;;;;13260:19:1;;;;12117:73:0;;;12107:84;;;;;;14222:115::o;19564:230::-;19639:22;19647:4;19653:7;19639;:22::i;:::-;19635:152;;;19710:5;19678:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;19678:29:0;;;;;;;;;;:37;;-1:-1:-1;;19678:37:0;;;19735:40;1130:10;;19678:12;;19735:40;;19710:5;19735:40;19564:230;;:::o;4607:399::-;-1:-1:-1;;;;;4691:21:0;;4683:65;;;;-1:-1:-1;;;4683:65:0;;10997:2:1;4683:65:0;;;10979:21:1;11036:2;11016:18;;;11009:30;11075:33;11055:18;;;11048:61;11126:18;;4683:65:0;10795:355:1;4683:65:0;4839:6;4823:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;4856:18:0;;:9;:18;;;;;;;;;;:28;;4878:6;;4856:9;:28;;4878:6;;4856:28;:::i;:::-;;;;-1:-1:-1;;4900:37:0;;1731:25:1;;;-1:-1:-1;;;;;4900:37:0;;;4917:1;;4900:37;;1719:2:1;1704:18;4900:37:0;;;;;;;18722:218;;:::o;5014:579::-;-1:-1:-1;;;;;5098:21:0;;5090:67;;;;-1:-1:-1;;;5090:67:0;;11357:2:1;5090:67:0;;;11339:21:1;11396:2;11376:18;;;11369:30;11435:34;11415:18;;;11408:62;-1:-1:-1;;;11486:18:1;;;11479:31;11527:19;;5090:67:0;11155:397:1;5090:67:0;-1:-1:-1;;;;;5257:18:0;;5232:22;5257:18;;;;;;;;;;;5294:24;;;;5286:71;;;;-1:-1:-1;;;5286:71:0;;11759:2:1;5286:71:0;;;11741:21:1;11798:2;11778:18;;;11771:30;11837:34;11817:18;;;11810:62;-1:-1:-1;;;11888:18:1;;;11881:32;11930:19;;5286:71:0;11557:398:1;5286:71:0;-1:-1:-1;;;;;5385:18:0;;:9;:18;;;;;;;;;;5406:23;;;5385:44;;5447:12;:22;;5423:6;;5385:9;5447:22;;5423:6;;5447:22;:::i;:::-;;;;-1:-1:-1;;5487:37:0;;1731:25:1;;;5513:1:0;;-1:-1:-1;;;;;5487:37:0;;;;;1719:2:1;1704:18;5487:37:0;;;;;;;18410:147;;;:::o;14345:207::-;-1:-1:-1;;;;;14466:14:0;;14405:15;14466:14;;;:7;:14;;;;;12569;;12698:1;12680:19;;;;12569:14;14527:17;14422:130;14345:207;;;:::o;12207:167::-;12284:7;12311:55;12333:20;:18;:20::i;:::-;12355:10;10711:57;;-1:-1:-1;;;10711:57:0;;;13781:27:1;13824:11;;;13817:27;;;13860:12;;;13853:28;;;10674:7:0;;13897:12:1;;10711:57:0;;;;;;;;;;;;10701:68;;;;;;10694:75;;10581:196;;;;;10111:279;10239:7;10260:17;10279:18;10301:25;10312:4;10318:1;10321;10324;10301:10;:25::i;:::-;10259:67;;;;10337:18;10349:5;10337:11;:18::i;:::-;-1:-1:-1;10373:9:0;10111:279;-1:-1:-1;;;;;10111:279:0:o;16250:451::-;16325:13;16351:19;16383:10;16387:6;16383:1;:10;:::i;:::-;:14;;16396:1;16383:14;:::i;:::-;16373:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16373:25:0;;16351:47;;-1:-1:-1;;;16409:6:0;16416:1;16409:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;16409:15:0;;;;;;;;;-1:-1:-1;;;16435:6:0;16442:1;16435:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;16435:15:0;;;;;;;;-1:-1:-1;16466:9:0;16478:10;16482:6;16478:1;:10;:::i;:::-;:14;;16491:1;16478:14;:::i;:::-;16466:26;;16461:135;16498:1;16494;:5;16461:135;;;-1:-1:-1;;;16546:5:0;16554:3;16546:11;16533:25;;;;;;;:::i;:::-;;;;16521:6;16528:1;16521:9;;;;;;;;:::i;:::-;;;;:37;-1:-1:-1;;;;;16521:37:0;;;;;;;;-1:-1:-1;16583:1:0;16573:11;;;;;16501:3;;;:::i;:::-;;;16461:135;;;-1:-1:-1;16614:10:0;;16606:55;;;;-1:-1:-1;;;16606:55:0;;12870:2:1;16606:55:0;;;12852:21:1;;;12889:18;;;12882:30;12948:34;12928:18;;;12921:62;13000:18;;16606:55:0;12668:356:1;16606:55:0;16686:6;16250:451;-1:-1:-1;;;16250:451:0:o;9437:666::-;9568:7;;9621:66;9608:79;;9604:163;;;-1:-1:-1;9720:1:0;;-1:-1:-1;9724:30:0;9704:51;;9604:163;9781:1;:7;;9786:2;9781:7;;:18;;;;;9792:1;:7;;9797:2;9792:7;;9781:18;9777:102;;;-1:-1:-1;9832:1:0;;-1:-1:-1;9836:30:0;9816:51;;9777:102;9908:24;;;9891:14;9908:24;;;;;;;;;14147:25:1;;;14220:4;14208:17;;14188:18;;;14181:45;;;;14242:18;;;14235:34;;;14285:18;;;14278:34;;;9908:24:0;;14119:19:1;;9908:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9908:24:0;;-1:-1:-1;;9908:24:0;;;-1:-1:-1;;;;;;;9947:20:0;;9943:103;;10000:1;10004:29;9984:50;;;;;;;9943:103;10066:6;-1:-1:-1;10074:20:0;;-1:-1:-1;9437:666:0;;;;;;;;:::o;7020:643::-;7098:20;7089:5;:29;;;;;;;;:::i;:::-;;7085:571;;;7020:643;:::o;7085:571::-;7196:29;7187:5;:38;;;;;;;;:::i;:::-;;7183:473;;;7242:34;;-1:-1:-1;;;7242:34:0;;14657:2:1;7242:34:0;;;14639:21:1;14696:2;14676:18;;;14669:30;14735:26;14715:18;;;14708:54;14779:18;;7242:34:0;14455:348:1;7183:473:0;7307:35;7298:5;:44;;;;;;;;:::i;:::-;;7294:362;;;7359:41;;-1:-1:-1;;;7359:41:0;;15010:2:1;7359:41:0;;;14992:21:1;15049:2;15029:18;;;15022:30;15088:33;15068:18;;;15061:61;15139:18;;7359:41:0;14808:355:1;7294:362:0;7431:30;7422:5;:39;;;;;;;;:::i;:::-;;7418:238;;;7478:44;;-1:-1:-1;;;7478:44:0;;15370:2:1;7478:44:0;;;15352:21:1;15409:2;15389:18;;;15382:30;15448:34;15428:18;;;15421:62;-1:-1:-1;;;15499:18:1;;;15492:32;15541:19;;7478:44:0;15168:398:1;7418:238:0;7553:30;7544:5;:39;;;;;;;;:::i;:::-;;7540:116;;;7600:44;;-1:-1:-1;;;7600:44:0;;15773:2:1;7600:44:0;;;15755:21:1;15812:2;15792:18;;;15785:30;15851:34;15831:18;;;15824:62;-1:-1:-1;;;15902:18:1;;;15895:32;15944:19;;7600:44:0;15571:398:1;7540:116:0;7020:643;:::o;14:286:1:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:1;;209:43;;199:71;;266:1;263;256:12;497:258;569:1;579:113;593:6;590:1;587:13;579:113;;;669:11;;;663:18;650:11;;;643:39;615:2;608:10;579:113;;;710:6;707:1;704:13;701:48;;;-1:-1:-1;;745:1:1;727:16;;720:27;497:258::o;760:383::-;909:2;898:9;891:21;872:4;941:6;935:13;984:6;979:2;968:9;964:18;957:34;1000:66;1059:6;1054:2;1043:9;1039:18;1034:2;1026:6;1022:15;1000:66;:::i;:::-;1127:2;1106:15;-1:-1:-1;;1102:29:1;1087:45;;;;1134:2;1083:54;;760:383;-1:-1:-1;;760:383:1:o;1148:173::-;1216:20;;-1:-1:-1;;;;;1265:31:1;;1255:42;;1245:70;;1311:1;1308;1301:12;1245:70;1148:173;;;:::o;1326:254::-;1394:6;1402;1455:2;1443:9;1434:7;1430:23;1426:32;1423:52;;;1471:1;1468;1461:12;1423:52;1494:29;1513:9;1494:29;:::i;:::-;1484:39;1570:2;1555:18;;;;1542:32;;-1:-1:-1;;;1326:254:1:o;1767:328::-;1844:6;1852;1860;1913:2;1901:9;1892:7;1888:23;1884:32;1881:52;;;1929:1;1926;1919:12;1881:52;1952:29;1971:9;1952:29;:::i;:::-;1942:39;;2000:38;2034:2;2023:9;2019:18;2000:38;:::i;:::-;1990:48;;2085:2;2074:9;2070:18;2057:32;2047:42;;1767:328;;;;;:::o;2100:180::-;2159:6;2212:2;2200:9;2191:7;2187:23;2183:32;2180:52;;;2228:1;2225;2218:12;2180:52;-1:-1:-1;2251:23:1;;2100:180;-1:-1:-1;2100:180:1:o;2467:254::-;2535:6;2543;2596:2;2584:9;2575:7;2571:23;2567:32;2564:52;;;2612:1;2609;2602:12;2564:52;2648:9;2635:23;2625:33;;2677:38;2711:2;2700:9;2696:18;2677:38;:::i;:::-;2667:48;;2467:254;;;;;:::o;2915:186::-;2974:6;3027:2;3015:9;3006:7;3002:23;2998:32;2995:52;;;3043:1;3040;3033:12;2995:52;3066:29;3085:9;3066:29;:::i;3106:693::-;3217:6;3225;3233;3241;3249;3257;3265;3318:3;3306:9;3297:7;3293:23;3289:33;3286:53;;;3335:1;3332;3325:12;3286:53;3358:29;3377:9;3358:29;:::i;:::-;3348:39;;3406:38;3440:2;3429:9;3425:18;3406:38;:::i;:::-;3396:48;;3491:2;3480:9;3476:18;3463:32;3453:42;;3542:2;3531:9;3527:18;3514:32;3504:42;;3596:3;3585:9;3581:19;3568:33;3641:4;3634:5;3630:16;3623:5;3620:27;3610:55;;3661:1;3658;3651:12;3610:55;3106:693;;;;-1:-1:-1;3106:693:1;;;;3684:5;3736:3;3721:19;;3708:33;;-1:-1:-1;3788:3:1;3773:19;;;3760:33;;3106:693;-1:-1:-1;;3106:693:1:o;3804:260::-;3872:6;3880;3933:2;3921:9;3912:7;3908:23;3904:32;3901:52;;;3949:1;3946;3939:12;3901:52;3972:29;3991:9;3972:29;:::i;:::-;3962:39;;4020:38;4054:2;4043:9;4039:18;4020:38;:::i;4069:380::-;4148:1;4144:12;;;;4191;;;4212:61;;4266:4;4258:6;4254:17;4244:27;;4212:61;4319:2;4311:6;4308:14;4288:18;4285:38;4282:161;;;4365:10;4360:3;4356:20;4353:1;4346:31;4400:4;4397:1;4390:15;4428:4;4425:1;4418:15;5279:127;5340:10;5335:3;5331:20;5328:1;5321:31;5371:4;5368:1;5361:15;5395:4;5392:1;5385:15;5411:128;5451:3;5482:1;5478:6;5475:1;5472:13;5469:39;;;5488:18;;:::i;:::-;-1:-1:-1;5524:9:1;;5411:128::o;10004:786::-;10415:25;10410:3;10403:38;10385:3;10470:6;10464:13;10486:62;10541:6;10536:2;10531:3;10527:12;10520:4;10512:6;10508:17;10486:62;:::i;:::-;-1:-1:-1;;;10607:2:1;10567:16;;;10599:11;;;10592:40;10657:13;;10679:63;10657:13;10728:2;10720:11;;10713:4;10701:17;;10679:63;:::i;:::-;10762:17;10781:2;10758:26;;10004:786;-1:-1:-1;;;;10004:786:1:o;11960:125::-;12000:4;12028:1;12025;12022:8;12019:34;;;12033:18;;:::i;:::-;-1:-1:-1;12070:9:1;;11960:125::o;12090:168::-;12130:7;12196:1;12192;12188:6;12184:14;12181:1;12178:21;12173:1;12166:9;12159:17;12155:45;12152:71;;;12203:18;;:::i;:::-;-1:-1:-1;12243:9:1;;12090:168::o;12263:127::-;12324:10;12319:3;12315:20;12312:1;12305:31;12355:4;12352:1;12345:15;12379:4;12376:1;12369:15;12395:127;12456:10;12451:3;12447:20;12444:1;12437:31;12487:4;12484:1;12477:15;12511:4;12508:1;12501:15;12527:136;12566:3;12594:5;12584:39;;12603:18;;:::i;:::-;-1:-1:-1;;;12639:18:1;;12527:136::o;14323:127::-;14384:10;14379:3;14375:20;14372:1;14365:31;14415:4;14412:1;14405:15;14439:4;14436:1;14429:15

Swarm Source

ipfs://5432d544bf3e1a2fb62f1a15b9c539fb13a1488e81e25ff1801c554e5f15cbbd
Loading