ETH Price: $3,483.22 (-0.98%)
Gas: 2 Gwei

Contract

0x622A7D2d30F0F6bc1535355186BEB9fF1cf931B5
 

Overview

ETH Balance

0.021 ETH

Eth Value

$73.15 (@ $3,483.22/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Admin Cancel Col...171715902023-05-02 7:24:23447 days ago1683012263IN
0x622A7D2d...F1cf931B5
0 ETH0.0138980254.1194131
Admin Cancel Col...171661532023-05-01 13:03:35448 days ago1682946215IN
0x622A7D2d...F1cf931B5
0 ETH0.0326206672.8858844
Admin Cancel Col...171661432023-05-01 13:01:35448 days ago1682946095IN
0x622A7D2d...F1cf931B5
0 ETH0.0075803492
Update Contract171661212023-05-01 12:56:59448 days ago1682945819IN
0x622A7D2d...F1cf931B5
0 ETH0.0031574267.14058617
Update Contract171661052023-05-01 12:53:47448 days ago1682945627IN
0x622A7D2d...F1cf931B5
0 ETH0.0125681680.37655915
Cancel Sell159749322022-11-15 10:46:47615 days ago1668509207IN
0x622A7D2d...F1cf931B5
0 ETH0.0012769116
Cancel Sell157311732022-10-12 9:35:47649 days ago1665567347IN
0x622A7D2d...F1cf931B5
0 ETH0.000906713.83519661
Cancel Sell157039202022-10-08 14:18:11653 days ago1665238691IN
0x622A7D2d...F1cf931B5
0 ETH0.0008126310.1824977
Cancel Sell155805582022-09-21 8:22:11670 days ago1663748531IN
0x622A7D2d...F1cf931B5
0 ETH0.000386734.72738995
Buy NFT Bnb154589692022-09-02 11:42:43689 days ago1662118963IN
0x622A7D2d...F1cf931B5
0.7 ETH0.001184117.6120576
Cancel Sell154577012022-09-02 6:53:27689 days ago1662101607IN
0x622A7D2d...F1cf931B5
0 ETH0.00058137.28277394
Sell NFT154278512022-08-28 12:37:20694 days ago1661690240IN
0x622A7D2d...F1cf931B5
0 ETH0.000998784.75114772
Sell NFT154278482022-08-28 12:36:59694 days ago1661690219IN
0x622A7D2d...F1cf931B5
0 ETH0.000154575.15265609
Sell NFT154137442022-08-26 6:17:40696 days ago1661494660IN
0x622A7D2d...F1cf931B5
0 ETH0.001408187.82867719
Sell NFT153879222022-08-22 3:29:57700 days ago1661138997IN
0x622A7D2d...F1cf931B5
0 ETH0.000278938.83306338
Update Price153640452022-08-18 8:55:14704 days ago1660812914IN
0x622A7D2d...F1cf931B5
0 ETH0.0005700511.30541609
Buy NFT152827252022-08-05 13:56:01717 days ago1659707761IN
0x622A7D2d...F1cf931B5
0 ETH0.0029501615.81282184
Cancel Sell152425082022-07-30 7:42:32723 days ago1659166952IN
0x622A7D2d...F1cf931B5
0 ETH0.000390564.89315124
Buy NFT Bnb152026692022-07-24 2:31:06730 days ago1658629866IN
0x622A7D2d...F1cf931B5
0.3 ETH0.001094747.03756734
Cancel Sell151978122022-07-23 8:17:26730 days ago1658564246IN
0x622A7D2d...F1cf931B5
0 ETH0.000611797.66481837
Cancel Sell151974942022-07-23 7:04:04730 days ago1658559844IN
0x622A7D2d...F1cf931B5
0 ETH0.0008072810.11389436
Sell NFT151967822022-07-23 4:31:16730 days ago1658550676IN
0x622A7D2d...F1cf931B5
0 ETH0.001060286.26462725
Cancel Sell151966422022-07-23 3:57:24730 days ago1658548644IN
0x622A7D2d...F1cf931B5
0 ETH0.0008986611.25876993
Cancel Sell151758222022-07-19 22:36:25734 days ago1658270185IN
0x622A7D2d...F1cf931B5
0 ETH0.0023755129.76133035
Sell NFT151310152022-07-13 0:07:31741 days ago1657670851IN
0x622A7D2d...F1cf931B5
0 ETH0.002510515.26493046
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
154589692022-09-02 11:42:43689 days ago1662118963
0x622A7D2d...F1cf931B5
0.665 ETH
154589692022-09-02 11:42:43689 days ago1662118963
0x622A7D2d...F1cf931B5
0.665 ETH
154589692022-09-02 11:42:43689 days ago1662118963
0x622A7D2d...F1cf931B5
0.0175 ETH
154589692022-09-02 11:42:43689 days ago1662118963
0x622A7D2d...F1cf931B5
0.0175 ETH
154589692022-09-02 11:42:43689 days ago1662118963
0x622A7D2d...F1cf931B5
0.7 ETH
152026692022-07-24 2:31:06730 days ago1658629866
0x622A7D2d...F1cf931B5
0.285 ETH
152026692022-07-24 2:31:06730 days ago1658629866
0x622A7D2d...F1cf931B5
0.285 ETH
152026692022-07-24 2:31:06730 days ago1658629866
0x622A7D2d...F1cf931B5
0.0075 ETH
152026692022-07-24 2:31:06730 days ago1658629866
0x622A7D2d...F1cf931B5
0.0075 ETH
152026692022-07-24 2:31:06730 days ago1658629866
0x622A7D2d...F1cf931B5
0.3 ETH
151064042022-07-09 5:18:05744 days ago1657343885
0x622A7D2d...F1cf931B5
0.285 ETH
151064042022-07-09 5:18:05744 days ago1657343885
0x622A7D2d...F1cf931B5
0.285 ETH
151064042022-07-09 5:18:05744 days ago1657343885
0x622A7D2d...F1cf931B5
0.0075 ETH
151064042022-07-09 5:18:05744 days ago1657343885
0x622A7D2d...F1cf931B5
0.0075 ETH
151064042022-07-09 5:18:05744 days ago1657343885
0x622A7D2d...F1cf931B5
0.3 ETH
150824332022-07-05 12:11:09748 days ago1657023069
0x622A7D2d...F1cf931B5
0.266 ETH
150824332022-07-05 12:11:09748 days ago1657023069
0x622A7D2d...F1cf931B5
0.266 ETH
150824332022-07-05 12:11:09748 days ago1657023069
0x622A7D2d...F1cf931B5
0.007 ETH
150824332022-07-05 12:11:09748 days ago1657023069
0x622A7D2d...F1cf931B5
0.007 ETH
150824332022-07-05 12:11:09748 days ago1657023069
0x622A7D2d...F1cf931B5
0.28 ETH
150808052022-07-05 6:09:09748 days ago1657001349
0x622A7D2d...F1cf931B5
0.1425 ETH
150808052022-07-05 6:09:09748 days ago1657001349
0x622A7D2d...F1cf931B5
0.1425 ETH
150808052022-07-05 6:09:09748 days ago1657001349
0x622A7D2d...F1cf931B5
0.00375 ETH
150808052022-07-05 6:09:09748 days ago1657001349
0x622A7D2d...F1cf931B5
0.00375 ETH
150808052022-07-05 6:09:09748 days ago1657001349
0x622A7D2d...F1cf931B5
0.15 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DexProxy

Compiler Version
v0.5.0+commit.1d4f565a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-02-28
*/

/**
 *Submitted for verification at Etherscan.io on 2022-02-28
*/

/**
 *Submitted for verification at Etherscan.io on 2022-02-24
*/

/**
 *Submitted for verification at Etherscan.io on 2021-11-03
*/

/**
 *Submitted for verification at Etherscan.io on 2021-11-01
*/

// File: contracts/Proxy/IERC1538.sol

pragma solidity ^0.5.0;

/// @title ERC1538 Transparent Contract Standard
/// @dev Required interface
///  Note: the ERC-165 identifier for this interface is 0x61455567
interface IERC1538 {

    /// @dev This emits when one or a set of functions are updated in a transparent contract.
    ///  The message string should give a short description of the change and why
    ///  the change was made.
    event CommitMessage(string message);

    /// @dev This emits for each function that is updated in a transparent contract.
    ///  functionId is the bytes4 of the keccak256 of the function signature.
    ///  oldDelegate is the delegate contract address of the old delegate contract if
    ///  the function is being replaced or removed.
    ///  oldDelegate is the zero value address(0) if a function is being added for the
    ///  first time.
    ///  newDelegate is the delegate contract address of the new delegate contract if
    ///  the function is being added for the first time or if the function is being
    ///  replaced.
    ///  newDelegate is the zero value address(0) if the function is being removed.
    event FunctionUpdate(bytes4 indexed functionId, address indexed oldDelegate, address indexed newDelegate, string functionSignature);

    /// @notice Updates functions in a transparent contract.
    /// @dev If the value of _delegate is zero then the functions specified
    ///  in _functionSignatures are removed.
    ///  If the value of _delegate is a delegate contract address then the functions
    ///  specified in _functionSignatures will be delegated to that address.
    /// @param _delegate The address of a delegate contract to delegate to or zero
    ///        to remove functions.
    /// @param _functionSignatures A list of function signatures listed one after the other
    /// @param _commitMessage A short description of the change and why it is made
    ///        This message is passed to the CommitMessage event.
    function updateContract(address _delegate, string calldata _functionSignatures, string calldata _commitMessage) external;
}

// File: contracts/Proxy/ProxyBaseStorage.sol

pragma solidity ^0.5.0;

///////////////////////////////////////////////////////////////////////////////////////////////////
/**
 * @title ProxyBaseStorage
 * @dev Defining base storage for the proxy contract.
 */
///////////////////////////////////////////////////////////////////////////////////////////////////

contract ProxyBaseStorage {

    //////////////////////////////////////////// VARS /////////////////////////////////////////////

    // maps functions to the delegate contracts that execute the functions.
    // funcId => delegate contract
    mapping(bytes4 => address) public delegates;

    // array of function signatures supported by the contract.
    bytes[] public funcSignatures;

    // maps each function signature to its position in the funcSignatures array.
    // signature => index+1
    mapping(bytes => uint256) internal funcSignatureToIndex;

    // proxy address of itself, can be used for cross-delegate calls but also safety checking.
    address proxy;

    ///////////////////////////////////////////////////////////////////////////////////////////////

}

// File: contracts/IERC20.sol

pragma solidity ^0.5.0;
/**
 * @dev Interface of the ERC20 standard as defined in the EIP. Does not include
 * the optional functions; to access them see {ERC20Detailed}.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);
    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);
    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);
    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);
    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);
    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    function mint(address recipient, uint256 amount) external returns(bool);
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);
    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
      function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function blindBox(address seller, string calldata tokenURI, bool flag, address to, string calldata ownerId) external returns (uint256);
    function mintAliaForNonCrypto(uint256 price, address from) external returns (bool);
    function nonCryptoNFTVault() external returns(address);
    function mainPerecentage() external returns(uint256);
    function authorPercentage() external returns(uint256);
    function platformPerecentage() external returns(uint256);
    function updateAliaBalance(string calldata stringId, uint256 amount) external returns(bool);
    function getSellDetail(uint256 tokenId) external view returns (address, uint256, uint256, address, uint256, uint256, uint256);
    function getNonCryptoWallet(string calldata ownerId) external view returns(uint256);
    function getNonCryptoOwner(uint256 tokenId) external view returns(string memory);
    function adminOwner(address _address) external view returns(bool);
     function getAuthor(uint256 tokenIdFunction) external view returns (address);
     function _royality(uint256 tokenId) external view returns (uint256);
     function getrevenueAddressBlindBox(string calldata info) external view returns(address);
     function getboxNameByToken(uint256 token) external view returns(string memory);
    //Revenue share
    function addNonCryptoAuthor(string calldata artistId, uint256 tokenId, bool _isArtist) external returns(bool);
    function transferAliaArtist(address buyer, uint256 price, address nftVaultAddress, uint256 tokenId ) external returns(bool);
    function checkArtistOwner(string calldata artistId, uint256 tokenId) external returns(bool);
    function checkTokenAuthorIsArtist(uint256 tokenId) external returns(bool);
    function withdraw(uint) external;
    function deposit() payable external;
    // function approve(address spender, uint256 rawAmount) external;

    // BlindBox ref:https://noborderz.slack.com/archives/C0236PBG601/p1633942033011800?thread_ts=1633941154.010300&cid=C0236PBG601
    function isSellable (string calldata name) external view returns(bool);

    function tokenURI(uint256 tokenId) external view returns (string memory);

    function ownerOf(uint256 tokenId) external view returns (address);

    function burn (uint256 tokenId) external;

}

// File: contracts/INFT.sol

pragma solidity ^0.5.0;

// import "../openzeppelin-solidity/contracts/token/ERC721/IERC721Full.sol";

interface INFT {
    function transferFromAdmin(address owner, address to, uint256 tokenId) external;
    function mintWithTokenURI(address to, string calldata tokenURI) external returns (uint256);
    function getAuthor(uint256 tokenIdFunction) external view returns (address);
    function updateTokenURI(uint256 tokenIdT, string calldata uriT) external;
    //
    function mint(address to, string calldata tokenURI) external returns (uint256);
    function transferOwnership(address newOwner) external;
    function ownerOf(uint256 tokenId) external view returns(address);
    function transferFrom(address owner, address to, uint256 tokenId) external;
}

// File: contracts/IFactory.sol

pragma solidity ^0.5.0;


contract IFactory {
    function create(string calldata name_, string calldata symbol_, address owner_) external returns(address);
    function getCollections(address owner_) external view returns(address [] memory);
}

// File: contracts/LPInterface.sol

pragma solidity ^0.5.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP. Does not include
 * the optional functions; to access them see {ERC20Detailed}.
 */
interface LPInterface {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);

   
}

