ETH Price: $2,270.79 (-1.89%)
 

Overview

Max Total Supply

300,000,000,000,000 RIWA

Holders

2

Transfers

-
0

Market

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
RIWA

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2023-06-18
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;

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

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

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "New owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

abstract contract Freezable is Context {
    event Freeze(address indexed holder);
    event Unfreeze(address indexed holder);

    mapping(address => bool) private _frozenAccount;

    modifier whenNotFrozen(address holder) {
        require(!_frozenAccount[holder]);
        _;
    }

    function isFrozen(address holder) public view virtual returns (bool frozen) {
        return _frozenAccount[holder];
    }

    function _freezeAccount(address holder) internal virtual returns (bool success) {
        require(!isFrozen(holder));
        _frozenAccount[holder] = true;
        emit Freeze(holder);
        success = true;
    }

    function _unfreezeAccount(address holder) internal virtual returns (bool success) {
        require(isFrozen(holder));
        _frozenAccount[holder] = false;
        emit Unfreeze(holder);
        success = true;
    }
}

abstract contract Pausable is Context {
    event Paused(address account);
    event Unpaused(address account);

    bool private _paused;

    constructor() {
        _paused = false;
    }

    function paused() public view virtual returns (bool) {
        return _paused;
    }

    modifier whenNotPaused() {
        require(!paused(), "Paused");
        _;
    }

    modifier whenPaused() {
        require(paused(), "Not paused");
        _;
    }

    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}

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);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) internal _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 9;
    }

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

    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, "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, "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), "Transfer from the zero address");
        require(recipient != address(0), "Transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

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

abstract contract ERC20Burnable is Context, ERC20, Ownable {
    function burn(uint256 amount) public onlyOwner {
        _burn(_msgSender(), amount);
    }

    function burnFrom(address account, uint256 amount) public onlyOwner {
        _burn(account, amount);
    }
}

abstract contract ERC20Lockable is ERC20, Ownable {
    struct LockInfo {
        uint256 _releaseTime;
        uint256 _amount;
    }

    mapping(address => LockInfo[]) internal _locks;
    mapping(address => uint256) internal _totalLocked;

    event Lock(address indexed from, uint256 amount, uint256 releaseTime);
    event Unlock(address indexed from, uint256 amount);

    modifier checkLock(address from, uint256 amount) {
        uint256 length = _locks[from].length;
        if (length > 0) {
            autoUnlock(from);
        }
        require(_balances[from] >= _totalLocked[from] + amount, "Balance exceed");
        _;
    }

    function _lock(address from, uint256 amount, uint256 releaseTime) internal returns (bool success)
    {
        require(
            _balances[from] >= amount + _totalLocked[from],
            "Locked total should be smaller than balance"
        );
        _totalLocked[from] = _totalLocked[from] + amount;
        _locks[from].push(LockInfo(releaseTime, amount));
        emit Lock(from, amount, releaseTime);
        success = true;
    }

    function _unlock(address from, uint256 index) internal returns (bool success) {
        LockInfo storage info = _locks[from][index];
        _totalLocked[from] = _totalLocked[from] - info._amount;
        emit Unlock(from, info._amount);
        _locks[from][index] = _locks[from][_locks[from].length - 1];
        _locks[from].pop();
        success = true;
    }

    function lock(address recipient, uint256 amount, uint256 releaseTime) public onlyOwner returns (bool success) {
        require(_balances[recipient] >= amount, "There is not enough balance of holder.");
        _lock(recipient, amount, releaseTime);

        success = true;
    }

    function autoUnlock(address from) public returns (bool success) {
        for (uint256 i = 0; i < _locks[from].length; i++) {
            if (_locks[from][i]._releaseTime < block.timestamp) {
                _unlock(from, i);
            }
        }
        success = true;
    }

    function unlock(address from, uint256 idx) public onlyOwner returns (bool success) {
        require(_locks[from].length > idx, "There is not lock info.");
        _unlock(from, idx);
        success = true;
    }

    function releaseLock(address from) external onlyOwner returns (bool success){
        require(_locks[from].length > 0, "There is not lock info.");

        for (uint256 i = _locks[from].length; i > 0; i--) {
            _unlock(from, i - 1);
        }
        success = true;
    }

    function transferWithLock(address recipient, uint256 amount, uint256 releaseTime) external onlyOwner returns (bool success)
    {
        require(recipient != address(0));
        _transfer(msg.sender, recipient, amount);
        _lock(recipient, amount, releaseTime);
        success = true;
    }

    function lockInfo(address locked, uint256 index) public view returns (uint256 releaseTime, uint256 amount)
    {
        LockInfo memory info = _locks[locked][index];
        releaseTime = info._releaseTime;
        amount = info._amount;
    }

    function totalLocked(address locked) public view returns (uint256 amount, uint256 length){
        amount = _totalLocked[locked];
        length = _locks[locked].length;
    }
}

contract RIWA is ERC20, Pausable, Freezable, ERC20Burnable, ERC20Lockable {

    constructor() ERC20("Recycle Impact World Association", "RIWA") {
        _mint(msg.sender, 300000000000000 * (10 ** decimals()));
    }

    function pause() public onlyOwner {
        _pause();
    }

    function unpause() public onlyOwner {
        _unpause();
    }

    function freezeAccount(address holder) public onlyOwner {
        _freezeAccount(holder);
    }

    function unfreezeAccount(address holder) public onlyOwner {
        _unfreezeAccount(holder);
    }

    function transfer(address to, uint256 amount) public checkLock(msg.sender, amount) override returns (bool) {
        return super.transfer(to, amount);
    }

    function transferFrom(address from, address to, uint256 amount) public checkLock(from, amount) override returns (bool) {
        return super.transferFrom(from, to, amount);
    }

    function balanceOf(address holder) public view override returns (uint256 balance) {
        balance = super.balanceOf(holder);
    }

    function balanceOftransfer(address holder) public view returns (uint256 balance) {
        uint256 totalBalance = super.balanceOf(holder);
        uint256 avaliableBalance = 0;
        (uint256 lockedBalance, uint256 lockedLength) = totalLocked(holder);
        require(totalBalance >= lockedBalance);

        if (lockedLength > 0) {
            for (uint i = 0; i < lockedLength; i++) {
                (uint256 releaseTime, uint256 amount) = lockInfo(holder, i);
                if (releaseTime <= block.timestamp) {
                    avaliableBalance += amount;
                }
            }
        }

        balance = totalBalance - lockedBalance + avaliableBalance;
    }

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal whenNotPaused whenNotFrozen(from) override {
        super._beforeTokenTransfer(from, to, amount);
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"}],"name":"Freeze","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"releaseTime","type":"uint256"}],"name":"Lock","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"}],"name":"Unfreeze","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Unlock","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"}],"name":"autoUnlock","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"balanceOftransfer","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"freezeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"isFrozen","outputs":[{"internalType":"bool","name":"frozen","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"releaseTime","type":"uint256"}],"name":"lock","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"locked","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"lockInfo","outputs":[{"internalType":"uint256","name":"releaseTime","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"}],"name":"releaseLock","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"locked","type":"address"}],"name":"totalLocked","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"releaseTime","type":"uint256"}],"name":"transferWithLock","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"unfreezeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"idx","type":"uint256"}],"name":"unlock","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b5060408051808201825260208082527f52656379636c6520496d7061637420576f726c64204173736f63696174696f6e81830152825180840190935260048352635249574160e01b908301529060036200006c83826200030a565b5060046200007b82826200030a565b50506005805460ff1916905550600780546001600160a01b0319163390811790915560405181906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350620000f733620000de6009600a620004eb565b620000f190660110d9316ec00062000503565b620000fd565b62000533565b6001600160a01b038216620001595760405162461bcd60e51b815260206004820152601860248201527f4d696e7420746f20746865207a65726f2061646472657373000000000000000060448201526064015b60405180910390fd5b6200016760008383620001f4565b80600260008282546200017b91906200051d565b90915550506001600160a01b03821660009081526020819052604081208054839290620001aa9084906200051d565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60055460ff1615620002325760405162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015260640162000150565b6001600160a01b038316600090815260066020526040902054839060ff16156200025b57600080fd5b50505050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200029157607f821691505b602082108103620002b257634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200026157600081815260208120601f850160051c81016020861015620002e15750805b601f850160051c820191505b818110156200030257828155600101620002ed565b505050505050565b81516001600160401b0381111562000326576200032662000266565b6200033e816200033784546200027c565b84620002b8565b602080601f8311600181146200037657600084156200035d5750858301515b600019600386901b1c1916600185901b17855562000302565b600085815260208120601f198616915b82811015620003a75788860151825594840194600190910190840162000386565b5085821015620003c65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200042d578160001904821115620004115762000411620003d6565b808516156200041f57918102915b93841c9390800290620003f1565b509250929050565b6000826200044657506001620004e5565b816200045557506000620004e5565b81600181146200046e5760028114620004795762000499565b6001915050620004e5565b60ff8411156200048d576200048d620003d6565b50506001821b620004e5565b5060208310610133831016604e8410600b8410161715620004be575081810a620004e5565b620004ca8383620003ec565b8060001904821115620004e157620004e1620003d6565b0290505b92915050565b6000620004fc60ff84168362000435565b9392505050565b8082028115828204841417620004e557620004e5620003d6565b80820180821115620004e557620004e5620003d6565b611ad580620005436000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80638da5cb5b11610104578063d8fb9337116100a2578063e2ab691d11610071578063e2ab691d14610417578063e58398361461042a578063f26c159f14610456578063f2fde38b1461046957600080fd5b8063d8fb933714610382578063dd62ed3e146103b8578063de6baccb146103f1578063e20bc67b1461040457600080fd5b8063a457c2d7116100de578063a457c2d714610321578063a9059cbb14610334578063b2520a7c14610347578063d1c469161461036f57600080fd5b80638da5cb5b146102eb57806395d89b411461030657806398e3dd601461030e57600080fd5b806342966c681161017c578063788649ea1161014b578063788649ea146102aa57806379cc6790146102bd5780637eee288d146102d05780638456cb59146102e357600080fd5b806342966c68146102715780635c975abb1461028457806370a082311461028f578063715018a6146102a257600080fd5b806323b872dd116101b857806323b872dd14610232578063313ce5671461024557806339509351146102545780633f4ba83a1461026757600080fd5b806306fdde03146101df578063095ea7b3146101fd57806318160ddd14610220575b600080fd5b6101e761047c565b6040516101f49190611825565b60405180910390f35b61021061020b36600461188f565b61050e565b60405190151581526020016101f4565b6002545b6040519081526020016101f4565b6102106102403660046118b9565b610525565b604051600981526020016101f4565b61021061026236600461188f565b6105ea565b61026f610626565b005b61026f61027f3660046118f5565b61065a565b60055460ff16610210565b61022461029d36600461190e565b610691565b61026f6106af565b61026f6102b836600461190e565b610723565b61026f6102cb36600461188f565b61075a565b6102106102de36600461188f565b61078e565b61026f610830565b6007546040516001600160a01b0390911681526020016101f4565b6101e7610862565b61022461031c36600461190e565b610871565b61021061032f36600461188f565b610919565b61021061034236600461188f565b61099a565b61035a61035536600461188f565b610a46565b604080519283526020830191909152016101f4565b61021061037d36600461190e565b610aad565b61035a61039036600461190e565b6001600160a01b03166000908152600960209081526040808320546008909252909120549091565b6102246103c6366004611930565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6102106103ff366004611963565b610b80565b61021061041236600461190e565b610be1565b610210610425366004611963565b610c68565b61021061043836600461190e565b6001600160a01b031660009081526006602052604090205460ff1690565b61026f61046436600461190e565b610d0c565b61026f61047736600461190e565b610d3f565b60606003805461048b90611996565b80601f01602080910402602001604051908101604052809291908181526020018280546104b790611996565b80156105045780601f106104d957610100808354040283529160200191610504565b820191906000526020600020905b8154815290600101906020018083116104e757829003601f168201915b5050505050905090565b600061051b338484610e1b565b5060015b92915050565b6001600160a01b0383166000908152600860205260408120548490839080156105535761055183610be1565b505b6001600160a01b0383166000908152600960205260409020546105779083906119e6565b6001600160a01b03841660009081526020819052604090205410156105d45760405162461bcd60e51b815260206004820152600e60248201526d10985b185b98d948195e18d9595960921b60448201526064015b60405180910390fd5b6105df878787610f29565b979650505050505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161051b9185906106219086906119e6565b610e1b565b6007546001600160a01b031633146106505760405162461bcd60e51b81526004016105cb906119f9565b610658610fc1565b565b6007546001600160a01b031633146106845760405162461bcd60e51b81526004016105cb906119f9565b61068e338261104a565b50565b6001600160a01b03811660009081526020819052604081205461051f565b6007546001600160a01b031633146106d95760405162461bcd60e51b81526004016105cb906119f9565b6007546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600780546001600160a01b0319169055565b6007546001600160a01b0316331461074d5760405162461bcd60e51b81526004016105cb906119f9565b61075681611187565b5050565b6007546001600160a01b031633146107845760405162461bcd60e51b81526004016105cb906119f9565b610756828261104a565b6007546000906001600160a01b031633146107bb5760405162461bcd60e51b81526004016105cb906119f9565b6001600160a01b038316600090815260086020526040902054821061081c5760405162461bcd60e51b81526020600482015260176024820152762a3432b9329034b9903737ba103637b1b59034b733379760491b60448201526064016105cb565b61082683836111fa565b5060019392505050565b6007546001600160a01b0316331461085a5760405162461bcd60e51b81526004016105cb906119f9565b6106586113b5565b60606004805461048b90611996565b6001600160a01b03811660009081526020818152604080832054600983528184205460089093529083205490918391818410156108ad57600080fd5b80156108fa5760005b818110156108f8576000806108cb8984610a46565b915091504282116108e3576108e081876119e6565b95505b505080806108f090611a30565b9150506108b6565b505b826109058386611a49565b61090f91906119e6565b9695505050505050565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561098d5760405162461bcd60e51b815260206004820152601e60248201527f44656372656173656420616c6c6f77616e63652062656c6f77207a65726f000060448201526064016105cb565b6108263385858403610e1b565b33600081815260086020526040812054909190839080156109c0576109be83610be1565b505b6001600160a01b0383166000908152600960205260409020546109e49083906119e6565b6001600160a01b0384166000908152602081905260409020541015610a3c5760405162461bcd60e51b815260206004820152600e60248201526d10985b185b98d948195e18d9595960921b60448201526064016105cb565b61090f8686611426565b6001600160a01b038216600090815260086020526040812080548291829185908110610a7457610a74611a5c565b60009182526020918290206040805180820190915260029092020180548083526001909101549190920181905290969095509350505050565b6007546000906001600160a01b03163314610ada5760405162461bcd60e51b81526004016105cb906119f9565b6001600160a01b038216600090815260086020526040902054610b395760405162461bcd60e51b81526020600482015260176024820152762a3432b9329034b9903737ba103637b1b59034b733379760491b60448201526064016105cb565b6001600160a01b0382166000908152600860205260409020545b801561051b57610b6d83610b68600184611a49565b6111fa565b5080610b7881611a72565b915050610b53565b6007546000906001600160a01b03163314610bad5760405162461bcd60e51b81526004016105cb906119f9565b6001600160a01b038416610bc057600080fd5b610bcb33858561142f565b610bd68484846115e0565b506001949350505050565b6000805b6001600160a01b03831660009081526008602052604090205481101561051b576001600160a01b0383166000908152600860205260409020805442919083908110610c3257610c32611a5c565b9060005260206000209060020201600001541015610c5657610c5483826111fa565b505b80610c6081611a30565b915050610be5565b6007546000906001600160a01b03163314610c955760405162461bcd60e51b81526004016105cb906119f9565b6001600160a01b038416600090815260208190526040902054831115610bcb5760405162461bcd60e51b815260206004820152602660248201527f5468657265206973206e6f7420656e6f7567682062616c616e6365206f66206860448201526537b63232b91760d11b60648201526084016105cb565b6007546001600160a01b03163314610d365760405162461bcd60e51b81526004016105cb906119f9565b61075681611744565b6007546001600160a01b03163314610d695760405162461bcd60e51b81526004016105cb906119f9565b6001600160a01b038116610dbf5760405162461bcd60e51b815260206004820152601d60248201527f4e6577206f776e657220697320746865207a65726f206164647265737300000060448201526064016105cb565b6007546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610e715760405162461bcd60e51b815260206004820152601d60248201527f417070726f76652066726f6d20746865207a65726f206164647265737300000060448201526064016105cb565b6001600160a01b038216610ec75760405162461bcd60e51b815260206004820152601b60248201527f417070726f766520746f20746865207a65726f2061646472657373000000000060448201526064016105cb565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000610f3684848461142f565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610fb45760405162461bcd60e51b815260206004820152602160248201527f5472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636044820152606560f81b60648201526084016105cb565b610bd68533858403610e1b565b60055460ff166110005760405162461bcd60e51b815260206004820152600a602482015269139bdd081c185d5cd95960b21b60448201526064016105cb565b6005805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b0382166110a05760405162461bcd60e51b815260206004820152601a60248201527f4275726e2066726f6d20746865207a65726f206164647265737300000000000060448201526064016105cb565b6110ac826000836117bb565b6001600160a01b038216600090815260208190526040902054818110156111155760405162461bcd60e51b815260206004820152601b60248201527f4275726e20616d6f756e7420657863656564732062616c616e6365000000000060448201526064016105cb565b6001600160a01b0383166000908152602081905260408120838303905560028054849290611144908490611a49565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610f1c565b6001600160a01b03811660009081526006602052604081205460ff166111ac57600080fd5b6001600160a01b038216600081815260066020526040808220805460ff19169055517fca5069937e68fd197927055037f59d7c90bf75ac104e6e375539ef480c3ad6ee9190a2506001919050565b6001600160a01b038216600090815260086020526040812080548291908490811061122757611227611a5c565b90600052602060002090600202019050806001015460096000866001600160a01b03166001600160a01b031681526020019081526020016000205461126c9190611a49565b6001600160a01b03851660008181526009602052604090819020929092556001830154915190917f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f1916112c191815260200190565b60405180910390a26001600160a01b038416600090815260086020526040902080546112ef90600190611a49565b815481106112ff576112ff611a5c565b906000526020600020906002020160086000866001600160a01b03166001600160a01b03168152602001908152602001600020848154811061134357611343611a5c565b60009182526020808320845460029093020191825560019384015493909101929092556001600160a01b038616815260089091526040902080548061138a5761138a611a89565b6000828152602081206002600019909301928302018181556001908101919091559155949350505050565b60055460ff16156113f15760405162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b60448201526064016105cb565b6005805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861102d3390565b600061051b3384845b6001600160a01b0383166114855760405162461bcd60e51b815260206004820152601e60248201527f5472616e736665722066726f6d20746865207a65726f2061646472657373000060448201526064016105cb565b6001600160a01b0382166114db5760405162461bcd60e51b815260206004820152601c60248201527f5472616e7366657220746f20746865207a65726f20616464726573730000000060448201526064016105cb565b6114e68383836117bb565b6001600160a01b0383166000908152602081905260409020548181101561154f5760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657220616d6f756e7420657863656564732062616c616e63650060448201526064016105cb565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906115869084906119e6565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115d291815260200190565b60405180910390a350505050565b6001600160a01b03831660009081526009602052604081205461160390846119e6565b6001600160a01b038516600090815260208190526040902054101561167e5760405162461bcd60e51b815260206004820152602b60248201527f4c6f636b656420746f74616c2073686f756c6420626520736d616c6c6572207460448201526a68616e2062616c616e636560a81b60648201526084016105cb565b6001600160a01b0384166000908152600960205260409020546116a29084906119e6565b6001600160a01b0385166000818152600960209081526040808320949094556008815283822084518086018652878152808301898152825460018181018555938652939094209051600290930201918255915191015590517f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b906117329086908690918252602082015260400190565b60405180910390a25060019392505050565b6001600160a01b03811660009081526006602052604081205460ff161561176a57600080fd5b6001600160a01b038216600081815260066020526040808220805460ff19166001179055517faf85b60d26151edd11443b704d424da6c43d0468f2235ebae3d1904dbc3230499190a2506001919050565b60055460ff16156117f75760405162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b60448201526064016105cb565b6001600160a01b038316600090815260066020526040902054839060ff161561181f57600080fd5b50505050565b600060208083528351808285015260005b8181101561185257858101830151858201604001528201611836565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461188a57600080fd5b919050565b600080604083850312156118a257600080fd5b6118ab83611873565b946020939093013593505050565b6000806000606084860312156118ce57600080fd5b6118d784611873565b92506118e560208501611873565b9150604084013590509250925092565b60006020828403121561190757600080fd5b5035919050565b60006020828403121561192057600080fd5b61192982611873565b9392505050565b6000806040838503121561194357600080fd5b61194c83611873565b915061195a60208401611873565b90509250929050565b60008060006060848603121561197857600080fd5b61198184611873565b95602085013595506040909401359392505050565b600181811c908216806119aa57607f821691505b6020821081036119ca57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561051f5761051f6119d0565b60208082526017908201527f43616c6c6572206973206e6f7420746865206f776e6572000000000000000000604082015260600190565b600060018201611a4257611a426119d0565b5060010190565b8181038181111561051f5761051f6119d0565b634e487b7160e01b600052603260045260246000fd5b600081611a8157611a816119d0565b506000190190565b634e487b7160e01b600052603160045260246000fdfea26469706673582212206191bdd2850d074c9edd79867c7d997216066a5319564c9b13dd25f9c0075c3c64736f6c63430008130033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80638da5cb5b11610104578063d8fb9337116100a2578063e2ab691d11610071578063e2ab691d14610417578063e58398361461042a578063f26c159f14610456578063f2fde38b1461046957600080fd5b8063d8fb933714610382578063dd62ed3e146103b8578063de6baccb146103f1578063e20bc67b1461040457600080fd5b8063a457c2d7116100de578063a457c2d714610321578063a9059cbb14610334578063b2520a7c14610347578063d1c469161461036f57600080fd5b80638da5cb5b146102eb57806395d89b411461030657806398e3dd601461030e57600080fd5b806342966c681161017c578063788649ea1161014b578063788649ea146102aa57806379cc6790146102bd5780637eee288d146102d05780638456cb59146102e357600080fd5b806342966c68146102715780635c975abb1461028457806370a082311461028f578063715018a6146102a257600080fd5b806323b872dd116101b857806323b872dd14610232578063313ce5671461024557806339509351146102545780633f4ba83a1461026757600080fd5b806306fdde03146101df578063095ea7b3146101fd57806318160ddd14610220575b600080fd5b6101e761047c565b6040516101f49190611825565b60405180910390f35b61021061020b36600461188f565b61050e565b60405190151581526020016101f4565b6002545b6040519081526020016101f4565b6102106102403660046118b9565b610525565b604051600981526020016101f4565b61021061026236600461188f565b6105ea565b61026f610626565b005b61026f61027f3660046118f5565b61065a565b60055460ff16610210565b61022461029d36600461190e565b610691565b61026f6106af565b61026f6102b836600461190e565b610723565b61026f6102cb36600461188f565b61075a565b6102106102de36600461188f565b61078e565b61026f610830565b6007546040516001600160a01b0390911681526020016101f4565b6101e7610862565b61022461031c36600461190e565b610871565b61021061032f36600461188f565b610919565b61021061034236600461188f565b61099a565b61035a61035536600461188f565b610a46565b604080519283526020830191909152016101f4565b61021061037d36600461190e565b610aad565b61035a61039036600461190e565b6001600160a01b03166000908152600960209081526040808320546008909252909120549091565b6102246103c6366004611930565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6102106103ff366004611963565b610b80565b61021061041236600461190e565b610be1565b610210610425366004611963565b610c68565b61021061043836600461190e565b6001600160a01b031660009081526006602052604090205460ff1690565b61026f61046436600461190e565b610d0c565b61026f61047736600461190e565b610d3f565b60606003805461048b90611996565b80601f01602080910402602001604051908101604052809291908181526020018280546104b790611996565b80156105045780601f106104d957610100808354040283529160200191610504565b820191906000526020600020905b8154815290600101906020018083116104e757829003601f168201915b5050505050905090565b600061051b338484610e1b565b5060015b92915050565b6001600160a01b0383166000908152600860205260408120548490839080156105535761055183610be1565b505b6001600160a01b0383166000908152600960205260409020546105779083906119e6565b6001600160a01b03841660009081526020819052604090205410156105d45760405162461bcd60e51b815260206004820152600e60248201526d10985b185b98d948195e18d9595960921b60448201526064015b60405180910390fd5b6105df878787610f29565b979650505050505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161051b9185906106219086906119e6565b610e1b565b6007546001600160a01b031633146106505760405162461bcd60e51b81526004016105cb906119f9565b610658610fc1565b565b6007546001600160a01b031633146106845760405162461bcd60e51b81526004016105cb906119f9565b61068e338261104a565b50565b6001600160a01b03811660009081526020819052604081205461051f565b6007546001600160a01b031633146106d95760405162461bcd60e51b81526004016105cb906119f9565b6007546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600780546001600160a01b0319169055565b6007546001600160a01b0316331461074d5760405162461bcd60e51b81526004016105cb906119f9565b61075681611187565b5050565b6007546001600160a01b031633146107845760405162461bcd60e51b81526004016105cb906119f9565b610756828261104a565b6007546000906001600160a01b031633146107bb5760405162461bcd60e51b81526004016105cb906119f9565b6001600160a01b038316600090815260086020526040902054821061081c5760405162461bcd60e51b81526020600482015260176024820152762a3432b9329034b9903737ba103637b1b59034b733379760491b60448201526064016105cb565b61082683836111fa565b5060019392505050565b6007546001600160a01b0316331461085a5760405162461bcd60e51b81526004016105cb906119f9565b6106586113b5565b60606004805461048b90611996565b6001600160a01b03811660009081526020818152604080832054600983528184205460089093529083205490918391818410156108ad57600080fd5b80156108fa5760005b818110156108f8576000806108cb8984610a46565b915091504282116108e3576108e081876119e6565b95505b505080806108f090611a30565b9150506108b6565b505b826109058386611a49565b61090f91906119e6565b9695505050505050565b3360009081526001602090815260408083206001600160a01b03861684529091528120548281101561098d5760405162461bcd60e51b815260206004820152601e60248201527f44656372656173656420616c6c6f77616e63652062656c6f77207a65726f000060448201526064016105cb565b6108263385858403610e1b565b33600081815260086020526040812054909190839080156109c0576109be83610be1565b505b6001600160a01b0383166000908152600960205260409020546109e49083906119e6565b6001600160a01b0384166000908152602081905260409020541015610a3c5760405162461bcd60e51b815260206004820152600e60248201526d10985b185b98d948195e18d9595960921b60448201526064016105cb565b61090f8686611426565b6001600160a01b038216600090815260086020526040812080548291829185908110610a7457610a74611a5c565b60009182526020918290206040805180820190915260029092020180548083526001909101549190920181905290969095509350505050565b6007546000906001600160a01b03163314610ada5760405162461bcd60e51b81526004016105cb906119f9565b6001600160a01b038216600090815260086020526040902054610b395760405162461bcd60e51b81526020600482015260176024820152762a3432b9329034b9903737ba103637b1b59034b733379760491b60448201526064016105cb565b6001600160a01b0382166000908152600860205260409020545b801561051b57610b6d83610b68600184611a49565b6111fa565b5080610b7881611a72565b915050610b53565b6007546000906001600160a01b03163314610bad5760405162461bcd60e51b81526004016105cb906119f9565b6001600160a01b038416610bc057600080fd5b610bcb33858561142f565b610bd68484846115e0565b506001949350505050565b6000805b6001600160a01b03831660009081526008602052604090205481101561051b576001600160a01b0383166000908152600860205260409020805442919083908110610c3257610c32611a5c565b9060005260206000209060020201600001541015610c5657610c5483826111fa565b505b80610c6081611a30565b915050610be5565b6007546000906001600160a01b03163314610c955760405162461bcd60e51b81526004016105cb906119f9565b6001600160a01b038416600090815260208190526040902054831115610bcb5760405162461bcd60e51b815260206004820152602660248201527f5468657265206973206e6f7420656e6f7567682062616c616e6365206f66206860448201526537b63232b91760d11b60648201526084016105cb565b6007546001600160a01b03163314610d365760405162461bcd60e51b81526004016105cb906119f9565b61075681611744565b6007546001600160a01b03163314610d695760405162461bcd60e51b81526004016105cb906119f9565b6001600160a01b038116610dbf5760405162461bcd60e51b815260206004820152601d60248201527f4e6577206f776e657220697320746865207a65726f206164647265737300000060448201526064016105cb565b6007546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610e715760405162461bcd60e51b815260206004820152601d60248201527f417070726f76652066726f6d20746865207a65726f206164647265737300000060448201526064016105cb565b6001600160a01b038216610ec75760405162461bcd60e51b815260206004820152601b60248201527f417070726f766520746f20746865207a65726f2061646472657373000000000060448201526064016105cb565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000610f3684848461142f565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610fb45760405162461bcd60e51b815260206004820152602160248201527f5472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636044820152606560f81b60648201526084016105cb565b610bd68533858403610e1b565b60055460ff166110005760405162461bcd60e51b815260206004820152600a602482015269139bdd081c185d5cd95960b21b60448201526064016105cb565b6005805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b0382166110a05760405162461bcd60e51b815260206004820152601a60248201527f4275726e2066726f6d20746865207a65726f206164647265737300000000000060448201526064016105cb565b6110ac826000836117bb565b6001600160a01b038216600090815260208190526040902054818110156111155760405162461bcd60e51b815260206004820152601b60248201527f4275726e20616d6f756e7420657863656564732062616c616e6365000000000060448201526064016105cb565b6001600160a01b0383166000908152602081905260408120838303905560028054849290611144908490611a49565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610f1c565b6001600160a01b03811660009081526006602052604081205460ff166111ac57600080fd5b6001600160a01b038216600081815260066020526040808220805460ff19169055517fca5069937e68fd197927055037f59d7c90bf75ac104e6e375539ef480c3ad6ee9190a2506001919050565b6001600160a01b038216600090815260086020526040812080548291908490811061122757611227611a5c565b90600052602060002090600202019050806001015460096000866001600160a01b03166001600160a01b031681526020019081526020016000205461126c9190611a49565b6001600160a01b03851660008181526009602052604090819020929092556001830154915190917f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f1916112c191815260200190565b60405180910390a26001600160a01b038416600090815260086020526040902080546112ef90600190611a49565b815481106112ff576112ff611a5c565b906000526020600020906002020160086000866001600160a01b03166001600160a01b03168152602001908152602001600020848154811061134357611343611a5c565b60009182526020808320845460029093020191825560019384015493909101929092556001600160a01b038616815260089091526040902080548061138a5761138a611a89565b6000828152602081206002600019909301928302018181556001908101919091559155949350505050565b60055460ff16156113f15760405162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b60448201526064016105cb565b6005805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861102d3390565b600061051b3384845b6001600160a01b0383166114855760405162461bcd60e51b815260206004820152601e60248201527f5472616e736665722066726f6d20746865207a65726f2061646472657373000060448201526064016105cb565b6001600160a01b0382166114db5760405162461bcd60e51b815260206004820152601c60248201527f5472616e7366657220746f20746865207a65726f20616464726573730000000060448201526064016105cb565b6114e68383836117bb565b6001600160a01b0383166000908152602081905260409020548181101561154f5760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657220616d6f756e7420657863656564732062616c616e63650060448201526064016105cb565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906115869084906119e6565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115d291815260200190565b60405180910390a350505050565b6001600160a01b03831660009081526009602052604081205461160390846119e6565b6001600160a01b038516600090815260208190526040902054101561167e5760405162461bcd60e51b815260206004820152602b60248201527f4c6f636b656420746f74616c2073686f756c6420626520736d616c6c6572207460448201526a68616e2062616c616e636560a81b60648201526084016105cb565b6001600160a01b0384166000908152600960205260409020546116a29084906119e6565b6001600160a01b0385166000818152600960209081526040808320949094556008815283822084518086018652878152808301898152825460018181018555938652939094209051600290930201918255915191015590517f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b906117329086908690918252602082015260400190565b60405180910390a25060019392505050565b6001600160a01b03811660009081526006602052604081205460ff161561176a57600080fd5b6001600160a01b038216600081815260066020526040808220805460ff19166001179055517faf85b60d26151edd11443b704d424da6c43d0468f2235ebae3d1904dbc3230499190a2506001919050565b60055460ff16156117f75760405162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b60448201526064016105cb565b6001600160a01b038316600090815260066020526040902054839060ff161561181f57600080fd5b50505050565b600060208083528351808285015260005b8181101561185257858101830151858201604001528201611836565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461188a57600080fd5b919050565b600080604083850312156118a257600080fd5b6118ab83611873565b946020939093013593505050565b6000806000606084860312156118ce57600080fd5b6118d784611873565b92506118e560208501611873565b9150604084013590509250925092565b60006020828403121561190757600080fd5b5035919050565b60006020828403121561192057600080fd5b61192982611873565b9392505050565b6000806040838503121561194357600080fd5b61194c83611873565b915061195a60208401611873565b90509250929050565b60008060006060848603121561197857600080fd5b61198184611873565b95602085013595506040909401359392505050565b600181811c908216806119aa57607f821691505b6020821081036119ca57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561051f5761051f6119d0565b60208082526017908201527f43616c6c6572206973206e6f7420746865206f776e6572000000000000000000604082015260600190565b600060018201611a4257611a426119d0565b5060010190565b8181038181111561051f5761051f6119d0565b634e487b7160e01b600052603260045260246000fd5b600081611a8157611a816119d0565b506000190190565b634e487b7160e01b600052603160045260246000fdfea26469706673582212206191bdd2850d074c9edd79867c7d997216066a5319564c9b13dd25f9c0075c3c64736f6c63430008130033

