Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
889,389,933 vBZRX
Holders
699
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
2,088 vBZRXValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
BZRXVestingToken
Compiler Version
v0.5.17+commit.d19bba13
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-07-11 */ /** * Copyright 2017-2020, bZeroX, LLC <https://bzx.network/>. All Rights Reserved. * Licensed under the Apache License, Version 2.0. */ pragma solidity 0.5.17; contract IERC20 { string public name; uint8 public decimals; string public symbol; function totalSupply() public view returns (uint256); function balanceOf(address _who) public view returns (uint256); function allowance(address _owner, address _spender) public view returns (uint256); function approve(address _spender, uint256 _value) public returns (bool); function transfer(address _to, uint256 _value) public returns (bool); function transferFrom(address _from, address _to, uint256 _value) public returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ contract Context { // Empty internal constructor, to prevent people from mistakenly deploying // an instance of this contract, which should be used via inheritance. constructor () internal { } // solhint-disable-previous-line no-empty-blocks function _msgSender() internal view returns (address payable) { return msg.sender; } function _msgData() internal view returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } /** * @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 applied to your functions to restrict their use to * the owner. */ contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @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(), "unauthorized"); _; } /** * @dev Returns true if the caller is the current owner. */ function isOwner() public view returns (bool) { return _msgSender() == _owner; } /** * @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; } } /** * Copyright (C) 2019 Aragon One <https://aragon.one/> * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ /** * @title Checkpointing * @notice Checkpointing library for keeping track of historical values based on an arbitrary time * unit (e.g. seconds or block numbers). * @dev Adapted from: * - Checkpointing (https://github.com/aragonone/voting-connectors/blob/master/shared/contract-utils/contracts/Checkpointing.sol) */ library Checkpointing { struct Checkpoint { uint256 time; uint256 value; } struct History { Checkpoint[] history; } function addCheckpoint( History storage _self, uint256 _time, uint256 _value) internal { uint256 length = _self.history.length; if (length == 0) { _self.history.push(Checkpoint(_time, _value)); } else { Checkpoint storage currentCheckpoint = _self.history[length - 1]; uint256 currentCheckpointTime = currentCheckpoint.time; if (_time > currentCheckpointTime) { _self.history.push(Checkpoint(_time, _value)); } else if (_time == currentCheckpointTime) { currentCheckpoint.value = _value; } else { // ensure list ordering revert("past-checkpoint"); } } } function getValueAt( History storage _self, uint256 _time) internal view returns (uint256) { return _getValueAt(_self, _time); } function lastUpdated( History storage _self) internal view returns (uint256) { uint256 length = _self.history.length; if (length != 0) { return _self.history[length - 1].time; } } function latestValue( History storage _self) internal view returns (uint256) { uint256 length = _self.history.length; if (length != 0) { return _self.history[length - 1].value; } } function _getValueAt( History storage _self, uint256 _time) private view returns (uint256) { uint256 length = _self.history.length; // Short circuit if there's no checkpoints yet // Note that this also lets us avoid using SafeMath later on, as we've established that // there must be at least one checkpoint if (length == 0) { return 0; } // Check last checkpoint uint256 lastIndex = length - 1; Checkpoint storage lastCheckpoint = _self.history[lastIndex]; if (_time >= lastCheckpoint.time) { return lastCheckpoint.value; } // Check first checkpoint (if not already checked with the above check on last) if (length == 1 || _time < _self.history[0].time) { return 0; } // Do binary search // As we've already checked both ends, we don't need to check the last checkpoint again uint256 low = 0; uint256 high = lastIndex - 1; while (high != low) { uint256 mid = (high + low + 1) / 2; // average, ceil round Checkpoint storage checkpoint = _self.history[mid]; uint256 midTime = checkpoint.time; if (_time > midTime) { low = mid; } else if (_time < midTime) { // Note that we don't need SafeMath here because mid must always be greater than 0 // from the while condition high = mid - 1; } else { // _time == midTime return checkpoint.value; } } return _self.history[low].value; } } contract CheckpointingToken is IERC20 { using Checkpointing for Checkpointing.History; mapping (address => mapping (address => uint256)) internal allowances_; mapping (address => Checkpointing.History) internal balancesHistory_; struct Checkpoint { uint256 time; uint256 value; } struct History { Checkpoint[] history; } // override this function if a totalSupply should be tracked function totalSupply() public view returns (uint256) { return 0; } function balanceOf( address _owner) public view returns (uint256) { return balanceOfAt(_owner, block.number); } function balanceOfAt( address _owner, uint256 _blockNumber) public view returns (uint256) { return balancesHistory_[_owner].getValueAt(_blockNumber); } function allowance( address _owner, address _spender) public view returns (uint256) { return allowances_[_owner][_spender]; } function approve( address _spender, uint256 _value) public returns (bool) { allowances_[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); return true; } function transfer( address _to, uint256 _value) public returns (bool) { return transferFrom( msg.sender, _to, _value ); } function transferFrom( address _from, address _to, uint256 _value) public returns (bool) { uint256 previousBalanceFrom = balanceOfAt(_from, block.number); require(previousBalanceFrom >= _value, "insufficient-balance"); if (_from != msg.sender && allowances_[_from][msg.sender] != uint(-1)) { require(allowances_[_from][msg.sender] >= _value, "insufficient-allowance"); allowances_[_from][msg.sender] = allowances_[_from][msg.sender] - _value; // overflow not possible } balancesHistory_[_from].addCheckpoint( block.number, previousBalanceFrom - _value // overflow not possible ); balancesHistory_[_to].addCheckpoint( block.number, add( balanceOfAt(_to, block.number), _value ) ); emit Transfer(_from, _to, _value); return true; } function _getBlockNumber() internal view returns (uint256) { return block.number; } function _getTimestamp() internal view returns (uint256) { return block.timestamp; } function add( uint256 x, uint256 y) internal pure returns (uint256 c) { require((c = x + y) >= x, "addition-overflow"); } function sub( uint256 x, uint256 y) internal pure returns (uint256 c) { require((c = x - y) <= x, "subtraction-overflow"); } function mul( uint256 a, uint256 b) internal pure returns (uint256 c) { if (a == 0) { return 0; } require((c = a * b) / a == b, "multiplication-overflow"); } function div( uint256 a, uint256 b) internal pure returns (uint256 c) { require(b != 0, "division by zero"); c = a / b; } } contract BZRXVestingToken is CheckpointingToken, Ownable { event Claim( address indexed owner, uint256 value ); string public constant name = "bZx Vesting Token"; string public constant symbol = "vBZRX"; uint8 public constant decimals = 18; uint256 public constant cliffDuration = 15768000; // 86400 * 365 * 0.5 uint256 public constant vestingDuration = 126144000; // 86400 * 365 * 4 uint256 internal constant vestingDurationAfterCliff_ = 110376000; // 86400 * 365 * 3.5 uint256 public constant vestingStartTimestamp = 1594648800; // start_time uint256 public constant vestingCliffTimestamp = vestingStartTimestamp + cliffDuration; uint256 public constant vestingEndTimestamp = vestingStartTimestamp + vestingDuration; uint256 public constant vestingLastClaimTimestamp = vestingEndTimestamp + 86400 * 365; uint256 public totalClaimed; // total claimed since start IERC20 public constant BZRX = IERC20(0x56d811088235F11C8920698a204A5010a788f4b3); uint256 internal constant startingBalance_ = 889389933e18; // 889,389,933 BZRX Checkpointing.History internal totalSupplyHistory_; mapping (address => uint256) internal lastClaimTime_; mapping (address => uint256) internal userTotalClaimed_; bool internal isInitialized_; // sets up vesting and deposits BZRX function initialize() external { require(!isInitialized_, "already initialized"); balancesHistory_[msg.sender].addCheckpoint(_getBlockNumber(), startingBalance_); totalSupplyHistory_.addCheckpoint(_getBlockNumber(), startingBalance_); emit Transfer( address(0), msg.sender, startingBalance_ ); BZRX.transferFrom( msg.sender, address(this), startingBalance_ ); isInitialized_ = true; } function transferFrom( address _from, address _to, uint256 _value) public returns (bool) { _claim(_from); if (_from != _to) { _claim(_to); } return super.transferFrom( _from, _to, _value ); } // user can claim vested BZRX function claim() public { _claim(msg.sender); } // user can burn remaining vBZRX tokens once fully vested; unclaimed BZRX with be withdrawn function burn() external { require(_getTimestamp() >= vestingEndTimestamp, "not fully vested"); _claim(msg.sender); uint256 _blockNumber = _getBlockNumber(); uint256 balanceBefore = balanceOfAt(msg.sender, _blockNumber); balancesHistory_[msg.sender].addCheckpoint(_blockNumber, 0); totalSupplyHistory_.addCheckpoint(_blockNumber, totalSupplyAt(_blockNumber) - balanceBefore); // overflow not possible emit Transfer( msg.sender, address(0), balanceBefore ); } // funds unclaimed one year after vesting ends (5 years) can be rescued function rescue( address _receiver, uint256 _amount) external onlyOwner { require(_getTimestamp() > vestingLastClaimTimestamp, "unauthorized"); BZRX.transfer( _receiver, _amount ); } function totalSupply() public view returns (uint256) { return totalSupplyAt(_getBlockNumber()); } function totalSupplyAt( uint256 _blockNumber) public view returns (uint256) { return totalSupplyHistory_.getValueAt(_blockNumber); } // total that has vested, but has not yet been claimed by a user function vestedBalanceOf( address _owner) public view returns (uint256) { uint256 lastClaim = lastClaimTime_[_owner]; if (lastClaim < _getTimestamp()) { return _totalVested( balanceOfAt(_owner, _getBlockNumber()), lastClaim ); } } // total that has not yet vested function vestingBalanceOf( address _owner) public view returns (uint256 balance) { balance = balanceOfAt(_owner, _getBlockNumber()); if (balance != 0) { uint256 lastClaim = lastClaimTime_[_owner]; if (lastClaim < _getTimestamp()) { balance = sub( balance, _totalVested( balance, lastClaim ) ); } } } // total that has been claimed by a user function claimedBalanceOf( address _owner) public view returns (uint256) { return userTotalClaimed_[_owner]; } // total vested since start (claimed + unclaimed) function totalVested() external view returns (uint256) { return _totalVested(startingBalance_, 0); } // total unclaimed since start function totalUnclaimed() external view returns (uint256) { return sub( _totalVested(startingBalance_, 0), totalClaimed ); } function _claim( address _owner) internal { uint256 vested = vestedBalanceOf(_owner); if (vested != 0) { userTotalClaimed_[_owner] = add(userTotalClaimed_[_owner], vested); totalClaimed = add(totalClaimed, vested); BZRX.transfer( _owner, vested ); emit Claim( _owner, vested ); } lastClaimTime_[_owner] = _getTimestamp(); } function _totalVested( uint256 _proportionalSupply, uint256 _lastClaimTime) internal view returns (uint256) { uint256 currentTimeForVesting = _getTimestamp(); if (currentTimeForVesting <= vestingCliffTimestamp || _lastClaimTime >= vestingEndTimestamp || currentTimeForVesting > vestingLastClaimTimestamp) { // time cannot be before vesting starts // OR all vested token has already been claimed // OR time cannot be after last claim date return 0; } if (_lastClaimTime < vestingCliffTimestamp) { // vesting starts at the cliff timestamp _lastClaimTime = vestingCliffTimestamp; } if (currentTimeForVesting > vestingEndTimestamp) { // vesting ends at the end timestamp currentTimeForVesting = vestingEndTimestamp; } uint256 timeSinceClaim = sub(currentTimeForVesting, _lastClaimTime); return mul(_proportionalSupply, timeSinceClaim) / vestingDurationAfterCliff_; // will never divide by 0 } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":true,"inputs":[],"name":"BZRX","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"name":"balanceOfAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"claimedBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cliffDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescue","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"name":"totalSupplyAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalUnclaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalVested","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"vestedBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"vestingBalanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vestingCliffTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vestingDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vestingEndTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vestingLastClaimTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vestingStartTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405260006100176001600160e01b0361006a16565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006e565b3390565b6114ad8061007d6000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80637a4e4ecf1161010f578063c96f14b8116100a2578063d85349f711610071578063d85349f7146104dc578063dd62ed3e146104e4578063f2fde38b14610512578063f30127a514610538576101e5565b8063c96f14b8146104bc578063caced914146104c4578063d54ad2a1146104cc578063d6ddd21b146104d4576101e5565b806395d89b41116100de57806395d89b4114610445578063981b24d01461044d578063a9059cbb1461046a578063c8de1d5614610496576101e5565b80637a4e4ecf146103e55780638129fc1c146104115780638da5cb5b146104195780638f32d59b1461043d576101e5565b80633032bbe8116101875780634e71d92d116101565780634e71d92d146103835780634ee2cd7e1461038b57806351db5688146103b757806370a08231146103bf576101e5565b80633032bbe81461032d578063313ce5671461033557806336ca03651461035357806344df8e7014610379576101e5565b80631514617e116101c35780631514617e146102df57806318160ddd146102e7578063199cbc54146102ef57806323b872dd146102f7576101e5565b806306fdde03146101ea578063095ea7b3146102675780630e2d1a2a146102a7575b600080fd5b6101f2610540565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022c578181015183820152602001610214565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102936004803603604081101561027d57600080fd5b506001600160a01b03813516906020013561056d565b604080519115158252519081900360200190f35b6102cd600480360360208110156102bd57600080fd5b50356001600160a01b03166105d4565b60408051918252519081900360200190f35b6102cd610625565b6102cd61062d565b6102cd610644565b6102936004803603606081101561030d57600080fd5b506001600160a01b0381358116916020810135909116906040013561065d565b6102cd61069d565b61033d6106a5565b6040805160ff9092168252519081900360200190f35b6102cd6004803603602081101561036957600080fd5b50356001600160a01b03166106aa565b610381610702565b005b6103816107f5565b6102cd600480360360408110156103a157600080fd5b506001600160a01b038135169060200135610800565b6102cd610828565b6102cd600480360360208110156103d557600080fd5b50356001600160a01b0316610830565b610381600480360360408110156103fb57600080fd5b506001600160a01b03813516906020013561083c565b610381610965565b610421610af6565b604080516001600160a01b039092168252519081900360200190f35b610293610b05565b6101f2610b2b565b6102cd6004803603602081101561046357600080fd5b5035610b4c565b6102936004803603604081101561048057600080fd5b506001600160a01b038135169060200135610b5f565b6102cd600480360360208110156104ac57600080fd5b50356001600160a01b0316610b6c565b6102cd610b87565b6102cd610bab565b6102cd610bb3565b6102cd610bb9565b6102cd610bc1565b6102cd600480360360408110156104fa57600080fd5b506001600160a01b0381358116916020013516610bc8565b6103816004803603602081101561052857600080fd5b50356001600160a01b0316610bf3565b610421610c47565b60405180604001604052806011815260200170312d3c102b32b9ba34b733902a37b5b2b760791b81525081565b3360008181526003602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b6001600160a01b0381166000908152600860205260408120546105f5610c5f565b81101561061e576106166106108461060b610c63565b610800565b82610c67565b915050610620565b505b919050565b630784ce0081565b600061063f61063a610c63565b610b4c565b905090565b600061063f6b02dfafa4e0948fa0719400006000610c67565b600061066884610cfd565b826001600160a01b0316846001600160a01b03161461068a5761068a83610cfd565b610695848484610e53565b949350505050565b63669136e081565b601281565b60006106b88261060b610c63565b90508015610620576001600160a01b0382166000908152600860205260409020546106e1610c5f565b81101561061e576106fb826106f68484610c67565b61104a565b9392505050565b63669136e061070f610c5f565b1015610755576040805162461bcd60e51b815260206004820152601060248201526f1b9bdd08199d5b1b1e481d995cdd195960821b604482015290519081900360640190fd5b61075e33610cfd565b6000610768610c63565b905060006107763383610800565b33600090815260046020526040812091925061079a9190849063ffffffff61109916565b6107b982826107a885610b4c565b60079291900363ffffffff61109916565b60408051828152905160009133917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6107fe33610cfd565b565b6001600160a01b03821660009081526004602052604081206106fb908363ffffffff6111a616565b635ffd02a081565b60006105ce8243610800565b610844610b05565b610884576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6368726a60610891610c5f565b116108d2576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6040805163a9059cbb60e01b81526001600160a01b03841660048201526024810183905290517356d811088235f11c8920698a204a5010a788f4b39163a9059cbb9160448083019260209291908290030181600087803b15801561093557600080fd5b505af1158015610949573d6000803e3d6000fd5b505050506040513d602081101561095f57600080fd5b50505050565b600a5460ff16156109b3576040805162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015290519081900360640190fd5b6109e66109be610c63565b336000908152600460205260409020906b02dfafa4e0948fa07194000063ffffffff61109916565b610a0c6109f1610c63565b6007906b02dfafa4e0948fa07194000063ffffffff61109916565b604080516b02dfafa4e0948fa0719400008152905133916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3604080516323b872dd60e01b81523360048201523060248201526b02dfafa4e0948fa071940000604482015290517356d811088235f11c8920698a204a5010a788f4b3916323b872dd9160648083019260209291908290030181600087803b158015610abb57600080fd5b505af1158015610acf573d6000803e3d6000fd5b505050506040513d6020811015610ae557600080fd5b5050600a805460ff19166001179055565b6005546001600160a01b031690565b6005546000906001600160a01b0316610b1c6111b2565b6001600160a01b031614905090565b604051806040016040528060058152602001640ec84b4a4b60db1b81525081565b60006105ce60078363ffffffff6111a616565b60006106fb33848461065d565b6001600160a01b031660009081526009602052604090205490565b600061063f610ba36b02dfafa4e0948fa0719400006000610c67565b60065461104a565b6368726a6081565b60065481565b635f0c68e081565b62f099c081565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b610bfb610b05565b610c3b576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610c44816111b6565b50565b7356d811088235f11c8920698a204a5010a788f4b381565b4290565b4390565b600080610c72610c5f565b9050635ffd02a081111580610c8b575063669136e08310155b80610c9957506368726a6081115b15610ca85760009150506105ce565b635ffd02a0831015610cbc57635ffd02a092505b63669136e0811115610ccf575063669136e05b6000610cdb828561104a565b90506306943440610cec8683611257565b81610cf357fe5b0495945050505050565b6000610d08826105d4565b90508015610e2b576001600160a01b038216600090815260096020526040902054610d3390826112c7565b6001600160a01b038316600090815260096020526040902055600654610d5990826112c7565b6006556040805163a9059cbb60e01b81526001600160a01b03841660048201526024810183905290517356d811088235f11c8920698a204a5010a788f4b39163a9059cbb9160448083019260209291908290030181600087803b158015610dbf57600080fd5b505af1158015610dd3573d6000803e3d6000fd5b505050506040513d6020811015610de957600080fd5b50506040805182815290516001600160a01b038416917f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d4919081900360200190a25b610e33610c5f565b6001600160a01b0390921660009081526008602052604090209190915550565b600080610e608543610800565b905082811015610eae576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742d62616c616e636560601b604482015290519081900360640190fd5b6001600160a01b0385163314801590610eec57506001600160a01b038516600090815260036020908152604080832033845290915290205460001914155b15610f8d576001600160a01b0385166000908152600360209081526040808320338452909152902054831115610f62576040805162461bcd60e51b8152602060048201526016602482015275696e73756666696369656e742d616c6c6f77616e636560501b604482015290519081900360640190fd5b6001600160a01b03851660009081526003602090815260408083203384529091529020805484900390555b6001600160a01b0385166000908152600460205260409020610fb8904385840363ffffffff61109916565b610ff443610fcf610fc98743610800565b866112c7565b6001600160a01b0387166000908152600460205260409020919063ffffffff61109916565b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3506001949350505050565b808203828111156105ce576040805162461bcd60e51b81526020600482015260146024820152737375627472616374696f6e2d6f766572666c6f7760601b604482015290519081900360640190fd5b8254806110dd57604080518082019091528381526020808201848152865460018181018955600089815293909320935160029091029093019283555191015561095f565b60008460000160018303815481106110f157fe5b6000918252602090912060029091020180549091508085111561114b57604080518082019091528581526020808201868152885460018181018b5560008b815293909320935160029091029093019283555191015561119e565b8085141561115f576001820184905561119e565b6040805162461bcd60e51b815260206004820152600f60248201526e1c185cdd0b58da1958dadc1bda5b9d608a1b604482015290519081900360640190fd5b505050505050565b60006106fb8383611313565b3390565b6001600160a01b0381166111fb5760405162461bcd60e51b81526004018080602001828103825260268152602001806114536026913960400191505060405180910390fd5b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600082611266575060006105ce565b508181028183828161127457fe5b04146105ce576040805162461bcd60e51b815260206004820152601760248201527f6d756c7469706c69636174696f6e2d6f766572666c6f77000000000000000000604482015290519081900360640190fd5b808201828110156105ce576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e2d6f766572666c6f7760781b604482015290519081900360640190fd5b8154600090806113275760009150506105ce565b835460001982019060009086908390811061133e57fe5b9060005260206000209060020201905080600001548510611367576001015492506105ce915050565b826001148061139657508560000160008154811061138157fe5b90600052602060002090600202016000015485105b156113a757600093505050506105ce565b600060001983015b818114611424578754600283830160010104906000908a90839081106113d157fe5b600091825260209091206002909102018054909150808a11156113f65782945061141c565b808a10156114095760018303935061141c565b506001015496506105ce95505050505050565b5050506113af565b87600001828154811061143357fe5b906000526020600020906002020160010154955050505050509291505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a72315820ebedd7f9e77f5dc76d72dad591122cc69cabd43678fcab9d111893b83fd48e5f64736f6c63430005110032
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101e55760003560e01c80637a4e4ecf1161010f578063c96f14b8116100a2578063d85349f711610071578063d85349f7146104dc578063dd62ed3e146104e4578063f2fde38b14610512578063f30127a514610538576101e5565b8063c96f14b8146104bc578063caced914146104c4578063d54ad2a1146104cc578063d6ddd21b146104d4576101e5565b806395d89b41116100de57806395d89b4114610445578063981b24d01461044d578063a9059cbb1461046a578063c8de1d5614610496576101e5565b80637a4e4ecf146103e55780638129fc1c146104115780638da5cb5b146104195780638f32d59b1461043d576101e5565b80633032bbe8116101875780634e71d92d116101565780634e71d92d146103835780634ee2cd7e1461038b57806351db5688146103b757806370a08231146103bf576101e5565b80633032bbe81461032d578063313ce5671461033557806336ca03651461035357806344df8e7014610379576101e5565b80631514617e116101c35780631514617e146102df57806318160ddd146102e7578063199cbc54146102ef57806323b872dd146102f7576101e5565b806306fdde03146101ea578063095ea7b3146102675780630e2d1a2a146102a7575b600080fd5b6101f2610540565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022c578181015183820152602001610214565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102936004803603604081101561027d57600080fd5b506001600160a01b03813516906020013561056d565b604080519115158252519081900360200190f35b6102cd600480360360208110156102bd57600080fd5b50356001600160a01b03166105d4565b60408051918252519081900360200190f35b6102cd610625565b6102cd61062d565b6102cd610644565b6102936004803603606081101561030d57600080fd5b506001600160a01b0381358116916020810135909116906040013561065d565b6102cd61069d565b61033d6106a5565b6040805160ff9092168252519081900360200190f35b6102cd6004803603602081101561036957600080fd5b50356001600160a01b03166106aa565b610381610702565b005b6103816107f5565b6102cd600480360360408110156103a157600080fd5b506001600160a01b038135169060200135610800565b6102cd610828565b6102cd600480360360208110156103d557600080fd5b50356001600160a01b0316610830565b610381600480360360408110156103fb57600080fd5b506001600160a01b03813516906020013561083c565b610381610965565b610421610af6565b604080516001600160a01b039092168252519081900360200190f35b610293610b05565b6101f2610b2b565b6102cd6004803603602081101561046357600080fd5b5035610b4c565b6102936004803603604081101561048057600080fd5b506001600160a01b038135169060200135610b5f565b6102cd600480360360208110156104ac57600080fd5b50356001600160a01b0316610b6c565b6102cd610b87565b6102cd610bab565b6102cd610bb3565b6102cd610bb9565b6102cd610bc1565b6102cd600480360360408110156104fa57600080fd5b506001600160a01b0381358116916020013516610bc8565b6103816004803603602081101561052857600080fd5b50356001600160a01b0316610bf3565b610421610c47565b60405180604001604052806011815260200170312d3c102b32b9ba34b733902a37b5b2b760791b81525081565b3360008181526003602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b6001600160a01b0381166000908152600860205260408120546105f5610c5f565b81101561061e576106166106108461060b610c63565b610800565b82610c67565b915050610620565b505b919050565b630784ce0081565b600061063f61063a610c63565b610b4c565b905090565b600061063f6b02dfafa4e0948fa0719400006000610c67565b600061066884610cfd565b826001600160a01b0316846001600160a01b03161461068a5761068a83610cfd565b610695848484610e53565b949350505050565b63669136e081565b601281565b60006106b88261060b610c63565b90508015610620576001600160a01b0382166000908152600860205260409020546106e1610c5f565b81101561061e576106fb826106f68484610c67565b61104a565b9392505050565b63669136e061070f610c5f565b1015610755576040805162461bcd60e51b815260206004820152601060248201526f1b9bdd08199d5b1b1e481d995cdd195960821b604482015290519081900360640190fd5b61075e33610cfd565b6000610768610c63565b905060006107763383610800565b33600090815260046020526040812091925061079a9190849063ffffffff61109916565b6107b982826107a885610b4c565b60079291900363ffffffff61109916565b60408051828152905160009133917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6107fe33610cfd565b565b6001600160a01b03821660009081526004602052604081206106fb908363ffffffff6111a616565b635ffd02a081565b60006105ce8243610800565b610844610b05565b610884576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6368726a60610891610c5f565b116108d2576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b6040805163a9059cbb60e01b81526001600160a01b03841660048201526024810183905290517356d811088235f11c8920698a204a5010a788f4b39163a9059cbb9160448083019260209291908290030181600087803b15801561093557600080fd5b505af1158015610949573d6000803e3d6000fd5b505050506040513d602081101561095f57600080fd5b50505050565b600a5460ff16156109b3576040805162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015290519081900360640190fd5b6109e66109be610c63565b336000908152600460205260409020906b02dfafa4e0948fa07194000063ffffffff61109916565b610a0c6109f1610c63565b6007906b02dfafa4e0948fa07194000063ffffffff61109916565b604080516b02dfafa4e0948fa0719400008152905133916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3604080516323b872dd60e01b81523360048201523060248201526b02dfafa4e0948fa071940000604482015290517356d811088235f11c8920698a204a5010a788f4b3916323b872dd9160648083019260209291908290030181600087803b158015610abb57600080fd5b505af1158015610acf573d6000803e3d6000fd5b505050506040513d6020811015610ae557600080fd5b5050600a805460ff19166001179055565b6005546001600160a01b031690565b6005546000906001600160a01b0316610b1c6111b2565b6001600160a01b031614905090565b604051806040016040528060058152602001640ec84b4a4b60db1b81525081565b60006105ce60078363ffffffff6111a616565b60006106fb33848461065d565b6001600160a01b031660009081526009602052604090205490565b600061063f610ba36b02dfafa4e0948fa0719400006000610c67565b60065461104a565b6368726a6081565b60065481565b635f0c68e081565b62f099c081565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b610bfb610b05565b610c3b576040805162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015290519081900360640190fd5b610c44816111b6565b50565b7356d811088235f11c8920698a204a5010a788f4b381565b4290565b4390565b600080610c72610c5f565b9050635ffd02a081111580610c8b575063669136e08310155b80610c9957506368726a6081115b15610ca85760009150506105ce565b635ffd02a0831015610cbc57635ffd02a092505b63669136e0811115610ccf575063669136e05b6000610cdb828561104a565b90506306943440610cec8683611257565b81610cf357fe5b0495945050505050565b6000610d08826105d4565b90508015610e2b576001600160a01b038216600090815260096020526040902054610d3390826112c7565b6001600160a01b038316600090815260096020526040902055600654610d5990826112c7565b6006556040805163a9059cbb60e01b81526001600160a01b03841660048201526024810183905290517356d811088235f11c8920698a204a5010a788f4b39163a9059cbb9160448083019260209291908290030181600087803b158015610dbf57600080fd5b505af1158015610dd3573d6000803e3d6000fd5b505050506040513d6020811015610de957600080fd5b50506040805182815290516001600160a01b038416917f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d4919081900360200190a25b610e33610c5f565b6001600160a01b0390921660009081526008602052604090209190915550565b600080610e608543610800565b905082811015610eae576040805162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742d62616c616e636560601b604482015290519081900360640190fd5b6001600160a01b0385163314801590610eec57506001600160a01b038516600090815260036020908152604080832033845290915290205460001914155b15610f8d576001600160a01b0385166000908152600360209081526040808320338452909152902054831115610f62576040805162461bcd60e51b8152602060048201526016602482015275696e73756666696369656e742d616c6c6f77616e636560501b604482015290519081900360640190fd5b6001600160a01b03851660009081526003602090815260408083203384529091529020805484900390555b6001600160a01b0385166000908152600460205260409020610fb8904385840363ffffffff61109916565b610ff443610fcf610fc98743610800565b866112c7565b6001600160a01b0387166000908152600460205260409020919063ffffffff61109916565b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3506001949350505050565b808203828111156105ce576040805162461bcd60e51b81526020600482015260146024820152737375627472616374696f6e2d6f766572666c6f7760601b604482015290519081900360640190fd5b8254806110dd57604080518082019091528381526020808201848152865460018181018955600089815293909320935160029091029093019283555191015561095f565b60008460000160018303815481106110f157fe5b6000918252602090912060029091020180549091508085111561114b57604080518082019091528581526020808201868152885460018181018b5560008b815293909320935160029091029093019283555191015561119e565b8085141561115f576001820184905561119e565b6040805162461bcd60e51b815260206004820152600f60248201526e1c185cdd0b58da1958dadc1bda5b9d608a1b604482015290519081900360640190fd5b505050505050565b60006106fb8383611313565b3390565b6001600160a01b0381166111fb5760405162461bcd60e51b81526004018080602001828103825260268152602001806114536026913960400191505060405180910390fd5b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600082611266575060006105ce565b508181028183828161127457fe5b04146105ce576040805162461bcd60e51b815260206004820152601760248201527f6d756c7469706c69636174696f6e2d6f766572666c6f77000000000000000000604482015290519081900360640190fd5b808201828110156105ce576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e2d6f766572666c6f7760781b604482015290519081900360640190fd5b8154600090806113275760009150506105ce565b835460001982019060009086908390811061133e57fe5b9060005260206000209060020201905080600001548510611367576001015492506105ce915050565b826001148061139657508560000160008154811061138157fe5b90600052602060002090600202016000015485105b156113a757600093505050506105ce565b600060001983015b818114611424578754600283830160010104906000908a90839081106113d157fe5b600091825260209091206002909102018054909150808a11156113f65782945061141c565b808a10156114095760018303935061141c565b506001015496506105ce95505050505050565b5050506113af565b87600001828154811061143357fe5b906000526020600020906002020160010154955050505050509291505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a265627a7a72315820ebedd7f9e77f5dc76d72dad591122cc69cabd43678fcab9d111893b83fd48e5f64736f6c63430005110032
Deployed Bytecode Sourcemap
12310:7347:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12310:7347:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12459:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;12459:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9678:252;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9678:252:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;16297:363;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16297:363:0;-1:-1:-1;;;;;16297:363:0;;:::i;:::-;;;;;;;;;;;;;;;;12698:65;;;:::i;15881:143::-;;;:::i;17546:146::-;;;:::i;14343:345::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;14343:345:0;;;;;;;;;;;;;;;;;:::i;13071:95::-;;;:::i;12561:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16706:558;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16706:558:0;-1:-1:-1;;;;;16706:558:0;;:::i;14911:594::-;;;:::i;:::-;;14731:75;;;:::i;9258:215::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9258:215:0;;;;;;;;:::i;12971:93::-;;;:::i;9084:166::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9084:166:0;-1:-1:-1;;;;;9084:166:0;;:::i;15590:283::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;15590:283:0;;;;;;;;:::i;13774:561::-;;;:::i;2894:79::-;;;:::i;:::-;;;;-1:-1:-1;;;;;2894:79:0;;;;;;;;;;;;;;3240:94;;;:::i;12515:39::-;;;:::i;16032:187::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16032:187:0;;:::i;9938:224::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9938:224:0;;;;;;;;:::i;17318:165::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17318:165:0;-1:-1:-1;;;;;17318:165:0;;:::i;17736:205::-;;;:::i;13173:89::-;;;:::i;13271:27::-;;;:::i;12884:66::-;;;:::i;12605:65::-;;;:::i;9481:189::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9481:189:0;;;;;;;;;;:::i;3489:109::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3489:109:0;-1:-1:-1;;;;;3489:109:0;;:::i;13336:80::-;;;:::i;12459:49::-;;;;;;;;;;;;;;-1:-1:-1;;;12459:49:0;;;;:::o;9678:252::-;9816:10;9782:4;9804:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;9804:33:0;;;;;;;;;;;:42;;;9862:38;;;;;;;9782:4;;9804:33;;9816:10;;9862:38;;;;;;;;-1:-1:-1;9918:4:0;9678:252;;;;;:::o;16297:363::-;-1:-1:-1;;;;;16441:22:0;;16396:7;16441:22;;;:14;:22;;;;;;16490:15;:13;:15::i;:::-;16478:9;:27;16474:179;;;16529:112;16560:38;16572:6;16580:17;:15;:17::i;:::-;16560:11;:38::i;:::-;16617:9;16529:12;:112::i;:::-;16522:119;;;;;16474:179;16297:363;;;;;:::o;12698:65::-;12754:9;12698:65;:::o;15881:143::-;15952:7;15984:32;15998:17;:15;:17::i;:::-;15984:13;:32::i;:::-;15977:39;;15881:143;:::o;17546:146::-;17619:7;17651:33;13470:12;17682:1;17651:12;:33::i;14343:345::-;14471:4;14493:13;14500:5;14493:6;:13::i;:::-;14530:3;-1:-1:-1;;;;;14521:12:0;:5;-1:-1:-1;;;;;14521:12:0;;14517:56;;14550:11;14557:3;14550:6;:11::i;:::-;14592:88;14625:5;14645:3;14663:6;14592:18;:88::i;:::-;14585:95;14343:345;-1:-1:-1;;;;14343:345:0:o;13071:95::-;13127:39;13071:95;:::o;12561:35::-;12594:2;12561:35;:::o;16706:558::-;16806:15;16849:38;16861:6;16869:17;:15;:17::i;16849:38::-;16839:48;-1:-1:-1;16902:12:0;;16898:359;;-1:-1:-1;;;;;16951:22:0;;16931:17;16951:22;;;:14;:22;;;;;;17004:15;:13;:15::i;:::-;16992:9;:27;16988:258;;;17050:180;17076:7;17106:105;17145:7;17179:9;17106:12;:105::i;:::-;17050:3;:180::i;:::-;17040:190;16706:558;-1:-1:-1;;;16706:558:0:o;14911:594::-;13127:39;14969:15;:13;:15::i;:::-;:38;;14961:67;;;;;-1:-1:-1;;;14961:67:0;;;;;;;;;;;;-1:-1:-1;;;14961:67:0;;;;;;;;;;;;;;;15041:18;15048:10;15041:6;:18::i;:::-;15072:20;15095:17;:15;:17::i;:::-;15072:40;;15123:21;15147:37;15159:10;15171:12;15147:11;:37::i;:::-;15212:10;15252:1;15195:28;;;:16;:28;;;;;15123:61;;-1:-1:-1;15195:59:0;;:28;15238:12;;15195:59;:42;:59;:::i;:::-;15265:92;15299:12;15343:13;15313:27;15327:12;15313:13;:27::i;:::-;15265:19;;:92;15313:43;;15265:92;:33;:92;:::i;:::-;15400:97;;;;;;;;15456:1;;15423:10;;15400:97;;;;;;;;;14911:594;;:::o;14731:75::-;14780:18;14787:10;14780:6;:18::i;:::-;14731:75::o;9258:215::-;-1:-1:-1;;;;;9416:24:0;;9384:7;9416:24;;;:16;:24;;;;;:49;;9452:12;9416:49;:35;:49;:::i;12971:93::-;13027:37;12971:93;:::o;9084:166::-;9177:7;9209:33;9221:6;9229:12;9209:11;:33::i;15590:283::-;3106:9;:7;:9::i;:::-;3098:34;;;;;-1:-1:-1;;;3098:34:0;;;;;;;;;;;;-1:-1:-1;;;3098:34:0;;;;;;;;;;;;;;;13229:33;15722:15;:13;:15::i;:::-;:43;15714:68;;;;;-1:-1:-1;;;15714:68:0;;;;;;;;;;;;-1:-1:-1;;;15714:68:0;;;;;;;;;;;;;;;15795:70;;;-1:-1:-1;;;15795:70:0;;-1:-1:-1;;;;;15795:70:0;;;;;;;;;;;;;;13373:42;;15795:13;;:70;;;;;;;;;;;;;;-1:-1:-1;13373:42:0;15795:70;;;5:2:-1;;;;30:1;27;20:12;5:2;15795:70:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15795:70:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;15590:283:0:o;13774:561::-;13839:14;;;;13838:15;13830:47;;;;;-1:-1:-1;;;13830:47:0;;;;;;;;;;;;-1:-1:-1;;;13830:47:0;;;;;;;;;;;;;;;13890:79;13933:17;:15;:17::i;:::-;13907:10;13890:28;;;;:16;:28;;;;;;13470:12;13890:79;:42;:79;:::i;:::-;13980:70;14014:17;:15;:17::i;:::-;13980:19;;13470:12;13980:70;:33;:70;:::i;:::-;14068:100;;;13470:12;14068:100;;;;14116:10;;14099:1;;14068:100;;;;;;;;;14181:112;;;-1:-1:-1;;;14181:112:0;;14213:10;14181:112;;;;14246:4;14181:112;;;;13470:12;14181:112;;;;;;13373:42;;14181:17;;:112;;;;;;;;;;;;;;-1:-1:-1;13373:42:0;14181:112;;;5:2:-1;;;;30:1;27;20:12;5:2;14181:112:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14181:112:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;14306:14:0;:21;;-1:-1:-1;;14306:21:0;14323:4;14306:21;;;13774:561::o;2894:79::-;2959:6;;-1:-1:-1;;;;;2959:6:0;2894:79;:::o;3240:94::-;3320:6;;3280:4;;-1:-1:-1;;;;;3320:6:0;3304:12;:10;:12::i;:::-;-1:-1:-1;;;;;3304:22:0;;3297:29;;3240:94;:::o;12515:39::-;;;;;;;;;;;;;;-1:-1:-1;;;12515:39:0;;;;:::o;16032:187::-;16135:7;16167:44;:19;16198:12;16167:44;:30;:44;:::i;9938:224::-;10038:4;10067:87;10094:10;10119:3;10137:6;10067:12;:87::i;17318:165::-;-1:-1:-1;;;;;17450:25:0;17418:7;17450:25;;;:17;:25;;;;;;;17318:165::o;17736:205::-;17812:7;17844:89;17862:33;13470:12;17893:1;17862:12;:33::i;:::-;17910:12;;17844:3;:89::i;13173:::-;13229:33;13173:89;:::o;13271:27::-;;;;:::o;12884:66::-;12940:10;12884:66;:::o;12605:65::-;12662:8;12605:65;:::o;9481:189::-;-1:-1:-1;;;;;9633:19:0;;;9601:7;9633:19;;;:11;:19;;;;;;;;:29;;;;;;;;;;;;;9481:189::o;3489:109::-;3106:9;:7;:9::i;:::-;3098:34;;;;;-1:-1:-1;;;3098:34:0;;;;;;;;;;;;-1:-1:-1;;;3098:34:0;;;;;;;;;;;;;;;3562:28;3581:8;3562:18;:28::i;:::-;3489:109;:::o;13336:80::-;13373:42;13336:80;:::o;11322:130::-;11429:15;11322:130;:::o;11185:129::-;11294:12;11185:129;:::o;18496:1158::-;18640:7;18665:29;18697:15;:13;:15::i;:::-;18665:47;-1:-1:-1;13027:37:0;18729:46;;;;:100;;-1:-1:-1;13127:39:0;18792:37;;;18729:100;:166;;;-1:-1:-1;13229:33:0;18846:49;;18729:166;18725:377;;;19089:1;19082:8;;;;;18725:377;13027:37;19116:38;;19112:163;;;13027:37;;-1:-1:-1;19112:163:0;13127:39;19289:43;;19285:169;;;-1:-1:-1;13127:39:0;19285:169;19466:22;19491:42;19495:21;19518:14;19491:3;:42::i;:::-;19466:67;;12845:9;19551:40;19555:19;19576:14;19551:3;:40::i;:::-;:69;;;;;;;18496:1158;-1:-1:-1;;;;;18496:1158:0:o;17949:539::-;18025:14;18042:23;18058:6;18042:15;:23::i;:::-;18025:40;-1:-1:-1;18080:11:0;;18076:352;;-1:-1:-1;;;;;18140:25:0;;;;;;:17;:25;;;;;;18136:38;;18167:6;18136:3;:38::i;:::-;-1:-1:-1;;;;;18108:25:0;;;;;;:17;:25;;;;;:66;18208:12;;18204:25;;18222:6;18204:3;:25::i;:::-;18189:12;:40;18246:78;;;-1:-1:-1;;;18246:78:0;;-1:-1:-1;;;;;18246:78:0;;;;;;;;;;;;;;13373:42;;18246:13;;:78;;;;;;;;;;;;;;-1:-1:-1;13373:42:0;18246:78;;;5:2:-1;;;;30:1;27;20:12;5:2;18246:78:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18246:78:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;18346:70:0;;;;;;;;-1:-1:-1;;;;;18346:70:0;;;;;;;;;18246:78;18346:70;;;18076:352;18465:15;:13;:15::i;:::-;-1:-1:-1;;;;;18440:22:0;;;;;;;:14;:22;;;;;:40;;;;-1:-1:-1;17949:539:0:o;10170:1007::-;10298:4;10320:27;10350:32;10362:5;10369:12;10350:11;:32::i;:::-;10320:62;;10424:6;10401:19;:29;;10393:62;;;;;-1:-1:-1;;;10393:62:0;;;;;;;;;;;;-1:-1:-1;;;10393:62:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;10472:19:0;;10481:10;10472:19;;;;:65;;-1:-1:-1;;;;;;10495:18:0;;;;;;:11;:18;;;;;;;;10514:10;10495:30;;;;;;;;-1:-1:-1;;10495:42:0;;10472:65;10468:285;;;-1:-1:-1;;;;;10562:18:0;;;;;;:11;:18;;;;;;;;10581:10;10562:30;;;;;;;;:40;-1:-1:-1;10562:40:0;10554:75;;;;;-1:-1:-1;;;10554:75:0;;;;;;;;;;;;-1:-1:-1;;;10554:75:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;10677:18:0;;;;;;:11;:18;;;;;;;;10696:10;10677:30;;;;;;;;;:39;;;10644:72;;10468:285;-1:-1:-1;;;;;10765:23:0;;;;;;:16;:23;;;;;:143;;10817:12;10844:28;;;10765:143;:37;:143;:::i;:::-;10921:180;10971:12;10998:92;11020:30;11032:3;11037:12;11020:11;:30::i;:::-;11069:6;10998:3;:92::i;:::-;-1:-1:-1;;;;;10921:21:0;;;;;;:16;:21;;;;;;:180;;:35;:180;:::i;:::-;11135:3;-1:-1:-1;;;;;11119:28:0;11128:5;-1:-1:-1;;;;;11119:28:0;;11140:6;11119:28;;;;;;;;;;;;;;;;;;-1:-1:-1;11165:4:0;;10170:1007;-1:-1:-1;;;;10170:1007:0:o;11653:188::-;11797:5;;;11792:16;;;;11784:49;;;;;-1:-1:-1;;;11784:49:0;;;;;;;;;;;;-1:-1:-1;;;11784:49:0;;;;;;;;;;;;;;5194:779;5350:20;;5385:11;5381:585;;5432:25;;;;;;;;;;;;;;;;;;;27:10:-1;;39:1;23:18;;;45:23;;5413:13:0;:45;;;;;;;;;;;;;;;;;;;;;;;5381:585;;;5491:36;5530:5;:13;;5553:1;5544:6;:10;5530:25;;;;;;;;;;;;;;;;;;;;;5602:22;;5530:25;;-1:-1:-1;5645:29:0;;;5641:314;;;5714:25;;;;;;;;;;;;;;;;;;;27:10:-1;;39:1;23:18;;;45:23;;5695:13:0;:45;;;;;;;;;;;;;;;;;;;;;;;5641:314;;;5775:21;5766:5;:30;5762:193;;;5817:23;;;:32;;;5762:193;;;5914:25;;;-1:-1:-1;;;5914:25:0;;;;;;;;;;;;-1:-1:-1;;;5914:25:0;;;;;;;;;;;;;;5762:193;5381:585;;5194:779;;;;:::o;5981:192::-;6108:7;6140:25;6152:5;6159;6140:11;:25::i;1685:98::-;1765:10;1685:98;:::o;3704:229::-;-1:-1:-1;;;;;3778:22:0;;3770:73;;;;-1:-1:-1;;;3770:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3880:6;;3859:38;;-1:-1:-1;;;;;3859:38:0;;;;3880:6;;3859:38;;3880:6;;3859:38;3908:6;:17;;-1:-1:-1;;;;;;3908:17:0;-1:-1:-1;;;;;3908:17:0;;;;;;;;;;3704:229::o;11849:252::-;11953:9;11984:6;11980:47;;-1:-1:-1;12014:1:0;12007:8;;11980:47;-1:-1:-1;12050:5:0;;;12064:1;12059;12050:5;12059:1;12045:15;;;;;:20;12037:56;;;;;-1:-1:-1;;;12037:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;11460:185;11604:5;;;11599:16;;;;11591:46;;;;;-1:-1:-1;;;11591:46:0;;;;;;;;;;;;-1:-1:-1;;;11591:46:0;;;;;;;;;;;;;;6728:1765;6897:20;;6855:7;;7137:11;7133:52;;7172:1;7165:8;;;;;7133:52;7308:24;;-1:-1:-1;;7251:10:0;;;7231:17;;7308:5;;7251:10;;7308:24;;;;;;;;;;;;;;;;7272:60;;7356:14;:19;;;7347:5;:28;7343:88;;7399:20;;;;-1:-1:-1;7392:27:0;;-1:-1:-1;;7392:27:0;7343:88;7536:6;7546:1;7536:11;:44;;;;7559:5;:13;;7573:1;7559:16;;;;;;;;;;;;;;;;;;:21;;;7551:5;:29;7536:44;7532:85;;;7604:1;7597:8;;;;;;;7532:85;7755:11;-1:-1:-1;;7796:13:0;;7822:620;7837:3;7829:4;:11;7822:620;;7961:18;;7890:1;7872:10;;;7885:1;7872:14;7871:20;;7857:11;;7961:5;;7871:20;;7961:18;;;;;;;;;;;;;;;;;;;8012:15;;7961:18;;-1:-1:-1;8048:15:0;;;8044:387;;;8090:3;8084:9;;8044:387;;;8127:7;8119:5;:15;8115:316;;;8313:1;8307:3;:7;8300:14;;8115:316;;;-1:-1:-1;8399:16:0;;;;-1:-1:-1;8392:23:0;;-1:-1:-1;;;;;;8392:23:0;8115:316;7822:620;;;;;;8461:5;:13;;8475:3;8461:18;;;;;;;;;;;;;;;;;;:24;;;8454:31;;;;;;;6728:1765;;;;:::o
Swarm Source
bzzr://ebedd7f9e77f5dc76d72dad591122cc69cabd43678fcab9d111893b83fd48e5f
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.