// File: openzeppelin-solidity/contracts/math/SafeMath.sol

pragma solidity ^0.5.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, "SafeMath: division by zero");
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0, "SafeMath: modulo by zero");
        return a % b;
    }
}

// File: contracts/Proxy/DexStorage.sol

pragma solidity ^0.5.0;






///////////////////////////////////////////////////////////////////////////////////////////////////
/**
 * @title DexStorage
 * @dev Defining dex storage for the proxy contract.
 */
///////////////////////////////////////////////////////////////////////////////////////////////////

contract DexStorage {
  using SafeMath for uint256;
   address x; // dummy variable, never set or use its value in any logic contracts. It keeps garbage value & append it with any value set on it.
   IERC20 ALIA;
   INFT XNFT;
   IFactory factory;
   IERC20 OldNFTDex;
   IERC20 BUSD;
   IERC20 BNB;
   struct RDetails {
       address _address;
       uint256 percentage;
   }
  struct AuthorDetails {
    address _address;
    uint256 royalty;
    string ownerId;
    bool isSecondry;
  }
  // uint256[] public sellList; // this violates generlization as not tracking tokenIds agains nftContracts/collections but ignoring as not using it in logic anywhere (uncommented)
  mapping (uint256 => mapping(address => AuthorDetails)) internal _tokenAuthors;
  mapping (address => bool) public adminOwner;
  address payable public platform;
  address payable public authorVault;
  uint256 internal platformPerecentage;
  struct fixedSell {
  //  address nftContract; // adding to support multiple NFT contracts buy/sell 
    address seller;
    uint256 price;
    uint256 timestamp;
    bool isDollar;
    uint256 currencyType;
  }
  // stuct for auction
  struct auctionSell {
    address seller;
    address nftContract;
    address bidder;
    uint256 minPrice;
    uint256 startTime;
    uint256 endTime;
    uint256 bidAmount;
    bool isDollar;
    uint256 currencyType;
    // address nftAddress;
  }

  
  // tokenId => nftContract => fixedSell
  mapping (uint256 => mapping (address  => fixedSell)) internal _saleTokens;
  mapping(address => bool) public _supportNft;
  // tokenId => nftContract => auctionSell
  mapping(uint256 => mapping ( address => auctionSell)) internal _auctionTokens;
  address payable public nonCryptoNFTVault;
  // tokenId => nftContract => ownerId
  mapping (uint256=> mapping (address => string)) internal _nonCryptoOwners;
  struct balances{
    uint256 bnb;
    uint256 Alia;
    uint256 BUSD;
  }
  mapping (string => balances) internal _nonCryptoWallet;
 
  LPInterface LPAlia;
  LPInterface LPBNB;
  uint256 public adminDiscount;
  address admin;
  mapping (string => address) internal revenueAddressBlindBox;
  mapping (uint256=>string) internal boxNameByToken;
   bool public collectionConfig;
  uint256 public countCopy;
  mapping (uint256=> mapping( address => mapping(uint256 => bool))) _allowedCurrencies;
  IERC20 token;
//   struct offer {
//       address _address;
//       string ownerId;
//       uint256 currencyType;
//       uint256 price;
//   }
//   struct offers {
//       uint256 count;
//       mapping (uint256 => offer) _offer;
//   }
//   mapping(uint256 => mapping(address => offers)) _offers;
  uint256[] allowedArray;

}

