ETH Price: $2,482.46 (+1.76%)

Contract

0x3A306a399085F3460BbcB5b77015Ab33806A10d5
 

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Claim CDP175620512023-06-26 7:14:23474 days ago1687763663IN
InstaDApp: Maker
0 ETH0.0007036612.49908084
Transfer CDP113614582020-11-30 17:20:431412 days ago1606756843IN
InstaDApp: Maker
0 ETH0.0026277985.8
Transfer CDP105479862020-07-28 12:22:351537 days ago1595938955IN
InstaDApp: Maker
0 ETH0.0024195379
Transfer CDP101402752020-05-26 8:37:541600 days ago1590482274IN
InstaDApp: Maker
0 ETH0.0010106933.00000247
Transfer CDP100145472020-05-06 19:19:431620 days ago1588792783IN
InstaDApp: Maker
0 ETH0.000186826.1
Transfer CDP99023562020-04-19 10:39:281637 days ago1587292768IN
InstaDApp: Maker
0 ETH0.000096853.1625
Transfer CDP99015832020-04-19 7:56:191637 days ago1587282979IN
InstaDApp: Maker
0 ETH0.00016565.40708838
Transfer CDP94673032020-02-12 9:15:591704 days ago1581498959IN
InstaDApp: Maker
0 ETH0.000214387
Transfer CDP93373022020-01-23 10:09:051724 days ago1579774145IN
InstaDApp: Maker
0 ETH0.000030621
Transfer CDP91631992019-12-26 0:14:251752 days ago1577319265IN
InstaDApp: Maker
0 ETH0.000091883
Transfer CDP91597942019-12-25 8:09:201753 days ago1577261360IN
InstaDApp: Maker
0 ETH0.000183766
Transfer CDP90876182019-12-11 7:43:261767 days ago1576050206IN
InstaDApp: Maker
0 ETH0.000153135
Transfer CDP90677072019-12-07 18:57:141771 days ago1575745034IN
InstaDApp: Maker
0 ETH0.000031411.111
Transfer CDP90409852019-12-03 0:58:151775 days ago1575334695IN
InstaDApp: Maker
0 ETH0.000028271
Transfer CDP89958182019-11-25 1:51:161783 days ago1574646676IN
InstaDApp: Maker
0 ETH0.0002827510
Transfer CDP89783992019-11-22 4:29:441786 days ago1574396984IN
InstaDApp: Maker
0 ETH0.000279929.9
Transfer CDP89577312019-11-18 17:32:491790 days ago1574098369IN
InstaDApp: Maker
0 ETH0.000084823
Transfer CDP89462842019-11-16 19:48:211792 days ago1573933701IN
InstaDApp: Maker
0 ETH0.000028271
Transfer CDP89401232019-11-15 19:06:241793 days ago1573844784IN
InstaDApp: Maker
0 ETH0.000028271
Transfer CDP89247902019-11-13 5:53:541795 days ago1573624434IN
InstaDApp: Maker
0 ETH0.000084823
Transfer CDP89109842019-11-10 22:45:141798 days ago1573425914IN
InstaDApp: Maker
0 ETH0.0003110211
Transfer CDP89070112019-11-10 6:46:191798 days ago1573368379IN
InstaDApp: Maker
0 ETH0.000339312
Transfer CDP88685792019-11-04 1:34:201804 days ago1572831260IN
InstaDApp: Maker
0 ETH0.000028271
Transfer CDP88403552019-10-30 12:48:081809 days ago1572439688IN
InstaDApp: Maker
0 ETH0.000090483.2
Transfer CDP88337272019-10-29 11:16:591810 days ago1572347819IN
InstaDApp: Maker
0 ETH0.000063162.23387096
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
81509622019-07-14 19:13:501917 days ago1563131630
InstaDApp: Maker
0.006 ETH
78681182019-05-31 15:31:501961 days ago1559316710
InstaDApp: Maker
0.02 ETH
76055582019-04-20 16:23:422002 days ago1555777422
InstaDApp: Maker
0.1 ETH
76004072019-04-19 20:53:112003 days ago1555707191
InstaDApp: Maker
0.01 ETH
75997652019-04-19 18:24:202003 days ago1555698260
InstaDApp: Maker
0.01 ETH
75804722019-04-16 18:09:542006 days ago1555438194
InstaDApp: Maker
0.008 ETH
75796202019-04-16 14:57:432006 days ago1555426663
InstaDApp: Maker
1 ETH
75796202019-04-16 14:57:432006 days ago1555426663
InstaDApp: Maker
1 ETH
75792342019-04-16 13:38:372006 days ago1555421917
InstaDApp: Maker
0.00119684 ETH
75792342019-04-16 13:38:372006 days ago1555421917
InstaDApp: Maker
0.00059684 ETH
75792342019-04-16 13:38:372006 days ago1555421917
InstaDApp: Maker
0.00668022 ETH
75792222019-04-16 13:36:022006 days ago1555421762
InstaDApp: Maker
5 ETH
75792222019-04-16 13:36:022006 days ago1555421762
InstaDApp: Maker
5 ETH
75791152019-04-16 13:09:512006 days ago1555420191
InstaDApp: Maker
0.00023881 ETH
75791152019-04-16 13:09:512006 days ago1555420191
InstaDApp: Maker
0.00023881 ETH
75791152019-04-16 13:09:512006 days ago1555420191
InstaDApp: Maker
0.00266593 ETH
75790992019-04-16 13:05:372006 days ago1555419937
InstaDApp: Maker
10 ETH
75790992019-04-16 13:05:372006 days ago1555419937
InstaDApp: Maker
10 ETH
75790992019-04-16 13:05:372006 days ago1555419937
InstaDApp: Maker
0.00132975 ETH
75790992019-04-16 13:05:372006 days ago1555419937
InstaDApp: Maker
0.00132975 ETH
75790992019-04-16 13:05:372006 days ago1555419937
InstaDApp: Maker
0.0147474 ETH
75790702019-04-16 12:59:012006 days ago1555419541
InstaDApp: Maker
5 ETH
75790702019-04-16 12:59:012006 days ago1555419541
InstaDApp: Maker
5 ETH
75790702019-04-16 12:59:012006 days ago1555419541
InstaDApp: Maker
0.00211976 ETH
75790702019-04-16 12:59:012006 days ago1555419541
InstaDApp: Maker
0.00031976 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
InstaMaker

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-12-01
*/

