Contract 0x350a791Bfc2C21F9Ed5d10980Dad2e2638ffa7f6 2

 
Txn Hash
Index
From
To
Value
0xdd2e04bf4b564cd68522a90b74706d94fbd7979d0c87e5e1e8cded7d8c3e498124358742021-09-28 1:58:042 hrs 38 mins ago0xd864caa5036f3dc7c774a69fce772db84aaa521d IN  0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f60 Ether0.0000119472450.015
0xee3caf64df2e1f6afa574b60af72d1de57afb8b47a2d0128c68cb0c5728ce55824355432021-09-28 1:40:322 hrs 56 mins ago0x66b259b9e072e1ae256e738dac2ebc25044178de IN  0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f60 Ether0.000011973090.015
0x95da20945619f6a929ab93dc4600b8da77725236ccefdd63c48fcbe5a39870f024294482021-09-27 21:27:407 hrs 9 mins ago 0x3b8a854ae010865e8c961b7e4cd9f92f8875e5b5 IN  0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f60 Ether0.0000119472450.015
0x612c842f463aee3083b368e8bd0c0b3862b53efb732a20d00edbd1cdaf99d18d24221022021-09-27 15:55:1212 hrs 41 mins ago 0xaa61ed4baf1a85b47a502df3d7a242923c673f61 IN  0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f60 Ether0.0000119472450.015
0xdb7b79e1d37346d294959b82d0abd020b3f675be90b02b756b85f1778471f6ec24206492021-09-27 15:05:3413 hrs 31 mins ago 0xa3f13c688d8e124c774fafe73920d47f457f8c8c IN  0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f60 Ether0.0000119472450.015
0x7bf67be128f66b4de33006adae3e45dd82d333a93e7c1288ffa94e5ea9b4ecaf24186332021-09-27 14:16:5314 hrs 20 mins ago0xfcba88ee3480cd7419a3eba8559d54ed609e86ea IN  0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f60 Ether0.0000119470650.015
0x1bcd37d35ad99783279db8dc3470d372182dd6367ea1df2ce674a0aef4dd383c24156832021-09-27 12:26:3816 hrs 10 mins ago0x9070800b0425edd1f7416b01b73e7bea6c54398e IN  0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f60 Ether0.0000119467050.015
0xd5f8c7804f31bd5d01b936e62cafd475e9ebe5b08b1ea16cc714fc5ec9edcea824104682021-09-27 10:12:0318 hrs 24 mins ago0x23da7bb497f78c65eafae5ec0dc7dc5cdd7c0df4 IN  0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f60 Ether0.0000119443950.015
0x0202705321c15f51897cde1d16528c7fa5b31a3e826d8e340dba56b9912bd65c24077792021-09-27 9:07:5419 hrs 29 mins ago0xd8b8913940d3ef75d7630a60d979d057df3d1f07 IN  0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f60 Ether0.0000119472450.015
0x532d0aad3e4444db3d00b3a118dc932ea4a2bdfe0ba92c2cc83ccd4326ded01724077662021-09-27 9:05:1319 hrs 31 mins ago0xc0b2b0d1ed3d743f409b65821abfd0d249a46bce IN  0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f60 Ether0.0000119472450.015
0xf5937b79c56a960c34ecac5494e450412037bd0bff59f08f0d895c4443ccd0a024076932021-09-27 9:03:2919 hrs 33 mins ago0x266c3f77df443d607c08dbfaca5f92918e74e265 IN  0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f60 Ether0.0000119472450.015
0x6732bd3dc790b615e6e1a29dae5aa448d836966bbb43c1e61e02a261dc403cdb24024762021-09-27 6:47:5021 hrs 49 mins ago0x61f2128798819b9de1e358199486247b3ad0db21 IN  0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f60 Ether0.0000119472450.015
0x7db2ebf99e37185dafe50728aa250937b23375cebc0ef74e2a31d78e5518e33d23904612021-09-27 0:31:281 day 4 hrs ago0x8915101f2f4f6ba41f8a7ac83f3e6a0f630e6170 IN  0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f60 Ether0.0000119470650.015
0x59c7f47b6658709c1830c7f040bc03477472d80a562bff89b55937dd3f1a584623904592021-09-27 0:31:281 day 4 hrs ago0xdd7845fbc7eec31079439aa30a137ee54604c879 IN  0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f60 Ether0.0000119445750.015
0xbb724a33440cf3807c9a2f2a73f46105b053e22375cfbf3504b26dd7fdee8e9423900592021-09-27 0:18:281 day 4 hrs ago0x51743b935f22c2693b4ac02084b17479082761a7 IN  0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f60 Ether0.0000119470650.015
0x44abf965bc162c06ea292204205fccab7ff53cf909ce5cd4fbaee3497dfd633523831252021-09-26 21:01:171 day 7 hrs ago0xede7741a7e7286d5b7f68d9da475f3f793c74fb8 IN  0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f60 Ether0.0000119470650.015
0x3af6c4cc1f0fd1523dfe2fb05e7d0077336876d7cc27dca5a60337533c415c9a23804772021-09-26 19:01:061 day 9 hrs ago0xc9e197deb88d82e2d45f29c396dbfd94bc8212ea IN  0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f60 Ether0.0000119445750.015
0xf5419045d8296ad8094f03b9a6834ea19a804bbe736e29bf92188f6563c7fda723765472021-09-26 16:45:051 day 11 hrs ago 0x941859d31e4fcd7b183d70e86b804de1b87b6686 IN  0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f60 Ether0.0000119472450.015
0xd1c388932199ea714a392a358fb8c07432878644b5d186421aec0ea3f8c71c7b23724932021-09-26 14:37:411 day 13 hrs ago0xb2fde0820e2075a4357aa300411f19b602bc795b IN  0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f60 Ether0.0000119445750.015
0xf9fe5ce67d4f62bc684fd84fdfc91a435ea025385ca94e2b73bba4faf30b6b5f23717252021-09-26 14:20:191 day 14 hrs ago0x2352917e407f99dc6f1b32e1eeed2be2397b9595 IN  0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f60 Ether0.0000119470650.015
0xb1852088469d8f7a092e09bec52191126dda0206e38d10a018ad8dd2737f577023667392021-09-26 12:02:161 day 16 hrs ago0x685ecd205ee018ee2e25b0cb431391f0d5942390 IN  0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f60 Ether0.0000119445750.015
0x9f62446b95e1f6e0bbc2a159372323d19673744e3cceec7a64c6b05ffbe03dd423666372021-09-26 12:00:231 day 16 hrs ago0x685ecd205ee018ee2e25b0cb431391f0d5942390 IN  0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f60 Ether0.0000119445750.015
0x1a6770d8f66f629e340de3737602d4f5f4904d1bed51543222af5d7a294e6a1e23657322021-09-26 11:38:121 day 16 hrs ago0x36a8d3bbd2f84d163b19cf8432a8557442918d11 IN  0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f60 Ether0.0000119472450.015
0x35a8d165d92cfd5781d703e732680fb402f9350c0d5617781b5b9409ddbf264d23648852021-09-26 11:19:291 day 17 hrs ago0xe024e2c0760c0a2a0c6ff4e9640fa38360ff9590 IN  0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f60 Ether0.0000119445750.015
0xbd32d2477fa292588340aacf21025783e79ca1b28c321fe8443ea441e13a4ab423643402021-09-26 11:11:511 day 17 hrs ago0x36a8d3bbd2f84d163b19cf8432a8557442918d11 IN  0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f60 Ether0.0000119470650.015
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x22bcf3f6eb3b2ee7751b7eb067a41392ae355d164f533c690e3486286a354c58735932021-07-19 20:39:5570 days 7 hrs ago 0xdeaddeaddeaddeaddeaddeaddeaddeaddead0006  Contract Creation0 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
LinkTokenOptimism