Deployed Bytecode Sourcemap

12053:1980:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4199:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5112:169;;;;;;:::i;:::-;;:::i;:::-;;;1169:14:1;;1162:22;1144:41;;1132:2;1117:18;5112:169:0;1004:187:1;4519:108:0;4607:12;;4519:108;;;1342:25:1;;;1330:2;1315:18;4519:108:0;1196:177:1;12805:181:0;;;;;;:::i;:::-;;:::i;4419:92::-;;;4502:1;1853:36:1;;1841:2;1826:18;4419:92:0;1711:184:1;5770:215:0;;;;;;:::i;:::-;;:::i;12351:65::-;;;:::i;:::-;;8467:93;;;;;;:::i;:::-;;:::i;2361:86::-;2432:7;;;;2361:86;;12994:134;;;;;;:::i;:::-;;:::i;864:148::-;;;:::i;12529:101::-;;;;;;:::i;:::-;;:::i;8568:109::-;;;;;;:::i;:::-;;:::i;10778:217::-;;;;;;:::i;:::-;;:::i;12282:61::-;;;:::i;650:87::-;723:6;;650:87;;-1:-1:-1;;;;;723:6:0;;;2422:51:1;;2410:2;2395:18;650:87:0;2276:203:1;4307:104:0;;;:::i;13136:699::-;;;;;;:::i;:::-;;:::i;5993:394::-;;;;;;:::i;:::-;;:::i;12638:159::-;;;;;;:::i;:::-;;:::i;11611:249::-;;;;;;:::i;:::-;;:::i;:::-;;;;2658:25:1;;;2714:2;2699:18;;2692:34;;;;2631:18;11611:249:0;2484:248:1;11003:288:0;;;;;;:::i;:::-;;:::i;11868:178::-;;;;;;:::i;:::-;-1:-1:-1;;;;;11977:20:0;11926:14;11977:20;;;:12;:20;;;;;;;;;12017:6;:14;;;;;;:21;11977:20;;11868:178;4953:151;;;;;;:::i;:::-;-1:-1:-1;;;;;5069:18:0;;;5042:7;5069:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;4953:151;11299:304;;;;;;:::i;:::-;;:::i;10484:286::-;;;;;;:::i;:::-;;:::i;10191:285::-;;;;;;:::i;:::-;;:::i;1564:124::-;;;;;;:::i;:::-;-1:-1:-1;;;;;1658:22:0;1627:11;1658:22;;;:14;:22;;;;;;;;;1564:124;12424:97;;;;;;:::i;:::-;;:::i;1020:235::-;;;;;;:::i;:::-;;:::i;4199:100::-;4253:13;4286:5;4279:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4199:100;:::o;5112:169::-;5195:4;5212:39;173:10;5235:7;5244:6;5212:8;:39::i;:::-;-1:-1:-1;5269:4:0;5112:169;;;;;:::o;12805:181::-;-1:-1:-1;;;;;9153:12:0;;12918:4;9153:12;;;:6;:12;;;;;:19;12886:4;;12892:6;;9187:10;;9183:59;;9214:16;9225:4;9214:10;:16::i;:::-;;9183:59;-1:-1:-1;;;;;9279:18:0;;;;;;:12;:18;;;;;;:27;;9300:6;;9279:27;:::i;:::-;-1:-1:-1;;;;;9260:15:0;;:9;:15;;;;;;;;;;;:46;;9252:73;;;;-1:-1:-1;;;9252:73:0;;4178:2:1;9252:73:0;;;4160:21:1;4217:2;4197:18;;;4190:30;-1:-1:-1;;;4236:18:1;;;4229:44;4290:18;;9252:73:0;;;;;;;;;12942:36:::1;12961:4;12967:2;12971:6;12942:18;:36::i;:::-;12935:43:::0;12805:181;-1:-1:-1;;;;;;;12805:181:0:o;5770:215::-;173:10;5858:4;5907:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5907:34:0;;;;;;;;;;5858:4;;5875:80;;5898:7;;5907:47;;5944:10;;5907:47;:::i;:::-;5875:8;:80::i;12351:65::-;723:6;;-1:-1:-1;;;;;723:6:0;173:10;785:23;777:59;;;;-1:-1:-1;;;777:59:0;;;;;;;:::i;:::-;12398:10:::1;:8;:10::i;:::-;12351:65::o:0;8467:93::-;723:6;;-1:-1:-1;;;;;723:6:0;173:10;785:23;777:59;;;;-1:-1:-1;;;777:59:0;;;;;;;:::i;:::-;8525:27:::1;173:10:::0;8545:6:::1;8525:5;:27::i;:::-;8467:93:::0;:::o;12994:134::-;-1:-1:-1;;;;;4736:18:0;;13059:15;4736:18;;;;;;;;;;;13097:23;4635:127;864:148;723:6;;-1:-1:-1;;;;;723:6:0;173:10;785:23;777:59;;;;-1:-1:-1;;;777:59:0;;;;;;;:::i;:::-;955:6:::1;::::0;934:40:::1;::::0;971:1:::1;::::0;-1:-1:-1;;;;;955:6:0::1;::::0;934:40:::1;::::0;971:1;;934:40:::1;985:6;:19:::0;;-1:-1:-1;;;;;;985:19:0::1;::::0;;864:148::o;12529:101::-;723:6;;-1:-1:-1;;;;;723:6:0;173:10;785:23;777:59;;;;-1:-1:-1;;;777:59:0;;;;;;;:::i;:::-;12598:24:::1;12615:6;12598:16;:24::i;:::-;;12529:101:::0;:::o;8568:109::-;723:6;;-1:-1:-1;;;;;723:6:0;173:10;785:23;777:59;;;;-1:-1:-1;;;777:59:0;;;;;;;:::i;:::-;8647:22:::1;8653:7;8662:6;8647:5;:22::i;10778:217::-:0;723:6;;10847:12;;-1:-1:-1;;;;;723:6:0;173:10;785:23;777:59;;;;-1:-1:-1;;;777:59:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10880:12:0;::::1;;::::0;;;:6:::1;:12;::::0;;;;:19;:25;-1:-1:-1;10872:61:0::1;;;::::0;-1:-1:-1;;;10872:61:0;;4873:2:1;10872:61:0::1;::::0;::::1;4855:21:1::0;4912:2;4892:18;;;4885:30;-1:-1:-1;;;4931:18:1;;;4924:53;4994:18;;10872:61:0::1;4671:347:1::0;10872:61:0::1;10944:18;10952:4;10958:3;10944:7;:18::i;:::-;-1:-1:-1::0;10983:4:0::1;::::0;10778:217;-1:-1:-1;;;10778:217:0:o;12282:61::-;723:6;;-1:-1:-1;;;;;723:6:0;173:10;785:23;777:59;;;;-1:-1:-1;;;777:59:0;;;;;;;:::i;:::-;12327:8:::1;:6;:8::i;4307:104::-:0;4363:13;4396:7;4389:14;;;;;:::i;13136:699::-;-1:-1:-1;;;;;4736:18:0;;13200:15;4736:18;;;;;;;;;;;;11977:12;:20;;;;;;12017:6;:14;;;;;;:21;4736:18;;13200:15;;13426:13;13410:12;:29;;13402:38;;;;;;13457:16;;13453:305;;13495:6;13490:257;13511:12;13507:1;:16;13490:257;;;13550:19;13571:14;13589:19;13598:6;13606:1;13589:8;:19::i;:::-;13549:59;;;;13646:15;13631:11;:30;13627:105;;13686:26;13706:6;13686:26;;:::i;:::-;;;13627:105;13530:217;;13525:3;;;;;:::i;:::-;;;;13490:257;;;;13453:305;13811:16;13780:28;13795:13;13780:12;:28;:::i;:::-;:47;;;;:::i;:::-;13770:57;13136:699;-1:-1:-1;;;;;;13136:699:0:o;5993:394::-;173:10;6086:4;6130:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6130:34:0;;;;;;;;;;6183:35;;;;6175:78;;;;-1:-1:-1;;;6175:78:0;;5498:2:1;6175:78:0;;;5480:21:1;5537:2;5517:18;;;5510:30;5576:32;5556:18;;;5549:60;5626:18;;6175:78:0;5296:354:1;6175:78:0;6281:67;173:10;6304:7;6332:15;6313:16;:34;6281:8;:67::i;12638:159::-;12701:10;12739:4;9153:12;;;:6;:12;;;;;:19;12739:4;;12701:10;12713:6;;9187:10;;9183:59;;9214:16;9225:4;9214:10;:16::i;:::-;;9183:59;-1:-1:-1;;;;;9279:18:0;;;;;;:12;:18;;;;;;:27;;9300:6;;9279:27;:::i;:::-;-1:-1:-1;;;;;9260:15:0;;:9;:15;;;;;;;;;;;:46;;9252:73;;;;-1:-1:-1;;;9252:73:0;;4178:2:1;9252:73:0;;;4160:21:1;4217:2;4197:18;;;4190:30;-1:-1:-1;;;4236:18:1;;;4229:44;4290:18;;9252:73:0;3976:338:1;9252:73:0;12763:26:::1;12778:2;12782:6;12763:14;:26::i;11611:249::-:0;-1:-1:-1;;;;;11757:14:0;;11681:19;11757:14;;;:6;:14;;;;;:21;;11681:19;;;;11772:5;;11757:21;;;;;;:::i;:::-;;;;;;;;;;11734:44;;;;;;;;;11757:21;;;;;11734:44;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11611:249:0;-1:-1:-1;;;;11611:249:0:o;11003:288::-;723:6;;11066:12;;-1:-1:-1;;;;;723:6:0;173:10;785:23;777:59;;;;-1:-1:-1;;;777:59:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11098:12:0;::::1;11120:1;11098:12:::0;;;:6:::1;:12;::::0;;;;:19;11090:59:::1;;;::::0;-1:-1:-1;;;11090:59:0;;4873:2:1;11090:59:0::1;::::0;::::1;4855:21:1::0;4912:2;4892:18;;;4885:30;-1:-1:-1;;;4931:18:1;;;4924:53;4994:18;;11090:59:0::1;4671:347:1::0;11090:59:0::1;-1:-1:-1::0;;;;;11179:12:0;::::1;11167:9;11179:12:::0;;;:6:::1;:12;::::0;;;;:19;11162:97:::1;11200:5:::0;;11162:97:::1;;11227:20;11235:4:::0;11241:5:::1;11245:1;11241::::0;:5:::1;:::i;:::-;11227:7;:20::i;:::-;-1:-1:-1::0;11207:3:0;::::1;::::0;::::1;:::i;:::-;;;;11162:97;;11299:304:::0;723:6;;11409:12;;-1:-1:-1;;;;;723:6:0;173:10;785:23;777:59;;;;-1:-1:-1;;;777:59:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11447:23:0;::::1;11439:32;;;::::0;::::1;;11482:40;11492:10;11504:9;11515:6;11482:9;:40::i;:::-;11533:37;11539:9;11550:6;11558:11;11533:5;:37::i;:::-;-1:-1:-1::0;11591:4:0::1;::::0;11299:304;-1:-1:-1;;;;11299:304:0:o;10484:286::-;10534:12;;10559:179;-1:-1:-1;;;;;10583:12:0;;;;;;:6;:12;;;;;:19;10579:23;;10559:179;;;-1:-1:-1;;;;;10628:12:0;;;;;;:6;:12;;;;;:15;;10659;;10628:12;10641:1;;10628:15;;;;;;:::i;:::-;;;;;;;;;;;:28;;;:46;10624:103;;;10695:16;10703:4;10709:1;10695:7;:16::i;:::-;;10624:103;10604:3;;;;:::i;:::-;;;;10559:179;;10191:285;723:6;;10287:12;;-1:-1:-1;;;;;723:6:0;173:10;785:23;777:59;;;;-1:-1:-1;;;777:59:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10320:20:0;::::1;:9;:20:::0;;;::::1;::::0;;;;;;;:30;-1:-1:-1;10320:30:0::1;10312:81;;;::::0;-1:-1:-1;;;10312:81:0;;6130:2:1;10312:81:0::1;::::0;::::1;6112:21:1::0;6169:2;6149:18;;;6142:30;6208:34;6188:18;;;6181:62;-1:-1:-1;;;6259:18:1;;;6252:36;6305:19;;10312:81:0::1;5928:402:1::0;12424:97:0;723:6;;-1:-1:-1;;;;;723:6:0;173:10;785:23;777:59;;;;-1:-1:-1;;;777:59:0;;;;;;;:::i;:::-;12491:22:::1;12506:6;12491:14;:22::i;1020:235::-:0;723:6;;-1:-1:-1;;;;;723:6:0;173:10;785:23;777:59;;;;-1:-1:-1;;;777:59:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1109:22:0;::::1;1101:64;;;::::0;-1:-1:-1;;;1101:64:0;;6537:2:1;1101:64:0::1;::::0;::::1;6519:21:1::0;6576:2;6556:18;;;6549:30;6615:31;6595:18;;;6588:59;6664:18;;1101:64:0::1;6335:353:1::0;1101:64:0::1;1202:6;::::0;1181:38:::1;::::0;-1:-1:-1;;;;;1181:38:0;;::::1;::::0;1202:6:::1;::::0;1181:38:::1;::::0;1202:6:::1;::::0;1181:38:::1;1230:6;:17:::0;;-1:-1:-1;;;;;;1230:17:0::1;-1:-1:-1::0;;;;;1230:17:0;;;::::1;::::0;;;::::1;::::0;;1020:235::o;7895:366::-;-1:-1:-1;;;;;8031:19:0;;8023:61;;;;-1:-1:-1;;;8023:61:0;;6895:2:1;8023:61:0;;;6877:21:1;6934:2;6914:18;;;6907:30;6973:31;6953:18;;;6946:59;7022:18;;8023:61:0;6693:353:1;8023:61:0;-1:-1:-1;;;;;8103:21:0;;8095:61;;;;-1:-1:-1;;;8095:61:0;;7253:2:1;8095:61:0;;;7235:21:1;7292:2;7272:18;;;7265:30;7331:29;7311:18;;;7304:57;7378:18;;8095:61:0;7051:351:1;8095:61:0;-1:-1:-1;;;;;8169:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8221:32;;1342:25:1;;;8221:32:0;;1315:18:1;8221:32:0;;;;;;;;7895:366;;;:::o;5289:473::-;5429:4;5446:36;5456:6;5464:9;5475:6;5446:9;:36::i;:::-;-1:-1:-1;;;;;5522:19:0;;5495:24;5522:19;;;:11;:19;;;;;;;;173:10;5522:33;;;;;;;;5574:26;;;;5566:72;;;;-1:-1:-1;;;5566:72:0;;7609:2:1;5566:72:0;;;7591:21:1;7648:2;7628:18;;;7621:30;7687:34;7667:18;;;7660:62;-1:-1:-1;;;7738:18:1;;;7731:31;7779:19;;5566:72:0;7407:397:1;5566:72:0;5666:57;5675:6;173:10;5716:6;5697:16;:25;5666:8;:57::i;2765:120::-;2432:7;;;;2580:31;;;;-1:-1:-1;;;2580:31:0;;8011:2:1;2580:31:0;;;7993:21:1;8050:2;8030:18;;;8023:30;-1:-1:-1;;;8069:18:1;;;8062:40;8119:18;;2580:31:0;7809:334:1;2580:31:0;2824:7:::1;:15:::0;;-1:-1:-1;;2824:15:0::1;::::0;;2855:22:::1;173:10:::0;2864:12:::1;2855:22;::::0;-1:-1:-1;;;;;2440:32:1;;;2422:51;;2410:2;2395:18;2855:22:0::1;;;;;;;2765:120::o:0;7383:504::-;-1:-1:-1;;;;;7467:21:0;;7459:60;;;;-1:-1:-1;;;7459:60:0;;8350:2:1;7459:60:0;;;8332:21:1;8389:2;8369:18;;;8362:30;8428:28;8408:18;;;8401:56;8474:18;;7459:60:0;8148:350:1;7459:60:0;7532:49;7553:7;7570:1;7574:6;7532:20;:49::i;:::-;-1:-1:-1;;;;;7619:18:0;;7594:22;7619:18;;;;;;;;;;;7656:24;;;;7648:64;;;;-1:-1:-1;;;7648:64:0;;8705:2:1;7648:64:0;;;8687:21:1;8744:2;8724:18;;;8717:30;8783:29;8763:18;;;8756:57;8830:18;;7648:64:0;8503:351:1;7648:64:0;-1:-1:-1;;;;;7740:18:0;;:9;:18;;;;;;;;;;7761:23;;;7740:44;;7802:12;:22;;7778:6;;7740:9;7802:22;;7778:6;;7802:22;:::i;:::-;;;;-1:-1:-1;;7842:37:0;;1342:25:1;;;7868:1:0;;-1:-1:-1;;;;;7842:37:0;;;;;1330:2:1;1315:18;7842:37:0;1196:177:1;1924:224:0;-1:-1:-1;;;;;1658:22:0;;1992:12;1658:22;;;:14;:22;;;;;;;;2017:25;;;;;;-1:-1:-1;;;;;2053:22:0;;2078:5;2053:22;;;:14;:22;;;;;;:30;;-1:-1:-1;;2053:30:0;;;2099:16;;;2078:5;2099:16;-1:-1:-1;2136:4:0;;1924:224;-1:-1:-1;1924:224:0:o;9812:371::-;-1:-1:-1;;;;;9925:12:0;;9876;9925;;;:6;:12;;;;;:19;;9876:12;;9925;9938:5;;9925:19;;;;;;:::i;:::-;;;;;;;;;;;9901:43;;9997:4;:12;;;9976;:18;9989:4;-1:-1:-1;;;;;9976:18:0;-1:-1:-1;;;;;9976:18:0;;;;;;;;;;;;;:33;;;;:::i;:::-;-1:-1:-1;;;;;9955:18:0;;;;;;:12;:18;;;;;;;:54;;;;10038:12;;;;10025:26;;9955:18;;10025:26;;;;1342:25:1;;1330:2;1315:18;;1196:177;10025:26:0;;;;;;;;-1:-1:-1;;;;;10084:12:0;;;;;;:6;:12;;;;;10097:19;;:23;;10119:1;;10097:23;:::i;:::-;10084:37;;;;;;;;:::i;:::-;;;;;;;;;;;10062:6;:12;10069:4;-1:-1:-1;;;;;10062:12:0;-1:-1:-1;;;;;10062:12:0;;;;;;;;;;;;10075:5;10062:19;;;;;;;;:::i;:::-;;;;;;;;;:59;;:19;;;;;:59;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10132:12:0;;;;:6;:12;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;10132:18:0;;;;;;;;;;;;;;;;;;;;;9812:371;-1:-1:-1;;;;9812:371:0:o;2639:118::-;2432:7;;;;2499:9;2491:28;;;;-1:-1:-1;;;2491:28:0;;9193:2:1;2491:28:0;;;9175:21:1;9232:1;9212:18;;;9205:29;-1:-1:-1;;;9250:18:1;;;9243:36;9296:18;;2491:28:0;8991:329:1;2491:28:0;2699:7:::1;:14:::0;;-1:-1:-1;;2699:14:0::1;2709:4;2699:14;::::0;;2729:20:::1;2736:12;173:10:::0;;93:98;4770:175;4856:4;4873:42;173:10;4897:9;4908:6;6395:641;-1:-1:-1;;;;;6535:20:0;;6527:63;;;;-1:-1:-1;;;6527:63:0;;9527:2:1;6527:63:0;;;9509:21:1;9566:2;9546:18;;;9539:30;9605:32;9585:18;;;9578:60;9655:18;;6527:63:0;9325:354:1;6527:63:0;-1:-1:-1;;;;;6609:23:0;;6601:64;;;;-1:-1:-1;;;6601:64:0;;9886:2:1;6601:64:0;;;9868:21:1;9925:2;9905:18;;;9898:30;9964;9944:18;;;9937:58;10012:18;;6601:64:0;9684:352:1;6601:64:0;6678:47;6699:6;6707:9;6718:6;6678:20;:47::i;:::-;-1:-1:-1;;;;;6762:17:0;;6738:21;6762:17;;;;;;;;;;;6798:23;;;;6790:67;;;;-1:-1:-1;;;6790:67:0;;10243:2:1;6790:67:0;;;10225:21:1;10282:2;10262:18;;;10255:30;10321:33;10301:18;;;10294:61;10372:18;;6790:67:0;10041:355:1;6790:67:0;-1:-1:-1;;;;;6885:17:0;;;:9;:17;;;;;;;;;;;6905:22;;;6885:42;;6945:20;;;;;;;;:30;;6921:6;;6885:9;6945:30;;6921:6;;6945:30;:::i;:::-;;;;;;;;7010:9;-1:-1:-1;;;;;6993:35:0;7002:6;-1:-1:-1;;;;;6993:35:0;;7021:6;6993:35;;;;1342:25:1;;1330:2;1315:18;;1196:177;6993:35:0;;;;;;;;6516:520;6395:641;;;:::o;9353:451::-;-1:-1:-1;;;;;9517:18:0;;9437:12;9517:18;;;:12;:18;;;;;;9508:27;;:6;:27;:::i;:::-;-1:-1:-1;;;;;9489:15:0;;:9;:15;;;;;;;;;;;:46;;9467:139;;;;-1:-1:-1;;;9467:139:0;;10603:2:1;9467:139:0;;;10585:21:1;10642:2;10622:18;;;10615:30;10681:34;10661:18;;;10654:62;-1:-1:-1;;;10732:18:1;;;10725:41;10783:19;;9467:139:0;10401:407:1;9467:139:0;-1:-1:-1;;;;;9638:18:0;;;;;;:12;:18;;;;;;:27;;9659:6;;9638:27;:::i;:::-;-1:-1:-1;;;;;9617:18:0;;;;;;:12;:18;;;;;;;;:48;;;;9676:6;:12;;;;;9694:29;;;;;;;;;;;;;;;;9676:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9740:31;;;;;;9716:6;;9703:11;;2658:25:1;;;2714:2;2699:18;;2692:34;2646:2;2631:18;;2484:248;9740:31:0;;;;;;;;-1:-1:-1;9792:4:0;;9353:451;-1:-1:-1;;;9353:451:0:o;1696:220::-;-1:-1:-1;;;;;1658:22:0;;1762:12;1658:22;;;:14;:22;;;;;;;;1795:17;1787:26;;;;;;-1:-1:-1;;;;;1824:22:0;;;;;;:14;:22;;;;;;:29;;-1:-1:-1;;1824:29:0;1849:4;1824:29;;;1869:14;;;1824:22;1869:14;-1:-1:-1;1904:4:0;;1696:220;-1:-1:-1;1696:220:0:o;13843:187::-;2432:7;;;;2499:9;2491:28;;;;-1:-1:-1;;;2491:28:0;;9193:2:1;2491:28:0;;;9175:21:1;9232:1;9212:18;;;9205:29;-1:-1:-1;;;9250:18:1;;;9243:36;9296:18;;2491:28:0;8991:329:1;2491:28:0;-1:-1:-1;;;;;1513:22:0;::::1;;::::0;;;:14:::1;:22;::::0;;;;;13952:4;;1513:22:::1;;1512:23;1504:32;;;::::0;::::1;;2530:1;13843:187:::0;;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:173::-;635:20;;-1:-1:-1;;;;;684:31:1;;674:42;;664:70;;730:1;727;720:12;664:70;567:173;;;:::o;745:254::-;813:6;821;874:2;862:9;853:7;849:23;845:32;842:52;;;890:1;887;880:12;842:52;913:29;932:9;913:29;:::i;:::-;903:39;989:2;974:18;;;;961:32;;-1:-1:-1;;;745:254:1:o;1378:328::-;1455:6;1463;1471;1524:2;1512:9;1503:7;1499:23;1495:32;1492:52;;;1540:1;1537;1530:12;1492:52;1563:29;1582:9;1563:29;:::i;:::-;1553:39;;1611:38;1645:2;1634:9;1630:18;1611:38;:::i;:::-;1601:48;;1696:2;1685:9;1681:18;1668:32;1658:42;;1378:328;;;;;:::o;1900:180::-;1959:6;2012:2;2000:9;1991:7;1987:23;1983:32;1980:52;;;2028:1;2025;2018:12;1980:52;-1:-1:-1;2051:23:1;;1900:180;-1:-1:-1;1900:180:1:o;2085:186::-;2144:6;2197:2;2185:9;2176:7;2172:23;2168:32;2165:52;;;2213:1;2210;2203:12;2165:52;2236:29;2255:9;2236:29;:::i;:::-;2226:39;2085:186;-1:-1:-1;;;2085:186:1:o;2737:260::-;2805:6;2813;2866:2;2854:9;2845:7;2841:23;2837:32;2834:52;;;2882:1;2879;2872:12;2834:52;2905:29;2924:9;2905:29;:::i;:::-;2895:39;;2953:38;2987:2;2976:9;2972:18;2953:38;:::i;:::-;2943:48;;2737:260;;;;;:::o;3002:322::-;3079:6;3087;3095;3148:2;3136:9;3127:7;3123:23;3119:32;3116:52;;;3164:1;3161;3154:12;3116:52;3187:29;3206:9;3187:29;:::i;:::-;3177:39;3263:2;3248:18;;3235:32;;-1:-1:-1;3314:2:1;3299:18;;;3286:32;;3002:322;-1:-1:-1;;;3002:322:1:o;3329:380::-;3408:1;3404:12;;;;3451;;;3472:61;;3526:4;3518:6;3514:17;3504:27;;3472:61;3579:2;3571:6;3568:14;3548:18;3545:38;3542:161;;3625:10;3620:3;3616:20;3613:1;3606:31;3660:4;3657:1;3650:15;3688:4;3685:1;3678:15;3542:161;;3329:380;;;:::o;3714:127::-;3775:10;3770:3;3766:20;3763:1;3756:31;3806:4;3803:1;3796:15;3830:4;3827:1;3820:15;3846:125;3911:9;;;3932:10;;;3929:36;;;3945:18;;:::i;4319:347::-;4521:2;4503:21;;;4560:2;4540:18;;;4533:30;4599:25;4594:2;4579:18;;4572:53;4657:2;4642:18;;4319:347::o;5023:135::-;5062:3;5083:17;;;5080:43;;5103:18;;:::i;:::-;-1:-1:-1;5150:1:1;5139:13;;5023:135::o;5163:128::-;5230:9;;;5251:11;;;5248:37;;;5265:18;;:::i;5655:127::-;5716:10;5711:3;5707:20;5704:1;5697:31;5747:4;5744:1;5737:15;5771:4;5768:1;5761:15;5787:136;5826:3;5854:5;5844:39;;5863:18;;:::i;:::-;-1:-1:-1;;;5899:18:1;;5787:136::o;8859:127::-;8920:10;8915:3;8911:20;8908:1;8901:31;8951:4;8948:1;8941:15;8975:4;8972:1;8965:15

Swarm Source

ipfs://6191bdd2850d074c9edd79867c7d997216066a5319564c9b13dd25f9c0075c3c
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.