ETH Price: $2,605.88 (-4.32%)
 

Overview

Max Total Supply

285,889.57800620589534083 PEG:USD

Holders

181

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000000000001 PEG:USD

Value
$0.00
0xdda1bfaf552b0f303d27853a4a13dd440c7e849f
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:
DebtToken

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-11-08
*/

pragma solidity ^0.4.23;


contract AntiERC20Sink {
    address public deployer;
    constructor() public { deployer = msg.sender; }
    function transferERC20Token(IERC20Token _token, address _to, uint256 _amount) public {
        require(msg.sender == deployer);
        _token.transfer(_to, _amount);
    }
}


library SafeMath {
    function plus(uint256 _a, uint256 _b) internal pure returns (uint256) {
        uint256 c = _a + _b;
        assert(c >= _a);
        return c;
    }

    function plus(int256 _a, int256 _b) internal pure returns (int256) {
        int256 c = _a + _b;
        assert((_b >= 0 && c >= _a) || (_b < 0 && c < _a));
        return c;
    }

    function minus(uint256 _a, uint256 _b) internal pure returns (uint256) {
        assert(_a >= _b);
        return _a - _b;
    }

    function minus(int256 _a, int256 _b) internal pure returns (int256) {
        int256 c = _a - _b;
        assert((_b >= 0 && c <= _a) || (_b < 0 && c > _a));
        return c;
    }

    function times(uint256 _a, uint256 _b) internal pure returns (uint256) {
        if (_a == 0) {
            return 0;
        }
        uint256 c = _a * _b;
        assert(c / _a == _b);
        return c;
    }

    function times(int256 _a, int256 _b) internal pure returns (int256) {
        if (_a == 0) {
            return 0;
        }
        int256 c = _a * _b;
        assert(c / _a == _b);
        return c;
    }

    function toInt256(uint256 _a) internal pure returns (int256) {
        assert(_a <= 2 ** 255);
        return int256(_a);
    }

    function toUint256(int256 _a) internal pure returns (uint256) {
        assert(_a >= 0);
        return uint256(_a);
    }

    function div(uint256 _a, uint256 _b) internal pure returns (uint256) {
        return _a / _b;
    }

    function div(int256 _a, int256 _b) internal pure returns (int256) {
        return _a / _b;
    }
}


/*
    ERC20 Standard Token interface
*/
contract IERC20Token {
    // these functions aren't abstract since the compiler emits automatically generated getter functions as external
    function name() public constant returns (string) {}
    function symbol() public constant returns (string) {}
    function decimals() public constant returns (uint8) {}
    function totalSupply() public constant returns (uint256) {}
    function balanceOf(address _owner) public constant returns (uint256) { _owner; }
    function allowance(address _owner, address _spender) public constant returns (uint256) { _owner; _spender; }

    function transfer(address _to, uint256 _value) public returns (bool success);
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success);
    function approve(address _spender, uint256 _value) public returns (bool success);
}


/*
    Owned contract interface
*/
contract IOwned {
    // this function isn't abstract since the compiler emits automatically generated getter functions as external
    function owner() public constant returns (address) {}

    function transferOwnership(address _newOwner) public;
    function acceptOwnership() public;
    function setOwner(address _newOwner) public;
}





contract Vault {
    PegInstance public pegInstance;
    address public owner;
    uint256 public totalBorrowed;
    uint256 public rawDebt;
    uint256 public timestamp;

    constructor(PegInstance _pegInstance, address _owner) public {
        pegInstance = _pegInstance;
        owner = _owner;
    }

    modifier authOnly() {
        require(pegInstance.authorized(msg.sender));
        _;
    }

    function setOwner(address _newOwner) public authOnly {
        owner = _newOwner;
    }

    function setRawDebt(uint _newRawDebt) public authOnly {
        rawDebt = _newRawDebt;
    }

    function setTotalBorrowed(uint _totalBorrowed) public authOnly {
        totalBorrowed = _totalBorrowed;
    }

    function setTimestamp(uint256 _timestamp) public authOnly {
        timestamp = _timestamp;
    }

    function payoutPEG(address _to, uint _amount) public authOnly {
        pegInstance.pegNetworkToken().transfer(_to, _amount);
    }

    function burnPEG(uint _amount) public authOnly {
        pegInstance.pegNetworkToken().destroy(address(this), _amount);
    }

    function transferERC20Token(IERC20Token _token, address _to, uint256 _amount) public authOnly {
        _token.transfer(_to, _amount);
    }
}

