ETH Price: $3,667.57 (+2.28%)

Contract

0xbBC81d23Ea2c3ec7e56D39296F0cbB648873a5d3
 

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Remove_liquidity...211598962024-11-10 21:15:4719 days ago1731273347IN
Curve.fi: y Deposit
0 ETH0.039074442.0333451
Remove_liquidity...211594552024-11-10 19:46:5919 days ago1731268019IN
Curve.fi: y Deposit
0 ETH0.0287642830.94288076
Remove_liquidity...209832042024-10-17 5:30:1144 days ago1729143011IN
Curve.fi: y Deposit
0 ETH0.006629767
Remove_liquidity...205117732024-08-12 9:54:59110 days ago1723456499IN
Curve.fi: y Deposit
0 ETH0.003015423.2
Add_liquidity204534302024-08-04 6:35:23118 days ago1722753323IN
Curve.fi: y Deposit
0 ETH0.000369841
Remove_liquidity203975352024-07-27 11:18:23126 days ago1722079103IN
Curve.fi: y Deposit
0 ETH0.002686771.79611048
Remove_liquidity203956402024-07-27 4:57:35126 days ago1722056255IN
Curve.fi: y Deposit
0 ETH0.000507841
Add_liquidity201453392024-06-22 6:04:47161 days ago1719036287IN
Curve.fi: y Deposit
0 ETH0.001562882
Remove_liquidity200990102024-06-15 18:33:47168 days ago1718476427IN
Curve.fi: y Deposit
0 ETH0.005908023.98760085
Remove_liquidity...198371052024-05-10 3:59:11204 days ago1715313551IN
Curve.fi: y Deposit
0 ETH0.001642473.21809139
Remove_liquidity...198371052024-05-10 3:59:11204 days ago1715313551IN
Curve.fi: y Deposit
0 ETH0.001531163
Remove_liquidity194229242024-03-13 1:37:47262 days ago1710293867IN
Curve.fi: y Deposit
0 ETH0.0349163838.48408692
Remove_liquidity...183241502023-10-11 2:12:35416 days ago1696990355IN
Curve.fi: y Deposit
0 ETH0.006453836.95945765
Remove_liquidity...182819072023-10-05 4:24:23422 days ago1696479863IN
Curve.fi: y Deposit
0 ETH0.00574536.12016175
Add_liquidity182023662023-09-24 1:23:35433 days ago1695518615IN
Curve.fi: y Deposit
0 ETH0.005376736.8601034
Remove_liquidity...177151592023-07-17 19:48:23501 days ago1689623303IN
Curve.fi: y Deposit
0 ETH0.0167029717.89890925
Remove_liquidity...176433522023-07-07 17:17:23512 days ago1688750243IN
Curve.fi: y Deposit
0 ETH0.0312385233.14541107
Remove_liquidity...175662202023-06-26 21:19:59522 days ago1687814399IN
Curve.fi: y Deposit
0 ETH0.0124638613.0914272
Remove_liquidity174847732023-06-15 10:44:47534 days ago1686825887IN
Curve.fi: y Deposit
0 ETH0.0278545417.80064109
Remove_liquidity...174835072023-06-15 6:27:47534 days ago1686810467IN
Curve.fi: y Deposit
0 ETH0.0171505717.9465216
Add_liquidity174766472023-06-14 7:17:11535 days ago1686727031IN
Curve.fi: y Deposit
0 ETH0.0111247414.62266289
Add_liquidity174718012023-06-13 14:55:59536 days ago1686668159IN
Curve.fi: y Deposit
0 ETH0.0334534926.80953127
Remove_liquidity...174488642023-06-10 9:24:23539 days ago1686389063IN
Curve.fi: y Deposit
0 ETH0.0178828418.58174344
Add_liquidity174477952023-06-10 5:47:47539 days ago1686376067IN
Curve.fi: y Deposit
0 ETH0.0247425532.36013452
Add_liquidity174444612023-06-09 18:31:47540 days ago1686335507IN
Curve.fi: y Deposit
0 ETH0.0140118718.19922023
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Vyper_contract

Compiler Version
vyper:0.1.0b17

Optimization Enabled:
N/A

Other Settings:
None license

Contract Source Code (Vyper language format)

# A "zap" to deposit/withdraw Curve contract without too many transactions
# (c) Curve.Fi, 2020
from vyper.interfaces import ERC20

# External Contracts
contract yERC20:
    def totalSupply() -> uint256: constant
    def allowance(_owner: address, _spender: address) -> uint256: constant
    def transfer(_to: address, _value: uint256) -> bool: modifying
    def transferFrom(_from: address, _to: address, _value: uint256) -> bool: modifying
    def approve(_spender: address, _value: uint256) -> bool: modifying
    def name() -> string[64]: constant
    def symbol() -> string[32]: constant
    def decimals() -> uint256: constant
    def balanceOf(arg0: address) -> uint256: constant
    def deposit(depositAmount: uint256): modifying
    def withdraw(withdrawTokens: uint256): modifying
    def getPricePerFullShare() -> uint256: constant




# Tether transfer-only ABI
contract USDT:
    def transfer(_to: address, _value: uint256): modifying
    def transferFrom(_from: address, _to: address, _value: uint256): modifying


contract Curve:
    def add_liquidity(amounts: uint256[N_COINS], min_mint_amount: uint256): modifying
    def remove_liquidity(_amount: uint256, min_amounts: uint256[N_COINS]): modifying
    def remove_liquidity_imbalance(amounts: uint256[N_COINS], max_burn_amount: uint256): modifying
    def balances(i: int128) -> uint256: constant
    def A() -> uint256: constant
    def fee() -> uint256: constant
    def owner() -> address: constant


N_COINS: constant(int128) = 4
TETHERED: constant(bool[N_COINS]) = [False, False, True, False]
ZERO256: constant(uint256) = 0  # This hack is really bad XXX
ZEROS: constant(uint256[N_COINS]) = [ZERO256, ZERO256, ZERO256, ZERO256]  # <- change
LENDING_PRECISION: constant(uint256) = 10 ** 18
PRECISION: constant(uint256) = 10 ** 18
PRECISION_MUL: constant(uint256[N_COINS]) = [convert(1, uint256), convert(1000000000000, uint256), convert(1000000000000, uint256), convert(1, uint256)]
FEE_DENOMINATOR: constant(uint256) = 10 ** 10
FEE_IMPRECISION: constant(uint256) = 25 * 10 ** 8  # % of the fee

coins: public(address[N_COINS])
underlying_coins: public(address[N_COINS])
curve: public(address)
token: public(address)


@public
def __init__(_coins: address[N_COINS], _underlying_coins: address[N_COINS],
             _curve: address, _token: address):
    self.coins = _coins
    self.underlying_coins = _underlying_coins
    self.curve = _curve
    self.token = _token


@public
@nonreentrant('lock')
def add_liquidity(uamounts: uint256[N_COINS], min_mint_amount: uint256):
    tethered: bool[N_COINS] = TETHERED
    amounts: uint256[N_COINS] = ZEROS

    for i in range(N_COINS):
        uamount: uint256 = uamounts[i]

        if uamount > 0:
            # Transfer the underlying coin from owner
            if tethered[i]:
                USDT(self.underlying_coins[i]).transferFrom(
                    msg.sender, self, uamount)
            else:
                assert_modifiable(ERC20(self.underlying_coins[i])\
                    .transferFrom(msg.sender, self, uamount))

            # Mint if needed
            ERC20(self.underlying_coins[i]).approve(self.coins[i], uamount)
            yERC20(self.coins[i]).deposit(uamount)
            amounts[i] = yERC20(self.coins[i]).balanceOf(self)
            ERC20(self.coins[i]).approve(self.curve, amounts[i])

    Curve(self.curve).add_liquidity(amounts, min_mint_amount)

    tokens: uint256 = ERC20(self.token).balanceOf(self)
    assert_modifiable(ERC20(self.token).transfer(msg.sender, tokens))


@private
def _send_all(_addr: address, min_uamounts: uint256[N_COINS], one: int128):
    tethered: bool[N_COINS] = TETHERED

    for i in range(N_COINS):
        if (one < 0) or (i == one):
            _coin: address = self.coins[i]
            _balance: uint256 = yERC20(_coin).balanceOf(self)
            if _balance == 0:  # Do nothing for 0 coins
                continue
            yERC20(_coin).withdraw(_balance)

            _ucoin: address = self.underlying_coins[i]
            _uamount: uint256 = ERC20(_ucoin).balanceOf(self)
            assert _uamount >= min_uamounts[i], "Not enough coins withdrawn"

            if tethered[i]:
                USDT(_ucoin).transfer(_addr, _uamount)
            else:
                assert_modifiable(ERC20(_ucoin).transfer(_addr, _uamount))