Compiler Version
v0.7.6-allow_kall

Optimization Enabled:
Yes with 1000000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at optimistic.etherscan.io on 2021-07-19
*/

// Sources flattened with hardhat v2.4.3 https://hardhat.org

// File vendor/OpenZeppelin/openzeppelin-contracts/contracts/introspection/IERC165.sol

// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.0;

/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}


// File contracts/v0.6/ITypeAndVersion.sol


pragma solidity >0.6.0;

/// @dev Interface contracts should use to report its type and version.
interface ITypeAndVersion {
  /**
   * @dev Returns type and version for the contract.
   *
   * The returned string has the following format: <contract name><SPACE><semver>
   * Try to keep its length less than 32 to take up less contract space.
   */
  function typeAndVersion()
    external
    pure
    returns (string memory);
}


// File vendor/OpenZeppelin/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol



pragma solidity >=0.6.0 <0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

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


// File contracts/v0.7/bridge/token/optimism/IERC20Optimism.sol


pragma solidity >0.6.0 <0.8.0;

/* Interface Imports */


/// @dev Interface for the bridged ERC20 token expected by the Optimism standard bridge L2 gateway.
interface IERC20Optimism is IERC20, IERC165 {
  /// @dev Returns the address of an L1 token contract linked to this L2 token contract
  function l1Token()
    external
    returns (address);

  /**
   * @dev Creates `_amount` tokens `_to` account.
   * @notice Called by L2 gateway to deposit tokens.
   * @param _to Address of the recipient.
   * @param _amount Number of tokens to mint.
   */
  function mint(
    address _to,
    uint256 _amount
  )
    external;

  /**
   * @dev Destroys `_amount` tokens `_from` account.
   * @notice Called by L2 gateway to withdraw tokens.
   * @param _from Address of the account holding the tokens to be burnt.
   * @param _amount Number of tokens to burn.
   */
  function burn(
    address _from,
    uint256 _amount
  )
    external;

  /// @dev Emitted when `_amount` tokens are deposited from L1 to L2.
  event Mint(
    address indexed _account,
    uint256 _amount
  );

  /// @dev Emitted when `_amount` tokens are withdrawn from L2 to L1.
  event Burn(
    address indexed _account,
    uint256 _amount
  );
}


// File vendor/OpenZeppelin/openzeppelin-contracts/contracts/utils/Context.sol



pragma solidity >=0.6.0 <0.8.0;