pragma solidity 0.4.24;


library SafeMath {

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "Assertion Failed");
        return c;
    }
    
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "Assertion Failed");
        uint256 c = a / b;
        return c;
    }

}

interface IERC20 {
    function balanceOf(address who) external view returns (uint256);
    function transfer(address to, uint256 value) external returns (bool);
    function approve(address spender, uint256 value) external returns (bool);
    function transferFrom(address from, address to, uint256 value) external returns (bool);
}

interface AddressRegistry {
    function getAddr(string name) external view returns(address);
}

interface MakerCDP {
    function open() external returns (bytes32 cup);
    function join(uint wad) external; // Join PETH
    function exit(uint wad) external; // Exit PETH
    function give(bytes32 cup, address guy) external;
    function lock(bytes32 cup, uint wad) external;
    function free(bytes32 cup, uint wad) external;
    function draw(bytes32 cup, uint wad) external;
    function wipe(bytes32 cup, uint wad) external;
    function per() external view returns (uint ray);
    function lad(bytes32 cup) external view returns (address);
}

interface PriceInterface {
    function peek() external view returns (bytes32, bool);
}

interface WETHFace {
    function deposit() external payable;
    function withdraw(uint wad) external;
}

interface InstaKyber {
    function executeTrade(
        address src,
        address dest,
        uint srcAmt,
        uint minConversionRate,
        uint maxDestAmt
    ) external payable returns (uint destAmt);

    function getExpectedPrice(
        address src,
        address dest,
        uint srcAmt
    ) external view returns (uint, uint);
}


contract Registry {

    address public addressRegistry;
    modifier onlyAdmin() {
        require(
            msg.sender == getAddress("admin"),
            "Permission Denied"
        );
        _;
    }
    
    function getAddress(string name) internal view returns(address) {
        AddressRegistry addrReg = AddressRegistry(addressRegistry);
        return addrReg.getAddr(name);
    }

}


contract GlobalVar is Registry {

    using SafeMath for uint;
    using SafeMath for uint256;

    bytes32 blankCDP = 0x0000000000000000000000000000000000000000000000000000000000000000;
    address cdpAddr; // cups
    mapping (address => bytes32) cdps; // borrower >>> CDP Bytes
    bool public freezed;

}


contract IssueLoan is GlobalVar {

    event LockedETH(address borrower, uint lockETH, uint lockPETH, address lockedBy);
    event LoanedDAI(address borrower, uint loanDAI, address payTo);
    event NewCDP(address borrower, bytes32 cdpBytes);

    function pethPEReth(uint ethNum) public view returns (uint rPETH) {
        MakerCDP loanMaster = MakerCDP(cdpAddr);
        rPETH = (ethNum.mul(10 ** 27)).div(loanMaster.per());
    }

    function borrow(uint daiDraw, address beneficiary) public payable {
        if (msg.value > 0) {lockETH(msg.sender);}
        if (daiDraw > 0) {drawDAI(daiDraw, beneficiary);}
    }

    function lockETH(address borrower) public payable {
        MakerCDP loanMaster = MakerCDP(cdpAddr);
        if (cdps[borrower] == blankCDP) {
            require(msg.sender == borrower, "Creating CDP for others is not permitted at the moment.");
            cdps[msg.sender] = loanMaster.open();
            emit NewCDP(msg.sender, cdps[msg.sender]);
        }
        WETHFace wethTkn = WETHFace(getAddress("weth"));
        wethTkn.deposit.value(msg.value)(); // ETH to WETH
        uint pethToLock = pethPEReth(msg.value);
        loanMaster.join(pethToLock); // WETH to PETH
        loanMaster.lock(cdps[borrower], pethToLock); // PETH to CDP
        emit LockedETH(
            borrower, msg.value, pethToLock, msg.sender
        );
    }

    function drawDAI(uint daiDraw, address beneficiary) public {
        require(!freezed, "Operation Disabled");
        MakerCDP loanMaster = MakerCDP(cdpAddr);
        loanMaster.draw(cdps[msg.sender], daiDraw);
        IERC20 daiTkn = IERC20(getAddress("dai"));
        address payTo = msg.sender;
        if (payTo != address(0)) {
            payTo = beneficiary;
        }
        daiTkn.transfer(payTo, daiDraw);
        emit LoanedDAI(msg.sender, daiDraw, payTo);
    }

}