contract IPegOracle {
    function getValue() public view returns (uint256);
}







/*
    Smart Token interface
*/
contract ISmartToken is IOwned, IERC20Token {
    function disableTransfers(bool _disable) public;
    function issue(address _to, uint256 _amount) public;
    function destroy(address _from, uint256 _amount) public;
}









contract PegLogic is AntiERC20Sink {

    using SafeMath for uint256;
    using SafeMath for int256;
    ISmartToken public pegNetworkToken;
    PegInstance public pegInstance;

    constructor(ISmartToken _pegNetworkToken, PegInstance _pegInstance) public {
        pegNetworkToken = _pegNetworkToken;
        pegInstance = _pegInstance;
    }

    modifier vaultExists(Vault _vault) {
        require(pegInstance.vaultExists(_vault));
        _;
    }

    modifier authOnly() {
        require(pegInstance.authorized(msg.sender));
        _;
    }

    function newVault() public returns (Vault) {
        // pegNetworkToken.destroy(msg.sender, 1e18); charge a fee?
        Vault vault = new Vault(pegInstance, msg.sender);
        pegInstance.addNewVault(vault, msg.sender);
        return vault;
    }

    function getTotalCredit(Vault _vault) public view vaultExists(_vault) returns (int256) {
        uint256 oraclePrice = pegInstance.oracle().getValue();
        return (pegNetworkToken.balanceOf(_vault).times(oraclePrice).times(pegInstance.maxBorrowLTV()) / 1e12).toInt256();
    }

    function getAvailableCredit(Vault _vault) public view returns (int256) {
        return getTotalCredit(_vault).minus(actualDebt(_vault).toInt256());
    }

    function borrow(Vault _vault, uint256 _amount) public vaultExists(_vault) {
        require(_vault.owner() == msg.sender && _amount.toInt256() <= getAvailableCredit(_vault));
        _vault.setRawDebt(_vault.rawDebt().plus(debtActualToRaw(_amount)));
        _vault.setTotalBorrowed(_vault.totalBorrowed().plus(_amount));
        pegInstance.debtToken().issue(msg.sender, _amount);
        pegInstance.emitBorrow(_vault, _amount);
    }

    function repay(Vault _vault, uint256 _amount) public vaultExists(_vault) {
        uint amountToRepay = _amount;
        if (actualDebt(_vault) < _amount) amountToRepay = actualDebt(_vault);
        pegInstance.debtToken().destroy(msg.sender, amountToRepay);
        _vault.setRawDebt(_vault.rawDebt().minus(debtActualToRaw(amountToRepay)));
        _vault.setTotalBorrowed(_vault.totalBorrowed().minus(amountToRepay));
        pegInstance.emitRepay(_vault, amountToRepay);
    }

    function requiredCollateral(Vault _vault) public view vaultExists(_vault) returns (uint256) {
        return actualDebt(_vault).times(1e12) / pegInstance.oracle().getValue() / pegInstance.maxBorrowLTV();
    }

    function getExcessCollateral(Vault _vault) public view returns (int256) {
        return int(pegNetworkToken.balanceOf(_vault)).minus(int(requiredCollateral(_vault)));
    }

    function liquidate(Vault _vault) public {
        require(actualDebt(_vault) > 0);
        uint requiredPEG = actualDebt(_vault).times(1e12) / pegInstance.oracle().getValue() / pegInstance.liquidationRatio();
        require(pegNetworkToken.balanceOf(_vault) < requiredPEG);
        require(pegInstance.debtToken().balanceOf(msg.sender) >= actualDebt(_vault));
        pegInstance.debtToken().destroy(msg.sender, actualDebt(_vault));
        _vault.setRawDebt(0);
        _vault.setOwner(msg.sender);
    }

    function reportPriceToTargetValue(bool _aboveValue) public authOnly {
        if(_aboveValue) {
            pegInstance.setDebtScalingRate(pegInstance.debtScalingPerBlock().plus(1e8));
            pegInstance.setDebtTokenScalingRate(pegInstance.debtTokenScalingPerBlock().plus(1e8));
        }else{
            pegInstance.setDebtScalingRate(pegInstance.debtScalingPerBlock().minus(1e8));
            pegInstance.setDebtTokenScalingRate(pegInstance.debtTokenScalingPerBlock().minus(1e8));
        }
    }

    function debtRawToActual(uint256 _raw) public view returns(uint256) {
        return _raw.times(1e18) / pegInstance.debtScalingFactor();
    }

    function debtActualToRaw(uint256 _actual) public view returns(uint256) {
        return _actual.times(pegInstance.debtScalingFactor()) / 1e18;
    }

    function withdrawExcessCollateral(Vault _vault, address _to, uint256 _amount) public {
        require(msg.sender == _vault.owner());
        require(_amount.toInt256() <= getExcessCollateral(_vault));
        _vault.payoutPEG(_to, _amount);
        pegInstance.emitWithdraw(_vault, _amount);
    }

    function actualDebt(Vault _vault) public view returns(uint) {
        return debtRawToActual(_vault.rawDebt());
    }
}