// File: openzeppelin-solidity/contracts/ownership/Ownable.sol

pragma solidity ^0.5.0;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be aplied to your functions to restrict their use to
 * the owner.
 */
contract Ownable {
    address internal _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () internal {
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), _owner);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(isOwner(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Returns true if the caller is the current owner.
     */
    function isOwner() public view returns (bool) {
        return msg.sender == _owner;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * > Note: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     */
    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

// File: contracts/Proxy/DexProxy.sol

pragma solidity ^0.5.0;





///////////////////////////////////////////////////////////////////////////////////////////////////
/**
 * @title ProxyReceiver Contract
 * @dev Handles forwarding calls to receiver delegates while offering transparency of updates.
 *      Follows ERC-1538 standard.
 *
 *    NOTE: Not recommended for direct use in a production contract, as no security control.
 *          Provided as simple example only.
 */
///////////////////////////////////////////////////////////////////////////////////////////////////

contract DexProxy is ProxyBaseStorage, DexStorage, IERC1538, Ownable {


    constructor() public {

        proxy = address(this);

        //Adding ERC1538 updateContract function
        bytes memory signature = "updateContract(address,string,string)";
        bytes4 funcId = bytes4(keccak256(signature));
        delegates[funcId] = proxy;
        funcSignatures.push(signature);
        funcSignatureToIndex[signature] = funcSignatures.length;
        emit FunctionUpdate(funcId, address(0), proxy, string(signature));
        emit CommitMessage("Added ERC1538 updateContract function at contract creation");
    }

    ///////////////////////////////////////////////////////////////////////////////////////////////

    function() external payable {
        if (msg.sig == bytes4(0) && msg.value != uint(0)) { // skipping ethers/BNB received to delegate
            return;
        }
        address delegate = delegates[msg.sig];
        require(delegate != address(0), "Function does not exist.");
        assembly {
            let ptr := mload(0x40)
            calldatacopy(ptr, 0, calldatasize)
            let result := delegatecall(gas, delegate, ptr, calldatasize, 0, 0)
            let size := returndatasize
            returndatacopy(ptr, 0, size)
            switch result
            case 0 {revert(ptr, size)}
            default {return (ptr, size)}
        }
    }

    ///////////////////////////////////////////////////////////////////////////////////////////////

    /// @notice Updates functions in a transparent contract.
    /// @dev If the value of _delegate is zero then the functions specified
    ///  in _functionSignatures are removed.
    ///  If the value of _delegate is a delegate contract address then the functions
    ///  specified in _functionSignatures will be delegated to that address.
    /// @param _delegate The address of a delegate contract to delegate to or zero
    /// @param _functionSignatures A list of function signatures listed one after the other
    /// @param _commitMessage A short description of the change and why it is made
    ///        This message is passed to the CommitMessage event.
    function updateContract(address _delegate, string calldata _functionSignatures, string calldata _commitMessage) onlyOwner external {
        // pos is first used to check the size of the delegate contract.
        // After that pos is the current memory location of _functionSignatures.
        // It is used to move through the characters of _functionSignatures
        uint256 pos;
        if(_delegate != address(0)) {
            assembly {
                pos := extcodesize(_delegate)
            }
            require(pos > 0, "_delegate address is not a contract and is not address(0)");
        }

        // creates a bytes version of _functionSignatures
        bytes memory signatures = bytes(_functionSignatures);
        // stores the position in memory where _functionSignatures ends.
        uint256 signaturesEnd;
        // stores the starting position of a function signature in _functionSignatures
        uint256 start;
        assembly {
            pos := add(signatures,32)
            start := pos
            signaturesEnd := add(pos,mload(signatures))
        }
        // the function id of the current function signature
        bytes4 funcId;
        // the delegate address that is being replaced or address(0) if removing functions
        address oldDelegate;
        // the length of the current function signature in _functionSignatures
        uint256 num;
        // the current character in _functionSignatures
        uint256 char;
        // the position of the current function signature in the funcSignatures array
        uint256 index;
        // the last position in the funcSignatures array
        uint256 lastIndex;
        // parse the _functionSignatures string and handle each function
        for (; pos < signaturesEnd; pos++) {
            assembly {char := byte(0,mload(pos))}
            // 0x29 == )
            if (char == 0x29) {
                pos++;
                num = (pos - start);
                start = pos;
                assembly {
                    mstore(signatures,num)
                }
                funcId = bytes4(keccak256(signatures));
                oldDelegate = delegates[funcId];
                if(_delegate == address(0)) {
                    index = funcSignatureToIndex[signatures];
                    require(index != 0, "Function does not exist.");
                    index--;
                    lastIndex = funcSignatures.length - 1;
                    if (index != lastIndex) {
                        funcSignatures[index] = funcSignatures[lastIndex];
                        funcSignatureToIndex[funcSignatures[lastIndex]] = index + 1;
                    }
                    funcSignatures.length--;
                    delete funcSignatureToIndex[signatures];
                    delete delegates[funcId];
                    emit FunctionUpdate(funcId, oldDelegate, address(0), string(signatures));
                }
                else if (funcSignatureToIndex[signatures] == 0) {
                    require(oldDelegate == address(0), "FuncId clash.");
                    delegates[funcId] = _delegate;
                    funcSignatures.push(signatures);
                    funcSignatureToIndex[signatures] = funcSignatures.length;
                    emit FunctionUpdate(funcId, address(0), _delegate, string(signatures));
                }
                else if (delegates[funcId] != _delegate) {
                    delegates[funcId] = _delegate;
                    emit FunctionUpdate(funcId, oldDelegate, _delegate, string(signatures));

                }
                assembly {signatures := add(signatures,num)}
            }
        }
        emit CommitMessage(_commitMessage);
    }

    ///////////////////////////////////////////////////////////////////////////////////////////////

}

///////////////////////////////////////////////////////////////////////////////////////////////////

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"_supportNft","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"funcSignatures","outputs":[{"name":"","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"platform","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"countCopy","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_delegate","type":"address"},{"name":"_functionSignatures","type":"string"},{"name":"_commitMessage","type":"string"}],"name":"updateContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"collectionConfig","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"nonCryptoNFTVault","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes4"}],"name":"delegates","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"adminDiscount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"adminOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"authorVault","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"message","type":"string"}],"name":"CommitMessage","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"functionId","type":"bytes4"},{"indexed":true,"name":"oldDelegate","type":"address"},{"indexed":true,"name":"newDelegate","type":"address"},{"indexed":false,"name":"functionSignature","type":"string"}],"name":"FunctionUpdate","type":"event"}]