contract RepayLoan is IssueLoan {

    event WipedDAI(address borrower, uint daiWipe, uint mkrCharged, address wipedBy);
    event UnlockedETH(address borrower, uint ethFree);

    function repay(uint daiWipe, uint ethFree) public payable {
        if (daiWipe > 0) {wipeDAI(daiWipe, msg.sender);}
        if (ethFree > 0) {unlockETH(ethFree);}
    }

    function wipeDAI(uint daiWipe, address borrower) public payable {
        address dai = getAddress("dai");
        address mkr = getAddress("mkr");
        address eth = getAddress("eth");

        IERC20 daiTkn = IERC20(dai);
        IERC20 mkrTkn = IERC20(mkr);

        uint contractMKR = mkrTkn.balanceOf(address(this)); // contract MKR balance before wiping
        daiTkn.transferFrom(msg.sender, address(this), daiWipe); // get DAI to pay the debt
        MakerCDP loanMaster = MakerCDP(cdpAddr);
        loanMaster.wipe(cdps[borrower], daiWipe); // wipe DAI
        uint mkrCharged = contractMKR - mkrTkn.balanceOf(address(this)); // MKR fee = before wiping bal - after wiping bal

        // claiming paid MKR back
        if (msg.value > 0) { // Interacting with Kyber to swap ETH with MKR
            swapETHMKR(
                eth, mkr, mkrCharged, msg.value
            );
        } else { // take MKR directly from address
            mkrTkn.transferFrom(msg.sender, address(this), mkrCharged); // user paying MKR fees
        }

        emit WipedDAI(
            borrower, daiWipe, mkrCharged, msg.sender
        );
    }

    function unlockETH(uint ethFree) public {
        require(!freezed, "Operation Disabled");
        uint pethToUnlock = pethPEReth(ethFree);
        MakerCDP loanMaster = MakerCDP(cdpAddr);
        loanMaster.free(cdps[msg.sender], pethToUnlock); // CDP to PETH
        loanMaster.exit(pethToUnlock); // PETH to WETH
        WETHFace wethTkn = WETHFace(getAddress("weth"));
        wethTkn.withdraw(ethFree); // WETH to ETH
        msg.sender.transfer(ethFree);
        emit UnlockedETH(msg.sender, ethFree);
    }

    function swapETHMKR(
        address eth,
        address mkr,
        uint mkrCharged,
        uint ethQty
    ) internal 
    {
        InstaKyber instak = InstaKyber(getAddress("InstaKyber"));
        uint minRate;
        (, minRate) = instak.getExpectedPrice(eth, mkr, ethQty);
        uint mkrBought = instak.executeTrade.value(ethQty)(
            eth, mkr, ethQty, minRate, mkrCharged
        );
        require(mkrCharged == mkrBought, "ETH not sufficient to cover the MKR fees.");
        if (address(this).balance > 0) {
            msg.sender.transfer(address(this).balance);
        }
    }

}


contract BorrowTasks is RepayLoan {

    event TranferCDP(bytes32 cdp, address owner, address nextOwner);
    event CDPClaimed(bytes32 cdp, address owner);

    function transferCDP(address nextOwner) public {
        require(nextOwner != 0, "Invalid Address.");
        MakerCDP loanMaster = MakerCDP(cdpAddr);
        loanMaster.give(cdps[msg.sender], nextOwner);
        cdps[msg.sender] = blankCDP;
        emit TranferCDP(cdps[msg.sender], msg.sender, nextOwner);
    }

    function claimCDP(uint cdpNum) public {
        bytes32 cdpBytes = bytes32(cdpNum);
        MakerCDP loanMaster = MakerCDP(cdpAddr);
        address cdpOwner = loanMaster.lad(cdpBytes);
        require(cdps[cdpOwner] == blankCDP, "More than 1 CDP is not allowed.");
        cdps[cdpOwner] = cdpBytes;
        emit CDPClaimed(cdpBytes, msg.sender);
    }

    function getETHRate() public view returns (uint) {
        PriceInterface ethRate = PriceInterface(getAddress("ethfeed"));
        bytes32 ethrate;
        (ethrate, ) = ethRate.peek();
        return uint(ethrate);
    }

    function getCDP(address borrower) public view returns (uint, bytes32) {
        return (uint(cdps[borrower]), cdps[borrower]);
    }

    function approveERC20() public {
        IERC20 wethTkn = IERC20(getAddress("weth"));
        wethTkn.approve(cdpAddr, 2**256 - 1);
        IERC20 pethTkn = IERC20(getAddress("peth"));
        pethTkn.approve(cdpAddr, 2**256 - 1);
        IERC20 mkrTkn = IERC20(getAddress("mkr"));
        mkrTkn.approve(cdpAddr, 2**256 - 1);
        IERC20 daiTkn = IERC20(getAddress("dai"));
        daiTkn.approve(cdpAddr, 2**256 - 1);
    }

}