/*
 * @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.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}


// File vendor/OpenZeppelin/openzeppelin-contracts/contracts/math/SafeMath.sol



pragma solidity >=0.6.0 <0.8.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        uint256 c = a + b;
        if (c < a) return (false, 0);
        return (true, c);
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b > a) return (false, 0);
        return (true, a - b);
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) return (true, 0);
        uint256 c = a * b;
        if (c / a != b) return (false, 0);
        return (true, c);
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a / b);
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a % b);
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

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

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) return 0;
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: division by zero");
        return a / b;
    }

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

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        return a - b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryDiv}.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a % b;
    }
}


// File vendor/OpenZeppelin/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol



pragma solidity >=0.6.0 <0.8.0;



/**
 * @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 {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * 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 Context, IERC20 {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;

    mapping (address => mapping (address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    /**
     * @dev Sets the values for {name} and {symbol}, initializes {decimals} with
     * a default value of 18.
     *
     * To select a different value for {decimals}, use {_setupDecimals}.
     *
     * All three of these values are immutable: they can only be set once during
     * construction.
     */
    constructor (string memory name_, string memory symbol_) public {
        _name = name_;
        _symbol = symbol_;
        _decimals = 18;
    }

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

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual returns (string memory) {
        return _symbol;
    }

    /**
     * @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 {_setupDecimals} is
     * called.
     *
     * 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 _decimals;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @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) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        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) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    /**
     * @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(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    /**
     * @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) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

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

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

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

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

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

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

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

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

    /**
     * @dev Sets {decimals} to a value other than the default one of 18.
     *
     * WARNING: This function should only be called from the constructor. Most
     * applications that interact with token contracts will not expect
     * {decimals} to ever change, and may work incorrectly if it does.
     */
    function _setupDecimals(uint8 decimals_) internal virtual {
        _decimals = decimals_;
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * 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 minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `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 { }
}


// File contracts/v0.6/token/LinkERC20.sol


pragma solidity >0.6.0 <0.8.0;

abstract contract LinkERC20 is ERC20 {
  /**
   * @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 increaseApproval(
    address spender,
    uint256 addedValue
  )
    public
    virtual
    returns (bool)
  {
    return super.increaseAllowance(spender, addedValue);
  }

  /**
   * @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 decreaseApproval(
    address spender,
    uint256 subtractedValue
  )
    public
    virtual
    returns (bool)
  {
    return super.decreaseAllowance(spender, subtractedValue);
  }
}


// File contracts/v0.6/token/IERC677.sol


pragma solidity >0.6.0 <0.8.0;

interface IERC677 is IERC20 {
  function transferAndCall(
    address to,
    uint value,
    bytes memory data
  )
    external
    returns (bool success);

  event Transfer(
    address indexed from,
    address indexed to,
    uint value,
    bytes data
  );
}


// File contracts/v0.6/token/IERC677Receiver.sol


pragma solidity >0.6.0 <0.8.0;

interface IERC677Receiver {
  function onTokenTransfer(
    address sender,
    uint value,
    bytes memory data
  )
    external;
}


// File contracts/v0.6/ERC677.sol


pragma solidity >0.6.0 <0.8.0;



abstract contract ERC677 is IERC677, ERC20 {
  /**
   * @dev transfer token to a contract address with additional data if the recipient is a contact.
   * @param to The address to transfer to.
   * @param value The amount to be transferred.
   * @param data The extra data to be passed to the receiving contract.
   */
  function transferAndCall(
    address to,
    uint value,
    bytes memory data
  )
    public
    override
    virtual
    returns (bool success)
  {
    super.transfer(to, value);
    emit Transfer(msg.sender, to, value, data);
    if (isContract(to)) {
      contractFallback(to, value, data);
    }
    return true;
  }


  // PRIVATE

  function contractFallback(
    address to,
    uint value,
    bytes memory data
  )
    private
  {
    IERC677Receiver receiver = IERC677Receiver(to);
    receiver.onTokenTransfer(msg.sender, value, data);
  }

  function isContract(
    address addr
  )
    private
    view
    returns (bool hasCode)
  {
    uint length;
    assembly { length := extcodesize(addr) }
    return length > 0;
  }
}


// File contracts/v0.6/LinkToken.sol


pragma solidity >0.6.0 <0.8.0;



/// @dev LinkToken, an ERC20/ERC677 Chainlink token with 1 billion supply
contract LinkToken is ITypeAndVersion, LinkERC20, ERC677 {
  uint private constant TOTAL_SUPPLY = 10**27;
  string private constant NAME = 'ChainLink Token';
  string private constant SYMBOL = 'LINK';

  constructor()
    ERC20(NAME, SYMBOL)
    public
  {
    _onCreate();
  }

  /**
   * @notice versions:
   *
   * - LinkToken 0.0.3: added versioning, update name
   * - LinkToken 0.0.2: upgraded to solc 0.6
   * - LinkToken 0.0.1: initial release solc 0.4
   *
   * @inheritdoc ITypeAndVersion
   */
  function typeAndVersion()
    external
    pure
    override
    virtual
    returns (string memory)
  {
    return "LinkToken 0.0.3";
  }

  /**
   * @dev Hook that is called when this contract is created.
   * Useful to override constructor behaviour in child contracts (e.g., LINK bridge tokens).
   * @notice Default implementation mints 10**27 tokens to msg.sender
   */
  function _onCreate()
    internal
    virtual
  {
    _mint(msg.sender, TOTAL_SUPPLY);
  }

  /**
   * @dev Check if recepient is a valid address before transfer
   * @inheritdoc ERC20
   */
  function _transfer(
    address sender,
    address recipient,
    uint256 amount
  )
    internal
    override
    virtual
    validAddress(recipient)
  {
    super._transfer(sender, recipient, amount);
  }

  /**
   * @dev Check if spender is a valid address before approval
   * @inheritdoc ERC20
   */
  function _approve(
    address owner,
    address spender,
    uint256 amount
  )
    internal
    override
    virtual
    validAddress(spender)
  {
    super._approve(owner, spender, amount);
  }

  /**
   * @dev Check if recipient is valid (not this contract address)
   * @param recipient the account we transfer/approve to
   */
  modifier validAddress(
    address recipient
  )
    virtual
  {
    require(recipient != address(this), "LinkToken: transfer/approve to this contract address");
    _;
  }
}


// File contracts/v0.7/bridge/token/optimism/LinkTokenOptimism.sol


pragma solidity >0.6.0 <0.8.0;

/* Interface Imports */



/* Contract Imports */


/// @dev Access controlled mintable & burnable LinkToken, for use on Optimism L2 network.
contract LinkTokenOptimism is ITypeAndVersion, IERC20Optimism, LinkToken {
  /// @dev Returns the address of an L2 bridge contract that has access to mint & burn
  address public immutable l2Bridge;
  /// @inheritdoc IERC20Optimism
  address public immutable override l1Token;

  /**
   * @dev Creates an L2 token connected to a specific L2 bridge gateway & L1 token
   * @param l2BridgeAddr Address of the corresponding L2 bridge gateway.
   * @param l1TokenAddr Address of the corresponding L1 token.
   */
  constructor(
    address l2BridgeAddr,
    address l1TokenAddr
  ) {
    l2Bridge = l2BridgeAddr;
    l1Token = l1TokenAddr;
  }

  /**
   * @notice versions:
   *
   * - LinkTokenOptimism 0.0.1: initial release
   *
   * @inheritdoc ITypeAndVersion
   */
  function typeAndVersion()
    external
    pure
    override(ITypeAndVersion, LinkToken)
    virtual
    returns (string memory)
  {
    return "LinkTokenOptimism 0.0.1";
  }

  /// @dev Checks that message sender is the L2 bridge contract (locked access to mint & burn)
  modifier onlyL2Bridge {
    require(msg.sender == l2Bridge, "Only L2 Bridge can mint and burn");
    _;
  }

  /**
   * @dev Optimism standard bridge L2 gateway uses ERC165 to confirm the required interface
   * @inheritdoc IERC165
   */
  function supportsInterface(
    bytes4 interfaceId
  )
    public
    override
    pure
    returns (bool)
  {
    bytes4 firstSupportedInterface = bytes4(keccak256("supportsInterface(bytes4)")); // ERC165
    bytes4 secondSupportedInterface = IERC20Optimism.l1Token.selector
      ^ IERC20Optimism.mint.selector
      ^ IERC20Optimism.burn.selector;
    return interfaceId == firstSupportedInterface || interfaceId == secondSupportedInterface;
  }

  /// @inheritdoc IERC20Optimism
  function mint(
    address _to,
    uint256 _amount
  )
    public
    override
    onlyL2Bridge()
  {
    _mint(_to, _amount);
    emit Mint(_to, _amount);
  }

  /// @inheritdoc IERC20Optimism
  function burn(
    address _from,
    uint256 _amount
  )
    public
    override
    onlyL2Bridge()
  {
    _burn(_from, _amount);
    emit Burn(_from, _amount);
  }

  /**
   * @dev Overrides parent contract so no tokens are minted on deployment.
   * @inheritdoc LinkToken
   */
  function _onCreate()
    internal
    override
  {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"l2BridgeAddr","type":"address"},{"internalType":"address","name":"l1TokenAddr","type":"address"}],"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":true,"internalType":"address","name":"_account","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_account","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"Mint","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"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"Transfer","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":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","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":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"l1Token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"l2Bridge","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","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":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"transferAndCall","outputs":[{"internalType":"bool","name":"success","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":[],"name":"typeAndVersion","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"}]

60c06040523480156200001c57600080620000196200012a565b50505b506040516200228338038062002283833981810160405260408110156200004d576000806200004a6200012a565b50505b8101908080519291906020018051925060409150505160408082018152600f82526e21b430b4b72634b735902a37b5b2b760891b6020830152516040808201905260048152634c494e4b60e01b60208201526003828051620000b492916020019062000197565b506004818051620000ca92916020019062000197565b5060126005600181620000dc62000259565b8160ff021916908360ff16021790620000f4620002bb565b5050505050620001096200012860201b60201c565b6001600160601b0319606092831b8116608052911b1660a0526200032d565b565b632a2a7adb598160e01b8152600481016020815285602082015260005b868110156200016457808601518282016040015260200162000147565b506020828760640184336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b505050565b8280620001a362000259565b600181600116156101000203166002900490600052602060002090601f016020900481019282620001e357600085620001db620002bb565b505062000247565b82601f106200020157805160ff19168380011785620001db620002bb565b8280016001018562000212620002bb565b5050821562000247579182015b82811115620002475782518262000235620002bb565b5050916020019190600101906200021f565b50620002559291506200030a565b5090565b6303daa959598160e01b8152836004820152602081602483336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b8051935060005b6040811015620002b6576000828201526020016200029d565b505050565b6322bd64c0598160e01b8152836004820152846024820152600081604483336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b6000815260206200029d565b8082111562000255576000808262000321620002bb565b5050506001016200030a565b60805160601c60a05160601c611f226200036160003980610eef525080610af05280610cf85280610ecb5250611f226000f3fe608060405234801561001957600080610016611b18565b50505b50600436106101755760003560e01c806366188463116100d6578063a9059cbb1161008a578063c01e1bd61161006f578063c01e1bd61461061a578063d73dd62314610622578063dd62ed3e1461066457610175565b8063a9059cbb146105a7578063ae1f6aaf146105e957610175565b806395d89b41116100bb57806395d89b411461051b5780639dc29fac14610523578063a457c2d71461056557610175565b8063661884631461049d57806370a08231146104df57610175565b806323b872dd1161012d5780633950935111610112578063395093511461032c5780634000aea01461036e57806340c10f191461045957610175565b806323b872dd146102c2578063313ce5671461030e57610175565b8063095ea7b31161015e578063095ea7b31461025e57806318160ddd146102a0578063181f5a77146102ba57610175565b806301ffc9a71461018357806306fdde03146101df575b600080610180611b18565b50505b6101cb600480360360208110156101a25760008061019f611b18565b50505b50357fffffffff00000000000000000000000000000000000000000000000000000000166106a8565b604051901515815260200160405180910390f35b6101e7610768565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561022357808201518382015260200161020b565b50505050905090810190601f1680156102505780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101cb6004803603604081101561027d5760008061027a611b18565b50505b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610825565b6102a8610843565b60405190815260200160405180910390f35b6101e7610854565b6101cb600480360360608110156102e1576000806102de611b18565b50505b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561088f565b61031661094a565b60405160ff909116815260200160405180910390f35b6101cb6004803603604081101561034b57600080610348611b18565b50505b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610966565b6101cb6004803603606081101561038d5760008061038a611b18565b50505b73ffffffffffffffffffffffffffffffffffffffff823516916020810135918101906060810160408201356401000000008111156103d3576000806103d0611b18565b50505b8201836020820111156103ee576000806103eb611b18565b50505b8035906020019184600183028401116401000000008311171561041957600080610416611b18565b50505b91908080601f01602080910402602001604051908101604052818152929190602084018383808284376000920191909152509295506109f2945050505050565b61049b6004803603604081101561047857600080610475611b18565b50505b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610aee565b005b6101cb600480360360408110156104bc576000806104b9611b18565b50505b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610c10565b6102a8600480360360208110156104fe576000806104fb611b18565b50505b503573ffffffffffffffffffffffffffffffffffffffff16610c23565b6101e7610c50565b61049b600480360360408110156105425760008061053f611b18565b50505b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610cf6565b6101cb6004803603604081101561058457600080610581611b18565b50505b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610e18565b6101cb600480360360408110156105c6576000806105c3611b18565b50505b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610eb5565b6105f1610ec9565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6105f1610eed565b6101cb600480360360408110156106415760008061063e611b18565b50505b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610f11565b6102a86004803603604081101561068357600080610680611b18565b50505b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610f1d565b60007f01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e27f1d1d8b63000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000084167f01ffc9a700000000000000000000000000000000000000000000000000000000148061076057507fffffffff00000000000000000000000000000000000000000000000000000000848116908216145b949350505050565b6060600380610775611b83565b600181600116156101000203166002900480601f0160208091040260200160405190810160405281815291906020830182806107af611b83565b6001816001161561010002031660029004801561081b5780601f106107e95761010080836107db611b83565b04028352916020019161081b565b820191906000526020600020905b81610800611b83565b815290600101906020018083116107f757829003601f168201915b5050505050905090565b6000610839610832610f70565b8484610f7b565b5060015b92915050565b6000600261084f611b83565b905090565b606060405160408082019052601781527f4c696e6b546f6b656e4f7074696d69736d20302e302e310000000000000000006020820152905090565b600061089c848484611073565b610940846108a8610f70565b61093b85604051606081016040526028808252611e6b602083013973ffffffffffffffffffffffffffffffffffffffff8a16600090815260016020526040902060006108f2610f70565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020610934611b83565b9190611165565b610f7b565b5060019392505050565b6000806005610957611b83565b906101000a900460ff16905090565b6000610839610973610f70565b8461093b8560016000610984610f70565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002073ffffffffffffffffffffffffffffffffffffffff89166000908152602091909152604090206109ec611b83565b9061121f565b60006109fe8484610eb5565b508373ffffffffffffffffffffffffffffffffffffffff165a610a1f611bde565b73ffffffffffffffffffffffffffffffffffffffff167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c16858560405182815260406020820181815290820183818151815260200191508051906020019080838360005b83811015610a9a578082015183820152602001610a82565b50505050905090810190601f168015610ac75780820380516001836020036101000a031916815260200191505b50935050505060405180910390a3610ade846112a1565b15610940576109408484846112b6565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff165a610b2e611bde565b73ffffffffffffffffffffffffffffffffffffffff1614610bb8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f6e6c79204c32204272696467652063616e206d696e7420616e64206275726e604482015260640160405180910390610bb5611b18565b50505b610bc282826113de565b8173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858260405190815260200160405180910390a25050565b6000610c1c8383610e18565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260208190526040812061083d611b83565b6060600480610c5d611b83565b600181600116156101000203166002900480601f016020809104026020016040519081016040528181529190602083018280610c97611b83565b6001816001161561010002031660029004801561081b5780601f10610cc35761010080836107db611b83565b820191906000526020600020905b81610cda611b83565b81529060010190602001808311610cd157509395945050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff165a610d36611bde565b73ffffffffffffffffffffffffffffffffffffffff1614610dc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f6e6c79204c32204272696467652063616e206d696e7420616e64206275726e604482015260640160405180910390610dbd611b18565b50505b610dca8282611545565b8173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58260405190815260200160405180910390a25050565b6000610839610e25610f70565b8461093b85604051606081016040526025808252611efd602083013960016000610e4d610f70565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002073ffffffffffffffffffffffffffffffffffffffff8a16600090815260209190915260409020610934611b83565b6000610839610ec2610f70565b8484611073565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610c1c8383610966565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040812073ffffffffffffffffffffffffffffffffffffffff8316600090815260209190915260409020610c1c611b83565b60005a61084f611bde565b815a63996d79a5598160e01b8152602081600483336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b8051925060005b6040811015610fd257600082820152602001610fbb565b50505073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611062576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526034815260200180611e11603491396040019150506040518091039061105f611b18565b50505b61106d8484846116b3565b50505050565b815a63996d79a5598160e01b8152602081600483336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b8051925060005b60408110156110ca576000828201526020016110b3565b50505073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561115a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526034815260200180611e116034913960400191505060405180910390611157611b18565b50505b61106d84848461185d565b60008184841115611217576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156111d35780820151838201526020016111bb565b50505050905090810190601f1680156112005780820380516001836020036101000a031916815260200191505b509250505060405180910390611214611b18565b50505b505050900390565b600082820183811015610c1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640160405180910390611298611b18565b50509392505050565b600080826112ad611c24565b15159392505050565b8273ffffffffffffffffffffffffffffffffffffffff811663a4c0ed365a6112dc611bde565b85856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561134c578082015183820152602001611334565b50505050905090810190601f1680156113795780820380516001836020036101000a031916815260200191505b5094505050505060006040518083038160008780611395611c24565b1580156113aa576000806113a7611b18565b50505b505a6113b4611c70565b5050505050501580156113d4573d6000803e3d60006113d1611b18565b50505b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8216611468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390611465611b18565b50505b61147460008383611a97565b6114828160026109ec611b83565b80600261148d611d5b565b50505073ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526114c3908290604090206109ec611b83565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902081906114f2611d5b565b50505073ffffffffffffffffffffffffffffffffffffffff821660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405190815260200160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff82166115ba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611e9360219139604001915050604051809103906115b7611b18565b50505b6115c682600083611a97565b61160e81604051606081016040526022808252611dcd602083013973ffffffffffffffffffffffffffffffffffffffff85166000908152602081905260409020610934611b83565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020819061163d611d5b565b50505061165481600261164e611b83565b90611a9c565b80600261165f611d5b565b50600091505073ffffffffffffffffffffffffffffffffffffffff83167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405190815260200160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff8316611728576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180611ed96024913960400191505060405180910390611725611b18565b50505b73ffffffffffffffffffffffffffffffffffffffff821661179d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180611def602291396040019150506040518091039061179a611b18565b50505b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205281906040902073ffffffffffffffffffffffffffffffffffffffff841660009081526020919091526040902081906117f4611d5b565b5050508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405190815260200160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166118d2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180611eb460259139604001915050604051809103906118cf611b18565b50505b73ffffffffffffffffffffffffffffffffffffffff8216611947576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611daa6023913960400191505060405180910390611944611b18565b50505b611952838383611a97565b61199a81604051606081016040526026808252611e45602083013973ffffffffffffffffffffffffffffffffffffffff86166000908152602081905260409020610934611b83565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260208190526040902081906119c9611d5b565b50505073ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526119ff908290604090206109ec611b83565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090208190611a2e611d5b565b5050508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405190815260200160405180910390a3505050565b505050565b600082821115611b12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015260640160405180910390611217611b18565b50900390565b632a2a7adb598160e01b8152600481016020815285602082015260005b86811015611b50578086015182820160400152602001611b35565b506020828760640184336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b505050565b6303daa959598160e01b8152836004820152602081602483336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b8051935060005b6040811015611a9757600082820152602001611bc7565b6373509064598160e01b8152602081600483336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b80516000825293506020611bc7565b638435035b598160e01b8152836004820152602081602483336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b80516000825293506020611bc7565b6385979f76598160e01b8152611ca1565b808083111561083d575090919050565b808083101561083d575090919050565b836004820152846024820152606060448201528760648201526084810160005b89811015611cd9578089015182820152602001611cc1565b506060828a60a40184336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b815160408301513d6000853e8c8c82606087013350600060045af15059611d2e8e3d611c91565b8d01611d3a8187611c81565b5b82811015611d4f5760008152602001611d3b565b50929d50505050505050565b6322bd64c0598160e01b8152836004820152846024820152600081604483336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b600081526020611bc756fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f20616464726573734c696e6b546f6b656e3a207472616e736665722f617070726f766520746f207468697320636f6e7472616374206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f0000000000000000000000004200000000000000000000000000000000000010000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca

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

0000000000000000000000004200000000000000000000000000000000000010000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca

-----Decoded View---------------
Arg [0] : l2BridgeAddr (address): 0x4200000000000000000000000000000000000010
Arg [1] : l1TokenAddr (address): 0x514910771af9ca656af840dff83e8264ecf986ca

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000004200000000000000000000000000000000000010
Arg [1] : 000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca


Deployed ByteCode Sourcemap

30808:2396:0:-:0;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;32136:461;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;32136:461:0;;;;:::i;:::-;;;;;;;;;;;;;;;;;16365:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18511:169;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;18511:169:0;;;;;;;;;:::i;17464:108::-;;;:::i;:::-;;;;;;;;;;;;;;;31603:182;;;:::i;19162:321::-;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;19162:321:0;;;;;;;;;;;;;;;;;;:::i;17308:91::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;19892:218;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;19892:218:0;;;;;;;;;:::i;27616:339::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27616:339:0;;-1:-1:-1;27616:339:0;;-1:-1:-1;;;;;27616:339:0:i;32637:170::-;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;32637:170:0;;;;;;;;;:::i;:::-;;26404:200;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;26404:200:0;;;;;;;;;:::i;17635:127::-;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;17635:127:0;;;;:::i;16575:95::-;;;:::i;32847:176::-;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;32847:176:0;;;;;;;;;:::i;20613:269::-;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;20613:269:0;;;;;;;;;:::i;17975:175::-;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;17975:175:0;;;;;;;;;:::i;30974:33::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;31046:41;;;:::i;25741:190::-;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;25741:190:0;;;;;;;;;:::i;18213:151::-;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;18213:151:0;;;;;;;;;;;:::i;32136:461::-;32243:4;32299:38;32389:107;32510:38;;;;;;:81;;-1:-1:-1;32552:39:0;;;;;;;;32510:81;32503:88;32136:461;-1:-1:-1;;;;32136:461:0:o;16365:91::-;16410:13;16443:5;16436:12;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16365:91;:::o;18511:169::-;18594:4;18611:39;18620:12;:10;:12::i;:::-;18634:7;18643:6;18611:8;:39::i;:::-;-1:-1:-1;18668:4:0;18511:169;;;;;:::o;17464:108::-;17525:7;17552:12;;;:::i;:::-;17545:19;;17464:108;:::o;31603:182::-;31722:13;31747:32;;;;;;;;;;;;;;;;;-1:-1:-1;31603:182:0;:::o;19162:321::-;19268:4;19285:36;19295:6;19303:9;19314:6;19285:9;:36::i;:::-;19332:121;19341:6;19349:12;:10;:12::i;:::-;19363:89;19401:6;19363:89;;;;;;;;;;;;;;;;:19;;;;;;;:11;:19;;;;;:33;19383:12;:10;:12::i;:::-;19363:33;;;;;;;;;;;;;;;;;:::i;:::-;:37;:89;:37;:89::i;:::-;19332:8;:121::i;:::-;-1:-1:-1;19471:4:0;19162:321;;;;;:::o;17308:91::-;17357:5;;17382:9;;;:::i;:::-;;;;;;;;17375:16;;17308:91;:::o;19892:218::-;19980:4;19997:83;20006:12;:10;:12::i;:::-;20020:7;20029:50;20068:10;20029:11;:25;20041:12;:10;:12::i;:::-;20029:25;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;:::i;:::-;:38;;:50::i;27616:339::-;27757:12;27781:25;27796:2;27800:5;27781:14;:25::i;:::-;;27839:2;27818:37;;27827:10;;;:::i;:::-;27818:37;;;27843:5;27850:4;27818:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27866:14;27877:2;27866:10;:14::i;:::-;27862:70;;;27891:33;27908:2;27912:5;27919:4;27891:16;:33::i;32637:170::-;31938:8;31924:22;;:10;;;:::i;:::-;:22;;;31916:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;32752:19:::1;32758:3;32763:7;32752:5;:19::i;:::-;32788:3;32783:18;;;32793:7;32783:18;;::::0;;;::::1;;;;;;;;;32637:170:::0;;:::o;26404:200::-;26526:4;26549:49;26573:7;26582:15;26549:23;:49::i;:::-;26542:56;26404:200;-1:-1:-1;;;26404:200:0:o;17635:127::-;17736:18;;;17709:7;17736:18;;;;;;;;17709:7;17736:18;;;:::i;16575:95::-;16622:13;16655:7;16648:14;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;16648:14:0;;16575:95;-1:-1:-1;;;;;16575:95:0:o;32847:176::-;31938:8;31924:22;;:10;;;:::i;:::-;:22;;;31916:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;32964:21:::1;32970:5;32977:7;32964:5;:21::i;:::-;33002:5;32997:20;;;33009:7;32997:20;;::::0;;;::::1;;;;;;;;;32847:176:::0;;:::o;20613:269::-;20706:4;20723:129;20732:12;:10;:12::i;:::-;20746:7;20755:96;20794:15;20755:96;;;;;;;;;;;;;;;;:11;:25;20767:12;:10;:12::i;:::-;20755:25;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;:::i;17975:175::-;18061:4;18078:42;18088:12;:10;:12::i;:::-;18102:9;18113:6;18078:9;:42::i;30974:33::-;;;:::o;31046:41::-;;;:::o;25741:190::-;25858:4;25881:44;25905:7;25914:10;25881:23;:44::i;18213:151::-;18329:18;;;18302:7;18329:18;;;:11;:18;;;18302:7;18329:18;:27;;;;;;;;;;;;;;;;;:::i;6321:106::-;6374:15;6409:10;;;:::i;30011:208::-;30156:7;30467:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30446:26;;:9;:26;;;;30438:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;30175:38:::1;30190:5;30197:7;30206:6;30175:14;:38::i;:::-;30011:208:::0;;;;:::o;29686:218::-;29835:9;30467:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30446:26;;:9;:26;;;;30438:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;29856:42:::1;29872:6;29880:9;29891:6;29856:15;:42::i;12329:166::-:0;12415:7;12451:12;12443:6;;;;12435:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;12482:5:0;;;12329:166::o;9502:179::-;9560:7;9592:5;;;9616:6;;;;9608:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;9672:1;9502:179;-1:-1:-1;;;9502:179:0:o;28205:192::-;28286:12;28310:11;28361:4;28349:17;;:::i;:::-;28381:10;;;28205:192;-1:-1:-1;;;28205:192:0:o;27979:220::-;28134:2;28144:24;;;;28169:10;;;:::i;:::-;28181:5;28188:4;28144:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;27979:220;;;;:::o;22193:378::-;22277:21;;;22269:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22347:49;22376:1;22380:7;22389:6;22347:20;:49::i;:::-;22424:24;22441:6;22424:12;;;:::i;:24::-;22409:39;:12;:39;;:::i;:::-;-1:-1:-1;;;22480:18:0;;;:9;:18;;;;;;;:30;;22503:6;;22480:18;;;;;:::i;:30::-;22459:18;;;:9;:18;;;;;;;;;;:51;;;;:::i;:::-;-1:-1:-1;;;22526:37:0;;;22543:1;22526:37;22556:6;22526:37;;;;;;;;;;;;;;22193:378;;:::o;22904:418::-;22988:21;;;22980:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;23060:49;23081:7;23098:1;23102:6;23060:20;:49::i;:::-;23143:68;23166:6;23143:68;;;;;;;;;;;;;;;;:18;;;:9;:18;;;;;;;;;;;;:::i;:68::-;23122:18;;;:9;:18;;;;;;;;;;:89;;;;:::i;:::-;;;;23237:24;23254:6;23237:12;;;:::i;:::-;:16;;:24::i;:::-;23222:39;:12;:39;;:::i;:::-;-1:-1:-1;23303:1:0;;-1:-1:-1;;23277:37:0;;;;23307:6;23277:37;;;;;;;;;;;;;;22904:418;;:::o;23760:346::-;23862:19;;;23854:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;23941:21;;;23933:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24014:18;;;;;;;:11;:18;;24044:6;;24014:18;;;:27;;;;;;;;;;;;;;;:36;;;;:::i;:::-;;;;24082:7;24066:32;;24075:5;24066:32;;;24091:6;24066:32;;;;;;;;;;;;;;23760:346;;;:::o;21372:539::-;21478:20;;;21470:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21559:23;;;21551:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21635:47;21656:6;21664:9;21675:6;21635:20;:47::i;:::-;21715:71;21737:6;21715:71;;;;;;;;;;;;;;;;:17;;;:9;:17;;;;;;;;;;;;:::i;:71::-;21695:17;;;:9;:17;;;;;;;;;;:91;;;;:::i;:::-;-1:-1:-1;;;21820:20:0;;;:9;:20;;;;;;;:32;;21845:6;;21820:20;;;;;:::i;:32::-;21797:20;;;:9;:20;;;;;;;;;;:55;;;;:::i;:::-;;;;21885:9;21868:35;;21877:6;21868:35;;;21896:6;21868:35;;;;;;;;;;;;;;21372:539;;;:::o;25139:92::-;;;;:::o;9964:158::-;10022:7;10055:1;10050;:6;;10042:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10109:5:0;;;9964:158::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.