@public
@nonreentrant('lock')
def remove_liquidity(_amount: uint256, min_uamounts: uint256[N_COINS]):
    zeros: uint256[N_COINS] = ZEROS

    assert_modifiable(ERC20(self.token).transferFrom(msg.sender, self, _amount))
    Curve(self.curve).remove_liquidity(_amount, zeros)

    self._send_all(msg.sender, min_uamounts, -1)


@public
@nonreentrant('lock')
def remove_liquidity_imbalance(uamounts: uint256[N_COINS], max_burn_amount: uint256):
    """
    Get max_burn_amount in, remove requested liquidity and transfer back what is left
    """
    tethered: bool[N_COINS] = TETHERED
    _token: address = self.token

    amounts: uint256[N_COINS] = uamounts
    for i in range(N_COINS):
        if amounts[i] > 0:
            rate: uint256 = yERC20(self.coins[i]).getPricePerFullShare()
            amounts[i] = amounts[i] * LENDING_PRECISION / rate

    # Transfrer max tokens in
    _tokens: uint256 = ERC20(_token).balanceOf(msg.sender)
    if _tokens > max_burn_amount:
        _tokens = max_burn_amount
    assert_modifiable(ERC20(_token).transferFrom(msg.sender, self, _tokens))

    Curve(self.curve).remove_liquidity_imbalance(amounts, max_burn_amount)

    # Transfer unused tokens back
    _tokens = ERC20(_token).balanceOf(self)
    assert_modifiable(ERC20(_token).transfer(msg.sender, _tokens))

    # Unwrap and transfer all the coins we've got
    self._send_all(msg.sender, ZEROS, -1)


@private
@constant
def _xp_mem(rates: uint256[N_COINS], _balances: uint256[N_COINS]) -> uint256[N_COINS]:
    result: uint256[N_COINS] = rates
    for i in range(N_COINS):
        result[i] = result[i] * _balances[i] / PRECISION
    return result


@private
@constant
def get_D(A: uint256, xp: uint256[N_COINS]) -> uint256:
    S: uint256 = 0
    for _x in xp:
        S += _x
    if S == 0:
        return 0

    Dprev: uint256 = 0
    D: uint256 = S
    Ann: uint256 = A * N_COINS
    for _i in range(255):
        D_P: uint256 = D
        for _x in xp:
            D_P = D_P * D / (_x * N_COINS + 1)  # +1 is to prevent /0
        Dprev = D
        D = (Ann * S + D_P * N_COINS) * D / ((Ann - 1) * D + (N_COINS + 1) * D_P)
        # Equality with the precision of 1
        if D > Dprev:
            if D - Dprev <= 1:
                break
        else:
            if Dprev - D <= 1:
                break
    return D


@private
@constant
def get_y(A: uint256, i: int128, _xp: uint256[N_COINS], D: uint256) -> uint256:
    """
    Calculate x[i] if one reduces D from being calculated for _xp to D

    Done by solving quadratic equation iteratively.
    x_1**2 + x1 * (sum' - (A*n**n - 1) * D / (A * n**n)) = D ** (n + 1) / (n ** (2 * n) * prod' * A)
    x_1**2 + b*x_1 = c

    x_1 = (x_1**2 + c) / (2*x_1 + b)
    """
    # x in the input is converted to the same price/precision

    assert (i >= 0) and (i < N_COINS)

    c: uint256 = D
    S_: uint256 = 0
    Ann: uint256 = A * N_COINS

    _x: uint256 = 0
    for _i in range(N_COINS):
        if _i != i:
            _x = _xp[_i]
        else:
            continue
        S_ += _x
        c = c * D / (_x * N_COINS)
    c = c * D / (Ann * N_COINS)
    b: uint256 = S_ + D / Ann
    y_prev: uint256 = 0
    y: uint256 = D
    for _i in range(255):
        y_prev = y
        y = (y*y + c) / (2 * y + b - D)
        # Equality with the precision of 1
        if y > y_prev:
            if y - y_prev <= 1:
                break
        else:
            if y_prev - y <= 1:
                break
    return y


@private
@constant
def _calc_withdraw_one_coin(_token_amount: uint256, i: int128, rates: uint256[N_COINS]) -> uint256:
    # First, need to calculate
    # * Get current D
    # * Solve Eqn against y_i for D - _token_amount
    crv: address = self.curve
    A: uint256 = Curve(crv).A()
    fee: uint256 = Curve(crv).fee() * N_COINS / (4 * (N_COINS - 1))
    fee += fee * FEE_IMPRECISION / FEE_DENOMINATOR  # Overcharge to account for imprecision
    precisions: uint256[N_COINS] = PRECISION_MUL
    total_supply: uint256 = ERC20(self.token).totalSupply()

    xp: uint256[N_COINS] = PRECISION_MUL
    S: uint256 = 0
    for j in range(N_COINS):
        xp[j] *= Curve(crv).balances(j)
        xp[j] = xp[j] * rates[j] / LENDING_PRECISION
        S += xp[j]

    D0: uint256 = self.get_D(A, xp)
    D1: uint256 = D0 - _token_amount * D0 / total_supply
    xp_reduced: uint256[N_COINS] = xp

    # xp = xp - fee * | xp * D1 / D0 - (xp - S * dD / D0 * (0, ... 1, ..0))|
    for j in range(N_COINS):
        dx_expected: uint256 = 0
        b_ideal: uint256 = xp[j] * D1 / D0
        b_expected: uint256 = xp[j]
        if j == i:
            b_expected -= S * (D0 - D1) / D0
        if b_ideal >= b_expected:
            dx_expected += (b_ideal - b_expected)
        else:
            dx_expected += (b_expected - b_ideal)
        xp_reduced[j] -= fee * dx_expected / FEE_DENOMINATOR

    dy: uint256 = xp_reduced[i] - self.get_y(A, i, xp_reduced, D1)
    dy = dy / precisions[i]

    return dy


@public
@constant
def calc_withdraw_one_coin(_token_amount: uint256, i: int128) -> uint256:
    rates: uint256[N_COINS] = ZEROS

    for j in range(N_COINS):
        rates[j] = yERC20(self.coins[j]).getPricePerFullShare()

    return self._calc_withdraw_one_coin(_token_amount, i, rates)


@public
@nonreentrant('lock')
def remove_liquidity_one_coin(_token_amount: uint256, i: int128, min_uamount: uint256, donate_dust: bool = False):
    """
    Remove _amount of liquidity all in a form of coin i
    """
    rates: uint256[N_COINS] = ZEROS
    _token: address = self.token

    for j in range(N_COINS):
        rates[j] = yERC20(self.coins[j]).getPricePerFullShare()

    dy: uint256 = self._calc_withdraw_one_coin(_token_amount, i, rates)
    assert dy >= min_uamount, "Not enough coins removed"

    assert_modifiable(
        ERC20(self.token).transferFrom(msg.sender, self, _token_amount))

    amounts: uint256[N_COINS] = ZEROS
    amounts[i] = dy * LENDING_PRECISION / rates[i]
    token_amount_before: uint256 = ERC20(_token).balanceOf(self)
    Curve(self.curve).remove_liquidity_imbalance(amounts, _token_amount)

    # Unwrap and transfer all the coins we've got
    self._send_all(msg.sender, ZEROS, i)

    if not donate_dust:
        # Transfer unused tokens back
        token_amount_after: uint256 = ERC20(_token).balanceOf(self)
        if token_amount_after > token_amount_before:
            assert_modifiable(ERC20(_token).transfer(
                msg.sender, token_amount_after - token_amount_before)
            )


@public
@nonreentrant('lock')
def withdraw_donated_dust():
    owner: address = Curve(self.curve).owner()
    assert msg.sender == owner

    _token: address = self.token
    assert_modifiable(
        ERC20(_token).transfer(owner, ERC20(_token).balanceOf(self)))

Contract Security Audit

Contract ABI