contract PegInstance {

    using SafeMath for uint256;
    using SafeMath for int256;

    ISmartToken public pegNetworkToken;
    uint8 public constant version = 0;
    IPegOracle public oracle;
    DebtToken public debtToken;
    PegLogic public pegLogic;
    address[] public vaults;
    mapping (address => bool) public vaultExists;
    mapping (address => bool) public authorized;
    uint32 public liquidationRatio = 850000;
    uint32 public maxBorrowLTV = 100000;

    uint256 public lastDebtTokenScalingFactor = 1e18;
    uint256 public lastDebtTokenScalingRetarget;
    int256 public debtTokenScalingPerBlock;

    uint256 public lastDebtScalingFactor = 1e18;
    uint256 public lastDebtScalingRetarget;
    int256 public debtScalingPerBlock;

    uint256 public amountMinted;

    event LiquidateVault(address indexed _vault);
    event Borrow(address indexed _vault, uint256 amount);
    event Repay(address indexed _vault, uint256 amount);
    event Withdraw(address indexed _vault, uint256 amount);
    event LiquidationRatioUpdate(int _old, int _new);
    event MaxBorrowUpdate(uint32 _old, uint32 _new);
    event DebtTokenScalingRateUpdate(int _old, int _new);
    event DebtScalingRateUpdate(int _old, int _new);
    event NewVault(address indexed _vault, address indexed _vaultOwner);
    event LogicUpgrade(address _old, address _new);
    event DebtTokenUpgrade(address _old, address _new);
    event OracleUpgrade(address _old, address _new);
    event Authorize(address _address, bool _auth);

    constructor(ISmartToken _pegNetworkToken) public {
        pegNetworkToken = _pegNetworkToken;
        authorized[msg.sender] = true;
    }

    modifier authOnly() {
        require(authorized[msg.sender] == true);
        _;
    }

    function setDebtToken(DebtToken _debtToken) public authOnly {
        emit DebtTokenUpgrade(address(debtToken), address(_debtToken));
        debtToken = _debtToken;
    }

    function setOracle(IPegOracle _oracle) public authOnly {
        emit OracleUpgrade(address(oracle), address(_oracle));
        oracle = _oracle;
    }

    function setPegLogic(PegLogic _pegLogic) public authOnly {
        emit LogicUpgrade(address(pegLogic), address(_pegLogic));
        authorized[address(_pegLogic)] = true;
        authorized[address(pegLogic)] = false;
        pegLogic = _pegLogic;
    }

    function authorize(address _address, bool _auth) public authOnly {
        emit Authorize(_address, _auth);
        authorized[_address] = _auth;
    }

    function setLiquidationRatio(uint32 _liquidationRatio) public authOnly {
        emit LiquidationRatioUpdate(liquidationRatio, _liquidationRatio);
        liquidationRatio = _liquidationRatio;
    }

    function setMaxBorrowLTV(uint32 _maxBorrowLTV) public authOnly {
        emit MaxBorrowUpdate(maxBorrowLTV, _maxBorrowLTV);
        maxBorrowLTV = _maxBorrowLTV;
    }

    function setDebtTokenScalingRate(int256 _debtTokenScalingPerBlock) public authOnly {
        emit DebtTokenScalingRateUpdate(debtTokenScalingPerBlock, _debtTokenScalingPerBlock);
        lastDebtTokenScalingFactor = debtTokenScalingFactor();
        lastDebtTokenScalingRetarget = block.number;
        debtTokenScalingPerBlock = _debtTokenScalingPerBlock;
    }

    function setDebtScalingRate(int256 _debtScalingPerBlock) public authOnly {
        emit DebtScalingRateUpdate(debtScalingPerBlock, _debtScalingPerBlock);
        lastDebtScalingFactor = debtScalingFactor();
        lastDebtScalingRetarget = block.number;
        debtScalingPerBlock = _debtScalingPerBlock;
    }

    function setAmountMinted(uint _amountMinted) public authOnly {
        amountMinted = _amountMinted;
    }

    function addNewVault(Vault _vault, address _vaultOwner) public authOnly {
        emit NewVault(address(_vault), _vaultOwner);
        vaults.push(_vault);
        vaultExists[_vault] = true;
    }

    function emitBorrow(Vault _vault, uint256 _amount) public authOnly {
        emit Borrow(address(_vault), _amount);
    }

    function emitRepay(Vault _vault, uint256 _amount) public authOnly {
        emit Repay(address(_vault), _amount);
    }

    function emitWithdraw(Vault _vault, uint256 _amount) public authOnly {
        emit Withdraw(address(_vault), _amount);
    }

    function emitLiquidateVault(Vault _vault) public authOnly {
        emit LiquidateVault(address(_vault));
    }

    function getVaults() public view returns (address[]) {
        return vaults;
    }

    function debtTokenScalingFactor() public view returns (uint) {
        return uint(int(lastDebtTokenScalingFactor).plus(debtTokenScalingPerBlock.times(int(block.number.minus(lastDebtTokenScalingRetarget)))));
    }

    function debtScalingFactor() public view returns (uint) {
        return uint(int(lastDebtScalingFactor).plus(debtScalingPerBlock.times(int(block.number.minus(lastDebtScalingRetarget)))));
    }

    function transferERC20Token(IERC20Token _token, address _to, uint256 _amount) public authOnly {
        _token.transfer(_to, _amount);
    }
}