contract InstaMaker is BorrowTasks {

    event MKRCollected(uint amount);

    constructor(address rAddr) public {
        addressRegistry = rAddr;
        cdpAddr = getAddress("cdp");
        approveERC20();
    }

    function () public payable {}

    function freeze(bool stop) public onlyAdmin {
        freezed = stop;
    }

    // collecting MKR token kept as balance to pay fees
    function collectMKR(uint amount) public onlyAdmin {
        IERC20 mkrTkn = IERC20(getAddress("mkr"));
        mkrTkn.transfer(msg.sender, amount);
        emit MKRCollected(amount);
    }

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"ethNum","type":"uint256"}],"name":"pethPEReth","outputs":[{"name":"rPETH","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"daiWipe","type":"uint256"},{"name":"borrower","type":"address"}],"name":"wipeDAI","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"daiDraw","type":"uint256"},{"name":"beneficiary","type":"address"}],"name":"borrow","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"daiDraw","type":"uint256"},{"name":"beneficiary","type":"address"}],"name":"drawDAI","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getETHRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"borrower","type":"address"}],"name":"lockETH","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"ethFree","type":"uint256"}],"name":"unlockETH","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"borrower","type":"address"}],"name":"getCDP","outputs":[{"name":"","type":"uint256"},{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"approveERC20","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"stop","type":"bool"}],"name":"freeze","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"freezed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"cdpNum","type":"uint256"}],"name":"claimCDP","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"nextOwner","type":"address"}],"name":"transferCDP","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"daiWipe","type":"uint256"},{"name":"ethFree","type":"uint256"}],"name":"repay","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"collectMKR","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"addressRegistry","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"rAddr","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"}],"name":"MKRCollected","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"cdp","type":"bytes32"},{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"nextOwner","type":"address"}],"name":"TranferCDP","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"cdp","type":"bytes32"},{"indexed":false,"name":"owner","type":"address"}],"name":"CDPClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"borrower","type":"address"},{"indexed":false,"name":"daiWipe","type":"uint256"},{"indexed":false,"name":"mkrCharged","type":"uint256"},{"indexed":false,"name":"wipedBy","type":"address"}],"name":"WipedDAI","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"borrower","type":"address"},{"indexed":false,"name":"ethFree","type":"uint256"}],"name":"UnlockedETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"borrower","type":"address"},{"indexed":false,"name":"lockETH","type":"uint256"},{"indexed":false,"name":"lockPETH","type":"uint256"},{"indexed":false,"name":"lockedBy","type":"address"}],"name":"LockedETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"borrower","type":"address"},{"indexed":false,"name":"loanDAI","type":"uint256"},{"indexed":false,"name":"payTo","type":"address"}],"name":"LoanedDAI","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"borrower","type":"address"},{"indexed":false,"name":"cdpBytes","type":"bytes32"}],"name":"NewCDP","type":"event"}]

