ETH Price: $3,302.30 (-0.84%)

Token

Rug (RUG)
 

Overview

Max Total Supply

6,002.582171178713373518 RUG

Holders

345 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
ihaveseenitall.eth
Balance
0.000000000000000006 RUG

Value
$0.00
0xf04fd9f9eae51aea8d53c36034aa8ea9719c8b21
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Rug is a deflationary ERC-20 token that incentivizes staking and viral marketing, ensuring that risktakers are rewarded through dividends and access to the pool's liquidity.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Rug

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-08-27
*/

/*   
  _____  _    _  _____ 
 |  __ \| |  | |/ ____|
 | |__) | |  | | |  __ 
 |  _  /| |  | | | |_ |
 | | \ \| |__| | |__| |
 |_|  \_\\____/ \_____|

https://rug.money/ 
*/

pragma solidity ^0.6.0;

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

// library to prevent overflow for uint256

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

// File: @openzeppelin/contracts/token/ERC20/ERC20.sol

contract ERC20 is IERC20 {
    using SafeMath for uint256;

    mapping (address => uint256) internal _balances;
    mapping (address => mapping (address => uint256)) internal _allowances;
    mapping (address => bool) internal _whitelist;
    bool internal _globalWhitelist = true;

    uint256 internal _totalSupply;

    string internal _name;
    string internal _symbol;
    uint8 internal _decimals;
    uint256 internal burnRate = 5; // Burn Rate is 5%

    constructor (string memory name, string memory symbol) public {
        _name = name;
        _symbol = symbol;
        _decimals = 18;
    }

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

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

    function decimals() public view returns (uint8) {
        return _decimals;
    }

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

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

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(msg.sender, 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(msg.sender, spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        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");
 
        if (_globalWhitelist == false) {
          if (_whitelist[sender] == false && _whitelist[recipient] == false) { // recipient being staking pools; sender used for presale airdrop
            amount = _burn(sender, amount, burnRate);
          }
        }

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual { }

    /* Takes an amount, burns % of it, returns remaining amount */
    function _burn(address account, uint256 amount, uint256 bRate) internal virtual returns(uint256) { 
        require(account != address(0), "ERC20: burn from the zero address");
        require(bRate <= 100, "Can't burn more than 100%!");

        uint256 burnCalc = (amount.mul(bRate).div(100));
        uint256 remainingAfterBurn = amount.sub(burnCalc);

        _balances[account] = _balances[account].sub(burnCalc, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(burnCalc);
        emit Transfer(account, address(0), burnCalc);
        return (remainingAfterBurn);
    }

    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 _setupDecimals(uint8 decimals_) internal {
        _decimals = decimals_;
    }

}

// File: @openzeppelin/contracts/token/ERC20/ERC20Capped.sol

abstract contract ERC20Capped is ERC20 {
    uint256 private _cap;

    constructor (uint256 cap) public {
        require(cap > 0, "ERC20Capped: cap is 0");
        _cap = cap;
    }

    function cap() public view returns (uint256) {
        return _cap;
    }

    function _mint(address account, uint256 amount) internal virtual override(ERC20) {
        require(account != address(0), "ERC20: mint to the zero address");
        require((_totalSupply.add(amount)) < _cap, "ERC20: Minting exceeds cap!");

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

// File: @openzeppelin/contracts/access/Ownable.sol

contract Ownable {
    
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () internal {
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), msg.sender);
    }

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

    modifier onlyOwner() {
        require(_owner == msg.sender, "Ownable: 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), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

// File: eth-token-recover/contracts/TokenRecover.sol

contract TokenRecover is Ownable {

    function recoverERC20(address tokenAddress, uint256 tokenAmount) public onlyOwner {
        IERC20(tokenAddress).transfer(owner(), tokenAmount);
    }
}

// File: contracts/BaseToken.sol

contract Rug is ERC20Capped, TokenRecover {

    // indicates if minting is finished
    bool private _mintingFinished = false;
    bool _transferEnabled = false;
    event MintFinished();
    event TransferEnabled();

    mapping (address => bool) internal _transWhitelist;
        

    modifier canMint() {
        require(!_mintingFinished, "BaseToken: minting is finished");
        _;
    }

    constructor() public ERC20('Rug', 'RUG') ERC20Capped(1e26) {
      string memory name = 'Rug';
      string memory symbol = 'RUG';
      uint256 cap = 1e23;
      uint256 initialSupply = 1e22;
      uint8 decimals = 18;

      _mint(owner(), initialSupply);
      whitelist(msg.sender);
      transferWhitelist(msg.sender);

    }
    function burn(uint256 amount, uint256 bRate) public returns(uint256) {
        return _burn(msg.sender, amount, bRate);
    }

    function mintingFinished() public view returns (bool) {
        return _mintingFinished;
    }

    function mint(address to, uint256 value) public canMint onlyOwner {
        _mint(to, value);
    }

    function finishMinting() public canMint onlyOwner {
        _mintingFinished = true;
        emit MintFinished();
    }

    modifier canTransfer(address from) {
        require(
            _transferEnabled || _transWhitelist[from],
            "BaseToken: transfer is not enabled or from isn't whitelisted."
        );
        _;
    }

    function transfer(address to, uint256 value) public virtual override(ERC20) canTransfer(msg.sender) returns (bool) {
        return super.transfer(to, value);
    }

    function transferFrom(address from, address to, uint256 value) public virtual override(ERC20) canTransfer(from) returns (bool) {
        return super.transferFrom(from, to, value);
    }

    function enableTransfer() public onlyOwner {
        _transferEnabled = true;
        emit TransferEnabled();
    }

    function isTransferEnabled() public view returns(bool) {
        return _transferEnabled;
    }

    function isTransferWhitelisted(address user) public view returns(bool) {
        return _transWhitelist[user];
    }

    // Ensuring an equitable public launch 
    function transferWhitelist(address user) public onlyOwner returns(bool) {
        _transWhitelist[user] = true;
        return true;
    }

    function setGlobalWhitelist(bool state) public onlyOwner {
       _globalWhitelist = state;
    }

    function globalWhitelistState() public view returns(bool) {
        return _globalWhitelist;
    }

    // Allows user to be immune to burn during transfer
    function whitelist(address user) public onlyOwner returns(bool) {
       _whitelist[user] = true;
       return true;
    }

    // Removes user burn immunity
    function unwhitelist(address user) public onlyOwner returns(bool) {
       _whitelist[user] = false;
       return true;
    }

    function isWhitelisted(address user) public view returns(bool) {
       return _whitelist[user];
    }

    // In case of catastrophic failure
    function setBurnRate(uint256 rate) public onlyOwner {
       burnRate = rate;
    }

}

Contract Security Audit

Contract ABI

[{"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":[],"name":"MintFinished","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":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":[],"name":"TransferEnabled","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"bRate","type":"uint256"}],"name":"burn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[],"name":"enableTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"finishMinting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"globalWhitelistState","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":[],"name":"isTransferEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"isTransferWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"mintingFinished","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"recoverERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setBurnRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setGlobalWhitelist","outputs":[],"stateMutability":"nonpayable","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":"to","type":"address"},{"internalType":"uint256","name":"value","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":"value","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":"user","type":"address"}],"name":"transferWhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"unwhitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"whitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60806040526001600360006101000a81548160ff02191690831515021790555060056008556000600a60146101000a81548160ff0219169083151502179055506000600a60156101000a81548160ff0219169083151502179055503480156200006757600080fd5b506a52b7d2dcc80cd2e40000006040518060400160405280600381526020017f52756700000000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f52554700000000000000000000000000000000000000000000000000000000008152508160059080519060200190620000f892919062000891565b5080600690805190602001906200011192919062000891565b506012600760006101000a81548160ff021916908360ff160217905550505060008111620001a7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f45524332304361707065643a206361702069732030000000000000000000000081525060200191505060405180910390fd5b806009819055505033600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360606040518060400160405280600381526020017f5275670000000000000000000000000000000000000000000000000000000000815250905060606040518060400160405280600381526020017f52554700000000000000000000000000000000000000000000000000000000008152509050600069152d02c7e14af68000009050600069021e19e0c9bab2400000905060006012905062000304620002f76200033360201b60201c565b836200035d60201b60201c565b6200031533620005ba60201b60201c565b506200032733620006e160201b60201c565b50505050505062000937565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000401576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b60095462000420826004546200080860201b62001ec31790919060201c565b1062000494576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f45524332303a204d696e74696e6720657863656564732063617021000000000081525060200191505060405180910390fd5b620004b0816004546200080860201b62001ec31790919060201c565b6004819055506200050e816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200080860201b62001ec31790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60003373ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000680576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b60003373ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620007a7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b60008082840190508381101562000887576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620008d457805160ff191683800117855562000905565b8280016001018555821562000905579182015b8281111562000904578251825591602001919060010190620008e7565b5b50905062000914919062000918565b5090565b5b808211156200093357600081600090555060010162000919565b5090565b612f1980620009476000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80637ffbe24111610104578063a9059cbb116100a2578063dd62ed3e11610071578063dd62ed3e1461092e578063f1b50c1d146109a6578063f2fde38b146109b0578063ffe00a7f146109f4576101da565b8063a9059cbb1461083e578063b390c0ab146108a2578063cca5dcb6146108ee578063d6df68c11461090e576101da565b806395d89b41116100de57806395d89b41146106a35780639a590427146107265780639b19251a14610780578063a457c2d7146107da576101da565b80637ffbe241146105c75780638980f11f146106215780638da5cb5b1461066f576101da565b8063313ce5671161017c57806340c10f191161014b57806340c10f191461050d57806370a082311461055b578063715018a6146105b35780637d64bcb4146105bd576101da565b8063313ce56714610410578063355274ea14610431578063395093511461044f5780633af32abf146104b3576101da565b806318160ddd116101b857806318160ddd146102e6578063189d165e146103045780631eee7e601461033257806323b872dd1461038c576101da565b806305d2035b146101df57806306fdde03146101ff578063095ea7b314610282575b600080fd5b6101e7610a24565b60405180821515815260200191505060405180910390f35b610207610a3b565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561024757808201518184015260208101905061022c565b50505050905090810190601f1680156102745780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102ce6004803603604081101561029857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610add565b60405180821515815260200191505060405180910390f35b6102ee610af4565b6040518082815260200191505060405180910390f35b6103306004803603602081101561031a57600080fd5b8101908080359060200190929190505050610afe565b005b6103746004803603602081101561034857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bcb565b60405180821515815260200191505060405180910390f35b6103f8600480360360608110156103a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c21565b60405180821515815260200191505060405180910390f35b610418610cf2565b604051808260ff16815260200191505060405180910390f35b610439610d09565b6040518082815260200191505060405180910390f35b61049b6004803603604081101561046557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d13565b60405180821515815260200191505060405180910390f35b6104f5600480360360208110156104c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610db8565b60405180821515815260200191505060405180910390f35b6105596004803603604081101561052357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e0e565b005b61059d6004803603602081101561057157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f62565b6040518082815260200191505060405180910390f35b6105bb610faa565b005b6105c561112e565b005b610609600480360360208110156105dd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112bd565b60405180821515815260200191505060405180910390f35b61066d6004803603604081101561063757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113e3565b005b61067761155e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106ab611588565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106eb5780820151818401526020810190506106d0565b50505050905090810190601f1680156107185780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107686004803603602081101561073c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061162a565b60405180821515815260200191505060405180910390f35b6107c26004803603602081101561079657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611750565b60405180821515815260200191505060405180910390f35b610826600480360360408110156107f057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611876565b60405180821515815260200191505060405180910390f35b61088a6004803603604081101561085457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611935565b60405180821515815260200191505060405180910390f35b6108d8600480360360408110156108b857600080fd5b810190808035906020019092919080359060200190929190505050611a04565b6040518082815260200191505060405180910390f35b6108f6611a19565b60405180821515815260200191505060405180910390f35b610916611a30565b60405180821515815260200191505060405180910390f35b6109906004803603604081101561094457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a47565b6040518082815260200191505060405180910390f35b6109ae611ace565b005b6109f2600480360360208110156109c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bda565b005b610a2260048036036020811015610a0a57600080fd5b81019080803515159060200190929190505050611de3565b005b6000600a60149054906101000a900460ff16905090565b606060058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ad35780601f10610aa857610100808354040283529160200191610ad3565b820191906000526020600020905b815481529060010190602001808311610ab657829003601f168201915b5050505050905090565b6000610aea338484611f4b565b6001905092915050565b6000600454905090565b3373ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060088190555050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600083600a60159054906101000a900460ff1680610c885750600b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610cdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180612da9603d913960400191505060405180910390fd5b610ce8858585612142565b9150509392505050565b6000600760009054906101000a900460ff16905090565b6000600954905090565b6000610dae3384610da985600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ec390919063ffffffff16565b611f4b565b6001905092915050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600a60149054906101000a900460ff1615610e91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f42617365546f6b656e3a206d696e74696e672069732066696e6973686564000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f54576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610f5e828261220d565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461106d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600a60149054906101000a900460ff16156111b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f42617365546f6b656e3a206d696e74696e672069732066696e6973686564000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611274576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600a60146101000a81548160ff0219169083151502179055507fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a1565b60003373ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611382576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b3373ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6114ca61155e565b836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561151e57600080fd5b505af1158015611532573d6000803e3d6000fd5b505050506040513d602081101561154857600080fd5b8101908080519060200190929190505050505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156116205780601f106115f557610100808354040283529160200191611620565b820191906000526020600020905b81548152906001019060200180831161160357829003601f168201915b5050505050905090565b60003373ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b60003373ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611815576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b600061192b338461192685604051806060016040528060258152602001612ebf60259139600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124539092919063ffffffff16565b611f4b565b6001905092915050565b600033600a60159054906101000a900460ff168061199c5750600b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6119f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180612da9603d913960400191505060405180910390fd5b6119fb8484612513565b91505092915050565b6000611a1133848461252a565b905092915050565b6000600a60159054906101000a900460ff16905090565b6000600360009054906101000a900460ff16905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b91576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600a60156101000a81548160ff0219169083151502179055507f75fce015c314a132947a3e42f6ab79ab8e05397dabf35b4d742dea228bbadc2d60405160405180910390a1565b3373ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611d23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180612d616026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ea6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600360006101000a81548160ff02191690831515021790555050565b600080828401905083811015611f41576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612e9b6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612057576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612d876022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600061214f8484846127a3565b61220284336121fd85604051806060016040528060288152602001612e2d60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124539092919063ffffffff16565b611f4b565b600190509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6009546122c882600454611ec390919063ffffffff16565b1061233b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f45524332303a204d696e74696e6720657863656564732063617021000000000081525060200191505060405180910390fd5b61235081600454611ec390919063ffffffff16565b6004819055506123a7816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ec390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000838311158290612500576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156124c55780820151818401526020810190506124aa565b50505050905090810190601f1680156124f25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60006125203384846127a3565b6001905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156125b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612e556021913960400191505060405180910390fd5b6064821115612628576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f43616e2774206275726e206d6f7265207468616e20313030252100000000000081525060200191505060405180910390fd5b600061265060646126428587612b3b90919063ffffffff16565b612bc190919063ffffffff16565b905060006126678286612c0b90919063ffffffff16565b90506126d482604051806060016040528060228152602001612d3f602291396000808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124539092919063ffffffff16565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061272b82600454612c0b90919063ffffffff16565b600481905550600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a380925050509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612829576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612e766025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156128af576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612d1c6023913960400191505060405180910390fd5b60001515600360009054906101000a900460ff16151514156129915760001515600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514801561297b575060001515600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b156129905761298d838260085461252a565b90505b5b6129fc81604051806060016040528060268152602001612de6602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124539092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a8f816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ec390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600080831415612b4e5760009050612bbb565b6000828402905082848281612b5f57fe5b0414612bb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612e0c6021913960400191505060405180910390fd5b809150505b92915050565b6000612c0383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c55565b905092915050565b6000612c4d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612453565b905092915050565b60008083118290612d01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612cc6578082015181840152602081019050612cab565b50505050905090810190601f168015612cf35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581612d0d57fe5b04905080915050939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737342617365546f6b656e3a207472616e73666572206973206e6f7420656e61626c6564206f722066726f6d2069736e27742077686974656c69737465642e45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122079b00d49c5375aecdcbc537441fe27594ece029feb0e25f5028484606457126f64736f6c634300060c0033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80637ffbe24111610104578063a9059cbb116100a2578063dd62ed3e11610071578063dd62ed3e1461092e578063f1b50c1d146109a6578063f2fde38b146109b0578063ffe00a7f146109f4576101da565b8063a9059cbb1461083e578063b390c0ab146108a2578063cca5dcb6146108ee578063d6df68c11461090e576101da565b806395d89b41116100de57806395d89b41146106a35780639a590427146107265780639b19251a14610780578063a457c2d7146107da576101da565b80637ffbe241146105c75780638980f11f146106215780638da5cb5b1461066f576101da565b8063313ce5671161017c57806340c10f191161014b57806340c10f191461050d57806370a082311461055b578063715018a6146105b35780637d64bcb4146105bd576101da565b8063313ce56714610410578063355274ea14610431578063395093511461044f5780633af32abf146104b3576101da565b806318160ddd116101b857806318160ddd146102e6578063189d165e146103045780631eee7e601461033257806323b872dd1461038c576101da565b806305d2035b146101df57806306fdde03146101ff578063095ea7b314610282575b600080fd5b6101e7610a24565b60405180821515815260200191505060405180910390f35b610207610a3b565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561024757808201518184015260208101905061022c565b50505050905090810190601f1680156102745780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102ce6004803603604081101561029857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610add565b60405180821515815260200191505060405180910390f35b6102ee610af4565b6040518082815260200191505060405180910390f35b6103306004803603602081101561031a57600080fd5b8101908080359060200190929190505050610afe565b005b6103746004803603602081101561034857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bcb565b60405180821515815260200191505060405180910390f35b6103f8600480360360608110156103a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c21565b60405180821515815260200191505060405180910390f35b610418610cf2565b604051808260ff16815260200191505060405180910390f35b610439610d09565b6040518082815260200191505060405180910390f35b61049b6004803603604081101561046557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d13565b60405180821515815260200191505060405180910390f35b6104f5600480360360208110156104c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610db8565b60405180821515815260200191505060405180910390f35b6105596004803603604081101561052357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e0e565b005b61059d6004803603602081101561057157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f62565b6040518082815260200191505060405180910390f35b6105bb610faa565b005b6105c561112e565b005b610609600480360360208110156105dd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112bd565b60405180821515815260200191505060405180910390f35b61066d6004803603604081101561063757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113e3565b005b61067761155e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106ab611588565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156106eb5780820151818401526020810190506106d0565b50505050905090810190601f1680156107185780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107686004803603602081101561073c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061162a565b60405180821515815260200191505060405180910390f35b6107c26004803603602081101561079657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611750565b60405180821515815260200191505060405180910390f35b610826600480360360408110156107f057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611876565b60405180821515815260200191505060405180910390f35b61088a6004803603604081101561085457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611935565b60405180821515815260200191505060405180910390f35b6108d8600480360360408110156108b857600080fd5b810190808035906020019092919080359060200190929190505050611a04565b6040518082815260200191505060405180910390f35b6108f6611a19565b60405180821515815260200191505060405180910390f35b610916611a30565b60405180821515815260200191505060405180910390f35b6109906004803603604081101561094457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a47565b6040518082815260200191505060405180910390f35b6109ae611ace565b005b6109f2600480360360208110156109c657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bda565b005b610a2260048036036020811015610a0a57600080fd5b81019080803515159060200190929190505050611de3565b005b6000600a60149054906101000a900460ff16905090565b606060058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ad35780601f10610aa857610100808354040283529160200191610ad3565b820191906000526020600020905b815481529060010190602001808311610ab657829003601f168201915b5050505050905090565b6000610aea338484611f4b565b6001905092915050565b6000600454905090565b3373ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8060088190555050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600083600a60159054906101000a900460ff1680610c885750600b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610cdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180612da9603d913960400191505060405180910390fd5b610ce8858585612142565b9150509392505050565b6000600760009054906101000a900460ff16905090565b6000600954905090565b6000610dae3384610da985600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ec390919063ffffffff16565b611f4b565b6001905092915050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600a60149054906101000a900460ff1615610e91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f42617365546f6b656e3a206d696e74696e672069732066696e6973686564000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f54576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b610f5e828261220d565b5050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461106d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600a60149054906101000a900460ff16156111b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f42617365546f6b656e3a206d696e74696e672069732066696e6973686564000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611274576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600a60146101000a81548160ff0219169083151502179055507fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a1565b60003373ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611382576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b3373ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6114ca61155e565b836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561151e57600080fd5b505af1158015611532573d6000803e3d6000fd5b505050506040513d602081101561154857600080fd5b8101908080519060200190929190505050505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156116205780601f106115f557610100808354040283529160200191611620565b820191906000526020600020905b81548152906001019060200180831161160357829003601f168201915b5050505050905090565b60003373ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b60003373ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611815576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b600061192b338461192685604051806060016040528060258152602001612ebf60259139600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124539092919063ffffffff16565b611f4b565b6001905092915050565b600033600a60159054906101000a900460ff168061199c5750600b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6119f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180612da9603d913960400191505060405180910390fd5b6119fb8484612513565b91505092915050565b6000611a1133848461252a565b905092915050565b6000600a60159054906101000a900460ff16905090565b6000600360009054906101000a900460ff16905090565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b91576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600a60156101000a81548160ff0219169083151502179055507f75fce015c314a132947a3e42f6ab79ab8e05397dabf35b4d742dea228bbadc2d60405160405180910390a1565b3373ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611d23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180612d616026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ea6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600360006101000a81548160ff02191690831515021790555050565b600080828401905083811015611f41576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612e9b6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612057576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612d876022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600061214f8484846127a3565b61220284336121fd85604051806060016040528060288152602001612e2d60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124539092919063ffffffff16565b611f4b565b600190509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6009546122c882600454611ec390919063ffffffff16565b1061233b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f45524332303a204d696e74696e6720657863656564732063617021000000000081525060200191505060405180910390fd5b61235081600454611ec390919063ffffffff16565b6004819055506123a7816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ec390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000838311158290612500576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156124c55780820151818401526020810190506124aa565b50505050905090810190601f1680156124f25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60006125203384846127a3565b6001905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156125b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612e556021913960400191505060405180910390fd5b6064821115612628576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f43616e2774206275726e206d6f7265207468616e20313030252100000000000081525060200191505060405180910390fd5b600061265060646126428587612b3b90919063ffffffff16565b612bc190919063ffffffff16565b905060006126678286612c0b90919063ffffffff16565b90506126d482604051806060016040528060228152602001612d3f602291396000808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124539092919063ffffffff16565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061272b82600454612c0b90919063ffffffff16565b600481905550600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a380925050509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612829576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612e766025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156128af576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612d1c6023913960400191505060405180910390fd5b60001515600360009054906101000a900460ff16151514156129915760001515600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514801561297b575060001515600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b156129905761298d838260085461252a565b90505b5b6129fc81604051806060016040528060268152602001612de6602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124539092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a8f816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ec390919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600080831415612b4e5760009050612bbb565b6000828402905082848281612b5f57fe5b0414612bb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612e0c6021913960400191505060405180910390fd5b809150505b92915050565b6000612c0383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c55565b905092915050565b6000612c4d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612453565b905092915050565b60008083118290612d01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612cc6578082015181840152602081019050612cab565b50505050905090810190601f168015612cf35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581612d0d57fe5b04905080915050939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737342617365546f6b656e3a207472616e73666572206973206e6f7420656e61626c6564206f722066726f6d2069736e27742077686974656c69737465642e45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122079b00d49c5375aecdcbc537441fe27594ece029feb0e25f5028484606457126f64736f6c634300060c0033

Deployed Bytecode Sourcemap

8934:3210:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9834:96;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3094:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3946:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3371:100;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12054:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11004:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10577:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3280:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;7179:75;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4446:214;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11902:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;9938:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3479:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;8233:148;;;:::i;:::-;;10047:122;;;:::i;:::-;;11175:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8739:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8021:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3185:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11765:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11596:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4668:265;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10403:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;9699:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10899:97;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11431:100;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3787:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10773:118;;;:::i;:::-;;8389:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11324:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9834:96;9882:4;9906:16;;;;;;;;;;;9899:23;;9834:96;:::o;3094:83::-;3131:13;3164:5;3157:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3094:83;:::o;3946:167::-;4029:4;4046:37;4055:10;4067:7;4076:6;4046:8;:37::i;:::-;4101:4;4094:11;;3946:167;;;;:::o;3371:100::-;3424:7;3451:12;;3444:19;;3371:100;:::o;12054:85::-;8158:10;8148:20;;:6;;;;;;;;;;;:20;;;8140:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12127:4:::1;12116:8;:15;;;;12054:85:::0;:::o;11004:118::-;11069:4;11093:15;:21;11109:4;11093:21;;;;;;;;;;;;;;;;;;;;;;;;;11086:28;;11004:118;;;:::o;10577:188::-;10698:4;10683;10245:16;;;;;;;;;;;:41;;;;10265:15;:21;10281:4;10265:21;;;;;;;;;;;;;;;;;;;;;;;;;10245:41;10223:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10722:35:::1;10741:4;10747:2;10751:5;10722:18;:35::i;:::-;10715:42;;10577:188:::0;;;;;;:::o;3280:83::-;3321:5;3346:9;;;;;;;;;;;3339:16;;3280:83;:::o;7179:75::-;7215:7;7242:4;;7235:11;;7179:75;:::o;4446:214::-;4534:4;4551:79;4560:10;4572:7;4581:48;4618:10;4581:11;:23;4593:10;4581:23;;;;;;;;;;;;;;;:32;4605:7;4581:32;;;;;;;;;;;;;;;;:36;;:48;;;;:::i;:::-;4551:8;:79::i;:::-;4648:4;4641:11;;4446:214;;;;:::o;11902:104::-;11959:4;11982:10;:16;11993:4;11982:16;;;;;;;;;;;;;;;;;;;;;;;;;11975:23;;11902:104;;;:::o;9938:101::-;9273:16;;;;;;;;;;;9272:17;9264:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8158:10:::1;8148:20;;:6;;;;;;;;;;;:20;;;8140:65;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;10015:16:::2;10021:2;10025:5;10015;:16::i;:::-;9938:101:::0;;:::o;3479:119::-;3545:7;3572:9;:18;3582:7;3572:18;;;;;;;;;;;;;;;;3565:25;;3479:119;;;:::o;8233:148::-;8158:10;8148:20;;:6;;;;;;;;;;;:20;;;8140:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8340:1:::1;8303:40;;8324:6;;;;;;;;;;;8303:40;;;;;;;;;;;;8371:1;8354:6;;:19;;;;;;;;;;;;;;;;;;8233:148::o:0;10047:122::-;9273:16;;;;;;;;;;;9272:17;9264:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8158:10:::1;8148:20;;:6;;;;;;;;;;;:20;;;8140:65;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;10127:4:::2;10108:16;;:23;;;;;;;;;;;;;;;;;;10147:14;;;;;;;;;;10047:122::o:0;11175:141::-;11241:4;8158:10;8148:20;;:6;;;;;;;;;;;:20;;;8140:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11282:4:::1;11258:15;:21;11274:4;11258:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;11304:4;11297:11;;11175:141:::0;;;:::o;8739:152::-;8158:10;8148:20;;:6;;;;;;;;;;;:20;;;8140:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8839:12:::1;8832:29;;;8862:7;:5;:7::i;:::-;8871:11;8832:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;8739:152:::0;;:::o;8021:79::-;8059:7;8086:6;;;;;;;;;;;8079:13;;8021:79;:::o;3185:87::-;3224:13;3257:7;3250:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3185:87;:::o;11765:129::-;11825:4;8158:10;8148:20;;:6;;;;;;;;;;;:20;;;8140:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11860:5:::1;11841:10;:16;11852:4;11841:16;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;11882:4;11875:11;;11765:129:::0;;;:::o;11596:126::-;11654:4;8158:10;8148:20;;:6;;;;;;;;;;;:20;;;8140:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11689:4:::1;11670:10;:16;11681:4;11670:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;11710:4;11703:11;;11596:126:::0;;;:::o;4668:265::-;4761:4;4778:125;4787:10;4799:7;4808:94;4845:15;4808:94;;;;;;;;;;;;;;;;;:11;:23;4820:10;4808:23;;;;;;;;;;;;;;;:32;4832:7;4808:32;;;;;;;;;;;;;;;;:36;;:94;;;;;:::i;:::-;4778:8;:125::i;:::-;4921:4;4914:11;;4668:265;;;;:::o;10403:166::-;10512:4;10491:10;10245:16;;;;;;;;;;;:41;;;;10265:15;:21;10281:4;10265:21;;;;;;;;;;;;;;;;;;;;;;;;;10245:41;10223:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10536:25:::1;10551:2;10555:5;10536:14;:25::i;:::-;10529:32;;10403:166:::0;;;;;:::o;9699:127::-;9759:7;9786:32;9792:10;9804:6;9812:5;9786;:32::i;:::-;9779:39;;9699:127;;;;:::o;10899:97::-;10948:4;10972:16;;;;;;;;;;;10965:23;;10899:97;:::o;11431:100::-;11483:4;11507:16;;;;;;;;;;;11500:23;;11431:100;:::o;3787:151::-;3876:7;3903:11;:18;3915:5;3903:18;;;;;;;;;;;;;;;:27;3922:7;3903:27;;;;;;;;;;;;;;;;3896:34;;3787:151;;;;:::o;10773:118::-;8158:10;8148:20;;:6;;;;;;;;;;;:20;;;8140:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10846:4:::1;10827:16;;:23;;;;;;;;;;;;;;;;;;10866:17;;;;;;;;;;10773:118::o:0;8389:244::-;8158:10;8148:20;;:6;;;;;;;;;;;:20;;;8140:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8498:1:::1;8478:22;;:8;:22;;;;8470:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8588:8;8559:38;;8580:6;;;;;;;;;;;8559:38;;;;;;;;;;;;8617:8;8608:6;;:17;;;;;;;;;;;;;;;;;;8389:244:::0;:::o;11324:99::-;8158:10;8148:20;;:6;;;;;;;;;;;:20;;;8140:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11410:5:::1;11391:16;;:24;;;;;;;;;;;;;;;;;;11324:99:::0;:::o;964:181::-;1022:7;1042:9;1058:1;1054;:5;1042:17;;1083:1;1078;:6;;1070:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1136:1;1129:8;;;964:181;;;;:::o;6465:346::-;6584:1;6567:19;;:5;:19;;;;6559:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6665:1;6646:21;;:7;:21;;;;6638:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6749:6;6719:11;:18;6731:5;6719:18;;;;;;;;;;;;;;;:27;6738:7;6719:27;;;;;;;;;;;;;;;:36;;;;6787:7;6771:32;;6780:5;6771:32;;;6796:6;6771:32;;;;;;;;;;;;;;;;;;6465:346;;;:::o;4121:317::-;4227:4;4244:36;4254:6;4262:9;4273:6;4244:9;:36::i;:::-;4291:117;4300:6;4308:10;4320:87;4356:6;4320:87;;;;;;;;;;;;;;;;;:11;:19;4332:6;4320:19;;;;;;;;;;;;;;;:31;4340:10;4320:31;;;;;;;;;;;;;;;;:35;;:87;;;;;:::i;:::-;4291:8;:117::i;:::-;4426:4;4419:11;;4121:317;;;;;:::o;7262:416::-;7381:1;7362:21;;:7;:21;;;;7354:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7467:4;;7439:24;7456:6;7439:12;;:16;;:24;;;;:::i;:::-;7438:33;7430:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7531:24;7548:6;7531:12;;:16;;:24;;;;:::i;:::-;7516:12;:39;;;;7587:30;7610:6;7587:9;:18;7597:7;7587:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;7566:9;:18;7576:7;7566:18;;;;;;;;;;;;;;;:51;;;;7654:7;7633:37;;7650:1;7633:37;;;7663:6;7633:37;;;;;;;;;;;;;;;;;;7262:416;;:::o;1297:192::-;1383:7;1416:1;1411;:6;;1419:12;1403:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1443:9;1459:1;1455;:5;1443:17;;1480:1;1473:8;;;1297:192;;;;;:::o;3606:173::-;3692:4;3709:40;3719:10;3731:9;3742:6;3709:9;:40::i;:::-;3767:4;3760:11;;3606:173;;;;:::o;5842:615::-;5930:7;5978:1;5959:21;;:7;:21;;;;5951:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6046:3;6037:5;:12;;6029:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6093:16;6113:26;6135:3;6113:17;6124:5;6113:6;:10;;:17;;;;:::i;:::-;:21;;:26;;;;:::i;:::-;6093:47;;6151:26;6180:20;6191:8;6180:6;:10;;:20;;;;:::i;:::-;6151:49;;6234:70;6257:8;6234:70;;;;;;;;;;;;;;;;;:9;:18;6244:7;6234:18;;;;;;;;;;;;;;;;:22;;:70;;;;;:::i;:::-;6213:9;:18;6223:7;6213:18;;;;;;;;;;;;;;;:91;;;;6330:26;6347:8;6330:12;;:16;;:26;;;;:::i;:::-;6315:12;:41;;;;6398:1;6372:39;;6381:7;6372:39;;;6402:8;6372:39;;;;;;;;;;;;;;;;;;6430:18;6422:27;;;;5842:615;;;;;:::o;4941:749::-;5065:1;5047:20;;:6;:20;;;;5039:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5149:1;5128:23;;:9;:23;;;;5120:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5229:5;5209:25;;:16;;;;;;;;;;;:25;;;5205:257;;;5275:5;5253:27;;:10;:18;5264:6;5253:18;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;:61;;;;;5309:5;5284:30;;:10;:21;5295:9;5284:21;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;5253:61;5249:202;;;5406:31;5412:6;5420;5428:8;;5406:5;:31::i;:::-;5397:40;;5249:202;5205:257;5494:71;5516:6;5494:71;;;;;;;;;;;;;;;;;:9;:17;5504:6;5494:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;5474:9;:17;5484:6;5474:17;;;;;;;;;;;;;;;:91;;;;5599:32;5624:6;5599:9;:20;5609:9;5599:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;5576:9;:20;5586:9;5576:20;;;;;;;;;;;;;;;:55;;;;5664:9;5647:35;;5656:6;5647:35;;;5675:6;5647:35;;;;;;;;;;;;;;;;;;4941:749;;;:::o;1497:250::-;1555:7;1584:1;1579;:6;1575:47;;;1609:1;1602:8;;;;1575:47;1634:9;1650:1;1646;:5;1634:17;;1679:1;1674;1670;:5;;;;;;:10;1662:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1738:1;1731:8;;;1497:250;;;;;:::o;1755:132::-;1813:7;1840:39;1844:1;1847;1840:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1833:46;;1755:132;;;;:::o;1153:136::-;1211:7;1238:43;1242:1;1245;1238:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1231:50;;1153:136;;;;:::o;1895:189::-;1981:7;2013:1;2009;:5;2016:12;2001:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2040:9;2056:1;2052;:5;;;;;;2040:17;;2075:1;2068:8;;;1895:189;;;;;:::o

Swarm Source

ipfs://79b00d49c5375aecdcbc537441fe27594ece029feb0e25f5028484606457126f
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.