60806040523480156200001157600080fd5b5033602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a330600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608060405190810160405280602581526020017f757064617465436f6e747261637428616464726573732c737472696e672c737481526020017f72696e67290000000000000000000000000000000000000000000000000000008152509050600081805190602001209050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018290806001815401808255809150509060018203906000526020600020016000909192909190915090805190602001906200026d9291906200048c565b50506001805490506002836040518082805190602001908083835b602083101515620002af578051825260208201915060208101905060208303925062000288565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902081905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff16827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3234040ce3bd4564874e44810f198910133a1b24c4e84aac87edbf6b458f5353856040518080602001828103825283818151815260200191508051906020019080838360005b83811015620003bb5780820151818401526020810190506200039e565b50505050905090810190601f168015620003e95780820380516001836020036101000a031916815260200191505b509250505060405180910390a47faa1c0a0a78cec2470f9652e5d29540752e7a64d70f926933cebf13afaeda45de60405180806020018281038252603a8152602001807f4164646564204552433135333820757064617465436f6e74726163742066756e81526020017f6374696f6e20617420636f6e7472616374206372656174696f6e00000000000081525060400191505060405180910390a150506200053b565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004cf57805160ff191683800117855562000500565b8280016001018555821562000500579182015b82811115620004ff578251825591602001919060010190620004e2565b5b5090506200050f919062000513565b5090565b6200053891905b80821115620005345760008160009055506001016200051a565b5090565b90565b611c53806200054b6000396000f3fe6080604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631d73cf34146102dd57806326a6860a146103465780634bde38c8146103fa57806358616aa014610451578063614555671461047c5780636b34d72514610577578063715018a6146105a657806372856d82146105bd5780638da5cb5b146106145780638f32d59b1461066b578063a0a2daf01461069a578063aebc082414610734578063e5a999911461075f578063f2fde38b146107c8578063f9f7ad6214610819575b60007c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614801561016d575060003414155b15610177576102db565b600080600080357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156102b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f46756e6374696f6e20646f6573206e6f742065786973742e000000000000000081525060200191505060405180910390fd5b60405136600082376000803683855af43d806000843e81600081146102d7578184f35b8184fd5b005b3480156102e957600080fd5b5061032c6004803603602081101561030057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610870565b604051808215151515815260200191505060405180910390f35b34801561035257600080fd5b5061037f6004803603602081101561036957600080fd5b8101908080359060200190929190505050610890565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103bf5780820151818401526020810190506103a4565b50505050905090810190601f1680156103ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040657600080fd5b5061040f61094b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561045d57600080fd5b50610466610971565b6040518082815260200191505060405180910390f35b34801561048857600080fd5b506105756004803603606081101561049f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156104dc57600080fd5b8201836020820111156104ee57600080fd5b8035906020019184600183028401116401000000008311171561051057600080fd5b90919293919293908035906020019064010000000081111561053157600080fd5b82018360208201111561054357600080fd5b8035906020019184600183028401116401000000008311171561056557600080fd5b9091929391929390505050610977565b005b34801561058357600080fd5b5061058c6115d1565b604051808215151515815260200191505060405180910390f35b3480156105b257600080fd5b506105bb6115e4565b005b3480156105c957600080fd5b506105d2611721565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561062057600080fd5b50610629611747565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561067757600080fd5b50610680611771565b604051808215151515815260200191505060405180910390f35b3480156106a657600080fd5b506106f2600480360360208110156106bd57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506117c9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561074057600080fd5b506107496117fc565b6040518082815260200191505060405180910390f35b34801561076b57600080fd5b506107ae6004803603602081101561078257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611802565b604051808215151515815260200191505060405180910390f35b3480156107d457600080fd5b50610817600480360360208110156107eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611822565b005b34801561082557600080fd5b5061082e6118aa565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60116020528060005260406000206000915054906101000a900460ff1681565b60018181548110151561089f57fe5b906000526020600020016000915090508054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109435780601f1061091857610100808354040283529160200191610943565b820191906000526020600020905b81548152906001019060200180831161092657829003601f168201915b505050505081565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d5481565b61097f611771565b15156109f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141515610acd57853b9050600081111515610acc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001807f5f64656c65676174652061646472657373206973206e6f74206120636f6e747281526020017f61637420616e64206973206e6f7420616464726573732830290000000000000081525060400191505060405180910390fd5b5b606085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505090506000806020830193508390508251840191506000806000806000805b878a101561155d57895160001a925060298314156115505789806001019a5050868a03935089965083895288805190602001209550600080877bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169450600073ffffffffffffffffffffffffffffffffffffffff168f73ffffffffffffffffffffffffffffffffffffffff161415610fde576002896040518082805190602001908083835b602083101515610c475780518252602082019150602081019050602083039250610c22565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902054915060008214151515610cf6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f46756e6374696f6e20646f6573206e6f742065786973742e000000000000000081525060200191505060405180910390fd5b818060019003925050600180805490500390508082141515610df657600181815481101515610d2157fe5b90600052602060002001600183815481101515610d3a57fe5b906000526020600020019080546001816001161561010002031660029004610d63929190611a5b565b50600182016002600183815481101515610d7957fe5b906000526020600020016040518082805460018160011615610100020316600290048015610dde5780601f10610dbc576101008083540402835291820191610dde565b820191906000526020600020905b815481529060010190602001808311610dca575b50509150509081526020016040518091039020819055505b6001805480919060019003610e0b9190611ae2565b506002896040518082805190602001908083835b602083101515610e445780518252602082019150602081019050602083039250610e1f565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009055600080877bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16877bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3234040ce3bd4564874e44810f198910133a1b24c4e84aac87edbf6b458f53538c6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610f9f578082015181840152602081019050610f84565b50505050905090810190601f168015610fcc5780820380516001836020036101000a031916815260200191505b509250505060405180910390a461154a565b600060028a6040518082805190602001908083835b6020831015156110185780518252602082019150602081019050602083039250610ff3565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902054141561132957600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415156110f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f46756e63496420636c6173682e0000000000000000000000000000000000000081525060200191505060405180910390fd5b8e600080887bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018990806001815401808255809150509060018203906000526020600020016000909192909190915090805190602001906111c2929190611b0e565b505060018054905060028a6040518082805190602001908083835b60208310151561120257805182526020820191506020810190506020830392506111dd565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020819055508e73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff16877bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3234040ce3bd4564874e44810f198910133a1b24c4e84aac87edbf6b458f53538c6040518080602001828103825283818151815260200191508051906020019080838360005b838110156112ea5780820151818401526020810190506112cf565b50505050905090810190601f1680156113175780820380516001836020036101000a031916815260200191505b509250505060405180910390a4611549565b8e73ffffffffffffffffffffffffffffffffffffffff16600080887bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611548578e600080887bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508e73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16877bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3234040ce3bd4564874e44810f198910133a1b24c4e84aac87edbf6b458f53538c6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561150d5780820151818401526020810190506114f2565b50505050905090810190601f16801561153a5780820380516001836020036101000a031916815260200191505b509250505060405180910390a45b5b5b83890198505b89806001019a5050610b32565b7faa1c0a0a78cec2470f9652e5d29540752e7a64d70f926933cebf13afaeda45de8c8c60405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a1505050505050505050505050505050565b601c60009054906101000a900460ff1681565b6115ec611771565b1515611660576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b60006020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60185481565b600c6020528060005260406000206000915054906101000a900460ff1681565b61182a611771565b151561189e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6118a7816118d0565b50565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561199b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526020017f646472657373000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611a945780548555611ad1565b82800160010185558215611ad157600052602060002091601f016020900482015b82811115611ad0578254825591600101919060010190611ab5565b5b509050611ade9190611b8e565b5090565b815481835581811115611b0957818360005260206000209182019101611b089190611bb3565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611b4f57805160ff1916838001178555611b7d565b82800160010185558215611b7d579182015b82811115611b7c578251825591602001919060010190611b61565b5b509050611b8a9190611b8e565b5090565b611bb091905b80821115611bac576000816000905550600101611b94565b5090565b90565b611bdc91905b80821115611bd85760008181611bcf9190611bdf565b50600101611bb9565b5090565b90565b50805460018160011615610100020316600290046000825580601f10611c055750611c24565b601f016020900490600052602060002090810190611c239190611b8e565b5b5056fea165627a7a72305820908a2a4ac84875fe228c6d98c8941cb091560a5cd5e5461a7942b7d2e1c4ba600029

