ETH Price: $2,821.89 (+2.11%)

Contract

0xA0508a94848fc6c1bed5597905cD7d2bbA4A959a
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
0x474d2e0a196043562024-04-07 14:16:59322 days ago1712499419IN
0xA0508a94...bbA4A959a
0.00001 ETH0.0010401225
0x474d2e0a196043402024-04-07 14:13:47322 days ago1712499227IN
0xA0508a94...bbA4A959a
0.00001 ETH0.0010401225
Withdraw109108802020-09-22 7:04:571615 days ago1600758297IN
0xA0508a94...bbA4A959a
0 ETH0.0032172686
Harvest108294942020-09-09 19:42:431628 days ago1599680563IN
0xA0508a94...bbA4A959a
0 ETH0.0391794987
Harvest108293472020-09-09 19:10:021628 days ago1599678602IN
0xA0508a94...bbA4A959a
0 ETH0.0329471984.7
Withdraw108277722020-09-09 13:30:361628 days ago1599658236IN
0xA0508a94...bbA4A959a
0 ETH0.04615842139
Harvest108277072020-09-09 13:14:121628 days ago1599657252IN
0xA0508a94...bbA4A959a
0 ETH0.05271401133
Withdraw108272832020-09-09 11:38:221628 days ago1599651502IN
0xA0508a94...bbA4A959a
0 ETH0.03059169113
Withdraw108166202020-09-07 20:13:381630 days ago1599509618IN
0xA0508a94...bbA4A959a
0 ETH0.0216578480
Harvest108166132020-09-07 20:11:541630 days ago1599509514IN
0xA0508a94...bbA4A959a
0 ETH0.0276997575.00000134
Withdraw108158672020-09-07 17:26:491630 days ago1599499609IN
0xA0508a94...bbA4A959a
0 ETH0.042172127
Deposit108145422020-09-07 12:33:561630 days ago1599482036IN
0xA0508a94...bbA4A959a
0 ETH0.0314013105
Harvest108103252020-09-06 20:58:561631 days ago1599425936IN
0xA0508a94...bbA4A959a
0 ETH0.0356711490
Deposit108093872020-09-06 17:39:321631 days ago1599413972IN
0xA0508a94...bbA4A959a
0 ETH0.0376872120
Withdraw108080602020-09-06 12:44:391631 days ago1599396279IN
0xA0508a94...bbA4A959a
0 ETH0.03484488104
Withdraw108066412020-09-06 7:36:301631 days ago1599377790IN
0xA0508a94...bbA4A959a
0 ETH0.04032743126
Harvest108066392020-09-06 7:35:541631 days ago1599377754IN
0xA0508a94...bbA4A959a
0 ETH0.04287948128
Withdraw108034682020-09-05 19:57:101632 days ago1599335830IN
0xA0508a94...bbA4A959a
0 ETH0.11400826399
Withdraw108024822020-09-05 16:27:091632 days ago1599323229IN
0xA0508a94...bbA4A959a
0 ETH0.09629827290
Withdraw107997182020-09-05 6:21:001632 days ago1599286860IN
0xA0508a94...bbA4A959a
0 ETH0.07913036228
Deposit107992572020-09-05 4:30:561632 days ago1599280256IN
0xA0508a94...bbA4A959a
0 ETH0.061941165
Withdraw107986672020-09-05 2:16:581632 days ago1599272218IN
0xA0508a94...bbA4A959a
0 ETH0.03248676120
Harvest107986612020-09-05 2:16:101632 days ago1599272170IN
0xA0508a94...bbA4A959a
0 ETH0.04537898119
Withdraw107981232020-09-05 0:21:161632 days ago1599265276IN
0xA0508a94...bbA4A959a
0 ETH0.03520517110
Harvest107981142020-09-05 0:19:391632 days ago1599265179IN
0xA0508a94...bbA4A959a
0 ETH0.03685066110
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block
From
To
107586332020-08-29 23:22:161639 days ago1598743336
0xA0508a94...bbA4A959a
 Contract Creation0 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SushiFarm

Compiler Version
v0.6.7+commit.b8d736ae

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-08-29
*/

// hevm: flattened sources of src/sushi-farm.sol
pragma solidity >0.4.13 >=0.4.23 >=0.5.0 >=0.6.2 <0.7.0 >=0.6.7 <0.7.0;

////// lib/ds-auth/src/auth.sol
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.

// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.

/* pragma solidity >=0.4.23; */

interface DSAuthority {
    function canCall(
        address src, address dst, bytes4 sig
    ) external view returns (bool);
}

contract DSAuthEvents {
    event LogSetAuthority (address indexed authority);
    event LogSetOwner     (address indexed owner);
}

contract DSAuth is DSAuthEvents {
    DSAuthority  public  authority;
    address      public  owner;

    constructor() public {
        owner = msg.sender;
        emit LogSetOwner(msg.sender);
    }

    function setOwner(address owner_)
        public
        auth
    {
        owner = owner_;
        emit LogSetOwner(owner);
    }

    function setAuthority(DSAuthority authority_)
        public
        auth
    {
        authority = authority_;
        emit LogSetAuthority(address(authority));
    }

    modifier auth {
        require(isAuthorized(msg.sender, msg.sig), "ds-auth-unauthorized");
        _;
    }

    function isAuthorized(address src, bytes4 sig) internal view returns (bool) {
        if (src == address(this)) {
            return true;
        } else if (src == owner) {
            return true;
        } else if (authority == DSAuthority(0)) {
            return false;
        } else {
            return authority.canCall(src, address(this), sig);
        }
    }
}

////// lib/ds-math/src/math.sol
/// math.sol -- mixin for inline numerical wizardry

// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.

// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.

/* pragma solidity >0.4.13; */

contract DSMath {
    function add(uint x, uint y) internal pure returns (uint z) {
        require((z = x + y) >= x, "ds-math-add-overflow");
    }
    function sub(uint x, uint y) internal pure returns (uint z) {
        require((z = x - y) <= x, "ds-math-sub-underflow");
    }
    function mul(uint x, uint y) internal pure returns (uint z) {
        require(y == 0 || (z = x * y) / y == x, "ds-math-mul-overflow");
    }

    function min(uint x, uint y) internal pure returns (uint z) {
        return x <= y ? x : y;
    }
    function max(uint x, uint y) internal pure returns (uint z) {
        return x >= y ? x : y;
    }
    function imin(int x, int y) internal pure returns (int z) {
        return x <= y ? x : y;
    }
    function imax(int x, int y) internal pure returns (int z) {
        return x >= y ? x : y;
    }

    uint constant WAD = 10 ** 18;
    uint constant RAY = 10 ** 27;

    //rounds to zero if x*y < WAD / 2
    function wmul(uint x, uint y) internal pure returns (uint z) {
        z = add(mul(x, y), WAD / 2) / WAD;
    }
    //rounds to zero if x*y < WAD / 2
    function rmul(uint x, uint y) internal pure returns (uint z) {
        z = add(mul(x, y), RAY / 2) / RAY;
    }
    //rounds to zero if x*y < WAD / 2
    function wdiv(uint x, uint y) internal pure returns (uint z) {
        z = add(mul(x, WAD), y / 2) / y;
    }
    //rounds to zero if x*y < RAY / 2
    function rdiv(uint x, uint y) internal pure returns (uint z) {
        z = add(mul(x, RAY), y / 2) / y;
    }

    // This famous algorithm is called "exponentiation by squaring"
    // and calculates x^n with x as fixed-point and n as regular unsigned.
    //
    // It's O(log n), instead of O(n) for naive repeated multiplication.
    //
    // These facts are why it works:
    //
    //  If n is even, then x^n = (x^2)^(n/2).
    //  If n is odd,  then x^n = x * x^(n-1),
    //   and applying the equation for even x gives
    //    x^n = x * (x^2)^((n-1) / 2).
    //
    //  Also, EVM division is flooring and
    //    floor[(n-1) / 2] = floor[n / 2].
    //
    function rpow(uint x, uint n) internal pure returns (uint z) {
        z = n % 2 != 0 ? x : RAY;

        for (n /= 2; n != 0; n /= 2) {
            x = rmul(x, x);

            if (n % 2 != 0) {
                z = rmul(z, x);
            }
        }
    }
}

////// lib/ds-token/src/token.sol
/// token.sol -- ERC20 implementation with minting and burning

// Copyright (C) 2015, 2016, 2017  DappHub, LLC

// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.

// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.

/* pragma solidity >=0.4.23; */

/* import "ds-math/math.sol"; */
/* import "ds-auth/auth.sol"; */


contract DSToken is DSMath, DSAuth {
    bool                                              public  stopped;
    uint256                                           public  totalSupply;
    mapping (address => uint256)                      public  balanceOf;
    mapping (address => mapping (address => uint256)) public  allowance;
    bytes32                                           public  symbol;
    uint256                                           public  decimals = 18; // standard token precision. override to customize
    bytes32                                           public  name = "";     // Optional token name

    constructor(bytes32 symbol_) public {
        symbol = symbol_;
    }

    event Approval(address indexed src, address indexed guy, uint wad);
    event Transfer(address indexed src, address indexed dst, uint wad);
    event Mint(address indexed guy, uint wad);
    event Burn(address indexed guy, uint wad);
    event Stop();
    event Start();

    modifier stoppable {
        require(!stopped, "ds-stop-is-stopped");
        _;
    }

    function approve(address guy) external returns (bool) {
        return approve(guy, uint(-1));
    }

    function approve(address guy, uint wad) public stoppable returns (bool) {
        allowance[msg.sender][guy] = wad;

        emit Approval(msg.sender, guy, wad);

        return true;
    }

    function transfer(address dst, uint wad) external returns (bool) {
        return transferFrom(msg.sender, dst, wad);
    }

    function transferFrom(address src, address dst, uint wad)
        public
        stoppable
        returns (bool)
    {
        if (src != msg.sender && allowance[src][msg.sender] != uint(-1)) {
            require(allowance[src][msg.sender] >= wad, "ds-token-insufficient-approval");
            allowance[src][msg.sender] = sub(allowance[src][msg.sender], wad);
        }

        require(balanceOf[src] >= wad, "ds-token-insufficient-balance");
        balanceOf[src] = sub(balanceOf[src], wad);
        balanceOf[dst] = add(balanceOf[dst], wad);

        emit Transfer(src, dst, wad);

        return true;
    }

    function push(address dst, uint wad) external {
        transferFrom(msg.sender, dst, wad);
    }

    function pull(address src, uint wad) external {
        transferFrom(src, msg.sender, wad);
    }

    function move(address src, address dst, uint wad) external {
        transferFrom(src, dst, wad);
    }


    function mint(uint wad) external {
        mint(msg.sender, wad);
    }

    function burn(uint wad) external {
        burn(msg.sender, wad);
    }

    function mint(address guy, uint wad) public auth stoppable {
        balanceOf[guy] = add(balanceOf[guy], wad);
        totalSupply = add(totalSupply, wad);
        emit Mint(guy, wad);
    }

    function burn(address guy, uint wad) public auth stoppable {
        if (guy != msg.sender && allowance[guy][msg.sender] != uint(-1)) {
            require(allowance[guy][msg.sender] >= wad, "ds-token-insufficient-approval");
            allowance[guy][msg.sender] = sub(allowance[guy][msg.sender], wad);
        }

        require(balanceOf[guy] >= wad, "ds-token-insufficient-balance");
        balanceOf[guy] = sub(balanceOf[guy], wad);
        totalSupply = sub(totalSupply, wad);
        emit Burn(guy, wad);
    }

    function stop() public auth {
        stopped = true;
        emit Stop();
    }

    function start() public auth {
        stopped = false;
        emit Start();
    }

    function setName(bytes32 name_) external auth {
        name = name_;
    }
}