[{"outputs":[],"inputs":[{"type":"address[4]","name":"_coins"},{"type":"address[4]","name":"_underlying_coins"},{"type":"address","name":"_curve"},{"type":"address","name":"_token"}],"constant":false,"payable":false,"type":"constructor"},{"name":"add_liquidity","outputs":[],"inputs":[{"type":"uint256[4]","name":"uamounts"},{"type":"uint256","name":"min_mint_amount"}],"constant":false,"payable":false,"type":"function","gas":164560},{"name":"remove_liquidity","outputs":[],"inputs":[{"type":"uint256","name":"_amount"},{"type":"uint256[4]","name":"min_uamounts"}],"constant":false,"payable":false,"type":"function","gas":99521},{"name":"remove_liquidity_imbalance","outputs":[],"inputs":[{"type":"uint256[4]","name":"uamounts"},{"type":"uint256","name":"max_burn_amount"}],"constant":false,"payable":false,"type":"function","gas":120148},{"name":"calc_withdraw_one_coin","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256","name":"_token_amount"},{"type":"int128","name":"i"}],"constant":true,"payable":false,"type":"function","gas":3881601},{"name":"remove_liquidity_one_coin","outputs":[],"inputs":[{"type":"uint256","name":"_token_amount"},{"type":"int128","name":"i"},{"type":"uint256","name":"min_uamount"}],"constant":false,"payable":false,"type":"function"},{"name":"remove_liquidity_one_coin","outputs":[],"inputs":[{"type":"uint256","name":"_token_amount"},{"type":"int128","name":"i"},{"type":"uint256","name":"min_uamount"},{"type":"bool","name":"donate_dust"}],"constant":false,"payable":false,"type":"function"},{"name":"withdraw_donated_dust","outputs":[],"inputs":[],"constant":false,"payable":false,"type":"function","gas":63973},{"name":"coins","outputs":[{"type":"address","name":""}],"inputs":[{"type":"int128","name":"arg0"}],"constant":true,"payable":false,"type":"function","gas":1680},{"name":"underlying_coins","outputs":[{"type":"address","name":""}],"inputs":[{"type":"int128","name":"arg0"}],"constant":true,"payable":false,"type":"function","gas":1710},{"name":"curve","outputs":[{"type":"address","name":""}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":1541},{"name":"token","outputs":[{"type":"address","name":""}],"inputs":[],"constant":true,"payable":false,"type":"function","gas":1571}]

740100000000000000000000000000000000000000006020526f7fffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff8000000000000000000000000000000060605274012a05f1fffffffffffffffffffffffffdabf41c006080527ffffffffffffffffffffffffed5fa0e000000000000000000000000000000000060a052610140612b3c6101403934156100a257600080fd5b6020612b3c60c03960c05160205181106100bb57600080fd5b5060206020612b3c0160c03960c05160205181106100d857600080fd5b5060206040612b3c0160c03960c05160205181106100f557600080fd5b5060206060612b3c0160c03960c051602051811061011257600080fd5b5060206080612b3c0160c03960c051602051811061012f57600080fd5b50602060a0612b3c0160c03960c051602051811061014c57600080fd5b50602060c0612b3c0160c03960c051602051811061016957600080fd5b50602060e0612b3c0160c03960c051602051811061018657600080fd5b506020610100612b3c0160c03960c05160205181106101a457600080fd5b506020610120612b3c0160c03960c05160205181106101c257600080fd5b50600060c052602060c020610140805182558060200151600183015580604001516002830155806060015160038301555050600160c052602060c0206101c08051825580602001516001830155806040015160028301558060600151600383015550506102405160025561026051600355612b2456600436101561000d576128e6565b600035601c52740100000000000000000000000000000000000000006020526f7fffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff8000000000000000000000000000000060605274012a05f1fffffffffffffffffffffffffdabf41c006080527ffffffffffffffffffffffffed5fa0e000000000000000000000000000000000060a05263029b2f3460005114156106945762ffffff54156100be57600080fd5b600162ffffff5534156100d057600080fd5b61014060008152600081602001526001816040015260008160600152506101c0600081526000816020015260008160400152600081606001525061024060006004818352015b6004610240516004811061012957600080fd5b602002013561026052600061026051111561056357610140610240516004811061015257600080fd5b6020020151156101fe57610240516004811061016d57600080fd5b600160c052602060c02001543b61018357600080fd5b610240516004811061019457600080fd5b600160c052602060c020015430186101ab57600080fd5b6000600060646323b872dd610360523361038052306103a052610260516103c05261037c600061024051600481106101e257600080fd5b600160c052602060c02001545af16101f957600080fd5b6102ad565b610240516004811061020f57600080fd5b600160c052602060c02001543b61022557600080fd5b610240516004811061023657600080fd5b600160c052602060c0200154301861024d57600080fd5b602061034060646323b872dd61028052336102a052306102c052610260516102e05261029c6000610240516004811061028557600080fd5b600160c052602060c02001545af161029c57600080fd5b600050610340516102ac57600080fd5b5b61024051600481106102be57600080fd5b600160c052602060c02001543b6102d457600080fd5b61024051600481106102e557600080fd5b600160c052602060c020015430186102fc57600080fd5b60206104c0604463095ea7b361042052610240516004811061031d57600080fd5b600060c052602060c020015461044052610260516104605261043c6000610240516004811061034b57600080fd5b600160c052602060c02001545af161036257600080fd5b6000506104c050610240516004811061037a57600080fd5b600060c052602060c02001543b61039057600080fd5b61024051600481106103a157600080fd5b600060c052602060c020015430186103b857600080fd5b60006000602463b6b55f256104e05261026051610500526104fc600061024051600481106103e557600080fd5b600060c052602060c02001545af16103fc57600080fd5b610240516004811061040d57600080fd5b600060c052602060c02001543b61042357600080fd5b610240516004811061043457600080fd5b600060c052602060c0200154301861044b57600080fd5b60206105e060246370a0823161056052306105805261057c610240516004811061047457600080fd5b600060c052602060c02001545afa61048b57600080fd5b6000506105e0516101c061024051600481106104a657600080fd5b602002015261024051600481106104bc57600080fd5b600060c052602060c02001543b6104d257600080fd5b61024051600481106104e357600080fd5b600060c052602060c020015430186104fa57600080fd5b60206106a0604463095ea7b361060052600254610620526101c0610240516004811061052557600080fd5b60200201516106405261061c6000610240516004811061054457600080fd5b600060c052602060c02001545af161055b57600080fd5b6000506106a0505b5b8151600101808352811415610116575b50506002543b61058357600080fd5b600254301861059157600080fd5b6000600060a463029b2f346106c0526106e06101c0805182528060200151826020015280604001518260400152806060015182606001525050608435610760526106dc60006002545af16105e457600080fd5b6003543b6105f157600080fd5b60035430186105ff57600080fd5b602061086060246370a082316107e05230610800526107fc6003545afa61062557600080fd5b600050610860516107c0526003543b61063d57600080fd5b600354301861064b57600080fd5b6020610920604463a9059cbb61088052336108a0526107c0516108c05261089c60006003545af161067b57600080fd5b6000506109205161068b57600080fd5b600062ffffff55005b600015610985575b610200526101405261016052610180526101a0526101c0526101e05261022060008152600081602001526001816040015260008160600152506102a060006004818352015b6101e0516102a0511460006101e05112171561096c576102a0516004811061070857600080fd5b600060c052602060c02001546102c0526102c0513b61072657600080fd5b6102c051301861073557600080fd5b602061038060246370a0823161030052306103205261031c6102c0515afa61075c57600080fd5b600050610380516102e0526102e05115156107765761096d565b6102c0513b61078457600080fd5b6102c051301861079357600080fd5b600060006024632e1a7d4d6103a0526102e0516103c0526103bc60006102c0515af16107be57600080fd5b6102a051600481106107cf57600080fd5b600160c052602060c020015461042052610420513b6107ed57600080fd5b6104205130186107fc57600080fd5b60206104e060246370a0823161046052306104805261047c610420515afa61082357600080fd5b6000506104e051610440526308c379a061050052602061052052601a610540527f4e6f7420656e6f75676820636f696e732077697468647261776e00000000000061056052610540506101606102a0516004811061088057600080fd5b602002015161044051101561089657608461051cfd5b6102206102a051600481106108aa57600080fd5b60200201511561090957610420513b6108c257600080fd5b6104205130186108d157600080fd5b60006000604463a9059cbb610660526101405161068052610440516106a05261067c6000610420515af161090457600080fd5b61096b565b610420513b61091757600080fd5b61042051301861092657600080fd5b6020610640604463a9059cbb6105a052610140516105c052610440516105e0526105bc6000610420515af161095a57600080fd5b6000506106405161096a57600080fd5b5b5b5b81516001018083528114156106e1575b505061020051565b637d49d8756000511415610b7c5762ffffff54156109a257600080fd5b600162ffffff5534156109b457600080fd5b61014060008152600081602001526000816040015260008160600152506003543b6109de57600080fd5b60035430186109ec57600080fd5b602061028060646323b872dd6101c052336101e0523061020052600435610220526101dc60006003545af1610a2057600080fd5b60005061028051610a3057600080fd5b6002543b610a3d57600080fd5b6002543018610a4b57600080fd5b6000600060a4637d49d8756102a0526004356102c0526102e06101408051825280602001518260200152806040015182604001528060600151826060015250506102bc60006002545af1610a9e57600080fd5b6101406103a0525b6103a0515160206103a051016103a0526103a06103a0511015610ac857610aa6565b63eb9ec6916103c052336103e05261040060248035825280602001358260200152806040013582604001528060600135826060015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6104805261048051610460516104405161042051610400516103e0516006580161069c565b6103806103a0525b6103a0515260206103a051036103a0526101406103a051101515610b7057610b4d565b600050600062ffffff55005b6318a7bd766000511415610fed5762ffffff5415610b9957600080fd5b600162ffffff553415610bab57600080fd5b61014060008152600081602001526001816040015260008160600152506003546101c0526101e0600480358252806020013582602001528060400135826040015280606001358260600152505061026060006004818352015b60006101e06102605160048110610c1a57600080fd5b60200201511115610d26576102605160048110610c3657600080fd5b600060c052602060c02001543b610c4c57600080fd5b6102605160048110610c5d57600080fd5b600060c052602060c02001543018610c7457600080fd5b602061030060046377c7b8fc6102a0526102bc6102605160048110610c9857600080fd5b600060c052602060c02001545afa610caf57600080fd5b60005061030051610280526101e06102605160048110610cce57600080fd5b6020020151670de0b6b3a76400008082028215828483041417610cf057600080fd5b80905090509050610280518080610d0657600080fd5b8204905090506101e06102605160048110610d2057600080fd5b60200201525b5b8151600101808352811415610c04575b50506101c0513b610d4757600080fd5b6101c0513018610d5657600080fd5b60206103c060246370a0823161034052336103605261035c6101c0515afa610d7d57600080fd5b6000506103c05161032052608435610320511115610d9d57608435610320525b6101c0513b610dab57600080fd5b6101c0513018610dba57600080fd5b60206104a060646323b872dd6103e0523361040052306104205261032051610440526103fc60006101c0515af1610df057600080fd5b6000506104a051610e0057600080fd5b6002543b610e0d57600080fd5b6002543018610e1b57600080fd5b6000600060a46318a7bd766104c0526104e06101e0805182528060200151826020015280604001518260400152806060015182606001525050608435610560526104dc60006002545af1610e6e57600080fd5b6101c0513b610e7c57600080fd5b6101c0513018610e8b57600080fd5b602061064060246370a082316105c052306105e0526105dc6101c0515afa610eb257600080fd5b60005061064051610320526101c0513b610ecb57600080fd5b6101c0513018610eda57600080fd5b6020610700604463a9059cbb610660523361068052610320516106a05261067c60006101c0515af1610f0b57600080fd5b60005061070051610f1b57600080fd5b610140610720525b61072051516020610720510161072052610720610720511015610f4557610f23565b63eb9ec69161074052336107605261078060008152600081602001526000816040015260008160600152507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61080052610800516107e0516107c0516107a05161078051610760516006580161069c565b610700610720525b6107205152602061072051036107205261014061072051101515610fe157610fbe565b600050600062ffffff55005b60001561111e575b610240526101405261016052610180526101a0526101c0526101e05261020052610220526102606101408051825280602001518260200152806040015182604001528060600151826060015250506102e060006004818352015b6102606102e0516004811061106357600080fd5b60200201516101c06102e0516004811061107c57600080fd5b6020020151808202821582848304141761109557600080fd5b80905090509050670de0b6b3a764000080806110b057600080fd5b8204905090506102606102e051600481106110ca57600080fd5b60200201525b815160010180835281141561104f575b50506080610300525b6000610300511115156110fb57611117565b60206103005103610260015160206103005103610300526110e9565b6102405156005b600015611428575b6101e0526101405261016052610180526101a0526101c05260006102005261024060006004818352015b6020610240510261016001516102205261020080516102205181818301101561117857600080fd5b808201905090508152505b8151600101808352811415611150575b50506102005115156111ae5760006000526000516101e05156505b600061028052610200516102a05261014051600480820282158284830414176111d657600080fd5b809050905090506102c0526102e0600060ff818352015b6102a0516103005261034060006004818352015b60206103405102610160015161032052610300516102a051808202821582848304141761122d57600080fd5b80905090509050610320516004808202821582848304141761124e57600080fd5b80905090509050600181818301101561126657600080fd5b80820190509050808061127857600080fd5b820490509050610300525b8151600101808352811415611201575b50506102a051610280526102c0516102005180820282158284830414176112b957600080fd5b8090509050905061030051600480820282158284830414176112da57600080fd5b809050905090508181830110156112f057600080fd5b808201905090506102a051808202821582848304141761130f57600080fd5b809050905090506102c05160018082101561132957600080fd5b808203905090506102a051808202821582848304141761134857600080fd5b80905090509050600561030051808202821582848304141761136957600080fd5b8090509050905081818301101561137f57600080fd5b80820190509050808061139157600080fd5b8204905090506102a052610280516102a05111156113d85760016102a05161028051808210156113c057600080fd5b808203905090501115156113d357611414565b611403565b6001610280516102a051808210156113ef57600080fd5b8082039050905011151561140257611414565b5b5b81516001018083528114156111ed575b50506102a0516000526000516101e0515650005b600015611755575b610220526101405261016052610180526101a0526101c0526101e052610200526004610160511260006101605112151661146957600080fd5b6102005161024052600061026052610140516004808202821582848304141761149157600080fd5b809050905090506102805260006102a0526102c060006004818352015b610160516102c05118156114de576101806102c051600481106114d057600080fd5b60200201516102a0526114e3565b61155f565b61026080516102a0518181830110156114fb57600080fd5b808201905090508152506102405161020051808202821582848304141761152157600080fd5b809050905090506102a0516004808202821582848304141761154257600080fd5b80905090509050808061155457600080fd5b820490509050610240525b81516001018083528114156114ae575b50506102405161020051808202821582848304141761158d57600080fd5b8090509050905061028051600480820282158284830414176115ae57600080fd5b8090509050905080806115c057600080fd5b8204905090506102405261026051610200516102805180806115e157600080fd5b8204905090508181830110156115f657600080fd5b808201905090506102e0526000610300526102005161032052610340600060ff818352015b61032051610300526103205161032051808202821582848304141761163f57600080fd5b809050905090506102405181818301101561165957600080fd5b80820190509050600261032051808202821582848304141761167a57600080fd5b809050905090506102e05181818301101561169457600080fd5b8082019050905061020051808210156116ac57600080fd5b8082039050905080806116be57600080fd5b82049050905061032052610300516103205111156117055760016103205161030051808210156116ed57600080fd5b8082039050905011151561170057611741565b611730565b600161030051610320518082101561171c57600080fd5b8082039050905011151561172f57611741565b5b5b815160010180835281141561161b575b505061032051600052600051610220515650005b600015611f0b575b610200526101405261016052610180526101a0526101c0526101e05260025461022052610220513b61178e57600080fd5b61022051301861179d57600080fd5b60206102c0600463f446c1d06102605261027c610220515afa6117bf57600080fd5b6000506102c05161024052610220513b6117d857600080fd5b6102205130186117e757600080fd5b6020610360600463ddca3f436103005261031c610220515afa61180957600080fd5b600050610360516004808202821582848304141761182657600080fd5b80905090509050600c808061183a57600080fd5b8204905090506102e0526102e080516102e051639502f900808202821582848304141761186657600080fd5b809050905090506402540be400808061187e57600080fd5b82049050905081818301101561189357600080fd5b808201905090508152506103806001815264e8d4a51000816020015264e8d4a51000816040015260018160600152506003543b6118cf57600080fd5b60035430186118dd57600080fd5b602061048060046318160ddd6104205261043c6003545afa6118fe57600080fd5b60005061048051610400526104a06001815264e8d4a51000816020015264e8d4a510008160400152600181606001525060006105205261054060006004818352015b6104a0610540516004811061195457600080fd5b602002018051610220513b61196857600080fd5b61022051301861197757600080fd5b60206105e0602463065a80d861056052610540516105805261057c610220515afa6119a157600080fd5b6000506105e05180820282158284830414176119bc57600080fd5b809050905090508152506104a061054051600481106119da57600080fd5b602002015161018061054051600481106119f357600080fd5b60200201518082028215828483041417611a0c57600080fd5b80905090509050670de0b6b3a76400008080611a2757600080fd5b8204905090506104a06105405160048110611a4157600080fd5b602002015261052080516104a06105405160048110611a5f57600080fd5b6020020151818183011015611a7357600080fd5b808201905090508152505b8151600101808352811415611940575b5050610140610620525b61062051516020610620510161062052610620610620511015611aba57611a98565b637b7241516106405261024051610660526106806104a08051825280602001518260200152806040015182604001528060600151826060015250506106e0516106c0516106a051610680516106605160065801611126565b61074052610600610620525b6106205152602061062051036106205261014061062051101515611b4157611b1e565b61074051610600526106005161014051610600518082028215828483041417611b6957600080fd5b80905090509050610400518080611b7f57600080fd5b82049050905080821015611b9257600080fd5b80820390509050610760526107806104a080518252806020015182602001528060400151826040015280606001518260600152505061080060006004818352015b6000610820526104a06108005160048110611bed57600080fd5b6020020151610760518082028215828483041417611c0a57600080fd5b80905090509050610600518080611c2057600080fd5b820490509050610840526104a06108005160048110611c3e57600080fd5b60200201516108605261016051610800511415611cc257610860805161052051610600516107605180821015611c7357600080fd5b808203905090508082028215828483041417611c8e57600080fd5b80905090509050610600518080611ca457600080fd5b82049050905080821015611cb757600080fd5b808203905090508152505b6108605161084051101515611d10576108208051610840516108605180821015611ceb57600080fd5b80820390509050818183011015611d0157600080fd5b80820190509050815250611d4b565b6108208051610860516108405180821015611d2a57600080fd5b80820390509050818183011015611d4057600080fd5b808201905090508152505b6107806108005160048110611d5f57600080fd5b6020020180516102e051610820518082028215828483041417611d8157600080fd5b809050905090506402540be4008080611d9957600080fd5b82049050905080821015611dac57600080fd5b808203905090508152505b8151600101808352811415611bd3575b50506107806101605160048110611ddd57600080fd5b60200201516101406108a0525b6108a0515160206108a051016108a0526108a06108a0511015611e0c57611dea565b638643731f6108c052610240516108e0526101605161090052610920610780805182528060200151826020015280604001518260400152806060015182606001525050610760516109a0526109a05161098051610960516109405161092051610900516108e05160065801611430565b610a00526108806108a0525b6108a0515260206108a051036108a0526101406108a051101515611eab57611e88565b610a005180821015611ebc57600080fd5b8082039050905061088052610880516103806101605160048110611edf57600080fd5b60200201518080611eef57600080fd5b8204905090506108805261088051600052600051610200515650005b63cc2b27d760005114156120c4573415611f2457600080fd5b60605160243580604051901315611f3a57600080fd5b8091901215611f4857600080fd5b5061014060008152600081602001526000816040015260008160600152506101c060006004818352015b6101c05160048110611f8357600080fd5b600060c052602060c02001543b611f9957600080fd5b6101c05160048110611faa57600080fd5b600060c052602060c02001543018611fc157600080fd5b602061024060046377c7b8fc6101e0526101fc6101c05160048110611fe557600080fd5b600060c052602060c02001545afa611ffc57600080fd5b600050610240516101406101c0516004811061201757600080fd5b60200201525b8151600101808352811415611f72575b50506101405161016051610180516101a05163800c1cbc610280526004356102a0526024356102c0526102e06101408051825280602001518260200152806040015182604001528060600151826060015250506103405161032051610300516102e0516102c0516102a0516006580161175d565b6103a0526101a0526101805261016052610140526103a05160005260206000f350005b631a4d01d260005114156120dd57600061014052612113565b63517a55a3600051141561210b57606435600281106120fb57600080fd5b6020606461014037600050612113565b600015612690575b62ffffff541561212257600080fd5b600162ffffff55341561213457600080fd5b6060516024358060405190131561214a57600080fd5b809190121561215857600080fd5b5061016060008152600081602001526000816040015260008160600152506003546101e05261020060006004818352015b610200516004811061219a57600080fd5b600060c052602060c02001543b6121b057600080fd5b61020051600481106121c157600080fd5b600060c052602060c020015430186121d857600080fd5b602061028060046377c7b8fc6102205261023c61020051600481106121fc57600080fd5b600060c052602060c02001545afa61221357600080fd5b60005061028051610160610200516004811061222e57600080fd5b60200201525b8151600101808352811415612189575b50506101406102c0525b6102c0515160206102c051016102c0526102c06102c05110156122705761224e565b63800c1cbc6102e05260043561030052602435610320526103406101608051825280602001518260200152806040015182604001528060600151826060015250506103a05161038051610360516103405161032051610300516006580161175d565b610400526102a06102c0525b6102c0515260206102c051036102c0526101406102c051101515612301576122de565b610400516102a0526308c379a0610420526020610440526018610460527f4e6f7420656e6f75676820636f696e732072656d6f766564000000000000000061048052610460506044356102a051101561235b57608461043cfd5b6003543b61236857600080fd5b600354301861237657600080fd5b602061058060646323b872dd6104c052336104e0523061050052600435610520526104dc60006003545af16123aa57600080fd5b600050610580516123ba57600080fd5b6105a060008152600081602001526000816040015260008160600152506102a051670de0b6b3a764000080820282158284830414176123f857600080fd5b809050905090506101606024356004811061241257600080fd5b6020020151808061242257600080fd5b8204905090506105a06024356004811061243b57600080fd5b60200201526101e0513b61244e57600080fd5b6101e051301861245d57600080fd5b60206106c060246370a0823161064052306106605261065c6101e0515afa61248457600080fd5b6000506106c051610620526002543b61249c57600080fd5b60025430186124aa57600080fd5b6000600060a46318a7bd766106e0526107006105a0805182528060200151826020015280604001518260400152806060015182606001525050600435610780526106fc60006002545af16124fd57600080fd5b6101406107e0525b6107e0515160206107e051016107e0526107e06107e051101561252757612505565b63eb9ec69161080052336108205261084060008152600081602001526000816040015260008160600152506024356108c0526108c0516108a051610880516108605161084051610820516006580161069c565b6107c06107e0525b6107e0515260206107e051036107e0526101406107e0511015156125a557612582565b600050610140511515612687576101e0513b6125c057600080fd5b6101e05130186125cf57600080fd5b60206109c060246370a0823161094052306109605261095c6101e0515afa6125f657600080fd5b6000506109c0516109205261062051610920511115612686576101e0513b61261d57600080fd5b6101e051301861262c57600080fd5b6020610a80604463a9059cbb6109e05233610a005261092051610620518082101561265657600080fd5b80820390509050610a20526109fc60006101e0515af161267557600080fd5b600050610a805161268557600080fd5b5b5b600062ffffff55005b636c956a5460005114156127cd5762ffffff54156126ad57600080fd5b600162ffffff5534156126bf57600080fd5b6002543b6126cc57600080fd5b60025430186126da57600080fd5b60206101c06004638da5cb5b6101605261017c6002545afa6126fb57600080fd5b6000506101c0516101405261014051331461271557600080fd5b6003546101e0526101e0513b61272a57600080fd5b6101e051301861273957600080fd5b6020610340604463a9059cbb6102a052610140516102c0526101e0513b61275f57600080fd5b6101e051301861276e57600080fd5b602061028060246370a0823161020052306102205261021c6101e0515afa61279557600080fd5b600050610280516102e0526102bc60006101e0515af16127b457600080fd5b600050610340516127c457600080fd5b600062ffffff55005b6323746eb860005114156128325734156127e657600080fd5b606051600435806040519013156127fc57600080fd5b809190121561280a57600080fd5b506004356004811061281b57600080fd5b600060c052602060c020015460005260206000f350005b63b739953e600051141561289757341561284b57600080fd5b6060516004358060405190131561286157600080fd5b809190121561286f57600080fd5b506004356004811061288057600080fd5b600160c052602060c020015460005260206000f350005b637165485d60005114156128be5734156128b057600080fd5b60025460005260206000f350005b63fc0c546a60005114156128e55734156128d757600080fd5b60035460005260206000f350005b5b60006000fd5b610238612b2403610238600039610238612b24036000f300000000000000000000000016de59092dae5ccf4a1e6439d611fd0653f0bd01000000000000000000000000d6ad7a6750a7593e092a9b218d66c0a814a3436e00000000000000000000000083f798e925bcd4017eb265844fddabb448f1707d00000000000000000000000073a052500105205d34daf004eab301916da8190f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000085d4780b73119b644ae5ecd22b37600000000000000000000000045f783cce6b7ff23b2ab2d70e416cdb7d6055f51000000000000000000000000df5e0e81dff6faf3a7e52ba697820c5e32d806a8

Deployed Bytecode

0x600436101561000d576128e6565b600035601c52740100000000000000000000000000000000000000006020526f7fffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff8000000000000000000000000000000060605274012a05f1fffffffffffffffffffffffffdabf41c006080527ffffffffffffffffffffffffed5fa0e000000000000000000000000000000000060a05263029b2f3460005114156106945762ffffff54156100be57600080fd5b600162ffffff5534156100d057600080fd5b61014060008152600081602001526001816040015260008160600152506101c0600081526000816020015260008160400152600081606001525061024060006004818352015b6004610240516004811061012957600080fd5b602002013561026052600061026051111561056357610140610240516004811061015257600080fd5b6020020151156101fe57610240516004811061016d57600080fd5b600160c052602060c02001543b61018357600080fd5b610240516004811061019457600080fd5b600160c052602060c020015430186101ab57600080fd5b6000600060646323b872dd610360523361038052306103a052610260516103c05261037c600061024051600481106101e257600080fd5b600160c052602060c02001545af16101f957600080fd5b6102ad565b610240516004811061020f57600080fd5b600160c052602060c02001543b61022557600080fd5b610240516004811061023657600080fd5b600160c052602060c0200154301861024d57600080fd5b602061034060646323b872dd61028052336102a052306102c052610260516102e05261029c6000610240516004811061028557600080fd5b600160c052602060c02001545af161029c57600080fd5b600050610340516102ac57600080fd5b5b61024051600481106102be57600080fd5b600160c052602060c02001543b6102d457600080fd5b61024051600481106102e557600080fd5b600160c052602060c020015430186102fc57600080fd5b60206104c0604463095ea7b361042052610240516004811061031d57600080fd5b600060c052602060c020015461044052610260516104605261043c6000610240516004811061034b57600080fd5b600160c052602060c02001545af161036257600080fd5b6000506104c050610240516004811061037a57600080fd5b600060c052602060c02001543b61039057600080fd5b61024051600481106103a157600080fd5b600060c052602060c020015430186103b857600080fd5b60006000602463b6b55f256104e05261026051610500526104fc600061024051600481106103e557600080fd5b600060c052602060c02001545af16103fc57600080fd5b610240516004811061040d57600080fd5b600060c052602060c02001543b61042357600080fd5b610240516004811061043457600080fd5b600060c052602060c0200154301861044b57600080fd5b60206105e060246370a0823161056052306105805261057c610240516004811061047457600080fd5b600060c052602060c02001545afa61048b57600080fd5b6000506105e0516101c061024051600481106104a657600080fd5b602002015261024051600481106104bc57600080fd5b600060c052602060c02001543b6104d257600080fd5b61024051600481106104e357600080fd5b600060c052602060c020015430186104fa57600080fd5b60206106a0604463095ea7b361060052600254610620526101c0610240516004811061052557600080fd5b60200201516106405261061c6000610240516004811061054457600080fd5b600060c052602060c02001545af161055b57600080fd5b6000506106a0505b5b8151600101808352811415610116575b50506002543b61058357600080fd5b600254301861059157600080fd5b6000600060a463029b2f346106c0526106e06101c0805182528060200151826020015280604001518260400152806060015182606001525050608435610760526106dc60006002545af16105e457600080fd5b6003543b6105f157600080fd5b60035430186105ff57600080fd5b602061086060246370a082316107e05230610800526107fc6003545afa61062557600080fd5b600050610860516107c0526003543b61063d57600080fd5b600354301861064b57600080fd5b6020610920604463a9059cbb61088052336108a0526107c0516108c05261089c60006003545af161067b57600080fd5b6000506109205161068b57600080fd5b600062ffffff55005b600015610985575b610200526101405261016052610180526101a0526101c0526101e05261022060008152600081602001526001816040015260008160600152506102a060006004818352015b6101e0516102a0511460006101e05112171561096c576102a0516004811061070857600080fd5b600060c052602060c02001546102c0526102c0513b61072657600080fd5b6102c051301861073557600080fd5b602061038060246370a0823161030052306103205261031c6102c0515afa61075c57600080fd5b600050610380516102e0526102e05115156107765761096d565b6102c0513b61078457600080fd5b6102c051301861079357600080fd5b600060006024632e1a7d4d6103a0526102e0516103c0526103bc60006102c0515af16107be57600080fd5b6102a051600481106107cf57600080fd5b600160c052602060c020015461042052610420513b6107ed57600080fd5b6104205130186107fc57600080fd5b60206104e060246370a0823161046052306104805261047c610420515afa61082357600080fd5b6000506104e051610440526308c379a061050052602061052052601a610540527f4e6f7420656e6f75676820636f696e732077697468647261776e00000000000061056052610540506101606102a0516004811061088057600080fd5b602002015161044051101561089657608461051cfd5b6102206102a051600481106108aa57600080fd5b60200201511561090957610420513b6108c257600080fd5b6104205130186108d157600080fd5b60006000604463a9059cbb610660526101405161068052610440516106a05261067c6000610420515af161090457600080fd5b61096b565b610420513b61091757600080fd5b61042051301861092657600080fd5b6020610640604463a9059cbb6105a052610140516105c052610440516105e0526105bc6000610420515af161095a57600080fd5b6000506106405161096a57600080fd5b5b5b5b81516001018083528114156106e1575b505061020051565b637d49d8756000511415610b7c5762ffffff54156109a257600080fd5b600162ffffff5534156109b457600080fd5b61014060008152600081602001526000816040015260008160600152506003543b6109de57600080fd5b60035430186109ec57600080fd5b602061028060646323b872dd6101c052336101e0523061020052600435610220526101dc60006003545af1610a2057600080fd5b60005061028051610a3057600080fd5b6002543b610a3d57600080fd5b6002543018610a4b57600080fd5b6000600060a4637d49d8756102a0526004356102c0526102e06101408051825280602001518260200152806040015182604001528060600151826060015250506102bc60006002545af1610a9e57600080fd5b6101406103a0525b6103a0515160206103a051016103a0526103a06103a0511015610ac857610aa6565b63eb9ec6916103c052336103e05261040060248035825280602001358260200152806040013582604001528060600135826060015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6104805261048051610460516104405161042051610400516103e0516006580161069c565b6103806103a0525b6103a0515260206103a051036103a0526101406103a051101515610b7057610b4d565b600050600062ffffff55005b6318a7bd766000511415610fed5762ffffff5415610b9957600080fd5b600162ffffff553415610bab57600080fd5b61014060008152600081602001526001816040015260008160600152506003546101c0526101e0600480358252806020013582602001528060400135826040015280606001358260600152505061026060006004818352015b60006101e06102605160048110610c1a57600080fd5b60200201511115610d26576102605160048110610c3657600080fd5b600060c052602060c02001543b610c4c57600080fd5b6102605160048110610c5d57600080fd5b600060c052602060c02001543018610c7457600080fd5b602061030060046377c7b8fc6102a0526102bc6102605160048110610c9857600080fd5b600060c052602060c02001545afa610caf57600080fd5b60005061030051610280526101e06102605160048110610cce57600080fd5b6020020151670de0b6b3a76400008082028215828483041417610cf057600080fd5b80905090509050610280518080610d0657600080fd5b8204905090506101e06102605160048110610d2057600080fd5b60200201525b5b8151600101808352811415610c04575b50506101c0513b610d4757600080fd5b6101c0513018610d5657600080fd5b60206103c060246370a0823161034052336103605261035c6101c0515afa610d7d57600080fd5b6000506103c05161032052608435610320511115610d9d57608435610320525b6101c0513b610dab57600080fd5b6101c0513018610dba57600080fd5b60206104a060646323b872dd6103e0523361040052306104205261032051610440526103fc60006101c0515af1610df057600080fd5b6000506104a051610e0057600080fd5b6002543b610e0d57600080fd5b6002543018610e1b57600080fd5b6000600060a46318a7bd766104c0526104e06101e0805182528060200151826020015280604001518260400152806060015182606001525050608435610560526104dc60006002545af1610e6e57600080fd5b6101c0513b610e7c57600080fd5b6101c0513018610e8b57600080fd5b602061064060246370a082316105c052306105e0526105dc6101c0515afa610eb257600080fd5b60005061064051610320526101c0513b610ecb57600080fd5b6101c0513018610eda57600080fd5b6020610700604463a9059cbb610660523361068052610320516106a05261067c60006101c0515af1610f0b57600080fd5b60005061070051610f1b57600080fd5b610140610720525b61072051516020610720510161072052610720610720511015610f4557610f23565b63eb9ec69161074052336107605261078060008152600081602001526000816040015260008160600152507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61080052610800516107e0516107c0516107a05161078051610760516006580161069c565b610700610720525b6107205152602061072051036107205261014061072051101515610fe157610fbe565b600050600062ffffff55005b60001561111e575b610240526101405261016052610180526101a0526101c0526101e05261020052610220526102606101408051825280602001518260200152806040015182604001528060600151826060015250506102e060006004818352015b6102606102e0516004811061106357600080fd5b60200201516101c06102e0516004811061107c57600080fd5b6020020151808202821582848304141761109557600080fd5b80905090509050670de0b6b3a764000080806110b057600080fd5b8204905090506102606102e051600481106110ca57600080fd5b60200201525b815160010180835281141561104f575b50506080610300525b6000610300511115156110fb57611117565b60206103005103610260015160206103005103610300526110e9565b6102405156005b600015611428575b6101e0526101405261016052610180526101a0526101c05260006102005261024060006004818352015b6020610240510261016001516102205261020080516102205181818301101561117857600080fd5b808201905090508152505b8151600101808352811415611150575b50506102005115156111ae5760006000526000516101e05156505b600061028052610200516102a05261014051600480820282158284830414176111d657600080fd5b809050905090506102c0526102e0600060ff818352015b6102a0516103005261034060006004818352015b60206103405102610160015161032052610300516102a051808202821582848304141761122d57600080fd5b80905090509050610320516004808202821582848304141761124e57600080fd5b80905090509050600181818301101561126657600080fd5b80820190509050808061127857600080fd5b820490509050610300525b8151600101808352811415611201575b50506102a051610280526102c0516102005180820282158284830414176112b957600080fd5b8090509050905061030051600480820282158284830414176112da57600080fd5b809050905090508181830110156112f057600080fd5b808201905090506102a051808202821582848304141761130f57600080fd5b809050905090506102c05160018082101561132957600080fd5b808203905090506102a051808202821582848304141761134857600080fd5b80905090509050600561030051808202821582848304141761136957600080fd5b8090509050905081818301101561137f57600080fd5b80820190509050808061139157600080fd5b8204905090506102a052610280516102a05111156113d85760016102a05161028051808210156113c057600080fd5b808203905090501115156113d357611414565b611403565b6001610280516102a051808210156113ef57600080fd5b8082039050905011151561140257611414565b5b5b81516001018083528114156111ed575b50506102a0516000526000516101e0515650005b600015611755575b610220526101405261016052610180526101a0526101c0526101e052610200526004610160511260006101605112151661146957600080fd5b6102005161024052600061026052610140516004808202821582848304141761149157600080fd5b809050905090506102805260006102a0526102c060006004818352015b610160516102c05118156114de576101806102c051600481106114d057600080fd5b60200201516102a0526114e3565b61155f565b61026080516102a0518181830110156114fb57600080fd5b808201905090508152506102405161020051808202821582848304141761152157600080fd5b809050905090506102a0516004808202821582848304141761154257600080fd5b80905090509050808061155457600080fd5b820490509050610240525b81516001018083528114156114ae575b50506102405161020051808202821582848304141761158d57600080fd5b8090509050905061028051600480820282158284830414176115ae57600080fd5b8090509050905080806115c057600080fd5b8204905090506102405261026051610200516102805180806115e157600080fd5b8204905090508181830110156115f657600080fd5b808201905090506102e0526000610300526102005161032052610340600060ff818352015b61032051610300526103205161032051808202821582848304141761163f57600080fd5b809050905090506102405181818301101561165957600080fd5b80820190509050600261032051808202821582848304141761167a57600080fd5b809050905090506102e05181818301101561169457600080fd5b8082019050905061020051808210156116ac57600080fd5b8082039050905080806116be57600080fd5b82049050905061032052610300516103205111156117055760016103205161030051808210156116ed57600080fd5b8082039050905011151561170057611741565b611730565b600161030051610320518082101561171c57600080fd5b8082039050905011151561172f57611741565b5b5b815160010180835281141561161b575b505061032051600052600051610220515650005b600015611f0b575b610200526101405261016052610180526101a0526101c0526101e05260025461022052610220513b61178e57600080fd5b61022051301861179d57600080fd5b60206102c0600463f446c1d06102605261027c610220515afa6117bf57600080fd5b6000506102c05161024052610220513b6117d857600080fd5b6102205130186117e757600080fd5b6020610360600463ddca3f436103005261031c610220515afa61180957600080fd5b600050610360516004808202821582848304141761182657600080fd5b80905090509050600c808061183a57600080fd5b8204905090506102e0526102e080516102e051639502f900808202821582848304141761186657600080fd5b809050905090506402540be400808061187e57600080fd5b82049050905081818301101561189357600080fd5b808201905090508152506103806001815264e8d4a51000816020015264e8d4a51000816040015260018160600152506003543b6118cf57600080fd5b60035430186118dd57600080fd5b602061048060046318160ddd6104205261043c6003545afa6118fe57600080fd5b60005061048051610400526104a06001815264e8d4a51000816020015264e8d4a510008160400152600181606001525060006105205261054060006004818352015b6104a0610540516004811061195457600080fd5b602002018051610220513b61196857600080fd5b61022051301861197757600080fd5b60206105e0602463065a80d861056052610540516105805261057c610220515afa6119a157600080fd5b6000506105e05180820282158284830414176119bc57600080fd5b809050905090508152506104a061054051600481106119da57600080fd5b602002015161018061054051600481106119f357600080fd5b60200201518082028215828483041417611a0c57600080fd5b80905090509050670de0b6b3a76400008080611a2757600080fd5b8204905090506104a06105405160048110611a4157600080fd5b602002015261052080516104a06105405160048110611a5f57600080fd5b6020020151818183011015611a7357600080fd5b808201905090508152505b8151600101808352811415611940575b5050610140610620525b61062051516020610620510161062052610620610620511015611aba57611a98565b637b7241516106405261024051610660526106806104a08051825280602001518260200152806040015182604001528060600151826060015250506106e0516106c0516106a051610680516106605160065801611126565b61074052610600610620525b6106205152602061062051036106205261014061062051101515611b4157611b1e565b61074051610600526106005161014051610600518082028215828483041417611b6957600080fd5b80905090509050610400518080611b7f57600080fd5b82049050905080821015611b9257600080fd5b80820390509050610760526107806104a080518252806020015182602001528060400151826040015280606001518260600152505061080060006004818352015b6000610820526104a06108005160048110611bed57600080fd5b6020020151610760518082028215828483041417611c0a57600080fd5b80905090509050610600518080611c2057600080fd5b820490509050610840526104a06108005160048110611c3e57600080fd5b60200201516108605261016051610800511415611cc257610860805161052051610600516107605180821015611c7357600080fd5b808203905090508082028215828483041417611c8e57600080fd5b80905090509050610600518080611ca457600080fd5b82049050905080821015611cb757600080fd5b808203905090508152505b6108605161084051101515611d10576108208051610840516108605180821015611ceb57600080fd5b80820390509050818183011015611d0157600080fd5b80820190509050815250611d4b565b6108208051610860516108405180821015611d2a57600080fd5b80820390509050818183011015611d4057600080fd5b808201905090508152505b6107806108005160048110611d5f57600080fd5b6020020180516102e051610820518082028215828483041417611d8157600080fd5b809050905090506402540be4008080611d9957600080fd5b82049050905080821015611dac57600080fd5b808203905090508152505b8151600101808352811415611bd3575b50506107806101605160048110611ddd57600080fd5b60200201516101406108a0525b6108a0515160206108a051016108a0526108a06108a0511015611e0c57611dea565b638643731f6108c052610240516108e0526101605161090052610920610780805182528060200151826020015280604001518260400152806060015182606001525050610760516109a0526109a05161098051610960516109405161092051610900516108e05160065801611430565b610a00526108806108a0525b6108a0515260206108a051036108a0526101406108a051101515611eab57611e88565b610a005180821015611ebc57600080fd5b8082039050905061088052610880516103806101605160048110611edf57600080fd5b60200201518080611eef57600080fd5b8204905090506108805261088051600052600051610200515650005b63cc2b27d760005114156120c4573415611f2457600080fd5b60605160243580604051901315611f3a57600080fd5b8091901215611f4857600080fd5b5061014060008152600081602001526000816040015260008160600152506101c060006004818352015b6101c05160048110611f8357600080fd5b600060c052602060c02001543b611f9957600080fd5b6101c05160048110611faa57600080fd5b600060c052602060c02001543018611fc157600080fd5b602061024060046377c7b8fc6101e0526101fc6101c05160048110611fe557600080fd5b600060c052602060c02001545afa611ffc57600080fd5b600050610240516101406101c0516004811061201757600080fd5b60200201525b8151600101808352811415611f72575b50506101405161016051610180516101a05163800c1cbc610280526004356102a0526024356102c0526102e06101408051825280602001518260200152806040015182604001528060600151826060015250506103405161032051610300516102e0516102c0516102a0516006580161175d565b6103a0526101a0526101805261016052610140526103a05160005260206000f350005b631a4d01d260005114156120dd57600061014052612113565b63517a55a3600051141561210b57606435600281106120fb57600080fd5b6020606461014037600050612113565b600015612690575b62ffffff541561212257600080fd5b600162ffffff55341561213457600080fd5b6060516024358060405190131561214a57600080fd5b809190121561215857600080fd5b5061016060008152600081602001526000816040015260008160600152506003546101e05261020060006004818352015b610200516004811061219a57600080fd5b600060c052602060c02001543b6121b057600080fd5b61020051600481106121c157600080fd5b600060c052602060c020015430186121d857600080fd5b602061028060046377c7b8fc6102205261023c61020051600481106121fc57600080fd5b600060c052602060c02001545afa61221357600080fd5b60005061028051610160610200516004811061222e57600080fd5b60200201525b8151600101808352811415612189575b50506101406102c0525b6102c0515160206102c051016102c0526102c06102c05110156122705761224e565b63800c1cbc6102e05260043561030052602435610320526103406101608051825280602001518260200152806040015182604001528060600151826060015250506103a05161038051610360516103405161032051610300516006580161175d565b610400526102a06102c0525b6102c0515260206102c051036102c0526101406102c051101515612301576122de565b610400516102a0526308c379a0610420526020610440526018610460527f4e6f7420656e6f75676820636f696e732072656d6f766564000000000000000061048052610460506044356102a051101561235b57608461043cfd5b6003543b61236857600080fd5b600354301861237657600080fd5b602061058060646323b872dd6104c052336104e0523061050052600435610520526104dc60006003545af16123aa57600080fd5b600050610580516123ba57600080fd5b6105a060008152600081602001526000816040015260008160600152506102a051670de0b6b3a764000080820282158284830414176123f857600080fd5b809050905090506101606024356004811061241257600080fd5b6020020151808061242257600080fd5b8204905090506105a06024356004811061243b57600080fd5b60200201526101e0513b61244e57600080fd5b6101e051301861245d57600080fd5b60206106c060246370a0823161064052306106605261065c6101e0515afa61248457600080fd5b6000506106c051610620526002543b61249c57600080fd5b60025430186124aa57600080fd5b6000600060a46318a7bd766106e0526107006105a0805182528060200151826020015280604001518260400152806060015182606001525050600435610780526106fc60006002545af16124fd57600080fd5b6101406107e0525b6107e0515160206107e051016107e0526107e06107e051101561252757612505565b63eb9ec69161080052336108205261084060008152600081602001526000816040015260008160600152506024356108c0526108c0516108a051610880516108605161084051610820516006580161069c565b6107c06107e0525b6107e0515260206107e051036107e0526101406107e0511015156125a557612582565b600050610140511515612687576101e0513b6125c057600080fd5b6101e05130186125cf57600080fd5b60206109c060246370a0823161094052306109605261095c6101e0515afa6125f657600080fd5b6000506109c0516109205261062051610920511115612686576101e0513b61261d57600080fd5b6101e051301861262c57600080fd5b6020610a80604463a9059cbb6109e05233610a005261092051610620518082101561265657600080fd5b80820390509050610a20526109fc60006101e0515af161267557600080fd5b600050610a805161268557600080fd5b5b5b600062ffffff55005b636c956a5460005114156127cd5762ffffff54156126ad57600080fd5b600162ffffff5534156126bf57600080fd5b6002543b6126cc57600080fd5b60025430186126da57600080fd5b60206101c06004638da5cb5b6101605261017c6002545afa6126fb57600080fd5b6000506101c0516101405261014051331461271557600080fd5b6003546101e0526101e0513b61272a57600080fd5b6101e051301861273957600080fd5b6020610340604463a9059cbb6102a052610140516102c0526101e0513b61275f57600080fd5b6101e051301861276e57600080fd5b602061028060246370a0823161020052306102205261021c6101e0515afa61279557600080fd5b600050610280516102e0526102bc60006101e0515af16127b457600080fd5b600050610340516127c457600080fd5b600062ffffff55005b6323746eb860005114156128325734156127e657600080fd5b606051600435806040519013156127fc57600080fd5b809190121561280a57600080fd5b506004356004811061281b57600080fd5b600060c052602060c020015460005260206000f350005b63b739953e600051141561289757341561284b57600080fd5b6060516004358060405190131561286157600080fd5b809190121561286f57600080fd5b506004356004811061288057600080fd5b600160c052602060c020015460005260206000f350005b637165485d60005114156128be5734156128b057600080fd5b60025460005260206000f350005b63fc0c546a60005114156128e55734156128d757600080fd5b60035460005260206000f350005b5b60006000fd

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

00000000000000000000000016de59092dae5ccf4a1e6439d611fd0653f0bd01000000000000000000000000d6ad7a6750a7593e092a9b218d66c0a814a3436e00000000000000000000000083f798e925bcd4017eb265844fddabb448f1707d00000000000000000000000073a052500105205d34daf004eab301916da8190f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000085d4780b73119b644ae5ecd22b37600000000000000000000000045f783cce6b7ff23b2ab2d70e416cdb7d6055f51000000000000000000000000df5e0e81dff6faf3a7e52ba697820c5e32d806a8

-----Decoded View---------------
Arg [0] : _coins (address[4]): 0x16de59092dAE5CcF4A1E6439D611fd0653f0Bd01,0xd6aD7a6750A7593E092a9B218d66C0A814a3436e,0x83f798e925BcD4017Eb265844FDDAbb448f1707D,0x73a052500105205d34Daf004eAb301916DA8190f
Arg [1] : _underlying_coins (address[4]): 0x6B175474E89094C44Da98b954EedeAC495271d0F,0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48,0xdAC17F958D2ee523a2206206994597C13D831ec7,0x0000000000085d4780B73119b644AE5ecd22b376
Arg [2] : _curve (address): 0x45F783CCE6B7FF23B2ab2D70e416cdb7D6055f51
Arg [3] : _token (address): 0xdF5e0e81Dff6FAF3A7e52BA697820c5e32D806A8

-----Encoded View---------------
10 Constructor Arguments found :
Arg [0] : 00000000000000000000000016de59092dae5ccf4a1e6439d611fd0653f0bd01
Arg [1] : 000000000000000000000000d6ad7a6750a7593e092a9b218d66c0a814a3436e
Arg [2] : 00000000000000000000000083f798e925bcd4017eb265844fddabb448f1707d
Arg [3] : 00000000000000000000000073a052500105205d34daf004eab301916da8190f
Arg [4] : 0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f
Arg [5] : 000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
Arg [6] : 000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7
Arg [7] : 0000000000000000000000000000000000085d4780b73119b644ae5ecd22b376
Arg [8] : 00000000000000000000000045f783cce6b7ff23b2ab2d70e416cdb7d6055f51
Arg [9] : 000000000000000000000000df5e0e81dff6faf3a7e52ba697820c5e32d806a8


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

OVERVIEW

Curve.fi's y deposit address.

Validator Index Block Amount
View All Withdrawals

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

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