contract DebtToken is IERC20Token {

    using SafeMath for uint256;

    string public name;
    string public symbol;
    uint8 public decimals = 18;

    PegInstance public pegInstance;

    uint256 public rawTotalSupply;
    mapping (address => uint256) public rawBalance;
    mapping (address => mapping (address => uint256)) public rawAllowance;

    event Transfer(address indexed from, address indexed to, uint256 amount);
    event Approval(address indexed owner, address indexed spender, uint256 amount);
    event Issuance(uint256 amount);
    event Destruction(uint256 amount);

    constructor(string _name, string _symbol, PegInstance _pegInstance) public {
        require(bytes(_name).length > 0 && bytes(_symbol).length > 0);
        name = _name;
        symbol = _symbol;
        pegInstance = _pegInstance;
    }

    modifier validAddress(address _address) {
        require(_address != address(0));
        _;
    }

    modifier authOnly() {
        require(pegInstance.authorized(msg.sender));
        _;
    }

    function rawToActual(uint256 _raw) public view returns(uint256) {
        return _raw.times(1e18) / pegInstance.debtTokenScalingFactor();
    }

    function actualToRaw(uint256 _actual) public view returns(uint256) {
        return _actual.times(pegInstance.debtTokenScalingFactor()) / 1e18;
    }

    function balanceOf(address _address) public view returns(uint256) {
        return rawToActual(rawBalance[_address]);
    }

    function totalSupply() public view returns (uint256) {
        return rawToActual(rawTotalSupply);
    }

    function allowance(address _owner, address _spender) public view returns (uint256) {
        return rawToActual(rawAllowance[_owner][_spender]);
    }

    function transfer(address _to, uint256 _amount) public validAddress(_to) returns (bool) {
        rawBalance[msg.sender] = rawBalance[msg.sender].minus(actualToRaw(_amount));
        rawBalance[_to] = rawBalance[_to].plus(actualToRaw(_amount));
        emit Transfer(msg.sender, _to, _amount);
        return true;
    }

    function transferFrom(address _from, address _to, uint256 _amount) public validAddress(_from) validAddress(_to) returns (bool) {
        rawAllowance[_from][msg.sender] = rawAllowance[_from][msg.sender].minus(actualToRaw(_amount));
        rawBalance[_from] = rawBalance[_from].minus(actualToRaw(_amount));
        rawBalance[_to] = rawBalance[_to].plus(actualToRaw(_amount));
        emit Transfer(_from, _to, _amount);
        return true;
    }

    function approve(address _spender, uint256 _amount) public validAddress(_spender) returns (bool) {
        require(_amount == 0 || rawAllowance[msg.sender][_spender] == 0);
        rawAllowance[msg.sender][_spender] = actualToRaw(_amount);
        emit Approval(msg.sender, _spender, _amount);
        return true;
    }

    function issue(address _to, uint256 _amount) public validAddress(_to) authOnly {
        rawTotalSupply = rawTotalSupply.plus(actualToRaw(_amount));
        rawBalance[_to] = rawBalance[_to].plus(actualToRaw(_amount));
        emit Issuance(_amount);
        emit Transfer(this, _to, _amount);
    }

    function destroy(address _from, uint256 _amount) public validAddress(_from) authOnly {
        rawBalance[_from] = rawBalance[_from].minus(actualToRaw(_amount));
        rawTotalSupply = rawTotalSupply.minus(actualToRaw(_amount));
        emit Transfer(_from, this, _amount);
        emit Destruction(_amount);
    }

    function setName(string _name) public authOnly {
        name = _name;
    }

    function setSymbol(string _symbol) public authOnly {
        symbol = _symbol;
    }

    function transferERC20Token(IERC20Token _token, address _to, uint256 _amount) validAddress(_to) public {
        require(pegInstance.authorized(msg.sender));
        _token.transfer(_to, _amount);
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_amount","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_actual","type":"uint256"}],"name":"actualToRaw","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"issue","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"rawBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transferERC20Token","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_amount","type":"uint256"}],"name":"destroy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rawTotalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"pegInstance","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"rawAllowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_symbol","type":"string"}],"name":"setSymbol","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"}],"name":"setName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_raw","type":"uint256"}],"name":"rawToActual","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_name","type":"string"},{"name":"_symbol","type":"string"},{"name":"_pegInstance","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"}],"name":"Issuance","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"}],"name":"Destruction","type":"event"}]

60806040526012600260006101000a81548160ff021916908360ff1602179055503480156200002d57600080fd5b506040516200208038038062002080833981018060405281019080805182019291906020018051820192919060200180519060200190929190505050600083511180156200007c575060008251115b15156200008857600080fd5b8260009080519060200190620000a092919062000104565b508160019080519060200190620000b992919062000104565b5080600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050620001b3565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200014757805160ff191683800117855562000178565b8280016001018555821562000178579182015b82811115620001775782518255916020019190600101906200015a565b5b5090506200018791906200018b565b5090565b620001b091905b80821115620001ac57600081600090555060010162000192565b5090565b90565b611ebd80620001c36000396000f300608060405260043610610112576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610117578063095ea7b3146101a757806318160ddd1461020c5780631d1b6e541461023757806323b872dd14610278578063313ce567146102fd57806370a082311461032e578063867904b4146103855780638a0effd2146103d257806392940bf91461042957806395d89b4114610496578063a24835d114610526578063a592d9ec14610573578063a9059cbb1461059e578063af894d3814610603578063b76e76b11461065a578063b84c8246146106d1578063c47f00271461073a578063dd62ed3e146107a3578063ee5ba13b1461081a575b600080fd5b34801561012357600080fd5b5061012c61085b565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561016c578082015181840152602081019050610151565b50505050905090810190601f1680156101995780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101b357600080fd5b506101f2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108f9565b604051808215151515815260200191505060405180910390f35b34801561021857600080fd5b50610221610ac7565b6040518082815260200191505060405180910390f35b34801561024357600080fd5b5061026260048036038101908080359060200190929190505050610ad9565b6040518082815260200191505060405180910390f35b34801561028457600080fd5b506102e3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bc8565b604051808215151515815260200191505060405180910390f35b34801561030957600080fd5b50610312610f07565b604051808260ff1660ff16815260200191505060405180910390f35b34801561033a57600080fd5b5061036f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f1a565b6040518082815260200191505060405180910390f35b34801561039157600080fd5b506103d0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f6b565b005b3480156103de57600080fd5b50610413600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061120c565b6040518082815260200191505060405180910390f35b34801561043557600080fd5b50610494600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611224565b005b3480156104a257600080fd5b506104ab611449565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104eb5780820151818401526020810190506104d0565b50505050905090810190601f1680156105185780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561053257600080fd5b50610571600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114e7565b005b34801561057f57600080fd5b50610588611788565b6040518082815260200191505060405180910390f35b3480156105aa57600080fd5b506105e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061178e565b604051808215151515815260200191505060405180910390f35b34801561060f57600080fd5b50610618611977565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561066657600080fd5b506106bb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061199d565b6040518082815260200191505060405180910390f35b3480156106dd57600080fd5b50610738600480360381019080803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506119c2565b005b34801561074657600080fd5b506107a1600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611adf565b005b3480156107af57600080fd5b50610804600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bfc565b6040518082815260200191505060405180910390f35b34801561082657600080fd5b5061084560048036038101908080359060200190929190505050611c8b565b6040518082815260200191505060405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108f15780601f106108c6576101008083540402835291602001916108f1565b820191906000526020600020905b8154815290600101906020018083116108d457829003601f168201915b505050505081565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561093857600080fd5b60008314806109c357506000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b15156109ce57600080fd5b6109d783610ad9565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a3600191505092915050565b6000610ad4600354611c8b565b905090565b6000670de0b6b3a7640000610bb7600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e31626516040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610b6d57600080fd5b505af1158015610b81573d6000803e3d6000fd5b505050506040513d6020811015610b9757600080fd5b810190808051906020019092919050505084611d7a90919063ffffffff16565b811515610bc057fe5b049050919050565b600083600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610c0757600080fd5b83600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610c4457600080fd5b610cdb610c5085610ad9565b600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611db590919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610db5610d6785610ad9565b600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611db590919063ffffffff16565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e52610e0485610ad9565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dce90919063ffffffff16565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a36001925050509392505050565b600260009054906101000a900460ff1681565b6000610f64600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c8b565b9050919050565b81600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610fa857600080fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b9181611336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561106557600080fd5b505af1158015611079573d6000803e3d6000fd5b505050506040513d602081101561108f57600080fd5b810190808051906020019092919050505015156110ab57600080fd5b6110c86110b783610ad9565b600354611dce90919063ffffffff16565b6003819055506111286110da83610ad9565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dce90919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f9386c90217c323f58030f9dadcbc938f807a940f4ff41cd4cead9562f5da7dc3826040518082815260200191505060405180910390a18273ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505050565b60046020528060005260406000206000915090505481565b81600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561126157600080fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b9181611336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561131e57600080fd5b505af1158015611332573d6000803e3d6000fd5b505050506040513d602081101561134857600080fd5b8101908080519060200190929190505050151561136457600080fd5b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561140757600080fd5b505af115801561141b573d6000803e3d6000fd5b505050506040513d602081101561143157600080fd5b81019080805190602001909291905050505050505050565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114df5780601f106114b4576101008083540402835291602001916114df565b820191906000526020600020905b8154815290600101906020018083116114c257829003601f168201915b505050505081565b81600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561152457600080fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b9181611336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156115e157600080fd5b505af11580156115f5573d6000803e3d6000fd5b505050506040513d602081101561160b57600080fd5b8101908080519060200190929190505050151561162757600080fd5b61168161163383610ad9565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611db590919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116e16116d083610ad9565b600354611db590919063ffffffff16565b6003819055503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a37f9a1b418bc061a5d80270261562e6986a35d995f8051145f277be16103abd3453826040518082815260200191505060405180910390a1505050565b60035481565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156117cd57600080fd5b6118276117d984610ad9565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611db590919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506118c461187684610ad9565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dce90919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191505092915050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6005602052816000526040600020602052806000526040600020600091509150505481565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b9181611336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015611a7f57600080fd5b505af1158015611a93573d6000803e3d6000fd5b505050506040513d6020811015611aa957600080fd5b81019080805190602001909291905050501515611ac557600080fd5b8060019080519060200190611adb929190611dec565b5050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b9181611336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015611b9c57600080fd5b505af1158015611bb0573d6000803e3d6000fd5b505050506040513d6020811015611bc657600080fd5b81019080805190602001909291905050501515611be257600080fd5b8060009080519060200190611bf8929190611dec565b5050565b6000611c83600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c8b565b905092915050565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e31626516040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015611d1357600080fd5b505af1158015611d27573d6000803e3d6000fd5b505050506040513d6020811015611d3d57600080fd5b8101908080519060200190929190505050611d69670de0b6b3a764000084611d7a90919063ffffffff16565b811515611d7257fe5b049050919050565b6000806000841415611d8f5760009150611dae565b8284029050828482811515611da057fe5b04141515611daa57fe5b8091505b5092915050565b6000818310151515611dc357fe5b818303905092915050565b6000808284019050838110151515611de257fe5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611e2d57805160ff1916838001178555611e5b565b82800160010185558215611e5b579182015b82811115611e5a578251825591602001919060010190611e3f565b5b509050611e689190611e6c565b5090565b611e8e91905b80821115611e8a576000816000905550600101611e72565b5090565b905600a165627a7a7230582042490077827efb1d2e18d063ee25eeae043d42d756a41b8e08d5b68542d7d78e0029000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000003d6a8a3d37feca3f8e988a25d267312d35fe3879000000000000000000000000000000000000000000000000000000000000000d5045473a555320446f6c6c61720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000075045473a55534400000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405260043610610112576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde0314610117578063095ea7b3146101a757806318160ddd1461020c5780631d1b6e541461023757806323b872dd14610278578063313ce567146102fd57806370a082311461032e578063867904b4146103855780638a0effd2146103d257806392940bf91461042957806395d89b4114610496578063a24835d114610526578063a592d9ec14610573578063a9059cbb1461059e578063af894d3814610603578063b76e76b11461065a578063b84c8246146106d1578063c47f00271461073a578063dd62ed3e146107a3578063ee5ba13b1461081a575b600080fd5b34801561012357600080fd5b5061012c61085b565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561016c578082015181840152602081019050610151565b50505050905090810190601f1680156101995780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101b357600080fd5b506101f2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108f9565b604051808215151515815260200191505060405180910390f35b34801561021857600080fd5b50610221610ac7565b6040518082815260200191505060405180910390f35b34801561024357600080fd5b5061026260048036038101908080359060200190929190505050610ad9565b6040518082815260200191505060405180910390f35b34801561028457600080fd5b506102e3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bc8565b604051808215151515815260200191505060405180910390f35b34801561030957600080fd5b50610312610f07565b604051808260ff1660ff16815260200191505060405180910390f35b34801561033a57600080fd5b5061036f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f1a565b6040518082815260200191505060405180910390f35b34801561039157600080fd5b506103d0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f6b565b005b3480156103de57600080fd5b50610413600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061120c565b6040518082815260200191505060405180910390f35b34801561043557600080fd5b50610494600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611224565b005b3480156104a257600080fd5b506104ab611449565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104eb5780820151818401526020810190506104d0565b50505050905090810190601f1680156105185780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561053257600080fd5b50610571600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114e7565b005b34801561057f57600080fd5b50610588611788565b6040518082815260200191505060405180910390f35b3480156105aa57600080fd5b506105e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061178e565b604051808215151515815260200191505060405180910390f35b34801561060f57600080fd5b50610618611977565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561066657600080fd5b506106bb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061199d565b6040518082815260200191505060405180910390f35b3480156106dd57600080fd5b50610738600480360381019080803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506119c2565b005b34801561074657600080fd5b506107a1600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611adf565b005b3480156107af57600080fd5b50610804600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bfc565b6040518082815260200191505060405180910390f35b34801561082657600080fd5b5061084560048036038101908080359060200190929190505050611c8b565b6040518082815260200191505060405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108f15780601f106108c6576101008083540402835291602001916108f1565b820191906000526020600020905b8154815290600101906020018083116108d457829003601f168201915b505050505081565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561093857600080fd5b60008314806109c357506000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b15156109ce57600080fd5b6109d783610ad9565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a3600191505092915050565b6000610ad4600354611c8b565b905090565b6000670de0b6b3a7640000610bb7600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e31626516040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610b6d57600080fd5b505af1158015610b81573d6000803e3d6000fd5b505050506040513d6020811015610b9757600080fd5b810190808051906020019092919050505084611d7a90919063ffffffff16565b811515610bc057fe5b049050919050565b600083600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610c0757600080fd5b83600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610c4457600080fd5b610cdb610c5085610ad9565b600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611db590919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610db5610d6785610ad9565b600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611db590919063ffffffff16565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e52610e0485610ad9565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dce90919063ffffffff16565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a36001925050509392505050565b600260009054906101000a900460ff1681565b6000610f64600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c8b565b9050919050565b81600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610fa857600080fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b9181611336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561106557600080fd5b505af1158015611079573d6000803e3d6000fd5b505050506040513d602081101561108f57600080fd5b810190808051906020019092919050505015156110ab57600080fd5b6110c86110b783610ad9565b600354611dce90919063ffffffff16565b6003819055506111286110da83610ad9565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dce90919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f9386c90217c323f58030f9dadcbc938f807a940f4ff41cd4cead9562f5da7dc3826040518082815260200191505060405180910390a18273ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3505050565b60046020528060005260406000206000915090505481565b81600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561126157600080fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b9181611336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561131e57600080fd5b505af1158015611332573d6000803e3d6000fd5b505050506040513d602081101561134857600080fd5b8101908080519060200190929190505050151561136457600080fd5b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561140757600080fd5b505af115801561141b573d6000803e3d6000fd5b505050506040513d602081101561143157600080fd5b81019080805190602001909291905050505050505050565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114df5780601f106114b4576101008083540402835291602001916114df565b820191906000526020600020905b8154815290600101906020018083116114c257829003601f168201915b505050505081565b81600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561152457600080fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b9181611336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156115e157600080fd5b505af11580156115f5573d6000803e3d6000fd5b505050506040513d602081101561160b57600080fd5b8101908080519060200190929190505050151561162757600080fd5b61168161163383610ad9565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611db590919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116e16116d083610ad9565b600354611db590919063ffffffff16565b6003819055503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a37f9a1b418bc061a5d80270261562e6986a35d995f8051145f277be16103abd3453826040518082815260200191505060405180910390a1505050565b60035481565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156117cd57600080fd5b6118276117d984610ad9565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611db590919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506118c461187684610ad9565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dce90919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3600191505092915050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6005602052816000526040600020602052806000526040600020600091509150505481565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b9181611336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015611a7f57600080fd5b505af1158015611a93573d6000803e3d6000fd5b505050506040513d6020811015611aa957600080fd5b81019080805190602001909291905050501515611ac557600080fd5b8060019080519060200190611adb929190611dec565b5050565b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b9181611336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015611b9c57600080fd5b505af1158015611bb0573d6000803e3d6000fd5b505050506040513d6020811015611bc657600080fd5b81019080805190602001909291905050501515611be257600080fd5b8060009080519060200190611bf8929190611dec565b5050565b6000611c83600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c8b565b905092915050565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e31626516040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015611d1357600080fd5b505af1158015611d27573d6000803e3d6000fd5b505050506040513d6020811015611d3d57600080fd5b8101908080519060200190929190505050611d69670de0b6b3a764000084611d7a90919063ffffffff16565b811515611d7257fe5b049050919050565b6000806000841415611d8f5760009150611dae565b8284029050828482811515611da057fe5b04141515611daa57fe5b8091505b5092915050565b6000818310151515611dc357fe5b818303905092915050565b6000808284019050838110151515611de257fe5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611e2d57805160ff1916838001178555611e5b565b82800160010185558215611e5b579182015b82811115611e5a578251825591602001919060010190611e3f565b5b509050611e689190611e6c565b5090565b611e8e91905b80821115611e8a576000816000905550600101611e72565b5090565b905600a165627a7a7230582042490077827efb1d2e18d063ee25eeae043d42d756a41b8e08d5b68542d7d78e0029

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

000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000003d6a8a3d37feca3f8e988a25d267312d35fe3879000000000000000000000000000000000000000000000000000000000000000d5045473a555320446f6c6c61720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000075045473a55534400000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): PEG:US Dollar
Arg [1] : _symbol (string): PEG:USD
Arg [2] : _pegInstance (address): 0x3d6A8A3d37FEca3F8e988a25d267312d35FE3879

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 0000000000000000000000003d6a8a3d37feca3f8e988a25d267312d35fe3879
Arg [3] : 000000000000000000000000000000000000000000000000000000000000000d
Arg [4] : 5045473a555320446f6c6c617200000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [6] : 5045473a55534400000000000000000000000000000000000000000000000000


Swarm Source

bzzr://42490077827efb1d2e18d063ee25eeae043d42d756a41b8e08d5b68542d7d78e
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.