Deployed Bytecode

0x6080604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631d73cf34146102dd57806326a6860a146103465780634bde38c8146103fa57806358616aa014610451578063614555671461047c5780636b34d72514610577578063715018a6146105a657806372856d82146105bd5780638da5cb5b146106145780638f32d59b1461066b578063a0a2daf01461069a578063aebc082414610734578063e5a999911461075f578063f2fde38b146107c8578063f9f7ad6214610819575b60007c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614801561016d575060003414155b15610177576102db565b600080600080357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156102b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f46756e6374696f6e20646f6573206e6f742065786973742e000000000000000081525060200191505060405180910390fd5b60405136600082376000803683855af43d806000843e81600081146102d7578184f35b8184fd5b005b3480156102e957600080fd5b5061032c6004803603602081101561030057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610870565b604051808215151515815260200191505060405180910390f35b34801561035257600080fd5b5061037f6004803603602081101561036957600080fd5b8101908080359060200190929190505050610890565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103bf5780820151818401526020810190506103a4565b50505050905090810190601f1680156103ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040657600080fd5b5061040f61094b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561045d57600080fd5b50610466610971565b6040518082815260200191505060405180910390f35b34801561048857600080fd5b506105756004803603606081101561049f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156104dc57600080fd5b8201836020820111156104ee57600080fd5b8035906020019184600183028401116401000000008311171561051057600080fd5b90919293919293908035906020019064010000000081111561053157600080fd5b82018360208201111561054357600080fd5b8035906020019184600183028401116401000000008311171561056557600080fd5b9091929391929390505050610977565b005b34801561058357600080fd5b5061058c6115d1565b604051808215151515815260200191505060405180910390f35b3480156105b257600080fd5b506105bb6115e4565b005b3480156105c957600080fd5b506105d2611721565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561062057600080fd5b50610629611747565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561067757600080fd5b50610680611771565b604051808215151515815260200191505060405180910390f35b3480156106a657600080fd5b506106f2600480360360208110156106bd57600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690602001909291905050506117c9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561074057600080fd5b506107496117fc565b6040518082815260200191505060405180910390f35b34801561076b57600080fd5b506107ae6004803603602081101561078257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611802565b604051808215151515815260200191505060405180910390f35b3480156107d457600080fd5b50610817600480360360208110156107eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611822565b005b34801561082557600080fd5b5061082e6118aa565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60116020528060005260406000206000915054906101000a900460ff1681565b60018181548110151561089f57fe5b906000526020600020016000915090508054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156109435780601f1061091857610100808354040283529160200191610943565b820191906000526020600020905b81548152906001019060200180831161092657829003601f168201915b505050505081565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601d5481565b61097f611771565b15156109f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141515610acd57853b9050600081111515610acc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001807f5f64656c65676174652061646472657373206973206e6f74206120636f6e747281526020017f61637420616e64206973206e6f7420616464726573732830290000000000000081525060400191505060405180910390fd5b5b606085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505090506000806020830193508390508251840191506000806000806000805b878a101561155d57895160001a925060298314156115505789806001019a5050868a03935089965083895288805190602001209550600080877bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169450600073ffffffffffffffffffffffffffffffffffffffff168f73ffffffffffffffffffffffffffffffffffffffff161415610fde576002896040518082805190602001908083835b602083101515610c475780518252602082019150602081019050602083039250610c22565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902054915060008214151515610cf6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f46756e6374696f6e20646f6573206e6f742065786973742e000000000000000081525060200191505060405180910390fd5b818060019003925050600180805490500390508082141515610df657600181815481101515610d2157fe5b90600052602060002001600183815481101515610d3a57fe5b906000526020600020019080546001816001161561010002031660029004610d63929190611a5b565b50600182016002600183815481101515610d7957fe5b906000526020600020016040518082805460018160011615610100020316600290048015610dde5780601f10610dbc576101008083540402835291820191610dde565b820191906000526020600020905b815481529060010190602001808311610dca575b50509150509081526020016040518091039020819055505b6001805480919060019003610e0b9190611ae2565b506002896040518082805190602001908083835b602083101515610e445780518252602082019150602081019050602083039250610e1f565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902060009055600080877bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16877bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3234040ce3bd4564874e44810f198910133a1b24c4e84aac87edbf6b458f53538c6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610f9f578082015181840152602081019050610f84565b50505050905090810190601f168015610fcc5780820380516001836020036101000a031916815260200191505b509250505060405180910390a461154a565b600060028a6040518082805190602001908083835b6020831015156110185780518252602082019150602081019050602083039250610ff3565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902054141561132957600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415156110f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f46756e63496420636c6173682e0000000000000000000000000000000000000081525060200191505060405180910390fd5b8e600080887bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018990806001815401808255809150509060018203906000526020600020016000909192909190915090805190602001906111c2929190611b0e565b505060018054905060028a6040518082805190602001908083835b60208310151561120257805182526020820191506020810190506020830392506111dd565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020819055508e73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff16877bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3234040ce3bd4564874e44810f198910133a1b24c4e84aac87edbf6b458f53538c6040518080602001828103825283818151815260200191508051906020019080838360005b838110156112ea5780820151818401526020810190506112cf565b50505050905090810190601f1680156113175780820380516001836020036101000a031916815260200191505b509250505060405180910390a4611549565b8e73ffffffffffffffffffffffffffffffffffffffff16600080887bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611548578e600080887bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508e73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16877bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167f3234040ce3bd4564874e44810f198910133a1b24c4e84aac87edbf6b458f53538c6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561150d5780820151818401526020810190506114f2565b50505050905090810190601f16801561153a5780820380516001836020036101000a031916815260200191505b509250505060405180910390a45b5b5b83890198505b89806001019a5050610b32565b7faa1c0a0a78cec2470f9652e5d29540752e7a64d70f926933cebf13afaeda45de8c8c60405180806020018281038252848482818152602001925080828437600081840152601f19601f820116905080830192505050935050505060405180910390a1505050505050505050505050505050565b601c60009054906101000a900460ff1681565b6115ec611771565b1515611660576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b60006020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60185481565b600c6020528060005260406000206000915054906101000a900460ff1681565b61182a611771565b151561189e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6118a7816118d0565b50565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561199b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526020017f646472657373000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16602160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380602160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611a945780548555611ad1565b82800160010185558215611ad157600052602060002091601f016020900482015b82811115611ad0578254825591600101919060010190611ab5565b5b509050611ade9190611b8e565b5090565b815481835581811115611b0957818360005260206000209182019101611b089190611bb3565b5b505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611b4f57805160ff1916838001178555611b7d565b82800160010185558215611b7d579182015b82811115611b7c578251825591602001919060010190611b61565b5b509050611b8a9190611b8e565b5090565b611bb091905b80821115611bac576000816000905550600101611b94565b5090565b90565b611bdc91905b80821115611bd85760008181611bcf9190611bdf565b50600101611bb9565b5090565b90565b50805460018160011615610100020316600290046000825580601f10611c055750611c24565b601f016020900490600052602060002090810190611c239190611b8e565b5b5056fea165627a7a72305820908a2a4ac84875fe228c6d98c8941cb091560a5cd5e5461a7942b7d2e1c4ba600029