608060405260006001026001906000191690553480156200001f57600080fd5b50604051602080620037aa83398101806040528101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620000d26040805190810160405280600381526020017f636470000000000000000000000000000000000000000000000000000000000081525062000132640100000000026401000000009004565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200012b62000276640100000000026401000000009004565b5062000856565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663d502db97846040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620001e3578082015181840152602081019050620001c6565b50505050905090810190601f168015620002115780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b1580156200023157600080fd5b505af115801562000246573d6000803e3d6000fd5b505050506040513d60208110156200025d57600080fd5b8101908080519060200190929190505050915050919050565b600080600080620002cb6040805190810160405280600481526020017f776574680000000000000000000000000000000000000000000000000000000081525062000132640100000000026401000000009004565b93508373ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015620003b357600080fd5b505af1158015620003c8573d6000803e3d6000fd5b505050506040513d6020811015620003df57600080fd5b810190808051906020019092919050505050620004406040805190810160405280600481526020017f706574680000000000000000000000000000000000000000000000000000000081525062000132640100000000026401000000009004565b92508273ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156200052857600080fd5b505af11580156200053d573d6000803e3d6000fd5b505050506040513d60208110156200055457600080fd5b810190808051906020019092919050505050620005b56040805190810160405280600381526020017f6d6b72000000000000000000000000000000000000000000000000000000000081525062000132640100000000026401000000009004565b91508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156200069d57600080fd5b505af1158015620006b2573d6000803e3d6000fd5b505050506040513d6020811015620006c957600080fd5b8101908080519060200190929190505050506200072a6040805190810160405280600381526020017f646169000000000000000000000000000000000000000000000000000000000081525062000132640100000000026401000000009004565b90508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156200081257600080fd5b505af115801562000827573d6000803e3d6000fd5b505050506040513d60208110156200083e57600080fd5b81019080805190602001909291905050505050505050565b612f4480620008666000396000f3006080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631cabe3ef146100e85780632b3e27eb146101295780634b3fd148146101695780634b6bb6ae146101a95780634f97ba49146101f657806384a73e53146102215780638d445bd01461025757806398bdcb111461028457806399035895146102ea578063b5bf15e514610301578063b7540d9f14610330578063b9ca3bf61461035f578063d583b2061461038c578063d8aed145146103cf578063f2fec913146103f9578063f3ad65f414610426575b005b3480156100f457600080fd5b506101136004803603810190808035906020019092919050505061047d565b6040518082815260200191505060405180910390f35b61016760048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061057c565b005b6101a760048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bef565b005b3480156101b557600080fd5b506101f460048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c1a565b005b34801561020257600080fd5b5061020b610fa1565b6040518082815260200191505060405180910390f35b610255600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061109f565b005b34801561026357600080fd5b506102826004803603810190808035906020019092919050505061164e565b005b34801561029057600080fd5b506102c5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119e4565b6040518083815260200182600019166000191681526020019250505060405180910390f35b3480156102f657600080fd5b506102ff611a74565b005b34801561030d57600080fd5b5061032e600480360381019080803515159060200190929190505050612004565b005b34801561033c57600080fd5b50610345612101565b604051808215151515815260200191505060405180910390f35b34801561036b57600080fd5b5061038a60048036038101908080359060200190929190505050612114565b005b34801561039857600080fd5b506103cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612379565b005b6103f76004803603810190808035906020019092919080359060200190929190505050612664565b005b34801561040557600080fd5b506104246004803603810190808035906020019092919050505061268f565b005b34801561043257600080fd5b5061043b6128cb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506105748173ffffffffffffffffffffffffffffffffffffffff16637ec9c3b86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561050c57600080fd5b505af1158015610520573d6000803e3d6000fd5b505050506040513d602081101561053657600080fd5b81019080805190602001909291905050506105666b033b2e3c9fd0803ce8000000866128f090919063ffffffff16565b61299790919063ffffffff16565b915050919050565b6000806000806000806000806105c66040805190810160405280600381526020017f6461690000000000000000000000000000000000000000000000000000000000815250612a2a565b97506106066040805190810160405280600381526020017f6d6b720000000000000000000000000000000000000000000000000000000000815250612a2a565b96506106466040805190810160405280600381526020017f6574680000000000000000000000000000000000000000000000000000000000815250612a2a565b95508794508693508373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156106e957600080fd5b505af11580156106fd573d6000803e3d6000fd5b505050506040513d602081101561071357600080fd5b810190808051906020019092919050505092508473ffffffffffffffffffffffffffffffffffffffff166323b872dd33308d6040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156107fd57600080fd5b505af1158015610811573d6000803e3d6000fd5b505050506040513d602081101561082757600080fd5b810190808051906020019092919050505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508173ffffffffffffffffffffffffffffffffffffffff166373b38101600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548c6040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b15801561091c57600080fd5b505af1158015610930573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156109cf57600080fd5b505af11580156109e3573d6000803e3d6000fd5b505050506040513d60208110156109f957600080fd5b8101908080519060200190929190505050830390506000341115610a2857610a2386888334612b68565b610b3c565b8373ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015610aff57600080fd5b505af1158015610b13573d6000803e3d6000fd5b505050506040513d6020811015610b2957600080fd5b8101908080519060200190929190505050505b7fcc6878355865ed21824b44591ff4007019184a8a745b0740f85423266f9a837e898b8333604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405180910390a150505050505050505050565b6000341115610c0257610c013361109f565b5b6000821115610c1657610c158282610c1a565b5b5050565b6000806000600460009054906101000a900460ff16151515610ca4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4f7065726174696f6e2044697361626c6564000000000000000000000000000081525060200191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1692508273ffffffffffffffffffffffffffffffffffffffff1663440f19ba600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054876040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b158015610d8757600080fd5b505af1158015610d9b573d6000803e3d6000fd5b50505050610ddd6040805190810160405280600381526020017f6461690000000000000000000000000000000000000000000000000000000000815250612a2a565b9150339050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610e1c578390505b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82876040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610ebf57600080fd5b505af1158015610ed3573d6000803e3d6000fd5b505050506040513d6020811015610ee957600080fd5b8101908080519060200190929190505050507f4e393322c078a1291e528e1e8719f9bc6d6845942cb87e9b2c6c1969f71db371338683604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390a15050505050565b6000806000610fe46040805190810160405280600781526020017f6574686665656400000000000000000000000000000000000000000000000000815250612a2a565b91508173ffffffffffffffffffffffffffffffffffffffff166359e02dd76040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016040805180830381600087803b15801561104957600080fd5b505af115801561105d573d6000803e3d6000fd5b505050506040513d604081101561107357600080fd5b810190808051906020019092919080519060200190929190505050508091505080600190049250505090565b6000806000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16925060015460001916600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460001916141561137c578373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156111e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001807f4372656174696e672043445020666f72206f7468657273206973206e6f74207081526020017f65726d697474656420617420746865206d6f6d656e742e00000000000000000081525060400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663fcfff16f6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561124757600080fd5b505af115801561125b573d6000803e3d6000fd5b505050506040513d602081101561127157600080fd5b8101908080519060200190929190505050600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081600019169055507faacf4dabf7a1318b83a988c9264a97b311ea7cef315258fd7cdab83ef8b8dedb33600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019250505060405180910390a15b6113ba6040805190810160405280600481526020017f7765746800000000000000000000000000000000000000000000000000000000815250612a2a565b91508173ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016000604051808303818588803b15801561142057600080fd5b505af1158015611434573d6000803e3d6000fd5b50505050506114423461047d565b90508273ffffffffffffffffffffffffffffffffffffffff1663049878f3826040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b1580156114b357600080fd5b505af11580156114c7573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff1663b3b77a51600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b15801561158957600080fd5b505af115801561159d573d6000803e3d6000fd5b505050507fae07a3d5c5e33182092cb26d77cc02764342b0772a21260cff9dfdf47e1dad1984348333604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405180910390a150505050565b6000806000600460009054906101000a900460ff161515156116d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4f7065726174696f6e2044697361626c6564000000000000000000000000000081525060200191505060405180910390fd5b6116e18461047d565b9250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508173ffffffffffffffffffffffffffffffffffffffff1663a5cd184e600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054856040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b1580156117c657600080fd5b505af11580156117da573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16637f8661a1846040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561184d57600080fd5b505af1158015611861573d6000803e3d6000fd5b505050506118a36040805190810160405280600481526020017f7765746800000000000000000000000000000000000000000000000000000000815250612a2a565b90508073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d856040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561191457600080fd5b505af1158015611928573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f19350505050158015611972573d6000803e3d6000fd5b507f535dbd84e6041f33aaf78db176dd666c6b5d00094b3681ac68ea55ec9d0375b43385604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a150505050565b600080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460019004600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205491509150915091565b600080600080611ab86040805190810160405280600481526020017f7765746800000000000000000000000000000000000000000000000000000000815250612a2a565b93508373ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611b9f57600080fd5b505af1158015611bb3573d6000803e3d6000fd5b505050506040513d6020811015611bc957600080fd5b810190808051906020019092919050505050611c196040805190810160405280600481526020017f7065746800000000000000000000000000000000000000000000000000000000815250612a2a565b92508273ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611d0057600080fd5b505af1158015611d14573d6000803e3d6000fd5b505050506040513d6020811015611d2a57600080fd5b810190808051906020019092919050505050611d7a6040805190810160405280600381526020017f6d6b720000000000000000000000000000000000000000000000000000000000815250612a2a565b91508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611e6157600080fd5b505af1158015611e75573d6000803e3d6000fd5b505050506040513d6020811015611e8b57600080fd5b810190808051906020019092919050505050611edb6040805190810160405280600381526020017f6461690000000000000000000000000000000000000000000000000000000000815250612a2a565b90508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611fc257600080fd5b505af1158015611fd6573d6000803e3d6000fd5b505050506040513d6020811015611fec57600080fd5b81019080805190602001909291905050505050505050565b6120426040805190810160405280600581526020017f61646d696e000000000000000000000000000000000000000000000000000000815250612a2a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156120e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5065726d697373696f6e2044656e69656400000000000000000000000000000081525060200191505060405180910390fd5b80600460006101000a81548160ff02191690831515021790555050565b600460009054906101000a900460ff1681565b6000806000836001029250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508173ffffffffffffffffffffffffffffffffffffffff1663de5f5517846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156121bb57600080fd5b505af11580156121cf573d6000803e3d6000fd5b505050506040513d60208110156121e557600080fd5b8101908080519060200190929190505050905060015460001916600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600019161415156122b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4d6f7265207468616e203120434450206973206e6f7420616c6c6f7765642e0081525060200191505060405180910390fd5b82600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081600019169055507f31f5dffe72808492cb2559d1f67508a7bb36622423aaac12f04b773d58bb3ffd83336040518083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a150505050565b6000808273ffffffffffffffffffffffffffffffffffffffff1614151515612409576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f496e76616c696420416464726573732e0000000000000000000000000000000081525060200191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663baa8529c600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561251857600080fd5b505af115801561252c573d6000803e3d6000fd5b50505050600154600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081600019169055507f54e847b75f10cd7e742b78312fe0079d5a973d8a9b9070bb0515a8390160bd51600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205433846040518084600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390a15050565b600082111561267857612677823361057c565b5b600081111561268b5761268a8161164e565b5b5050565b60006126cf6040805190810160405280600581526020017f61646d696e000000000000000000000000000000000000000000000000000000815250612a2a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612771576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5065726d697373696f6e2044656e69656400000000000000000000000000000081525060200191505060405180910390fd5b6127af6040805190810160405280600381526020017f6d6b720000000000000000000000000000000000000000000000000000000000815250612a2a565b90508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561285457600080fd5b505af1158015612868573d6000803e3d6000fd5b505050506040513d602081101561287e57600080fd5b8101908080519060200190929190505050507f499d4b63f3a203c58019a864fc2d9cfe72954952ed53a3e40999755432cd3566826040518082815260200191505060405180910390a15050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008414156129055760009150612990565b828402905082848281151561291657fe5b0414151561298c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f417373657274696f6e204661696c65640000000000000000000000000000000081525060200191505060405180910390fd5b8091505b5092915050565b600080600083111515612a12576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f417373657274696f6e204661696c65640000000000000000000000000000000081525060200191505060405180910390fd5b8284811515612a1d57fe5b0490508091505092915050565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663d502db97846040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612ad9578082015181840152602081019050612abe565b50505050905090810190601f168015612b065780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b158015612b2557600080fd5b505af1158015612b39573d6000803e3d6000fd5b505050506040513d6020811015612b4f57600080fd5b8101908080519060200190929190505050915050919050565b6000806000612bab6040805190810160405280600a81526020017f496e7374614b7962657200000000000000000000000000000000000000000000815250612a2a565b92508273ffffffffffffffffffffffffffffffffffffffff166332ffe4428888876040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200193505050506040805180830381600087803b158015612c8357600080fd5b505af1158015612c97573d6000803e3d6000fd5b505050506040513d6040811015612cad57600080fd5b8101908080519060200190929190805190602001909291905050509050809250508273ffffffffffffffffffffffffffffffffffffffff16633e23ee7e85898988878b6040518763ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001955050505050506020604051808303818588803b158015612db557600080fd5b505af1158015612dc9573d6000803e3d6000fd5b50505050506040513d6020811015612de057600080fd5b810190808051906020019092919050505090508085141515612e90576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001807f455448206e6f742073756666696369656e7420746f20636f766572207468652081526020017f4d4b5220666565732e000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60003073ffffffffffffffffffffffffffffffffffffffff16311115612f0f573373ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015612f0d573d6000803e3d6000fd5b505b505050505050505600a165627a7a72305820894e3ac264276d62f18446dc84c3416b626064df89bcb9a0d6fcd5d4d5c0072b0029000000000000000000000000e16d035b8e76303237b9660b3c9c94c1a86aab47