////// src/constants.sol
/* pragma solidity ^0.6.7; */


library Constants {
    // Tokens
    address constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    address constant SUSHI = 0x6B3595068778DD592e39A122f4f5a5cF09C90fE2;
    address constant UNIV2_SUSHI_ETH = 0xCE84867c3c02B05dc570d0135103d3fB9CC19433;

    // Uniswap
    address constant UNIV2_ROUTER2 = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    // Sushiswap
    address constant MASTERCHEF = 0xc2EdaD668740f1aA35E4D8f227fB8E17dcA888Cd;
}
////// src/interfaces/masterchef.sol
// SPDX-License-Identifier: MIT
/* pragma solidity ^0.6.2; */

interface Masterchef {
    function deposit(uint256 _pid, uint256 _amount) external;

    function withdraw(uint256 _pid, uint256 _amount) external;

    function userInfo(uint256, address)
        external
        view
        returns (uint256 amount, uint256 rewardDebt);
}

////// src/interfaces/uniswap.sol
// SPDX-License-Identifier: MIT
/* pragma solidity ^0.6.2; */

interface UniswapRouterV2 {
    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);
}

interface UniswapPair {
    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestamp
        );
}

////// src/sushi-farm.sol
/* pragma solidity ^0.6.7; */

/* import "ds-math/math.sol"; */
/* import "ds-token/token.sol"; */

/* import "./interfaces/masterchef.sol"; */
/* import "./interfaces/uniswap.sol"; */

/* import "./constants.sol"; */

// Sushi Farm in SushiSwap
// Used to farm sushi. i.e. Deposit into this pool if you want to LONG sushi.

