Contract 0x6fd9d7ad17242c41f7131d257212c54a0e816691 14

 
My Name Tag:
Not Available, login to update

ContractCreator:
GENESIS at txn GENESIS_6fd9d7ad17242c41f7131d257212c54a0e816691

TokenTracker:
Uniswap (UNI) (@$11.0200)
Txn Hash Method
Block
From
To
Value
0x447f68e53ea55136ebd38005a0797aece48853f9593b6f2c5d67a66b61ece4adApprove1166480642024-02-25 21:01:453 hrs 15 mins ago0xd3f982b963a063440cf4a93ee2f2b7262473a2a8 IN  0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH0.0000576118470.002088195
0x4c1b369824a343289696c5e79b58d748c34d9b9b41f5fe55abe7ba65e2d5e72aApprove1166466762024-02-25 20:15:294 hrs 1 min ago0xaa81f0f495b8b2d2b4f58c853a8c7311f01c1e5c IN  0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH0.0000652903530.002787037
0xf010e9f0de05ad20469e48b6890c5ba71d6d004c282ff15cb0672a0bb45b875cTransfer1166450802024-02-25 19:22:174 hrs 55 mins ago0x9edc09546e7ac238f80fd572d0e96ca1fe4c904d IN  0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH0.0000452819690.003300402
0x858c4e7aa664f251bdcf0ab52d88d84bb78a50ea9590b6a547d32fd77f49b496Approve1166444372024-02-25 19:00:515 hrs 16 mins ago0x224e69025a2f705c8f31efb6694398f8fd09ac5c IN  0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH0.0000477427360.003017714
0x0f2e06174d0e6d017316e3cb85d5228c82396d91d189c449c7fe34e951ff6c48Approve1166431982024-02-25 18:19:335 hrs 57 mins ago0x3e2d5e7fd1a97bc8bad590e68426da5b5c295d5d IN  0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH0.0000536688240.0024699
0x112d2f518185ec27ef92bb95bb5f5162e9230cf3716c1440b5fe6ff0262eb179Approve1166415292024-02-25 17:23:556 hrs 53 mins ago0x952b1dddd11d5f1cefefc24e0ef74615b9e9c24a IN  0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH0.0000689494250.001769809
0x88f289c8c30b487ee811e40538cb76623bf0abe3f36d4c2e55663e0161308bb6Approve1166413822024-02-25 17:19:016 hrs 58 mins ago0x7eb413fbe82ae36b6cd2b904a08600cca6d24a11 IN  0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH0.0000863386680.003092781
0x924f8abcee0612f128bc17b122a956cf819b78d5090f1a960ea5a5d1d70f3ea7Approve1166386742024-02-25 15:48:458 hrs 28 mins ago0x6c65ca68330847736bd67441799445997fb7178a IN  0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH0.0000673758890.004702335
0xf9fe2a4e00fac2c4a2e52e9fa554b8dcfb193a6d6c776156db95408177b9bf8fApprove1166379452024-02-25 15:24:278 hrs 52 mins ago0x077ca804c13895a573ee2f5da203692c6338b070 IN  0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH0.0000684146040.004796879
0x4fffaa3df979f74bb29ad00600aca9add7e2031c6ba631d20e613e859ea9887fApprove1166357582024-02-25 14:11:3310 hrs 5 mins ago0x33e02ef5bd2de5749d6e9bec1b6a99c17620cf77 IN  0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH0.0000530975950.002464725
0x14c03e156169fa15879ef208d2aedd42f0ff689c294dff9cff31fdb3ba27e8eeApprove1166357462024-02-25 14:11:0910 hrs 6 mins ago0x33e02ef5bd2de5749d6e9bec1b6a99c17620cf77 IN  0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH0.0000572285980.002491813
0x3858d7ae64698c3079f4483ec4775aa31c5a8a05ca43ceef4a08a5ed0f940643Approve1166352112024-02-25 13:53:1910 hrs 24 mins ago0x90c6577fb57edf1921ae3f7f45df7a31e46b9155 IN  0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH0.0000562554910.003814566
0xea062822afa714412afc606c126f0cbc7d162c7d005bc19cfa925bb47a9051aaTransfer1166342022024-02-25 13:19:4110 hrs 57 mins ago0x6b42f2b1d50f2511ae32b5748250ee4f7254b83b IN  0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH0.0000559397990.007194792
0x4ff700e2dd8fa8827bfaac1dae29738bb9f21d96aae4e734ebdcbf4e8972a143Approve1166329282024-02-25 12:37:1311 hrs 40 mins ago0x219956d7cc723b79b1f03a3f0ef648e6db1af026 IN  0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH0.0000459562730.0079436
0x32eb44988ad993269a034799ce24606a861daabfa123ef61b4e7c10b95a2530bApprove1166319132024-02-25 12:03:2312 hrs 13 mins ago0x9d24ffbcc1374a45abab44b4b6ea23a28af2cd6b IN  0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH0.000049709970.003658281
0x130a264b16cddd6608f811e43745efb4b2e6840ee7fa90df2248b30340ec1e66Approve1166302162024-02-25 11:06:4913 hrs 10 mins ago0xdddcffd1a9f52e703e0554b224666a59e6a1329c IN  0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH0.0000454071590.002511941
0x2b9970d16c11bb27c2776163ea49379c7aa6b5cdec5eb70f718ea5b56937ac16Approve1166300072024-02-25 10:59:5113 hrs 17 mins ago0x762f46f67b6cc55b1bc26bae9a7a67efd5d911e4 IN  0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH0.000042687860.002686084
0x0e9e6254649b0e42b0b80e19694fbc7439eb0694dae16837a1440fcfe9eda4d2Approve1166296912024-02-25 10:49:1913 hrs 28 mins ago0x826bbdd37fdd52a4ca2ac042780ec2caa67ba4f7 IN  0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH0.0000479567810.001379527
0x5cffab2a98ad8fe5d9578ab8ffd46fab1f3e9ee2631f1c3539a5f953cd5874acApprove1166296072024-02-25 10:46:3113 hrs 30 mins ago0x2b34b25725a688af465d5fb452402ca2257db3e0 IN  0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH0.0000451323830.00143082
0x9724cb44d3499cfcfe46b8015d0a410650c0efe39792c8c656d11c3fca518c46Approve1166294682024-02-25 10:41:5313 hrs 35 mins ago0x6b42f2b1d50f2511ae32b5748250ee4f7254b83b IN  0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH0.0000486206070.001530403
0xfb5c9cbf5a59600726290446bd23c07d9d8373b04387907eef76ce9d1c20531dApprove1166274122024-02-25 9:33:2114 hrs 43 mins ago0xa8f9b278a9d4060c0b6cff0b2ea923bf16911948 IN  0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH0.0000475978230.004163864
0x703480b4036dfc113054d568f85800b39f28cf932311d8ee99ab2a654e5fb4b1Approve1166264122024-02-25 9:00:0115 hrs 17 mins ago 0x7bb7e752ce21a46c85586f48e18175027c0ff889 IN  0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH0.0000483888750.002903548
0x8d2f54a85f09ce20c469f1f2fa720a4d43cfde89e5f41ab03596841e8e651662Approve1166217882024-02-25 6:25:5317 hrs 51 mins ago0xee09b340f6c0edefe794ab49e8417f61a96d85f5 IN  0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH0.0000456020580.003088248
0x71a17769ebcc7117ded825b597b850e7d790a5dd2ab89dc9cc327ff9bd074ee9Approve1166215092024-02-25 6:16:3518 hrs ago0x487cbfeefa58c7b24613cbfc279f78bbae3090d1 IN  0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH0.0000397821950.002750764
0x2386d86f815c60173ced60ca65b75cb48f0e3e96019ca39b3392fe1c1ed4a027Approve1166214572024-02-25 6:14:5118 hrs 2 mins ago0xa2437c94ceaa8d099d8104fdaac1588f8dc635d4 IN  0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH0.0000446052750.003243028
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xcbbae6e337a6609ce259f5a87678a73c71f4d2ea99d2f6d4ec87d2fd60c9260f1075569892023-07-30 10:25:55210 days 13 hrs ago 0xad4c666fc170b468b19988959eb931a3676f0e9f 0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH
0xcbbae6e337a6609ce259f5a87678a73c71f4d2ea99d2f6d4ec87d2fd60c9260f1075569892023-07-30 10:25:55210 days 13 hrs ago 0xc160e4fe967f8ada7b58d9c578267ebbec1e7a63 0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH
0xcbbae6e337a6609ce259f5a87678a73c71f4d2ea99d2f6d4ec87d2fd60c9260f1075569892023-07-30 10:25:55210 days 13 hrs ago 0xad4c666fc170b468b19988959eb931a3676f0e9f 0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH
0xcbbae6e337a6609ce259f5a87678a73c71f4d2ea99d2f6d4ec87d2fd60c9260f1075569892023-07-30 10:25:55210 days 13 hrs ago 0xeb1817b708415f4f78c5f0c99cbbd6a3a899fa6d 0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH
0x03caa29e446674d4f13a537feac70238b9f249059f6c17dc464e290f8c71f36f1075551102023-07-30 9:23:17210 days 14 hrs ago 0x0a2854fbbd9b3ef66f17d47284e7f899b9509330 0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH
0x03caa29e446674d4f13a537feac70238b9f249059f6c17dc464e290f8c71f36f1075551102023-07-30 9:23:17210 days 14 hrs ago 0x0a2854fbbd9b3ef66f17d47284e7f899b9509330 0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH
0x03caa29e446674d4f13a537feac70238b9f249059f6c17dc464e290f8c71f36f1075551102023-07-30 9:23:17210 days 14 hrs ago OpenOcean: Exchange V2 0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH
0x03caa29e446674d4f13a537feac70238b9f249059f6c17dc464e290f8c71f36f1075551102023-07-30 9:23:17210 days 14 hrs ago 0x1aa298ae7c53d8dafa200ed49608649bfa76a446 0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH
0x03caa29e446674d4f13a537feac70238b9f249059f6c17dc464e290f8c71f36f1075551102023-07-30 9:23:17210 days 14 hrs ago 0x1aa298ae7c53d8dafa200ed49608649bfa76a446 0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH
0x03caa29e446674d4f13a537feac70238b9f249059f6c17dc464e290f8c71f36f1075551102023-07-30 9:23:17210 days 14 hrs ago 0x1aa298ae7c53d8dafa200ed49608649bfa76a446 0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH
0x03caa29e446674d4f13a537feac70238b9f249059f6c17dc464e290f8c71f36f1075551102023-07-30 9:23:17210 days 14 hrs ago Clipper Exchange: Clipper Coves 0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH
0x03caa29e446674d4f13a537feac70238b9f249059f6c17dc464e290f8c71f36f1075551102023-07-30 9:23:17210 days 14 hrs ago OpenOcean: Exchange V2 0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH
0x01bb6b4334dc3ee9cc8cd5437888a4410f47934588896b654fe6de99b5931fa11075550002023-07-30 9:19:37210 days 14 hrs ago 0xad4c666fc170b468b19988959eb931a3676f0e9f 0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH
0x01559785c3d034bcbfa50ac80b8d94c0d7f4406ba13bd1427fbc7f54805b40731075548852023-07-30 9:15:47210 days 15 hrs ago 0x26e7fed14a97e0c482a302237971cf1b04f6d3e9 0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH
0xfcbc3a2a8cb9c54fafc7fbe37772437f6f816dc0edea2cc561af8f421299e69e1075543902023-07-30 8:59:17210 days 15 hrs ago 0x0f6b49615831bf9288dbe57759905931c54d51a8 0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH
0xfcbc3a2a8cb9c54fafc7fbe37772437f6f816dc0edea2cc561af8f421299e69e1075543902023-07-30 8:59:17210 days 15 hrs ago Uniswap Protocol: Permit2 0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH
0xfcbc3a2a8cb9c54fafc7fbe37772437f6f816dc0edea2cc561af8f421299e69e1075543902023-07-30 8:59:17210 days 15 hrs ago 0x0f6b49615831bf9288dbe57759905931c54d51a8 0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH
0xa3dc823751312b7557c5e48200cd567fb8ac5403a30f43f72e698eb1be80ae201075536132023-07-30 8:33:23210 days 15 hrs ago 0xad4c666fc170b468b19988959eb931a3676f0e9f 0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH
0xe49c426cb3cb33bb74df7ac12f914149c521b858970e50a07e6f124fb0200caf1075536132023-07-30 8:33:23210 days 15 hrs ago 0xad4c666fc170b468b19988959eb931a3676f0e9f 0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH
0x28f1597ccf9f10f8e3d836d365260ffc098230a9c6d7dbc7e4a382acce40642d1075529652023-07-30 8:11:47210 days 16 hrs ago 0xad4c666fc170b468b19988959eb931a3676f0e9f 0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH
0x9bf63f6a8590c275892a2eee33e92491f7254c7e819f8755cec90d2dd2025d4f1075529652023-07-30 8:11:47210 days 16 hrs ago 0xad4c666fc170b468b19988959eb931a3676f0e9f 0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH
0x87aec5597fafe63f3900d2b72141eaf22f91a809ef61b1384aeb8d6972ca8c5a1075529632023-07-30 8:11:43210 days 16 hrs ago 0xad4c666fc170b468b19988959eb931a3676f0e9f 0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH
0x87aec5597fafe63f3900d2b72141eaf22f91a809ef61b1384aeb8d6972ca8c5a1075529632023-07-30 8:11:43210 days 16 hrs ago Uniswap Protocol: Permit2 0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH
0x87aec5597fafe63f3900d2b72141eaf22f91a809ef61b1384aeb8d6972ca8c5a1075529632023-07-30 8:11:43210 days 16 hrs ago 0xad4c666fc170b468b19988959eb931a3676f0e9f 0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH
0xecf1b86a6116e980c50dc7899cb5bd8b89a8c4ca5078baeae4c300414df1666c1075529552023-07-30 8:11:27210 days 16 hrs ago 0x2024c394741a5301e89a375b7bf52f865bc166fd 0x6fd9d7ad17242c41f7131d257212c54a0e8166910 ETH
[ Download CSV Export 
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xc40f949f8a4e094d1b49a23ea9241d289b7b2819
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
L2StandardERC20

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
File 1 of 7 : L2StandardERC20.sol
// SPDX-License-Identifier: MIT
pragma solidity >=0.5.16 <0.8.0;

import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol";

import "./IL2StandardERC20.sol";

contract L2StandardERC20 is IL2StandardERC20, ERC20 {
    address public override l1Token;
    address public l2Bridge;

    /**
     * @param _l2Bridge Address of the L2 standard bridge.
     * @param _l1Token Address of the corresponding L1 token.
     * @param _name ERC20 name.
     * @param _symbol ERC20 symbol.
     */
    constructor(
        address _l2Bridge,
        address _l1Token,
        string memory _name,
        string memory _symbol
    )
        ERC20(_name, _symbol) {
        l1Token = _l1Token;
        l2Bridge = _l2Bridge;
    }

    modifier onlyL2Bridge {
        require(msg.sender == l2Bridge, "Only L2 Bridge can mint and burn");
        _;
    }

    function supportsInterface(bytes4 _interfaceId) public override pure returns (bool) {
        bytes4 firstSupportedInterface = bytes4(keccak256("supportsInterface(bytes4)")); // ERC165
        bytes4 secondSupportedInterface = IL2StandardERC20.l1Token.selector
            ^ IL2StandardERC20.mint.selector
            ^ IL2StandardERC20.burn.selector;
        return _interfaceId == firstSupportedInterface || _interfaceId == secondSupportedInterface;
    }

    function mint(address _to, uint256 _amount) public override onlyL2Bridge {
        _mint(_to, _amount);

        emit Mint(_to, _amount);
    }

    function burn(address _from, uint256 _amount) public override onlyL2Bridge {
        _burn(_from, _amount);

        emit Burn(_from, _amount);
    }
}

File 2 of 7 : ERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.0;

import "../../utils/Context.sol";
import "./IERC20.sol";
import "../../math/SafeMath.sol";

/**
 * @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 3 of 7 : IL2StandardERC20.sol
// SPDX-License-Identifier: MIT
pragma solidity >=0.5.16 <0.8.0;

import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import { IERC165 } from "@openzeppelin/contracts/introspection/IERC165.sol";

interface IL2StandardERC20 is IERC20, IERC165 {
    function l1Token() external returns (address);

    function mint(address _to, uint256 _amount) external;

    function burn(address _from, uint256 _amount) external;

    event Mint(address indexed _account, uint256 _amount);
    event Burn(address indexed _account, uint256 _amount);
}

File 4 of 7 : Context.sol
// SPDX-License-Identifier: MIT

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 5 of 7 : IERC20.sol
// SPDX-License-Identifier: MIT

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 6 of 7 : SafeMath.sol
// SPDX-License-Identifier: MIT

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 7 of 7 : 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);
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "bytecodeHash": "none",
    "useLiteralContent": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_l2Bridge","type":"address"},{"internalType":"address","name":"_l1Token","type":"address"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"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"}],"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":"addedValue","type":"uint256"}],"name":"increaseAllowance","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":"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"}]

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063a9059cbb11610066578063a9059cbb14610337578063ae1f6aaf14610363578063c01e1bd614610387578063dd62ed3e1461038f57610100565b806370a08231146102b157806395d89b41146102d75780639dc29fac146102df578063a457c2d71461030b57610100565b806323b872dd116100d357806323b872dd14610203578063313ce56714610239578063395093511461025757806340c10f191461028357610100565b806301ffc9a71461010557806306fdde0314610140578063095ea7b3146101bd57806318160ddd146101e9575b600080fd5b61012c6004803603602081101561011b57600080fd5b50356001600160e01b0319166103bd565b604080519115158252519081900360200190f35b61014861041b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561018257818101518382015260200161016a565b50505050905090810190601f1680156101af5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61012c600480360360408110156101d357600080fd5b506001600160a01b0381351690602001356104b1565b6101f16104ce565b60408051918252519081900360200190f35b61012c6004803603606081101561021957600080fd5b506001600160a01b038135811691602081013590911690604001356104d4565b61024161055b565b6040805160ff9092168252519081900360200190f35b61012c6004803603604081101561026d57600080fd5b506001600160a01b038135169060200135610564565b6102af6004803603604081101561029957600080fd5b506001600160a01b0381351690602001356105b2565b005b6101f1600480360360208110156102c757600080fd5b50356001600160a01b031661065e565b610148610679565b6102af600480360360408110156102f557600080fd5b506001600160a01b0381351690602001356106da565b61012c6004803603604081101561032157600080fd5b506001600160a01b038135169060200135610786565b61012c6004803603604081101561034d57600080fd5b506001600160a01b0381351690602001356107ee565b61036b610802565b604080516001600160a01b039092168252519081900360200190f35b61036b610811565b6101f1600480360360408110156103a557600080fd5b506001600160a01b0381358116916020013516610825565b60007f01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2631d1d8b6360e01b6001600160e01b031984166301ffc9a760e01b148061041357506001600160e01b0319848116908216145b949350505050565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104a75780601f1061047c576101008083540402835291602001916104a7565b820191906000526020600020905b81548152906001019060200180831161048a57829003601f168201915b5050505050905090565b60006104c56104be610850565b8484610854565b50600192915050565b60025490565b60006104e1848484610940565b610551846104ed610850565b61054c85604051806060016040528060288152602001610e6f602891396001600160a01b038a1660009081526001602052604081209061052b610850565b6001600160a01b031681526020810191909152604001600020549190610a9b565b610854565b5060019392505050565b60055460ff1690565b60006104c5610571610850565b8461054c8560016000610582610850565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610b32565b6006546001600160a01b03163314610611576040805162461bcd60e51b815260206004820181905260248201527f4f6e6c79204c32204272696467652063616e206d696e7420616e64206275726e604482015290519081900360640190fd5b61061b8282610b93565b6040805182815290516001600160a01b038416917f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885919081900360200190a25050565b6001600160a01b031660009081526020819052604090205490565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104a75780601f1061047c576101008083540402835291602001916104a7565b6006546001600160a01b03163314610739576040805162461bcd60e51b815260206004820181905260248201527f4f6e6c79204c32204272696467652063616e206d696e7420616e64206275726e604482015290519081900360640190fd5b6107438282610c83565b6040805182815290516001600160a01b038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a25050565b60006104c5610793610850565b8461054c85604051806060016040528060258152602001610f0160259139600160006107bd610850565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190610a9b565b60006104c56107fb610850565b8484610940565b6006546001600160a01b031681565b60055461010090046001600160a01b031681565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3390565b6001600160a01b0383166108995760405162461bcd60e51b8152600401808060200182810382526024815260200180610edd6024913960400191505060405180910390fd5b6001600160a01b0382166108de5760405162461bcd60e51b8152600401808060200182810382526022815260200180610e276022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166109855760405162461bcd60e51b8152600401808060200182810382526025815260200180610eb86025913960400191505060405180910390fd5b6001600160a01b0382166109ca5760405162461bcd60e51b8152600401808060200182810382526023815260200180610de26023913960400191505060405180910390fd5b6109d5838383610d7f565b610a1281604051806060016040528060268152602001610e49602691396001600160a01b0386166000908152602081905260409020549190610a9b565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610a419082610b32565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610b2a5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610aef578181015183820152602001610ad7565b50505050905090810190601f168015610b1c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610b8c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038216610bee576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b610bfa60008383610d7f565b600254610c079082610b32565b6002556001600160a01b038216600090815260208190526040902054610c2d9082610b32565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b038216610cc85760405162461bcd60e51b8152600401808060200182810382526021815260200180610e976021913960400191505060405180910390fd5b610cd482600083610d7f565b610d1181604051806060016040528060228152602001610e05602291396001600160a01b0385166000908152602081905260409020549190610a9b565b6001600160a01b038316600090815260208190526040902055600254610d379082610d84565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b505050565b600082821115610ddb576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa164736f6c6343000706000a

Deployed ByteCode Sourcemap

172:1448:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;857:457;;;;;;;;;;;;;;;;-1:-1:-1;857:457:6;-1:-1:-1;;;;;;857:457:6;;:::i;:::-;;;;;;;;;;;;;;;;;;2168:89:2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4244:166;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4244:166:2;;;;;;;;:::i;3235:106::-;;;:::i;:::-;;;;;;;;;;;;;;;;4877:317;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4877:317:2;;;;;;;;;;;;;;;;;:::i;3086:89::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5589:215;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5589:215:2;;;;;;;;:::i;1320:143:6:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1320:143:6;;;;;;;;:::i;:::-;;3399:125:2;;;;;;;;;;;;;;;;-1:-1:-1;3399:125:2;-1:-1:-1;;;;;3399:125:2;;:::i;2370:93::-;;;:::i;1469:149:6:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1469:149:6;;;;;;;;:::i;6291:266:2:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6291:266:2;;;;;;;;:::i;3727:172::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3727:172:2;;;;;;;;:::i;267:23:6:-;;;:::i;:::-;;;;-1:-1:-1;;;;;267:23:6;;;;;;;;;;;;;;230:31;;;:::i;3957:149:2:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3957:149:2;;;;;;;;;;:::i;857:457:6:-;935:4;991:38;-1:-1:-1;;;;;;;;;1224:39:6;;-1:-1:-1;;;1224:39:6;;:83;;-1:-1:-1;;;;;;;1267:40:6;;;;;;;1224:83;1217:90;857:457;-1:-1:-1;;;;857:457:6:o;2168:89:2:-;2245:5;2238:12;;;;;;;;-1:-1:-1;;2238:12:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2213:13;;2238:12;;2245:5;;2238:12;;2245:5;2238:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2168:89;:::o;4244:166::-;4327:4;4343:39;4352:12;:10;:12::i;:::-;4366:7;4375:6;4343:8;:39::i;:::-;-1:-1:-1;4399:4:2;4244:166;;;;:::o;3235:106::-;3322:12;;3235:106;:::o;4877:317::-;4983:4;4999:36;5009:6;5017:9;5028:6;4999:9;:36::i;:::-;5045:121;5054:6;5062:12;:10;:12::i;:::-;5076:89;5114:6;5076:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5076:19:2;;;;;;:11;:19;;;;;;5096:12;:10;:12::i;:::-;-1:-1:-1;;;;;5076:33:2;;;;;;;;;;;;-1:-1:-1;5076:33:2;;;:89;:37;:89::i;:::-;5045:8;:121::i;:::-;-1:-1:-1;5183:4:2;4877:317;;;;;:::o;3086:89::-;3159:9;;;;3086:89;:::o;5589:215::-;5677:4;5693:83;5702:12;:10;:12::i;:::-;5716:7;5725:50;5764:10;5725:11;:25;5737:12;:10;:12::i;:::-;-1:-1:-1;;;;;5725:25:2;;;;;;;;;;;;;;;;;-1:-1:-1;5725:25:2;;;:34;;;;;;;;;;;:38;:50::i;1320:143:6:-;788:8;;-1:-1:-1;;;;;788:8:6;774:10;:22;766:67;;;;;-1:-1:-1;;;766:67:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1403:19:::1;1409:3;1414:7;1403:5;:19::i;:::-;1438:18;::::0;;;;;;;-1:-1:-1;;;;;1438:18:6;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;::::1;1320:143:::0;;:::o;3399:125:2:-;-1:-1:-1;;;;;3499:18:2;3473:7;3499:18;;;;;;;;;;;;3399:125::o;2370:93::-;2449:7;2442:14;;;;;;;;-1:-1:-1;;2442:14:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2417:13;;2442:14;;2449:7;;2442:14;;2449:7;2442:14;;;;;;;;;;;;;;;;;;;;;;;;1469:149:6;788:8;;-1:-1:-1;;;;;788:8:6;774:10;:22;766:67;;;;;-1:-1:-1;;;766:67:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1554:21:::1;1560:5;1567:7;1554:5;:21::i;:::-;1591:20;::::0;;;;;;;-1:-1:-1;;;;;1591:20:6;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;::::1;1469:149:::0;;:::o;6291:266:2:-;6384:4;6400:129;6409:12;:10;:12::i;:::-;6423:7;6432:96;6471:15;6432:96;;;;;;;;;;;;;;;;;:11;:25;6444:12;:10;:12::i;:::-;-1:-1:-1;;;;;6432:25:2;;;;;;;;;;;;;;;;;-1:-1:-1;6432:25:2;;;:34;;;;;;;;;;;:96;:38;:96::i;3727:172::-;3813:4;3829:42;3839:12;:10;:12::i;:::-;3853:9;3864:6;3829:9;:42::i;267:23:6:-;;;-1:-1:-1;;;;;267:23:6;;:::o;230:31::-;;;;;;-1:-1:-1;;;;;230:31:6;;:::o;3957:149:2:-;-1:-1:-1;;;;;4072:18:2;;;4046:7;4072:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3957:149::o;598:104:4:-;685:10;598:104;:::o;9355:340:2:-;-1:-1:-1;;;;;9456:19:2;;9448:68;;;;-1:-1:-1;;;9448:68:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9534:21:2;;9526:68;;;;-1:-1:-1;;;9526:68:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9605:18:2;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9656:32;;;;;;;;;;;;;;;;;9355:340;;;:::o;7031:530::-;-1:-1:-1;;;;;7136:20:2;;7128:70;;;;-1:-1:-1;;;7128:70:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7216:23:2;;7208:71;;;;-1:-1:-1;;;7208:71:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7290:47;7311:6;7319:9;7330:6;7290:20;:47::i;:::-;7368:71;7390:6;7368:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7368:17:2;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;7348:17:2;;;:9;:17;;;;;;;;;;;:91;;;;7472:20;;;;;;;:32;;7497:6;7472:24;:32::i;:::-;-1:-1:-1;;;;;7449:20:2;;;:9;:20;;;;;;;;;;;;:55;;;;7519:35;;;;;;;7449:20;;7519:35;;;;;;;;;;;;;7031:530;;;:::o;5432:163:1:-;5518:7;5553:12;5545:6;;;;5537:29;;;;-1:-1:-1;;;5537:29:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5583:5:1;;;5432:163::o;2690:175::-;2748:7;2779:5;;;2802:6;;;;2794:46;;;;;-1:-1:-1;;;2794:46:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;2857:1;2690:175;-1:-1:-1;;;2690:175:1:o;7832:370:2:-;-1:-1:-1;;;;;7915:21:2;;7907:65;;;;;-1:-1:-1;;;7907:65:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;7983:49;8012:1;8016:7;8025:6;7983:20;:49::i;:::-;8058:12;;:24;;8075:6;8058:16;:24::i;:::-;8043:12;:39;-1:-1:-1;;;;;8113:18:2;;:9;:18;;;;;;;;;;;:30;;8136:6;8113:22;:30::i;:::-;-1:-1:-1;;;;;8092:18:2;;:9;:18;;;;;;;;;;;:51;;;;8158:37;;;;;;;8092:18;;:9;;8158:37;;;;;;;;;;7832:370;;:::o;8522:410::-;-1:-1:-1;;;;;8605:21:2;;8597:67;;;;-1:-1:-1;;;8597:67:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8675:49;8696:7;8713:1;8717:6;8675:20;:49::i;:::-;8756:68;8779:6;8756:68;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8756:18:2;;:9;:18;;;;;;;;;;;;:68;:22;:68::i;:::-;-1:-1:-1;;;;;8735:18:2;;:9;:18;;;;;;;;;;:89;8849:12;;:24;;8866:6;8849:16;:24::i;:::-;8834:12;:39;8888:37;;;;;;;;8914:1;;-1:-1:-1;;;;;8888:37:2;;;;;;;;;;;;8522:410;;:::o;10701:92::-;;;;:::o;3136:155:1:-;3194:7;3226:1;3221;:6;;3213:49;;;;;-1:-1:-1;;;3213:49:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3279:5:1;;;3136:155::o

Swarm Source

none
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.