Deployed Bytecode

0x6080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631cabe3ef146100e85780632b3e27eb146101295780634b3fd148146101695780634b6bb6ae146101a95780634f97ba49146101f657806384a73e53146102215780638d445bd01461025757806398bdcb111461028457806399035895146102ea578063b5bf15e514610301578063b7540d9f14610330578063b9ca3bf61461035f578063d583b2061461038c578063d8aed145146103cf578063f2fec913146103f9578063f3ad65f414610426575b005b3480156100f457600080fd5b506101136004803603810190808035906020019092919050505061047d565b6040518082815260200191505060405180910390f35b61016760048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061057c565b005b6101a760048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bef565b005b3480156101b557600080fd5b506101f460048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c1a565b005b34801561020257600080fd5b5061020b610fa1565b6040518082815260200191505060405180910390f35b610255600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061109f565b005b34801561026357600080fd5b506102826004803603810190808035906020019092919050505061164e565b005b34801561029057600080fd5b506102c5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119e4565b6040518083815260200182600019166000191681526020019250505060405180910390f35b3480156102f657600080fd5b506102ff611a74565b005b34801561030d57600080fd5b5061032e600480360381019080803515159060200190929190505050612004565b005b34801561033c57600080fd5b50610345612101565b604051808215151515815260200191505060405180910390f35b34801561036b57600080fd5b5061038a60048036038101908080359060200190929190505050612114565b005b34801561039857600080fd5b506103cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612379565b005b6103f76004803603810190808035906020019092919080359060200190929190505050612664565b005b34801561040557600080fd5b506104246004803603810190808035906020019092919050505061268f565b005b34801561043257600080fd5b5061043b6128cb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506105748173ffffffffffffffffffffffffffffffffffffffff16637ec9c3b86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561050c57600080fd5b505af1158015610520573d6000803e3d6000fd5b505050506040513d602081101561053657600080fd5b81019080805190602001909291905050506105666b033b2e3c9fd0803ce8000000866128f090919063ffffffff16565b61299790919063ffffffff16565b915050919050565b6000806000806000806000806105c66040805190810160405280600381526020017f6461690000000000000000000000000000000000000000000000000000000000815250612a2a565b97506106066040805190810160405280600381526020017f6d6b720000000000000000000000000000000000000000000000000000000000815250612a2a565b96506106466040805190810160405280600381526020017f6574680000000000000000000000000000000000000000000000000000000000815250612a2a565b95508794508693508373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156106e957600080fd5b505af11580156106fd573d6000803e3d6000fd5b505050506040513d602081101561071357600080fd5b810190808051906020019092919050505092508473ffffffffffffffffffffffffffffffffffffffff166323b872dd33308d6040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156107fd57600080fd5b505af1158015610811573d6000803e3d6000fd5b505050506040513d602081101561082757600080fd5b810190808051906020019092919050505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508173ffffffffffffffffffffffffffffffffffffffff166373b38101600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548c6040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b15801561091c57600080fd5b505af1158015610930573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156109cf57600080fd5b505af11580156109e3573d6000803e3d6000fd5b505050506040513d60208110156109f957600080fd5b8101908080519060200190929190505050830390506000341115610a2857610a2386888334612b68565b610b3c565b8373ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015610aff57600080fd5b505af1158015610b13573d6000803e3d6000fd5b505050506040513d6020811015610b2957600080fd5b8101908080519060200190929190505050505b7fcc6878355865ed21824b44591ff4007019184a8a745b0740f85423266f9a837e898b8333604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405180910390a150505050505050505050565b6000341115610c0257610c013361109f565b5b6000821115610c1657610c158282610c1a565b5b5050565b6000806000600460009054906101000a900460ff16151515610ca4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4f7065726174696f6e2044697361626c6564000000000000000000000000000081525060200191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1692508273ffffffffffffffffffffffffffffffffffffffff1663440f19ba600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054876040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b158015610d8757600080fd5b505af1158015610d9b573d6000803e3d6000fd5b50505050610ddd6040805190810160405280600381526020017f6461690000000000000000000000000000000000000000000000000000000000815250612a2a565b9150339050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610e1c578390505b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82876040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610ebf57600080fd5b505af1158015610ed3573d6000803e3d6000fd5b505050506040513d6020811015610ee957600080fd5b8101908080519060200190929190505050507f4e393322c078a1291e528e1e8719f9bc6d6845942cb87e9b2c6c1969f71db371338683604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390a15050505050565b6000806000610fe46040805190810160405280600781526020017f6574686665656400000000000000000000000000000000000000000000000000815250612a2a565b91508173ffffffffffffffffffffffffffffffffffffffff166359e02dd76040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016040805180830381600087803b15801561104957600080fd5b505af115801561105d573d6000803e3d6000fd5b505050506040513d604081101561107357600080fd5b810190808051906020019092919080519060200190929190505050508091505080600190049250505090565b6000806000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16925060015460001916600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460001916141561137c578373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156111e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001807f4372656174696e672043445020666f72206f7468657273206973206e6f74207081526020017f65726d697474656420617420746865206d6f6d656e742e00000000000000000081525060400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663fcfff16f6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561124757600080fd5b505af115801561125b573d6000803e3d6000fd5b505050506040513d602081101561127157600080fd5b8101908080519060200190929190505050600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081600019169055507faacf4dabf7a1318b83a988c9264a97b311ea7cef315258fd7cdab83ef8b8dedb33600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019250505060405180910390a15b6113ba6040805190810160405280600481526020017f7765746800000000000000000000000000000000000000000000000000000000815250612a2a565b91508173ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016000604051808303818588803b15801561142057600080fd5b505af1158015611434573d6000803e3d6000fd5b50505050506114423461047d565b90508273ffffffffffffffffffffffffffffffffffffffff1663049878f3826040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b1580156114b357600080fd5b505af11580156114c7573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff1663b3b77a51600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b15801561158957600080fd5b505af115801561159d573d6000803e3d6000fd5b505050507fae07a3d5c5e33182092cb26d77cc02764342b0772a21260cff9dfdf47e1dad1984348333604051808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405180910390a150505050565b6000806000600460009054906101000a900460ff161515156116d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4f7065726174696f6e2044697361626c6564000000000000000000000000000081525060200191505060405180910390fd5b6116e18461047d565b9250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508173ffffffffffffffffffffffffffffffffffffffff1663a5cd184e600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054856040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b1580156117c657600080fd5b505af11580156117da573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16637f8661a1846040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561184d57600080fd5b505af1158015611861573d6000803e3d6000fd5b505050506118a36040805190810160405280600481526020017f7765746800000000000000000000000000000000000000000000000000000000815250612a2a565b90508073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d856040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561191457600080fd5b505af1158015611928573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051600060405180830381858888f19350505050158015611972573d6000803e3d6000fd5b507f535dbd84e6041f33aaf78db176dd666c6b5d00094b3681ac68ea55ec9d0375b43385604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a150505050565b600080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460019004600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205491509150915091565b600080600080611ab86040805190810160405280600481526020017f7765746800000000000000000000000000000000000000000000000000000000815250612a2a565b93508373ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611b9f57600080fd5b505af1158015611bb3573d6000803e3d6000fd5b505050506040513d6020811015611bc957600080fd5b810190808051906020019092919050505050611c196040805190810160405280600481526020017f7065746800000000000000000000000000000000000000000000000000000000815250612a2a565b92508273ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611d0057600080fd5b505af1158015611d14573d6000803e3d6000fd5b505050506040513d6020811015611d2a57600080fd5b810190808051906020019092919050505050611d7a6040805190810160405280600381526020017f6d6b720000000000000000000000000000000000000000000000000000000000815250612a2a565b91508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611e6157600080fd5b505af1158015611e75573d6000803e3d6000fd5b505050506040513d6020811015611e8b57600080fd5b810190808051906020019092919050505050611edb6040805190810160405280600381526020017f6461690000000000000000000000000000000000000000000000000000000000815250612a2a565b90508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611fc257600080fd5b505af1158015611fd6573d6000803e3d6000fd5b505050506040513d6020811015611fec57600080fd5b81019080805190602001909291905050505050505050565b6120426040805190810160405280600581526020017f61646d696e000000000000000000000000000000000000000000000000000000815250612a2a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156120e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5065726d697373696f6e2044656e69656400000000000000000000000000000081525060200191505060405180910390fd5b80600460006101000a81548160ff02191690831515021790555050565b600460009054906101000a900460ff1681565b6000806000836001029250600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508173ffffffffffffffffffffffffffffffffffffffff1663de5f5517846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156121bb57600080fd5b505af11580156121cf573d6000803e3d6000fd5b505050506040513d60208110156121e557600080fd5b8101908080519060200190929190505050905060015460001916600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600019161415156122b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4d6f7265207468616e203120434450206973206e6f7420616c6c6f7765642e0081525060200191505060405180910390fd5b82600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081600019169055507f31f5dffe72808492cb2559d1f67508a7bb36622423aaac12f04b773d58bb3ffd83336040518083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a150505050565b6000808273ffffffffffffffffffffffffffffffffffffffff1614151515612409576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f496e76616c696420416464726573732e0000000000000000000000000000000081525060200191505060405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663baa8529c600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054846040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050600060405180830381600087803b15801561251857600080fd5b505af115801561252c573d6000803e3d6000fd5b50505050600154600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081600019169055507f54e847b75f10cd7e742b78312fe0079d5a973d8a9b9070bb0515a8390160bd51600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205433846040518084600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060405180910390a15050565b600082111561267857612677823361057c565b5b600081111561268b5761268a8161164e565b5b5050565b60006126cf6040805190810160405280600581526020017f61646d696e000000000000000000000000000000000000000000000000000000815250612a2a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612771576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5065726d697373696f6e2044656e69656400000000000000000000000000000081525060200191505060405180910390fd5b6127af6040805190810160405280600381526020017f6d6b720000000000000000000000000000000000000000000000000000000000815250612a2a565b90508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561285457600080fd5b505af1158015612868573d6000803e3d6000fd5b505050506040513d602081101561287e57600080fd5b8101908080519060200190929190505050507f499d4b63f3a203c58019a864fc2d9cfe72954952ed53a3e40999755432cd3566826040518082815260200191505060405180910390a15050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008414156129055760009150612990565b828402905082848281151561291657fe5b0414151561298c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f417373657274696f6e204661696c65640000000000000000000000000000000081525060200191505060405180910390fd5b8091505b5092915050565b600080600083111515612a12576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f417373657274696f6e204661696c65640000000000000000000000000000000081525060200191505060405180910390fd5b8284811515612a1d57fe5b0490508091505092915050565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663d502db97846040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612ad9578082015181840152602081019050612abe565b50505050905090810190601f168015612b065780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b158015612b2557600080fd5b505af1158015612b39573d6000803e3d6000fd5b505050506040513d6020811015612b4f57600080fd5b8101908080519060200190929190505050915050919050565b6000806000612bab6040805190810160405280600a81526020017f496e7374614b7962657200000000000000000000000000000000000000000000815250612a2a565b92508273ffffffffffffffffffffffffffffffffffffffff166332ffe4428888876040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200193505050506040805180830381600087803b158015612c8357600080fd5b505af1158015612c97573d6000803e3d6000fd5b505050506040513d6040811015612cad57600080fd5b8101908080519060200190929190805190602001909291905050509050809250508273ffffffffffffffffffffffffffffffffffffffff16633e23ee7e85898988878b6040518763ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828152602001955050505050506020604051808303818588803b158015612db557600080fd5b505af1158015612dc9573d6000803e3d6000fd5b50505050506040513d6020811015612de057600080fd5b810190808051906020019092919050505090508085141515612e90576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001807f455448206e6f742073756666696369656e7420746f20636f766572207468652081526020017f4d4b5220666565732e000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60003073ffffffffffffffffffffffffffffffffffffffff16311115612f0f573373ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015612f0d573d6000803e3d6000fd5b505b505050505050505600a165627a7a72305820894e3ac264276d62f18446dc84c3416b626064df89bcb9a0d6fcd5d4d5c0072b0029

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

000000000000000000000000e16d035b8e76303237b9660b3c9c94c1a86aab47

-----Decoded View---------------
Arg [0] : rAddr (address): 0xE16D035B8E76303237b9660b3c9C94c1a86AAB47

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000e16d035b8e76303237b9660b3c9c94c1a86aab47


Swarm Source

bzzr://894e3ac264276d62f18446dc84c3416b626064df89bcb9a0d6fcd5d4d5c0072b

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.