Deployed Bytecode Sourcemap

20419:6112:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21226:1;21219:9;;21208:20;;;:7;;;;:20;;;;:44;;;;;21250:1;21232:9;:20;;21208:44;21204:127;;;21313:7;;21204:127;21341:16;21360:9;:18;21370:7;;;;21360:18;;;;;;;;;;;;;;;;;;;;;;;;;;;21341:37;;21417:1;21397:22;;:8;:22;;;;21389:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21500:4;21494:11;21540:12;21537:1;21532:3;21519:34;21631:1;21628;21614:12;21609:3;21599:8;21594:3;21581:52;21659:14;21710:4;21707:1;21702:3;21687:28;21736:6;21761:1;21756:26;;;;21818:4;21813:3;21805:18;21756:26;21776:4;21771:3;21764:17;21468:367;20419:6112;16157:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16157:43:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16157:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3194:29;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3194:29:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3194:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3194:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15405:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15405:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;16885:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16885:24:0;;;;;;;;;;;;;;;;;;;;;;;22630:3793;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22630:3793:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22630:3793:0;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;22630:3793:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;22630:3793:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;22630:3793:0;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;22630:3793:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;22630:3793:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;22630:3793:0;;;;;;;;;;;;;;;16852:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16852:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;19073:140;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19073:140:0;;;;;;16331:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16331:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;18262:79;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18262:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;18628:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18628:92:0;;;;;;;;;;;;;;;;;;;;;;;;;;;3078:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3078:43:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3078:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16682:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16682:28:0;;;;;;;;;;;;;;;;;;;;;;;15357:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15357:43:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15357:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19368:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19368:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19368:109:0;;;;;;;;;;;;;;;;;;;;;;15441:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15441:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;16157:43;;;;;;;;;;;;;;;;;;;;;;:::o;3194:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15405:31::-;;;;;;;;;;;;;:::o;16885:24::-;;;;:::o;22630:3793::-;18474:9;:7;:9::i;:::-;18466:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23005:11;23051:1;23030:23;;:9;:23;;;;23027:218;;;23117:9;23105:22;23098:29;;23170:1;23164:3;:7;23156:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23027:218;23316:23;23348:19;;23316:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;23316:52:0;;;;;;;;23453:21;23573:13;23643:2;23632:10;23628:18;23621:25;;23669:3;23660:12;;23717:10;23711:17;23707:3;23703:26;23686:43;;23812:13;23928:19;24038:11;24117:12;24227:13;24309:17;24411:1960;24424:13;24418:3;:19;24411:1960;;;24492:3;24486:10;24484:1;24479:18;24471:26;;24550:4;24542;:12;24538:1822;;;24575:5;;;;;;;24612;24606:3;:11;24599:19;;24645:3;24637:11;;24717:3;24706:10;24699:22;24784:10;24774:21;;;;;;24758:38;;24829:9;:17;24839:6;24829:17;;;;;;;;;;;;;;;;;;;;;;;;;;;24815:31;;24889:1;24868:23;;:9;:23;;;24865:1418;;;24924:20;24945:10;24924:32;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;24924:32:0;;;;;;;;;;;;;;;;;;;;;;24916:40;;24996:1;24987:5;:10;;24979:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25049:7;;;;;;;;25115:1;25091:14;:21;;;;:25;25079:37;;25152:9;25143:5;:18;;25139:210;;;25214:14;25229:9;25214:25;;;;;;;;;;;;;;;;;25190:14;25205:5;25190:21;;;;;;;;;;;;;;;;;:49;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25324:1;25316:5;:9;25266:20;25287:14;25302:9;25287:25;;;;;;;;;;;;;;;;;25266:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;25139:210;25371:14;:23;;;;;;;;;;;;:::i;:::-;;25424:20;25445:10;25424:32;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;25424:32:0;;;;;;;;;;;;;;;;;;;;;25417:39;;;25486:9;:17;25496:6;25486:17;;;;;;;;;;;;;;;;;;25479:24;;;;;;;;;;;25575:1;25531:67;;25554:11;25531:67;;25546:6;25531:67;;;;25586:10;25531:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;25531:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24865:1418;;;25681:1;25645:20;25666:10;25645:32;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;25645:32:0;;;;;;;;;;;;;;;;;;;;;;:37;25641:642;;;25738:1;25715:25;;:11;:25;;;25707:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25801:9;25781;:17;25791:6;25781:17;;;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;25833:14;25853:10;25833:31;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;25833:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;25922:14;:21;;;;25887:20;25908:10;25887:32;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;25887:32:0;;;;;;;;;;;;;;;;;;;;;:56;;;;26006:9;25971:65;;26002:1;25971:65;;25986:6;25971:65;;;;26024:10;25971:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;25971:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25641:642;;;26104:9;26083:30;;:9;:17;26093:6;26083:17;;;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;;26079:204;;;26158:9;26138;:17;26148:6;26138:17;;;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;26231:9;26195:66;;26218:11;26195:66;;26210:6;26195:66;;;;26249:10;26195:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;26195:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26079:204;25641:642;24865:1418;26340:3;26329:10;26325:19;26311:33;;26310:35;24439:5;;;;;;;24411:1960;;;26386:29;26400:14;;26386:29;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;26386:29:0;;;;;;;;;;;;;;18531:1;;;;;;;;;;22630:3793;;;;;:::o;16852:28::-;;;;;;;;;;;;;:::o;19073:140::-;18474:9;:7;:9::i;:::-;18466:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19172:1;19135:40;;19156:6;;;;;;;;;;;19135:40;;;;;;;;;;;;19203:1;19186:6;;:19;;;;;;;;;;;;;;;;;;19073:140::o;16331:40::-;;;;;;;;;;;;;:::o;18262:79::-;18300:7;18327:6;;;;;;;;;;;18320:13;;18262:79;:::o;18628:92::-;18668:4;18706:6;;;;;;;;;;;18692:20;;:10;:20;;;18685:27;;18628:92;:::o;3078:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;16682:28::-;;;;:::o;15357:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;19368:109::-;18474:9;:7;:9::i;:::-;18466:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19441:28;19460:8;19441:18;:28::i;:::-;19368:109;:::o;15441:34::-;;;;;;;;;;;;;:::o;19583:229::-;19677:1;19657:22;;:8;:22;;;;19649:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19767:8;19738:38;;19759:6;;;;;;;;;;;19738:38;;;;;;;;;;;;19796:8;19787:6;;:17;;;;;;;;;;;;;;;;;;19583:229;:::o;20419:6112::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o

Swarm Source

bzzr://908a2a4ac84875fe228c6d98c8941cb091560a5cd5e5461a7942b7d2e1c4ba60

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.