// Based off https://github.com/iearn-finance/vaults/blob/master/contracts/yVault.sol
contract SushiFarm is DSMath {
    // Tokens
    DSToken public sushi = DSToken(Constants.SUSHI);
    DSToken public univ2SushiEth = DSToken(Constants.UNIV2_SUSHI_ETH);
    DSToken public weth = DSToken(Constants.WETH);
    DSToken public gSushi;

    // Uniswap Router and Pair
    UniswapRouterV2 public univ2 = UniswapRouterV2(Constants.UNIV2_ROUTER2);
    UniswapPair public univ2Pair = UniswapPair(address(univ2SushiEth));

    // Masterchef Contract
    Masterchef public masterchef = Masterchef(Constants.MASTERCHEF);
    uint256 public univ2SushiEthPoolId = 12;

    // 5% reward for anyone who calls HARVEST
    uint256 public callerRewards = 5 ether / 100;

    // Last harvest
    uint256 public lastHarvest = 0;

    constructor() public {
        gSushi = new DSToken("gSushi");
        gSushi.setName("Grazing Sushi");
    }

    // **** Harvest profits ****

    function harvest() public {
        // Only callable every hour or so
        if (lastHarvest > 0) {
            require(lastHarvest + 1 hours <= block.timestamp, "!harvest-time");
        }
        lastHarvest = block.timestamp;

        // Withdraw sushi
        masterchef.withdraw(univ2SushiEthPoolId, 0);

        uint256 amount = sushi.balanceOf(address(this));
        uint256 reward = div(mul(amount, callerRewards), 100 ether);

        // Sends 5% fee to caller
        sushi.transfer(msg.sender, reward);

        // Remove amount from rewards
        amount = sub(amount, reward);

        // Add to UniV2 pool
        _sushiToUniV2SushiEth(amount);

        // Deposit into masterchef contract
        uint256 balance = univ2SushiEth.balanceOf(address(this));
        univ2SushiEth.approve(address(masterchef), balance);
        masterchef.deposit(univ2SushiEthPoolId, balance);
    }

    // **** Withdraw / Deposit functions ****

    function withdrawAll() external {
        withdraw(gSushi.balanceOf(msg.sender));
    }

    function withdraw(uint256 _shares) public {
        uint256 univ2Balance = univ2SushiEthBalance();

        uint256 amount = div(mul(_shares, univ2Balance), gSushi.totalSupply());
        gSushi.burn(msg.sender, _shares);

        // Withdraw from Masterchef contract
        masterchef.withdraw(univ2SushiEthPoolId, amount);

        // Retrive shares from Uniswap pool and converts to SUSHI
        uint256 _before = sushi.balanceOf(address(this));
        _uniV2SushiEthToSushi(amount);
        uint256 _after = sushi.balanceOf(address(this));

        // Transfer back SUSHI difference
        sushi.transfer(msg.sender, sub(_after, _before));
    }

    function depositAll() external {
        deposit(sushi.balanceOf(msg.sender));
    }

    function deposit(uint256 _amount) public {
        sushi.transferFrom(msg.sender, address(this), _amount);

        uint256 _pool = univ2SushiEthBalance();
        uint256 _before = univ2SushiEth.balanceOf(address(this));
        _sushiToUniV2SushiEth(_amount);
        uint256 _after = univ2SushiEth.balanceOf(address(this));

        _amount = sub(_after, _before); // Additional check for deflationary tokens

        uint256 shares = 0;
        if (gSushi.totalSupply() == 0) {
            shares = _amount;
        } else {
            shares = div(mul(_amount, gSushi.totalSupply()), _pool);
        }

        // Deposit into Masterchef contract to get rewards
        univ2SushiEth.approve(address(masterchef), _amount);
        masterchef.deposit(univ2SushiEthPoolId, _amount);

        gSushi.mint(msg.sender, shares);
    }

    // Takes <x> amount of SUSHI
    // Converts half of it into ETH,
    // Supplies them into SUSHI/ETH pool
    function _sushiToUniV2SushiEth(uint256 _amount) internal {
        uint256 half = div(_amount, 2);

        // Convert half of the sushi to ETH
        address[] memory path = new address[](2);
        path[0] = address(sushi);
        path[1] = address(weth);
        sushi.approve(address(univ2), half);
        univ2.swapExactTokensForTokens(half, 0, path, address(this), now + 60);

        // Supply liquidity
        uint256 wethBal = weth.balanceOf(address(this));
        uint256 sushiBal = sushi.balanceOf(address(this));
        sushi.approve(address(univ2), sushiBal);
        weth.approve(address(univ2), wethBal);
        univ2.addLiquidity(
            address(sushi),
            address(weth),
            sushiBal,
            wethBal,
            0,
            0,
            address(this),
            now + 60
        );
    }

    // Takes <x> amount of gSushi
    // And removes liquidity from SUSHI/ETH pool
    // Converts the ETH into Sushi
    function _uniV2SushiEthToSushi(uint256 _amount) internal {
        // Remove liquidity
        require(
            univ2SushiEth.balanceOf(address(this)) >= _amount,
            "not-enough-liquidity"
        );
        univ2SushiEth.approve(address(univ2), _amount);
        univ2.removeLiquidity(
            address(sushi),
            address(weth),
            _amount,
            0,
            0,
            address(this),
            now + 60
        );

        // Convert ETH to SUSHI
        address[] memory path = new address[](2);
        path[0] = address(weth);
        path[1] = address(sushi);
        uint256 wethBal = weth.balanceOf(address(this));
        weth.approve(address(univ2), wethBal);
        univ2.swapExactTokensForTokens(
            wethBal,
            0,
            path,
            address(this),
            now + 60
        );
    }

    // 1 gSUSHI = <x> SUSHI
    function getGSushiOverSushiRatio() public view returns (uint256) {
        // How much UniV2 do we have
        uint256 uniV2Balance = univ2SushiEthBalance();

        if (uniV2Balance == 0) {
            return 0;
        }

        // How many SUSHI and ETH can we get for this?
        (uint112 _poolSushiReserve, uint112 _poolWETHReserve, ) = univ2Pair
            .getReserves(); // SUSHI and WETH in pool
        uint256 uniV2liquidity = univ2SushiEth.totalSupply(); // Univ2 total supply
        uint256 uniV2percentage = div(mul(uniV2Balance, 1e18), uniV2liquidity); // How much we own %-wise

        uint256 removableSushi = uint256(
            div(mul(_poolSushiReserve, uniV2percentage), 1e18)
        );
        uint256 removableWeth = uint256(
            div(mul(_poolWETHReserve, uniV2percentage), 1e18)
        );

        // How many SUSHI can we get for the ETH?
        address[] memory path = new address[](2);
        path[0] = address(weth);
        path[1] = address(sushi);
        uint256[] memory outs = univ2.getAmountsOut(removableWeth, path);

        // Get RATIO
        return div(mul(add(outs[1], removableSushi), 1e18), gSushi.totalSupply());
    }

    function univ2SushiEthBalance() public view returns (uint256) {
        (uint256 univ2Balance, ) = masterchef.userInfo(
            univ2SushiEthPoolId,
            address(this)
        );

        return univ2Balance;
    }

    // **** Internal functions ****
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "division by zero");
        uint256 c = a / b;
        return c;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"callerRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"depositAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"gSushi","outputs":[{"internalType":"contract DSToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getGSushiOverSushiRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"harvest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lastHarvest","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"masterchef","outputs":[{"internalType":"contract Masterchef","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sushi","outputs":[{"internalType":"contract DSToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"univ2","outputs":[{"internalType":"contract UniswapRouterV2","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"univ2Pair","outputs":[{"internalType":"contract UniswapPair","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"univ2SushiEth","outputs":[{"internalType":"contract DSToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"univ2SushiEthBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"univ2SushiEthPoolId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"weth","outputs":[{"internalType":"contract DSToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_shares","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAll","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052600080546001600160a01b0319908116736b3595068778dd592e39a122f4f5a5cf09c90fe217825560018054821673ce84867c3c02b05dc570d0135103d3fb9cc19433179081905560028054831673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2179055600480548316737a250d5630b4cf539739df2c5dacb4c659f2488d1790556005805483166001600160a01b03929092169190911790556006805490911673c2edad668740f1aa35e4d8f227fb8e17dca888cd179055600c60075566b1a2bc2ec50000600855600955348015620000df57600080fd5b50604051620000ee90620001ab565b6567537573686960d01b815260405190819003602001906000f0801580156200011b573d6000803e3d6000fd5b50600380546001600160a01b0319166001600160a01b03928316179081905560408051632d6400ff60e11b81526c4772617a696e6720537573686960981b600482015290519190921691635ac801fe91602480830192600092919082900301818387803b1580156200018c57600080fd5b505af1158015620001a1573d6000803e3d6000fd5b50505050620001b9565b6111e88062001fa683390190565b611ddd80620001c96000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806370cf41f6116100a2578063b6b55f2511610071578063b6b55f25146101b5578063c0dead1a146101d2578063de5f6268146101da578063f1a392da146101e2578063fb1db278146101ea5761010b565b806370cf41f6146101955780637298d36e1461019d578063853828b6146101a5578063a915a229146101ad5761010b565b80633fc8cef3116100de5780633fc8cef3146101755780634641257d1461017d5780636c23229e146101855780636e986ce41461018d5761010b565b80630a087903146101105780630c4f95ae146101345780632b2d9fde1461013c5780632e1a7d4d14610156575b600080fd5b6101186101f2565b604080516001600160a01b039092168252519081900360200190f35b610118610201565b610144610210565b60408051918252519081900360200190f35b6101736004803603602081101561016c57600080fd5b5035610216565b005b61011861052a565b610173610539565b6101186108a2565b6101446108b1565b610144610c3f565b610118610c45565b610173610c54565b610144610cd3565b610173600480360360208110156101cb57600080fd5b5035610d5a565b61011861116e565b61017361117d565b6101446111fa565b610118611200565b6000546001600160a01b031681565b6005546001600160a01b031681565b60085481565b6000610220610cd3565b905060006102b0610231848461120f565b600360009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561027f57600080fd5b505afa158015610293573d6000803e3d6000fd5b505050506040513d60208110156102a957600080fd5b5051611278565b60035460408051632770a7eb60e21b81523360048201526024810187905290519293506001600160a01b0390911691639dc29fac9160448082019260009290919082900301818387803b15801561030657600080fd5b505af115801561031a573d6000803e3d6000fd5b505060065460075460408051630441a3e760e41b8152600481019290925260248201869052516001600160a01b03909216935063441a3e70925060448082019260009290919082900301818387803b15801561037557600080fd5b505af1158015610389573d6000803e3d6000fd5b505060008054604080516370a0823160e01b815230600482015290519294506001600160a01b0390911692506370a08231916024808301926020929190829003018186803b1580156103da57600080fd5b505afa1580156103ee573d6000803e3d6000fd5b505050506040513d602081101561040457600080fd5b50519050610411826112d5565b60008054604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561045d57600080fd5b505afa158015610471573d6000803e3d6000fd5b505050506040513d602081101561048757600080fd5b50516000549091506001600160a01b031663a9059cbb336104a884866117c3565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156104f757600080fd5b505af115801561050b573d6000803e3d6000fd5b505050506040513d602081101561052157600080fd5b50505050505050565b6002546001600160a01b031681565b6009541561058c5742600954610e1001111561058c576040805162461bcd60e51b815260206004820152600d60248201526c21686172766573742d74696d6560981b604482015290519081900360640190fd5b4260095560065460075460408051630441a3e760e41b8152600481019290925260006024830181905290516001600160a01b039093169263441a3e7092604480820193929182900301818387803b1580156105e657600080fd5b505af11580156105fa573d6000803e3d6000fd5b505060008054604080516370a0823160e01b815230600482015290519294506001600160a01b0390911692506370a08231916024808301926020929190829003018186803b15801561064b57600080fd5b505afa15801561065f573d6000803e3d6000fd5b505050506040513d602081101561067557600080fd5b505160085490915060009061069e9061068f90849061120f565b68056bc75e2d63100000611278565b600080546040805163a9059cbb60e01b81523360048201526024810185905290519394506001600160a01b039091169263a9059cbb92604480840193602093929083900390910190829087803b1580156106f757600080fd5b505af115801561070b573d6000803e3d6000fd5b505050506040513d602081101561072157600080fd5b5061072e905082826117c3565b915061073982611813565b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561078457600080fd5b505afa158015610798573d6000803e3d6000fd5b505050506040513d60208110156107ae57600080fd5b50516001546006546040805163095ea7b360e01b81526001600160a01b03928316600482015260248101859052905193945091169163095ea7b3916044808201926020929091908290030181600087803b15801561080b57600080fd5b505af115801561081f573d6000803e3d6000fd5b505050506040513d602081101561083557600080fd5b505060065460075460408051631c57762b60e31b8152600481019290925260248201849052516001600160a01b039092169163e2bbb1589160448082019260009290919082900301818387803b15801561088e57600080fd5b505af1158015610521573d6000803e3d6000fd5b6003546001600160a01b031681565b6000806108bc610cd3565b9050806108cd576000915050610c3c565b600080600560009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561091e57600080fd5b505afa158015610932573d6000803e3d6000fd5b505050506040513d606081101561094857600080fd5b508051602091820151600154604080516318160ddd60e01b815290519396509194506000936001600160a01b03909116926318160ddd926004808201939291829003018186803b15801561099b57600080fd5b505afa1580156109af573d6000803e3d6000fd5b505050506040513d60208110156109c557600080fd5b5051905060006109e66109e086670de0b6b3a764000061120f565b83611278565b90506000610a0e610a00866001600160701b03168461120f565b670de0b6b3a7640000611278565b90506000610a28610a00866001600160701b03168561120f565b604080516002808252606080830184529394509091602083019080368337505060025482519293506001600160a01b031691839150600090610a6657fe5b6001600160a01b039283166020918202929092010152600054825191169082906001908110610a9157fe5b6001600160a01b03928316602091820292909201810191909152600480546040805163d06ca61f60e01b815292830187815260248401918252865160448501528651606096939093169463d06ca61f948994899492606490920191858101910280838360005b83811015610b0f578181015183820152602001610af7565b50505050905001935050505060006040518083038186803b158015610b3357600080fd5b505afa158015610b47573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610b7057600080fd5b8101908080516040519392919084640100000000821115610b9057600080fd5b908301906020820185811115610ba557600080fd5b8251866020820283011164010000000082111715610bc257600080fd5b82525081516020918201928201910280838360005b83811015610bef578181015183820152602001610bd7565b505050509050016040525050509050610c30610231610c2283600181518110610c1457fe5b602002602001015187611d58565b670de0b6b3a764000061120f565b99505050505050505050505b90565b60075481565b6004546001600160a01b031681565b600354604080516370a0823160e01b81523360048201529051610cd1926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610ca057600080fd5b505afa158015610cb4573d6000803e3d6000fd5b505050506040513d6020811015610cca57600080fd5b5051610216565b565b600654600754604080516393f1a40b60e01b81526004810192909252306024830152805160009384936001600160a01b03909116926393f1a40b92604480840193829003018186803b158015610d2857600080fd5b505afa158015610d3c573d6000803e3d6000fd5b505050506040513d6040811015610d5257600080fd5b505191505090565b60008054604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b03909216926323b872dd926064808401936020939083900390910190829087803b158015610db557600080fd5b505af1158015610dc9573d6000803e3d6000fd5b505050506040513d6020811015610ddf57600080fd5b5060009050610dec610cd3565b600154604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610e3d57600080fd5b505afa158015610e51573d6000803e3d6000fd5b505050506040513d6020811015610e6757600080fd5b50519050610e7483611813565b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610ebf57600080fd5b505afa158015610ed3573d6000803e3d6000fd5b505050506040513d6020811015610ee957600080fd5b50519050610ef781836117c3565b600354604080516318160ddd60e01b815290519296506000926001600160a01b03909216916318160ddd91600480820192602092909190829003018186803b158015610f4257600080fd5b505afa158015610f56573d6000803e3d6000fd5b505050506040513d6020811015610f6c57600080fd5b5051610f79575083611008565b611005610fff86600360009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610fce57600080fd5b505afa158015610fe2573d6000803e3d6000fd5b505050506040513d6020811015610ff857600080fd5b505161120f565b85611278565b90505b6001546006546040805163095ea7b360e01b81526001600160a01b039283166004820152602481018990529051919092169163095ea7b39160448083019260209291908290030181600087803b15801561106157600080fd5b505af1158015611075573d6000803e3d6000fd5b505050506040513d602081101561108b57600080fd5b505060065460075460408051631c57762b60e31b8152600481019290925260248201889052516001600160a01b039092169163e2bbb1589160448082019260009290919082900301818387803b1580156110e457600080fd5b505af11580156110f8573d6000803e3d6000fd5b5050600354604080516340c10f1960e01b81523360048201526024810186905290516001600160a01b0390921693506340c10f19925060448082019260009290919082900301818387803b15801561114f57600080fd5b505af1158015611163573d6000803e3d6000fd5b505050505050505050565b6001546001600160a01b031681565b600054604080516370a0823160e01b81523360048201529051610cd1926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156111c957600080fd5b505afa1580156111dd573d6000803e3d6000fd5b505050506040513d60208110156111f357600080fd5b5051610d5a565b60095481565b6006546001600160a01b031681565b600081158061122a5750508082028282828161122757fe5b04145b611272576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b92915050565b60008082116112c1576040805162461bcd60e51b815260206004820152601060248201526f6469766973696f6e206279207a65726f60801b604482015290519081900360640190fd5b60008284816112cc57fe5b04949350505050565b600154604080516370a0823160e01b8152306004820152905183926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561131f57600080fd5b505afa158015611333573d6000803e3d6000fd5b505050506040513d602081101561134957600080fd5b50511015611395576040805162461bcd60e51b81526020600482015260146024820152736e6f742d656e6f7567682d6c697175696469747960601b604482015290519081900360640190fd5b600154600480546040805163095ea7b360e01b81526001600160a01b0392831693810193909352602483018590525192169163095ea7b3916044808201926020929091908290030181600087803b1580156113ef57600080fd5b505af1158015611403573d6000803e3d6000fd5b505050506040513d602081101561141957600080fd5b5050600480546000805460025460408051635d5155ef60e11b81526001600160a01b039384169681019690965290821660248601526044850186905260648501839052608485018390523060a4860152603c420160c48601528051919093169363baa2abde9360e4808301949193928390030190829087803b15801561149e57600080fd5b505af11580156114b2573d6000803e3d6000fd5b505050506040513d60408110156114c857600080fd5b50506040805160028082526060808301845292602083019080368337505060025482519293506001600160a01b03169183915060009061150457fe5b6001600160a01b03928316602091820292909201015260005482519116908290600190811061152f57fe5b6001600160a01b03928316602091820292909201810191909152600254604080516370a0823160e01b8152306004820152905160009492909216926370a0823192602480840193829003018186803b15801561158a57600080fd5b505afa15801561159e573d6000803e3d6000fd5b505050506040513d60208110156115b457600080fd5b5051600254600480546040805163095ea7b360e01b81526001600160a01b039283169381019390935260248301859052519394509091169163095ea7b3916044808201926020929091908290030181600087803b15801561161457600080fd5b505af1158015611628573d6000803e3d6000fd5b505050506040513d602081101561163e57600080fd5b5050600480546040516338ed173960e01b81529182018381526000602484018190523060648501819052603c42016084860181905260a060448701908152885160a488015288516001600160a01b03909616966338ed17399689968b9594939092909160c490910190602087810191028083838b5b838110156116cb5781810151838201526020016116b3565b505050509050019650505050505050600060405180830381600087803b1580156116f457600080fd5b505af1158015611708573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561173157600080fd5b810190808051604051939291908464010000000082111561175157600080fd5b90830190602082018581111561176657600080fd5b825186602082028301116401000000008211171561178357600080fd5b82525081516020918201928201910280838360005b838110156117b0578181015183820152602001611798565b5050505090500160405250505050505050565b80820382811115611272576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6000611820826002611278565b60408051600280825260608083018452939450909160208301908036833750506000805483519394506001600160a01b03169284925061185c57fe5b6001600160a01b03928316602091820292909201015260025482519116908290600190811061188757fe5b6001600160a01b0392831660209182029290920181019190915260008054600480546040805163095ea7b360e01b815291871692820192909252602481018890529051919094169363095ea7b3936044808301949193928390030190829087803b1580156118f457600080fd5b505af1158015611908573d6000803e3d6000fd5b505050506040513d602081101561191e57600080fd5b5050600480546040516338ed173960e01b81529182018481526000602484018190523060648501819052603c42016084860181905260a060448701908152875160a488015287516001600160a01b03909616966338ed1739968a968a9594939092909160c490910190602087810191028083838b5b838110156119ab578181015183820152602001611993565b505050509050019650505050505050600060405180830381600087803b1580156119d457600080fd5b505af11580156119e8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015611a1157600080fd5b8101908080516040519392919084640100000000821115611a3157600080fd5b908301906020820185811115611a4657600080fd5b8251866020820283011164010000000082111715611a6357600080fd5b82525081516020918201928201910280838360005b83811015611a90578181015183820152602001611a78565b505050509190910160408181526002546370a0823160e01b83523060048401529051600097506001600160a01b0390911695506370a08231945060248083019450602093509091829003018186803b158015611aeb57600080fd5b505afa158015611aff573d6000803e3d6000fd5b505050506040513d6020811015611b1557600080fd5b505160008054604080516370a0823160e01b8152306004820152905193945091926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015611b6757600080fd5b505afa158015611b7b573d6000803e3d6000fd5b505050506040513d6020811015611b9157600080fd5b505160008054600480546040805163095ea7b360e01b81526001600160a01b039283169381019390935260248301869052519495509091169263095ea7b392604480840193602093929083900390910190829087803b158015611bf357600080fd5b505af1158015611c07573d6000803e3d6000fd5b505050506040513d6020811015611c1d57600080fd5b5050600254600480546040805163095ea7b360e01b81526001600160a01b0392831693810193909352602483018690525192169163095ea7b3916044808201926020929091908290030181600087803b158015611c7957600080fd5b505af1158015611c8d573d6000803e3d6000fd5b505050506040513d6020811015611ca357600080fd5b505060048054600080546002546040805162e8e33760e81b81526001600160a01b0393841696810196909652908216602486015260448501869052606485018790526084850183905260a485018390523060c4860152603c420160e48601525192169263e8e33700926101048083019360609383900390910190829087803b158015611d2e57600080fd5b505af1158015611d42573d6000803e3d6000fd5b505050506040513d606081101561052157600080fd5b80820182811015611272576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfea2646970667358221220010e3608858169759e72d05e3efa60b7f16a6ac3f8c1f6c5612f6779ae30090b64736f6c6343000607003360806040526012600655600060075534801561001a57600080fd5b506040516111e83803806111e88339818101604052602081101561003d57600080fd5b5051600180546001600160a01b031916339081179091556040517fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a26005556111598061008f6000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80637a9e5e4b116100de578063b753a98c11610097578063bf7e214f11610071578063bf7e214f1461040d578063daea85c514610415578063dd62ed3e1461043b578063f2d5d56b1461046957610173565b8063b753a98c146103a3578063bb35783b146103cf578063be9a65551461040557610173565b80637a9e5e4b146102dc5780638da5cb5b1461030257806395d89b41146103265780639dc29fac1461032e578063a0712d681461035a578063a9059cbb1461037757610173565b8063313ce56711610130578063313ce5671461024057806340c10f191461024857806342966c68146102745780635ac801fe1461029157806370a08231146102ae57806375f12b21146102d457610173565b806306fdde031461017857806307da68f514610192578063095ea7b31461019c57806313af4035146101dc57806318160ddd1461020257806323b872dd1461020a575b600080fd5b610180610495565b60408051918252519081900360200190f35b61019a61049b565b005b6101c8600480360360408110156101b257600080fd5b506001600160a01b038135169060200135610537565b604080519115158252519081900360200190f35b61019a600480360360208110156101f257600080fd5b50356001600160a01b03166105f6565b6101806106a4565b6101c86004803603606081101561022057600080fd5b506001600160a01b038135811691602081013590911690604001356106aa565b61018061092f565b61019a6004803603604081101561025e57600080fd5b506001600160a01b038135169060200135610935565b61019a6004803603602081101561028a57600080fd5b5035610a76565b61019a600480360360208110156102a757600080fd5b5035610a83565b610180600480360360208110156102c457600080fd5b50356001600160a01b0316610ae6565b6101c8610af8565b61019a600480360360208110156102f257600080fd5b50356001600160a01b0316610b08565b61030a610bb2565b604080516001600160a01b039092168252519081900360200190f35b610180610bc1565b61019a6004803603604081101561034457600080fd5b506001600160a01b038135169060200135610bc7565b61019a6004803603602081101561037057600080fd5b5035610e83565b6101c86004803603604081101561038d57600080fd5b506001600160a01b038135169060200135610e8d565b61019a600480360360408110156103b957600080fd5b506001600160a01b038135169060200135610ea1565b61019a600480360360608110156103e557600080fd5b506001600160a01b03813581169160208101359091169060400135610eb1565b61019a610ec2565b61030a610f58565b6101c86004803603602081101561042b57600080fd5b50356001600160a01b0316610f67565b6101806004803603604081101561045157600080fd5b506001600160a01b0381358116916020013516610f75565b61019a6004803603604081101561047f57600080fd5b506001600160a01b038135169060200135610f92565b60075481565b6104b1336000356001600160e01b031916610f9d565b6104f9576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b6001805460ff60a01b1916600160a01b1790556040517fbedf0f4abfe86d4ffad593d9607fe70e83ea706033d44d24b3b6283cf3fc4f6b90600090a1565b600154600090600160a01b900460ff161561058e576040805162461bcd60e51b8152602060048201526012602482015271191ccb5cdd1bdc0b5a5ccb5cdd1bdc1c195960721b604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b61060c336000356001600160e01b031916610f9d565b610654576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0383811691909117918290556040519116907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a250565b60025481565b600154600090600160a01b900460ff1615610701576040805162461bcd60e51b8152602060048201526012602482015271191ccb5cdd1bdc0b5a5ccb5cdd1bdc1c195960721b604482015290519081900360640190fd5b6001600160a01b038416331480159061073f57506001600160a01b038416600090815260046020908152604080832033845290915290205460001914155b1561080f576001600160a01b03841660009081526004602090815260408083203384529091529020548211156107bc576040805162461bcd60e51b815260206004820152601e60248201527f64732d746f6b656e2d696e73756666696369656e742d617070726f76616c0000604482015290519081900360640190fd5b6001600160a01b03841660009081526004602090815260408083203384529091529020546107ea9083611084565b6001600160a01b03851660009081526004602090815260408083203384529091529020555b6001600160a01b03841660009081526003602052604090205482111561087c576040805162461bcd60e51b815260206004820152601d60248201527f64732d746f6b656e2d696e73756666696369656e742d62616c616e6365000000604482015290519081900360640190fd5b6001600160a01b03841660009081526003602052604090205461089f9083611084565b6001600160a01b0380861660009081526003602052604080822093909355908516815220546108ce90836110d4565b6001600160a01b0380851660008181526003602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019392505050565b60065481565b61094b336000356001600160e01b031916610f9d565b610993576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b600154600160a01b900460ff16156109e7576040805162461bcd60e51b8152602060048201526012602482015271191ccb5cdd1bdc0b5a5ccb5cdd1bdc1c195960721b604482015290519081900360640190fd5b6001600160a01b038216600090815260036020526040902054610a0a90826110d4565b6001600160a01b038316600090815260036020526040902055600254610a3090826110d4565b6002556040805182815290516001600160a01b038416917f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885919081900360200190a25050565b610a803382610bc7565b50565b610a99336000356001600160e01b031916610f9d565b610ae1576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b600755565b60036020526000908152604090205481565b600154600160a01b900460ff1681565b610b1e336000356001600160e01b031916610f9d565b610b66576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b03838116919091178083556040519116917f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada491a250565b6001546001600160a01b031681565b60055481565b610bdd336000356001600160e01b031916610f9d565b610c25576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b600154600160a01b900460ff1615610c79576040805162461bcd60e51b8152602060048201526012602482015271191ccb5cdd1bdc0b5a5ccb5cdd1bdc1c195960721b604482015290519081900360640190fd5b6001600160a01b0382163314801590610cb757506001600160a01b038216600090815260046020908152604080832033845290915290205460001914155b15610d87576001600160a01b0382166000908152600460209081526040808320338452909152902054811115610d34576040805162461bcd60e51b815260206004820152601e60248201527f64732d746f6b656e2d696e73756666696369656e742d617070726f76616c0000604482015290519081900360640190fd5b6001600160a01b0382166000908152600460209081526040808320338452909152902054610d629082611084565b6001600160a01b03831660009081526004602090815260408083203384529091529020555b6001600160a01b038216600090815260036020526040902054811115610df4576040805162461bcd60e51b815260206004820152601d60248201527f64732d746f6b656e2d696e73756666696369656e742d62616c616e6365000000604482015290519081900360640190fd5b6001600160a01b038216600090815260036020526040902054610e179082611084565b6001600160a01b038316600090815260036020526040902055600254610e3d9082611084565b6002556040805182815290516001600160a01b038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a25050565b610a803382610935565b6000610e9a3384846106aa565b9392505050565b610eac3383836106aa565b505050565b610ebc8383836106aa565b50505050565b610ed8336000356001600160e01b031916610f9d565b610f20576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b6001805460ff60a01b191690556040517f1b55ba3aa851a46be3b365aee5b5c140edd620d578922f3e8466d2cbd96f954b90600090a1565b6000546001600160a01b031681565b60006105f082600019610537565b600460209081526000928352604080842090915290825290205481565b610eac8233836106aa565b60006001600160a01b038316301415610fb8575060016105f0565b6001546001600160a01b0384811691161415610fd6575060016105f0565b6000546001600160a01b0316610fee575060006105f0565b6000546040805163b700961360e01b81526001600160a01b0386811660048301523060248301526001600160e01b0319861660448301529151919092169163b7009613916064808301926020929190829003018186803b15801561105157600080fd5b505afa158015611065573d6000803e3d6000fd5b505050506040513d602081101561107b57600080fd5b505190506105f0565b808203828111156105f0576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b808201828110156105f0576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfea26469706673582212205d78c8bfac43325139729d1133484204b57ca93624935908b44ee8612908388364736f6c63430006070033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061010b5760003560e01c806370cf41f6116100a2578063b6b55f2511610071578063b6b55f25146101b5578063c0dead1a146101d2578063de5f6268146101da578063f1a392da146101e2578063fb1db278146101ea5761010b565b806370cf41f6146101955780637298d36e1461019d578063853828b6146101a5578063a915a229146101ad5761010b565b80633fc8cef3116100de5780633fc8cef3146101755780634641257d1461017d5780636c23229e146101855780636e986ce41461018d5761010b565b80630a087903146101105780630c4f95ae146101345780632b2d9fde1461013c5780632e1a7d4d14610156575b600080fd5b6101186101f2565b604080516001600160a01b039092168252519081900360200190f35b610118610201565b610144610210565b60408051918252519081900360200190f35b6101736004803603602081101561016c57600080fd5b5035610216565b005b61011861052a565b610173610539565b6101186108a2565b6101446108b1565b610144610c3f565b610118610c45565b610173610c54565b610144610cd3565b610173600480360360208110156101cb57600080fd5b5035610d5a565b61011861116e565b61017361117d565b6101446111fa565b610118611200565b6000546001600160a01b031681565b6005546001600160a01b031681565b60085481565b6000610220610cd3565b905060006102b0610231848461120f565b600360009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561027f57600080fd5b505afa158015610293573d6000803e3d6000fd5b505050506040513d60208110156102a957600080fd5b5051611278565b60035460408051632770a7eb60e21b81523360048201526024810187905290519293506001600160a01b0390911691639dc29fac9160448082019260009290919082900301818387803b15801561030657600080fd5b505af115801561031a573d6000803e3d6000fd5b505060065460075460408051630441a3e760e41b8152600481019290925260248201869052516001600160a01b03909216935063441a3e70925060448082019260009290919082900301818387803b15801561037557600080fd5b505af1158015610389573d6000803e3d6000fd5b505060008054604080516370a0823160e01b815230600482015290519294506001600160a01b0390911692506370a08231916024808301926020929190829003018186803b1580156103da57600080fd5b505afa1580156103ee573d6000803e3d6000fd5b505050506040513d602081101561040457600080fd5b50519050610411826112d5565b60008054604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561045d57600080fd5b505afa158015610471573d6000803e3d6000fd5b505050506040513d602081101561048757600080fd5b50516000549091506001600160a01b031663a9059cbb336104a884866117c3565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156104f757600080fd5b505af115801561050b573d6000803e3d6000fd5b505050506040513d602081101561052157600080fd5b50505050505050565b6002546001600160a01b031681565b6009541561058c5742600954610e1001111561058c576040805162461bcd60e51b815260206004820152600d60248201526c21686172766573742d74696d6560981b604482015290519081900360640190fd5b4260095560065460075460408051630441a3e760e41b8152600481019290925260006024830181905290516001600160a01b039093169263441a3e7092604480820193929182900301818387803b1580156105e657600080fd5b505af11580156105fa573d6000803e3d6000fd5b505060008054604080516370a0823160e01b815230600482015290519294506001600160a01b0390911692506370a08231916024808301926020929190829003018186803b15801561064b57600080fd5b505afa15801561065f573d6000803e3d6000fd5b505050506040513d602081101561067557600080fd5b505160085490915060009061069e9061068f90849061120f565b68056bc75e2d63100000611278565b600080546040805163a9059cbb60e01b81523360048201526024810185905290519394506001600160a01b039091169263a9059cbb92604480840193602093929083900390910190829087803b1580156106f757600080fd5b505af115801561070b573d6000803e3d6000fd5b505050506040513d602081101561072157600080fd5b5061072e905082826117c3565b915061073982611813565b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561078457600080fd5b505afa158015610798573d6000803e3d6000fd5b505050506040513d60208110156107ae57600080fd5b50516001546006546040805163095ea7b360e01b81526001600160a01b03928316600482015260248101859052905193945091169163095ea7b3916044808201926020929091908290030181600087803b15801561080b57600080fd5b505af115801561081f573d6000803e3d6000fd5b505050506040513d602081101561083557600080fd5b505060065460075460408051631c57762b60e31b8152600481019290925260248201849052516001600160a01b039092169163e2bbb1589160448082019260009290919082900301818387803b15801561088e57600080fd5b505af1158015610521573d6000803e3d6000fd5b6003546001600160a01b031681565b6000806108bc610cd3565b9050806108cd576000915050610c3c565b600080600560009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561091e57600080fd5b505afa158015610932573d6000803e3d6000fd5b505050506040513d606081101561094857600080fd5b508051602091820151600154604080516318160ddd60e01b815290519396509194506000936001600160a01b03909116926318160ddd926004808201939291829003018186803b15801561099b57600080fd5b505afa1580156109af573d6000803e3d6000fd5b505050506040513d60208110156109c557600080fd5b5051905060006109e66109e086670de0b6b3a764000061120f565b83611278565b90506000610a0e610a00866001600160701b03168461120f565b670de0b6b3a7640000611278565b90506000610a28610a00866001600160701b03168561120f565b604080516002808252606080830184529394509091602083019080368337505060025482519293506001600160a01b031691839150600090610a6657fe5b6001600160a01b039283166020918202929092010152600054825191169082906001908110610a9157fe5b6001600160a01b03928316602091820292909201810191909152600480546040805163d06ca61f60e01b815292830187815260248401918252865160448501528651606096939093169463d06ca61f948994899492606490920191858101910280838360005b83811015610b0f578181015183820152602001610af7565b50505050905001935050505060006040518083038186803b158015610b3357600080fd5b505afa158015610b47573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610b7057600080fd5b8101908080516040519392919084640100000000821115610b9057600080fd5b908301906020820185811115610ba557600080fd5b8251866020820283011164010000000082111715610bc257600080fd5b82525081516020918201928201910280838360005b83811015610bef578181015183820152602001610bd7565b505050509050016040525050509050610c30610231610c2283600181518110610c1457fe5b602002602001015187611d58565b670de0b6b3a764000061120f565b99505050505050505050505b90565b60075481565b6004546001600160a01b031681565b600354604080516370a0823160e01b81523360048201529051610cd1926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610ca057600080fd5b505afa158015610cb4573d6000803e3d6000fd5b505050506040513d6020811015610cca57600080fd5b5051610216565b565b600654600754604080516393f1a40b60e01b81526004810192909252306024830152805160009384936001600160a01b03909116926393f1a40b92604480840193829003018186803b158015610d2857600080fd5b505afa158015610d3c573d6000803e3d6000fd5b505050506040513d6040811015610d5257600080fd5b505191505090565b60008054604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b03909216926323b872dd926064808401936020939083900390910190829087803b158015610db557600080fd5b505af1158015610dc9573d6000803e3d6000fd5b505050506040513d6020811015610ddf57600080fd5b5060009050610dec610cd3565b600154604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610e3d57600080fd5b505afa158015610e51573d6000803e3d6000fd5b505050506040513d6020811015610e6757600080fd5b50519050610e7483611813565b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610ebf57600080fd5b505afa158015610ed3573d6000803e3d6000fd5b505050506040513d6020811015610ee957600080fd5b50519050610ef781836117c3565b600354604080516318160ddd60e01b815290519296506000926001600160a01b03909216916318160ddd91600480820192602092909190829003018186803b158015610f4257600080fd5b505afa158015610f56573d6000803e3d6000fd5b505050506040513d6020811015610f6c57600080fd5b5051610f79575083611008565b611005610fff86600360009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610fce57600080fd5b505afa158015610fe2573d6000803e3d6000fd5b505050506040513d6020811015610ff857600080fd5b505161120f565b85611278565b90505b6001546006546040805163095ea7b360e01b81526001600160a01b039283166004820152602481018990529051919092169163095ea7b39160448083019260209291908290030181600087803b15801561106157600080fd5b505af1158015611075573d6000803e3d6000fd5b505050506040513d602081101561108b57600080fd5b505060065460075460408051631c57762b60e31b8152600481019290925260248201889052516001600160a01b039092169163e2bbb1589160448082019260009290919082900301818387803b1580156110e457600080fd5b505af11580156110f8573d6000803e3d6000fd5b5050600354604080516340c10f1960e01b81523360048201526024810186905290516001600160a01b0390921693506340c10f19925060448082019260009290919082900301818387803b15801561114f57600080fd5b505af1158015611163573d6000803e3d6000fd5b505050505050505050565b6001546001600160a01b031681565b600054604080516370a0823160e01b81523360048201529051610cd1926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156111c957600080fd5b505afa1580156111dd573d6000803e3d6000fd5b505050506040513d60208110156111f357600080fd5b5051610d5a565b60095481565b6006546001600160a01b031681565b600081158061122a5750508082028282828161122757fe5b04145b611272576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b92915050565b60008082116112c1576040805162461bcd60e51b815260206004820152601060248201526f6469766973696f6e206279207a65726f60801b604482015290519081900360640190fd5b60008284816112cc57fe5b04949350505050565b600154604080516370a0823160e01b8152306004820152905183926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561131f57600080fd5b505afa158015611333573d6000803e3d6000fd5b505050506040513d602081101561134957600080fd5b50511015611395576040805162461bcd60e51b81526020600482015260146024820152736e6f742d656e6f7567682d6c697175696469747960601b604482015290519081900360640190fd5b600154600480546040805163095ea7b360e01b81526001600160a01b0392831693810193909352602483018590525192169163095ea7b3916044808201926020929091908290030181600087803b1580156113ef57600080fd5b505af1158015611403573d6000803e3d6000fd5b505050506040513d602081101561141957600080fd5b5050600480546000805460025460408051635d5155ef60e11b81526001600160a01b039384169681019690965290821660248601526044850186905260648501839052608485018390523060a4860152603c420160c48601528051919093169363baa2abde9360e4808301949193928390030190829087803b15801561149e57600080fd5b505af11580156114b2573d6000803e3d6000fd5b505050506040513d60408110156114c857600080fd5b50506040805160028082526060808301845292602083019080368337505060025482519293506001600160a01b03169183915060009061150457fe5b6001600160a01b03928316602091820292909201015260005482519116908290600190811061152f57fe5b6001600160a01b03928316602091820292909201810191909152600254604080516370a0823160e01b8152306004820152905160009492909216926370a0823192602480840193829003018186803b15801561158a57600080fd5b505afa15801561159e573d6000803e3d6000fd5b505050506040513d60208110156115b457600080fd5b5051600254600480546040805163095ea7b360e01b81526001600160a01b039283169381019390935260248301859052519394509091169163095ea7b3916044808201926020929091908290030181600087803b15801561161457600080fd5b505af1158015611628573d6000803e3d6000fd5b505050506040513d602081101561163e57600080fd5b5050600480546040516338ed173960e01b81529182018381526000602484018190523060648501819052603c42016084860181905260a060448701908152885160a488015288516001600160a01b03909616966338ed17399689968b9594939092909160c490910190602087810191028083838b5b838110156116cb5781810151838201526020016116b3565b505050509050019650505050505050600060405180830381600087803b1580156116f457600080fd5b505af1158015611708573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561173157600080fd5b810190808051604051939291908464010000000082111561175157600080fd5b90830190602082018581111561176657600080fd5b825186602082028301116401000000008211171561178357600080fd5b82525081516020918201928201910280838360005b838110156117b0578181015183820152602001611798565b5050505090500160405250505050505050565b80820382811115611272576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6000611820826002611278565b60408051600280825260608083018452939450909160208301908036833750506000805483519394506001600160a01b03169284925061185c57fe5b6001600160a01b03928316602091820292909201015260025482519116908290600190811061188757fe5b6001600160a01b0392831660209182029290920181019190915260008054600480546040805163095ea7b360e01b815291871692820192909252602481018890529051919094169363095ea7b3936044808301949193928390030190829087803b1580156118f457600080fd5b505af1158015611908573d6000803e3d6000fd5b505050506040513d602081101561191e57600080fd5b5050600480546040516338ed173960e01b81529182018481526000602484018190523060648501819052603c42016084860181905260a060448701908152875160a488015287516001600160a01b03909616966338ed1739968a968a9594939092909160c490910190602087810191028083838b5b838110156119ab578181015183820152602001611993565b505050509050019650505050505050600060405180830381600087803b1580156119d457600080fd5b505af11580156119e8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015611a1157600080fd5b8101908080516040519392919084640100000000821115611a3157600080fd5b908301906020820185811115611a4657600080fd5b8251866020820283011164010000000082111715611a6357600080fd5b82525081516020918201928201910280838360005b83811015611a90578181015183820152602001611a78565b505050509190910160408181526002546370a0823160e01b83523060048401529051600097506001600160a01b0390911695506370a08231945060248083019450602093509091829003018186803b158015611aeb57600080fd5b505afa158015611aff573d6000803e3d6000fd5b505050506040513d6020811015611b1557600080fd5b505160008054604080516370a0823160e01b8152306004820152905193945091926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015611b6757600080fd5b505afa158015611b7b573d6000803e3d6000fd5b505050506040513d6020811015611b9157600080fd5b505160008054600480546040805163095ea7b360e01b81526001600160a01b039283169381019390935260248301869052519495509091169263095ea7b392604480840193602093929083900390910190829087803b158015611bf357600080fd5b505af1158015611c07573d6000803e3d6000fd5b505050506040513d6020811015611c1d57600080fd5b5050600254600480546040805163095ea7b360e01b81526001600160a01b0392831693810193909352602483018690525192169163095ea7b3916044808201926020929091908290030181600087803b158015611c7957600080fd5b505af1158015611c8d573d6000803e3d6000fd5b505050506040513d6020811015611ca357600080fd5b505060048054600080546002546040805162e8e33760e81b81526001600160a01b0393841696810196909652908216602486015260448501869052606485018790526084850183905260a485018390523060c4860152603c420160e48601525192169263e8e33700926101048083019360609383900390910190829087803b158015611d2e57600080fd5b505af1158015611d42573d6000803e3d6000fd5b505050506040513d606081101561052157600080fd5b80820182811015611272576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfea2646970667358221220010e3608858169759e72d05e3efa60b7f16a6ac3f8c1f6c5612f6779ae30090b64736f6c63430006070033

Deployed Bytecode Sourcemap

13102:7345:0:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;13102:7345:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;13153:47:0;;;:::i;:::-;;;;-1:-1:-1;;;;;13153:47:0;;;;;;;;;;;;;;13471:66;;;:::i;13739:44::-;;;:::i;:::-;;;;;;;;;;;;;;;;15085:669;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;15085:669:0;;:::i;:::-;;13279:45;;;:::i;14008:923::-;;;:::i;13331:21::-;;;:::i;18779:1213::-;;;:::i;13644:39::-;;;:::i;13393:71::-;;;:::i;14988:89::-;;;:::i;20000:232::-;;;:::i;15856:856::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;15856:856:0;;:::i;13207:65::-;;;:::i;15762:86::-;;;:::i;13813:30::-;;;:::i;13574:63::-;;;:::i;13153:47::-;;;-1:-1:-1;;;;;13153:47:0;;:::o;13471:66::-;;;-1:-1:-1;;;;;13471:66:0;;:::o;13739:44::-;;;;:::o;15085:669::-;15138:20;15161:22;:20;:22::i;:::-;15138:45;;15196:14;15213:53;15217:26;15221:7;15230:12;15217:3;:26::i;:::-;15245:6;;;;;;;;;-1:-1:-1;;;;;15245:6:0;-1:-1:-1;;;;;15245:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15245:20:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15245:20:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;15245:20:0;15213:3;:53::i;:::-;15277:6;;:32;;;-1:-1:-1;;;15277:32:0;;15289:10;15277:32;;;;;;;;;;;;15196:70;;-1:-1:-1;;;;;;15277:6:0;;;;:11;;:32;;;;;:6;;:32;;;;;;;;:6;;:32;;;2:2:-1;;;;27:1;24;17:12;2:2;15277:32:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;15368:10:0;;15388:19;;15368:48;;;-1:-1:-1;;;15368:48:0;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15368:10:0;;;;-1:-1:-1;15368:19:0;;-1:-1:-1;15368:48:0;;;;;:10;;:48;;;;;;;;:10;;:48;;;2:2:-1;;;;27:1;24;17:12;2:2;15368:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;15496:15:0;15514:5;;:30;;;-1:-1:-1;;;15514:30:0;;15538:4;15514:30;;;;;;15496:15;;-1:-1:-1;;;;;;15514:5:0;;;;-1:-1:-1;15514:15:0;;:30;;;;;;;;;;;;;;:5;:30;;;2:2:-1;;;;27:1;24;17:12;2:2;15514:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15514:30:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;15514:30:0;;-1:-1:-1;15555:29:0;15577:6;15555:21;:29::i;:::-;15595:14;15612:5;;:30;;;-1:-1:-1;;;15612:30:0;;15636:4;15612:30;;;;;;-1:-1:-1;;;;;15612:5:0;;;;:15;;:30;;;;;;;;;;;;;;;:5;:30;;;2:2:-1;;;;27:1;24;17:12;2:2;15612:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15612:30:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;15612:30:0;15698:5;;15612:30;;-1:-1:-1;;;;;;15698:5:0;:14;15713:10;15725:20;15612:30;15737:7;15725:3;:20::i;:::-;15698:48;;;;;;;;;;;;;-1:-1:-1;;;;;15698:48:0;-1:-1:-1;;;;;15698:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15698:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15698:48:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;;15085:669:0:o;13279:45::-;;;-1:-1:-1;;;;;13279:45:0;;:::o;14008:923::-;14092:11;;:15;14088:114;;14157:15;14132:11;;14146:7;14132:21;:40;;14124:66;;;;;-1:-1:-1;;;14124:66:0;;;;;;;;;;;;-1:-1:-1;;;14124:66:0;;;;;;;;;;;;;;;14226:15;14212:11;:29;14281:10;;14301:19;;14281:43;;;-1:-1:-1;;;14281:43:0;;;;;;;;;:10;:43;;;;;;;;-1:-1:-1;;;;;14281:10:0;;;;:19;;:43;;;;;:10;:43;;;;;;:10;;:43;;;2:2:-1;;;;27:1;24;17:12;2:2;14281:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;14337:14:0;14354:5;;:30;;;-1:-1:-1;;;14354:30:0;;14378:4;14354:30;;;;;;14337:14;;-1:-1:-1;;;;;;14354:5:0;;;;-1:-1:-1;14354:15:0;;:30;;;;;;;;;;;;;;:5;:30;;;2:2:-1;;;;27:1;24;17:12;2:2;14354:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14354:30:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;14354:30:0;14428:13;;14354:30;;-1:-1:-1;14395:14:0;;14412:42;;14416:26;;14354:30;;14416:3;:26::i;:::-;14444:9;14412:3;:42::i;:::-;14502:5;;;:34;;;-1:-1:-1;;;14502:34:0;;14517:10;14502:34;;;;;;;;;;;;14395:59;;-1:-1:-1;;;;;;14502:5:0;;;;:14;;:34;;;;;;;;;;;;;;;;;;:5;:34;;;2:2:-1;;;;27:1;24;17:12;2:2;14502:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14502:34:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;14597:19:0;;-1:-1:-1;14601:6:0;14609;14597:3;:19::i;:::-;14588:28;;14659:29;14681:6;14659:21;:29::i;:::-;14764:13;;:38;;;-1:-1:-1;;;14764:38:0;;14796:4;14764:38;;;;;;14746:15;;-1:-1:-1;;;;;14764:13:0;;:23;;:38;;;;;;;;;;;;;;:13;:38;;;2:2:-1;;;;27:1;24;17:12;2:2;14764:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14764:38:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;14764:38:0;14813:13;;14843:10;;14813:51;;;-1:-1:-1;;;14813:51:0;;-1:-1:-1;;;;;14843:10:0;;;14813:51;;;;;;;;;;;;14764:38;;-1:-1:-1;14813:13:0;;;:21;;:51;;;;;14764:38;;14813:51;;;;;;;;:13;;:51;;;2:2:-1;;;;27:1;24;17:12;2:2;14813:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14813:51:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;14875:10:0;;14894:19;;14875:48;;;-1:-1:-1;;;14875:48:0;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14875:10:0;;;;:18;;:48;;;;;:10;;:48;;;;;;;;:10;;:48;;;2:2:-1;;;;27:1;24;17:12;2:2;14875:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;13331:21:0;;;-1:-1:-1;;;;;13331:21:0;;:::o;18779:1213::-;18835:7;18893:20;18916:22;:20;:22::i;:::-;18893:45;-1:-1:-1;18955:17:0;18951:58;;18996:1;18989:8;;;;;18951:58;19078:25;19105:24;19135:9;;;;;;;;;-1:-1:-1;;;;;19135:9:0;-1:-1:-1;;;;;19135:35:0;;:37;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;19135:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19135:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;19135:37:0;;;;;;;19234:13;;19135:37;19234:27;;-1:-1:-1;;;19234:27:0;;;;19135:37;;-1:-1:-1;19135:37:0;;-1:-1:-1;19209:22:0;;-1:-1:-1;;;;;19234:13:0;;;;:25;;:27;;;;;19135:37;19234:27;;;;;;:13;:27;;;2:2:-1;;;;27:1;24;17:12;2:2;19234:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19234:27:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;19234:27:0;;-1:-1:-1;19294:23:0;19320:44;19324:23;19328:12;19342:4;19324:3;:23::i;:::-;19349:14;19320:3;:44::i;:::-;19294:70;;19403:22;19450:50;19454:39;19458:17;-1:-1:-1;;;;;19454:39:0;19477:15;19454:3;:39::i;:::-;19495:4;19450:3;:50::i;:::-;19403:108;;19522:21;19568:49;19572:38;19576:16;-1:-1:-1;;;;;19572:38:0;19594:15;19572:3;:38::i;19568:49::-;19716:16;;;19730:1;19716:16;;;19692:21;19716:16;;;;;19522:106;;-1:-1:-1;19716:16:0;;;;;;;109:14:-1;19716:16:0;88:42:-1;-1:-1;;19761:4:0;;19743:7;;;;-1:-1:-1;;;;;;19761:4:0;;19743:7;;-1:-1:-1;19761:4:0;;19743:7;;;;-1:-1:-1;;;;;19743:23:0;;;:7;;;;;;;;;:23;19795:5;;19777:7;;19795:5;;;19777:4;;19795:5;;19777:7;;;;;;-1:-1:-1;;;;;19777:24:0;;;:7;;;;;;;;;;:24;;;;19836:5;;;:40;;;-1:-1:-1;;;19836:40:0;;;;;;;;;;;;;;;;;;;;;;19812:21;;19836:5;;;;;:19;;19856:13;;19871:4;;19836:40;;;;;;;;;;;;;;:5;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;19836:40:0;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;19836:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19836:40:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;19836:40:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;15:2;7:11;;4:2;;;31:1;28;21:12;4:2;19836:40:0;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;19836:40:0;;421:4:-1;412:14;;;;19836:40:0;;;;;412:14:-1;19836:40:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;19836:40:0;;;;;;;;;;;19812:64;;19918:66;19922:39;19926:28;19930:4;19935:1;19930:7;;;;;;;;;;;;;;19939:14;19926:3;:28::i;:::-;19956:4;19922:3;:39::i;19918:66::-;19911:73;;;;;;;;;;;18779:1213;;:::o;13644:39::-;;;;:::o;13393:71::-;;;-1:-1:-1;;;;;13393:71:0;;:::o;14988:89::-;15040:6;;:28;;;-1:-1:-1;;;15040:28:0;;15057:10;15040:28;;;;;;15031:38;;-1:-1:-1;;;;;15040:6:0;;:16;;:28;;;;;;;;;;;;;;:6;:28;;;2:2:-1;;;;27:1;24;17:12;2:2;15040:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15040:28:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;15040:28:0;15031:8;:38::i;:::-;14988:89::o;20000:232::-;20100:10;;20134:19;;20100:92;;;-1:-1:-1;;;20100:92:0;;;;;;;;;20176:4;20100:92;;;;;;20053:7;;;;-1:-1:-1;;;;;20100:10:0;;;;:19;;:92;;;;;;;;;;:10;:92;;;2:2:-1;;;;27:1;24;17:12;2:2;20100:92:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20100:92:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;20100:92:0;;-1:-1:-1;;20000:232:0;:::o;15856:856::-;15908:5;;;:54;;;-1:-1:-1;;;15908:54:0;;15927:10;15908:54;;;;15947:4;15908:54;;;;;;;;;;;;-1:-1:-1;;;;;15908:5:0;;;;:18;;:54;;;;;;;;;;;;;;;;;:5;:54;;;2:2:-1;;;;27:1;24;17:12;2:2;15908:54:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15908:54:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;15975:13:0;;-1:-1:-1;15991:22:0;:20;:22::i;:::-;16042:13;;:38;;;-1:-1:-1;;;16042:38:0;;16074:4;16042:38;;;;;;15975;;-1:-1:-1;16024:15:0;;-1:-1:-1;;;;;16042:13:0;;;;:23;;:38;;;;;;;;;;;;;;;:13;:38;;;2:2:-1;;;;27:1;24;17:12;2:2;16042:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16042:38:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;16042:38:0;;-1:-1:-1;16091:30:0;16113:7;16091:21;:30::i;:::-;16149:13;;:38;;;-1:-1:-1;;;16149:38:0;;16181:4;16149:38;;;;;;16132:14;;-1:-1:-1;;;;;16149:13:0;;:23;;:38;;;;;;;;;;;;;;:13;:38;;;2:2:-1;;;;27:1;24;17:12;2:2;16149:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16149:38:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;16149:38:0;;-1:-1:-1;16210:20:0;16149:38;16222:7;16210:3;:20::i;:::-;16320:6;;:20;;;-1:-1:-1;;;16320:20:0;;;;16200:30;;-1:-1:-1;16287:14:0;;-1:-1:-1;;;;;16320:6:0;;;;:18;;:20;;;;;;;;;;;;;;;:6;:20;;;2:2:-1;;;;27:1;24;17:12;2:2;16320:20:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16320:20:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;16320:20:0;16316:162;;-1:-1:-1;16371:7:0;16316:162;;;16420:46;16424:34;16428:7;16437:6;;;;;;;;;-1:-1:-1;;;;;16437:6:0;-1:-1:-1;;;;;16437:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16437:20:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16437:20:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;16437:20:0;16424:3;:34::i;:::-;16460:5;16420:3;:46::i;:::-;16411:55;;16316:162;16550:13;;16580:10;;16550:51;;;-1:-1:-1;;;16550:51:0;;-1:-1:-1;;;;;16580:10:0;;;16550:51;;;;;;;;;;;;:13;;;;;:21;;:51;;;;;;;;;;;;;;:13;;:51;;;2:2:-1;;;;27:1;24;17:12;2:2;16550:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16550:51:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;16612:10:0;;16631:19;;16612:48;;;-1:-1:-1;;;16612:48:0;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16612:10:0;;;;:18;;:48;;;;;:10;;:48;;;;;;;;:10;;:48;;;2:2:-1;;;;27:1;24;17:12;2:2;16612:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;16673:6:0;;:31;;;-1:-1:-1;;;16673:31:0;;16685:10;16673:31;;;;;;;;;;;;-1:-1:-1;;;;;16673:6:0;;;;-1:-1:-1;16673:11:0;;-1:-1:-1;16673:31:0;;;;;:6;;:31;;;;;;;;:6;;:31;;;2:2:-1;;;;27:1;24;17:12;2:2;16673:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16673:31:0;;;;15856:856;;;;;:::o;13207:65::-;;;-1:-1:-1;;;;;13207:65:0;;:::o;15762:86::-;15812:5;;:27;;;-1:-1:-1;;;15812:27:0;;15828:10;15812:27;;;;;;15804:36;;-1:-1:-1;;;;;15812:5:0;;:15;;:27;;;;;;;;;;;;;;:5;:27;;;2:2:-1;;;;27:1;24;17:12;2:2;15812:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15812:27:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;15812:27:0;15804:7;:36::i;13813:30::-;;;;:::o;13574:63::-;;;-1:-1:-1;;;;;13574:63:0;;:::o;3240:142::-;3292:6;3319;;;:30;;-1:-1:-1;;3334:5:0;;;3348:1;3343;3334:5;3343:1;3329:15;;;;;:20;3319:30;3311:63;;;;;-1:-1:-1;;;3311:63:0;;;;;;;;;;;;-1:-1:-1;;;3311:63:0;;;;;;;;;;;;;;;3240:142;;;;:::o;20277:167::-;20335:7;20367:1;20363;:5;20355:34;;;;;-1:-1:-1;;;20355:34:0;;;;;;;;;;;;-1:-1:-1;;;20355:34:0;;;;;;;;;;;;;;;20400:9;20416:1;20412;:5;;;;;;;20277:167;-1:-1:-1;;;;20277:167:0:o;17835:907::-;17954:13;;:38;;;-1:-1:-1;;;17954:38:0;;17986:4;17954:38;;;;;;17996:7;;-1:-1:-1;;;;;17954:13:0;;:23;;:38;;;;;;;;;;;;;;:13;:38;;;2:2:-1;;;;27:1;24;17:12;2:2;17954:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17954:38:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17954:38:0;:49;;17932:119;;;;;-1:-1:-1;;;17932:119:0;;;;;;;;;;;;-1:-1:-1;;;17932:119:0;;;;;;;;;;;;;;;18062:13;;18092:5;;;18062:46;;;-1:-1:-1;;;18062:46:0;;-1:-1:-1;;;;;18092:5:0;;;18062:46;;;;;;;;;;;;;;:13;;;:21;;:46;;;;;;;;;;;;;;;:13;;:46;;;2:2:-1;;;;27:1;24;17:12;2:2;18062:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18062:46:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;18119:5:0;;;;18163;;18192:4;;18119:194;;;-1:-1:-1;;;18119:194:0;;-1:-1:-1;;;;;18163:5:0;;;18119:194;;;;;;;18192:4;;;18119:194;;;;;;;;;;;;;;;;;;;;;;18274:4;18119:194;;;;18300:2;18294:3;:8;18119:194;;;;;;:5;;;;;:21;;:194;;;;;;;;;;;;;;;:5;:194;;;2:2:-1;;;;27:1;24;17:12;2:2;18119:194:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18119:194:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;18383:16:0;;;18397:1;18383:16;;;18359:21;18383:16;;;;;18359:21;18383:16;;;;;109:14:-1;18383:16:0;88:42:-1;-1:-1;;18428:4:0;;18410:7;;;;-1:-1:-1;;;;;;18428:4:0;;18410:7;;-1:-1:-1;18428:4:0;;18410:7;;;;-1:-1:-1;;;;;18410:23:0;;;:7;;;;;;;;;:23;18462:5;;18444:7;;18462:5;;;18444:4;;18462:5;;18444:7;;;;;;-1:-1:-1;;;;;18444:24:0;;;:7;;;;;;;;;;:24;;;;18497:4;;:29;;;-1:-1:-1;;;18497:29:0;;18520:4;18497:29;;;;;;18479:15;;18497:4;;;;;:14;;:29;;;;;;;;;;:4;:29;;;2:2:-1;;;;27:1;24;17:12;2:2;18497:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18497:29:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;18497:29:0;18537:4;;18558:5;;;18537:37;;;-1:-1:-1;;;18537:37:0;;-1:-1:-1;;;;;18558:5:0;;;18537:37;;;;;;;;;;;;;;18497:29;;-1:-1:-1;18537:4:0;;;;:12;;:37;;;;;18497:29;;18537:37;;;;;;;;:4;;:37;;;2:2:-1;;;;27:1;24;17:12;2:2;18537:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18537:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;18585:5:0;;;:149;;-1:-1:-1;;;18585:149:0;;;;;;;;:5;:149;;;;;;18695:4;18585:149;;;;;;18721:2;18715:3;:8;18585:149;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18585:5:0;;;;:30;;18630:7;;18668:4;;18695;18715:8;18585:149;;;;;;;;;18537:37;18585:149;;;;;;;;:5;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;18585:149:0;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;18585:149:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18585:149:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;18585:149:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;15:2;7:11;;4:2;;;31:1;28;21:12;4:2;18585:149:0;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;18585:149:0;;421:4:-1;412:14;;;;18585:149:0;;;;;412:14:-1;18585:149:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;18585:149:0;;;;;;;;;;;;17835:907;;;:::o;3105:129::-;3189:5;;;3184:16;;;;3176:50;;;;;-1:-1:-1;;;3176:50:0;;;;;;;;;;;;-1:-1:-1;;;3176:50:0;;;;;;;;;;;;;;16834:872;16902:12;16917:15;16921:7;16930:1;16917:3;:15::i;:::-;17014:16;;;17028:1;17014:16;;;16990:21;17014:16;;;;;16902:30;;-1:-1:-1;17014:16:0;;;;;;;109:14:-1;17014:16:0;88:42:-1;-1:-1;;17059:5:0;;;17041:7;;;;-1:-1:-1;;;;;;17059:5:0;;17041:7;;-1:-1:-1;17041:7:0;;;;-1:-1:-1;;;;;17041:24:0;;;:7;;;;;;;;;:24;17094:4;;17076:7;;17094:4;;;17076;;17094;;17076:7;;;;;;-1:-1:-1;;;;;17076:23:0;;;:7;;;;;;;;;;:23;;;;17110:5;;;17132;;;17110:35;;;-1:-1:-1;;;17110:35:0;;17132:5;;;17110:35;;;;;;;;;;;;;;;:5;;;;;:13;;:35;;;;;17076:7;;17110:35;;;;;;;;:5;:35;;;2:2:-1;;;;27:1;24;17:12;2:2;17110:35:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17110:35:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;17156:5:0;;;:70;;-1:-1:-1;;;17156:70:0;;;;;;;;:5;:70;;;;;;17210:4;17156:70;;;;;;17223:2;17217:3;:8;17156:70;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17156:5:0;;;;:30;;17187:4;;17196;;17210;17217:8;17156:70;;;;;;;;;17110:35;17156:70;;;;;;;;:5;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;17156:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17156:70:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17156:70:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;17156:70:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;15:2;7:11;;4:2;;;31:1;28;21:12;4:2;17156:70:0;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;17156:70:0;;421:4:-1;412:14;;;;17156:70:0;;;;;412:14:-1;17156:70:0;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;-1:-1;;;;17156:70:0;;;;;;;;17286:4;;-1:-1:-1;;;17286:29:0;;17309:4;17286:29;;;;;;17268:15;;-1:-1:-1;;;;;;17286:4:0;;;;-1:-1:-1;17286:14:0;;-1:-1:-1;17286:29:0;;;;;-1:-1:-1;17286:29:0;;-1:-1:-1;17286:29:0;;;;;;;:4;:29;;;2:2:-1;;;;27:1;24;17:12;2:2;17286:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17286:29:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17286:29:0;17326:16;17345:5;;:30;;;-1:-1:-1;;;17345:30:0;;17369:4;17345:30;;;;;;17286:29;;-1:-1:-1;17326:16:0;;-1:-1:-1;;;;;17345:5:0;;;;:15;;:30;;;;;17286:29;;17345:30;;;;;;;:5;:30;;;2:2:-1;;;;27:1;24;17:12;2:2;17345:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17345:30:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17345:30:0;17386:5;;;17408;;;17386:39;;;-1:-1:-1;;;17386:39:0;;-1:-1:-1;;;;;17408:5:0;;;17386:39;;;;;;;;;;;;;;17345:30;;-1:-1:-1;17386:5:0;;;;:13;;:39;;;;;17345:30;;17386:39;;;;;;;;;;;:5;:39;;;2:2:-1;;;;27:1;24;17:12;2:2;17386:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17386:39:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;17436:4:0;;17457:5;;;17436:37;;;-1:-1:-1;;;17436:37:0;;-1:-1:-1;;;;;17457:5:0;;;17436:37;;;;;;;;;;;;;;:4;;;:12;;:37;;;;;17386:39;;17436:37;;;;;;;;:4;;:37;;;2:2:-1;;;;27:1;24;17:12;2:2;17436:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17436:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;17484:5:0;;;;17525;;17554:4;;17484:214;;;-1:-1:-1;;;17484:214:0;;-1:-1:-1;;;;;17525:5:0;;;17484:214;;;;;;;17554:4;;;17484:214;;;;;;;;;;;;;;;;;;;;;;;;;;;;17659:4;17484:214;;;;17685:2;17679:3;:8;17484:214;;;;;:5;;;:18;;:214;;;;;;;;;;;;;;;;:5;:214;;;2:2:-1;;;;27:1;24;17:12;2:2;17484:214:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17484:214:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;2971:128:0;3055:5;;;3050:16;;;;3042:49;;;;;-1:-1:-1;;;3042:49:0;;;;;;;;;;;;-1:-1:-1;;;3042:49:0;;;;;;;;;;;;;

Swarm Source

ipfs://5d78c8bfac43325139729d1133484204b57ca93624935908b44ee86129083883

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ 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.