Contract 0x4F391C202a906EED9e2b63fDd387F28E952782E2 1

 
NEST Protocol: Oracle contract has migrated to a new address.

Contract Overview

NEST Protocol: Old Oracle
Balance:
0 Ether

EtherValue:
$0.00

Token:
Txn Hash
Method
Block
From
To
Value
0x643662ea9dd00cdfa47a3ba0a2b0a731411c3df09efeecbc42259512fc754f30Turn Out102488862020-06-12 5:03:55683 days 22 hrs ago0xba3cc629208937872033822e9203c212039fa2a2 IN  NEST Protocol: Old Oracle0 Ether0.00300819781322.856561816
0x851629b5076ddc0c49b49c775c518c30cddb0dac80e16edf3198174f2a2c6d2eChange Mapping102484032020-06-12 3:18:42684 days 1 min agoNEST Protocol: Deployer IN  NEST Protocol: Old Oracle0 Ether0.001527364824.6
0xfeecba960119bf3a2aa8b5a12f17d1fcca30c09ff0b67072aa1637c15eac2008Turn Out102363362020-06-10 6:27:42685 days 20 hrs ago0xba3cc629208937872033822e9203c212039fa2a2 IN  NEST Protocol: Old Oracle0 Ether0.002809849931.46
0x87b5990f6df615cfe0e3277459f21619d60d9809f36a9129a9221c5a47699d05Turn Out102322842020-06-09 15:22:12686 days 11 hrs ago0xba3cc629208937872033822e9203c212039fa2a2 IN  NEST Protocol: Old Oracle0 Ether0.002849148531.9
0x7b9daefc646e33872a9528db1bf7a3c74f1829cc4183c90495c5cb3187f1b73aTurn Out102322772020-06-09 15:20:41686 days 11 hrs ago0xba3cc629208937872033822e9203c212039fa2a2 IN  NEST Protocol: Old Oracle0 Ether0.002849148531.9
0x28871e3b39168f88016abc357321c7177a35071a512918093af26ada32192703Turn Out102322682020-06-09 15:19:14686 days 12 hrs ago0xba3cc629208937872033822e9203c212039fa2a2 IN  NEST Protocol: Old Oracle0 Ether0.00294739533
0x7968d9bc41e7762a5c9e65721ed877921b1fe56398dee0d4803b2c3af4791db5Turn Out102313932020-06-09 12:05:35686 days 15 hrs ago0xf410ad2797f8390d35ac8bb1fd3b3c8c2f2eb014 IN  NEST Protocol: Old Oracle0 Ether0.0096723240
0x1354c1d497d3c03e69f0beaa0e5d949cd6467c65aaf0a9ea33e30e58594d5c8bTurn Out102313792020-06-09 12:01:08686 days 15 hrs ago0xf410ad2797f8390d35ac8bb1fd3b3c8c2f2eb014 IN  NEST Protocol: Old Oracle0 Ether0.00810056833.5
0x5c073eeea90404e30c0b8c2d8be5e3b02b25a287d331b7f057cc2e07a01db075Offer102313792020-06-09 12:01:08686 days 15 hrs ago0xf410ad2797f8390d35ac8bb1fd3b3c8c2f2eb014 IN  NEST Protocol: Old Oracle10.1 Ether0.00094465839
0xce0ac01287066558d242186d5f4ca20e0b12f48d84a6a0975a9dcd2c47cc0b3cTurn Out102313682020-06-09 11:57:49686 days 15 hrs ago0xf410ad2797f8390d35ac8bb1fd3b3c8c2f2eb014 IN  NEST Protocol: Old Oracle0 Ether0.00749567631
0x08f65aa7f1916f853fa9cad62ac933f472c4ef889f25aa0e4cd382b6d9379a3aChange Token All...102313652020-06-09 11:56:59686 days 15 hrs agoNEST Protocol: Deployer IN  NEST Protocol: Old Oracle0 Ether0.0004949730
0x5cf36707ab8bff9af5b82483259aa0205642ddfd6978e0b13b84e55ca6087ba5Offer102313642020-06-09 11:56:50686 days 15 hrs ago0xf410ad2797f8390d35ac8bb1fd3b3c8c2f2eb014 IN  NEST Protocol: Old Oracle10.1 Ether0.0255540168525.205052893
0x0c87dbb0a423f3b17226d4c738227133108d4b7f007d95ac1abc3693f3976fb1Turn Out102313582020-06-09 11:55:34686 days 15 hrs ago0xf410ad2797f8390d35ac8bb1fd3b3c8c2f2eb014 IN  NEST Protocol: Old Oracle0 Ether0.007036612829.1
0xd57aa83391e47cd88979b3071706ba22350d4c115066815f893982cb03f62016Offer102313522020-06-09 11:53:34686 days 15 hrs ago0xf410ad2797f8390d35ac8bb1fd3b3c8c2f2eb014 IN  NEST Protocol: Old Oracle10.1 Ether0.02794673127327.451047705
0x5461649fb94e8cd84806cec1be01e9235fef1609ed259487ca8a84d580b88d10Turn Out102313482020-06-09 11:52:41686 days 15 hrs ago0xf410ad2797f8390d35ac8bb1fd3b3c8c2f2eb014 IN  NEST Protocol: Old Oracle0 Ether0.00750886411631.054542325
0xea81dd0ca416d2b03b41b58458f61fcbc6e7c4f3bff0046906e6a86cc9a72292Offer102313412020-06-09 11:51:50686 days 15 hrs ago0xf410ad2797f8390d35ac8bb1fd3b3c8c2f2eb014 IN  NEST Protocol: Old Oracle10.1 Ether0.03766810937
0x2efc0977394dfa07971c2535ed854dce5ddc50883db20b6cd5d9ab5922066691Turn Out102313352020-06-09 11:50:51686 days 15 hrs ago0xf410ad2797f8390d35ac8bb1fd3b3c8c2f2eb014 IN  NEST Protocol: Old Oracle0 Ether0.00701243229
0xee3375a72fc2356c1bcea4dc06a019502f2e28e56bb36848443db8e2bcd123daTurn Out102313322020-06-09 11:49:50686 days 15 hrs ago0xa15a65497cf716a959fe173ecf95491ffc7742be IN  NEST Protocol: Old Oracle0 Ether0.00101135085129.561289949
0x1b28074b99482ec1909825c7e3c83de2411b2fac5435a15984f785bf456046f6Turn Out102313322020-06-09 11:49:50686 days 15 hrs ago0xa15a65497cf716a959fe173ecf95491ffc7742be IN  NEST Protocol: Old Oracle0 Ether0.006093561625.2
0x42f4dbc980f3cc216d86cf37a6c42f72ce73e9016dea73e084d15c35b5ee7325Offer102313302020-06-09 11:49:27686 days 15 hrs ago0xf410ad2797f8390d35ac8bb1fd3b3c8c2f2eb014 IN  NEST Protocol: Old Oracle10.1 Ether0.03359588133
0x3a9d344a416215c327d8cef4b38d889780d82ad016d65b505bf9af41e73a5d0aTurn Out102313242020-06-09 11:46:59686 days 15 hrs ago0xf410ad2797f8390d35ac8bb1fd3b3c8c2f2eb014 IN  NEST Protocol: Old Oracle0 Ether0.00736438303930.455497914
0xb6e9535944106bd356cc69cf181f9bdb7503152034e46fc1f728f08302c41610Offer102313172020-06-09 11:46:12686 days 15 hrs ago0xf410ad2797f8390d35ac8bb1fd3b3c8c2f2eb014 IN  NEST Protocol: Old Oracle10.1 Ether0.031152544230.6
0x069a9b24c2d29d30aa1c0e1887e10cb36607eb66bc12545afdb54d799384027cTurn Out102313122020-06-09 11:45:22686 days 15 hrs ago0xf410ad2797f8390d35ac8bb1fd3b3c8c2f2eb014 IN  NEST Protocol: Old Oracle0 Ether0.0075092367731.054542325
0xf5b410f93a095e462ab9ae2be243c6e5901f1531dfc8386795e98ce6b0e3d038Turn Out102313102020-06-09 11:45:07686 days 15 hrs ago0xa15a65497cf716a959fe173ecf95491ffc7742be IN  NEST Protocol: Old Oracle0 Ether0.007544409631.2
0x8a0e56cdb5757f4332ed58657cce3b78443673b78235fd2dcd7ce5dd918a41ffTurn Out102313082020-06-09 11:45:00686 days 15 hrs ago0xa15a65497cf716a959fe173ecf95491ffc7742be IN  NEST Protocol: Old Oracle0 Ether0.001041331.2
[ Download CSV Export 

OVERVIEW

NEST Protocol: Oracle contract has migrated to 0x43d99d54f14c64994fd9666beab6023b0069de20.

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x5cf36707ab8bff9af5b82483259aa0205642ddfd6978e0b13b84e55ca6087ba5102313642020-06-09 11:56:50686 days 15 hrs ago NEST Protocol: Old Oracle 0x9c3c7bcf8993a58410016e29882c78b552d5c9b40.1 Ether
0x5cf36707ab8bff9af5b82483259aa0205642ddfd6978e0b13b84e55ca6087ba5102313642020-06-09 11:56:50686 days 15 hrs ago NEST Protocol: Old Oracle 0x858bf0cc4cca79ee8fc4de4db46f96601cdc664610 Ether
0x5cf36707ab8bff9af5b82483259aa0205642ddfd6978e0b13b84e55ca6087ba5102313642020-06-09 11:56:50686 days 15 hrs ago NEST Protocol: Old Oracle  Contract Creation0 Ether
0xd57aa83391e47cd88979b3071706ba22350d4c115066815f893982cb03f62016102313522020-06-09 11:53:34686 days 15 hrs ago NEST Protocol: Old Oracle 0x9c3c7bcf8993a58410016e29882c78b552d5c9b40.1 Ether
0xd57aa83391e47cd88979b3071706ba22350d4c115066815f893982cb03f62016102313522020-06-09 11:53:34686 days 15 hrs ago NEST Protocol: Old Oracle 0x8be147acbf49526d9b5881c4c3de8710bb8230ba10 Ether
0xd57aa83391e47cd88979b3071706ba22350d4c115066815f893982cb03f62016102313522020-06-09 11:53:34686 days 15 hrs ago NEST Protocol: Old Oracle  Contract Creation0 Ether
0xea81dd0ca416d2b03b41b58458f61fcbc6e7c4f3bff0046906e6a86cc9a72292102313412020-06-09 11:51:50686 days 15 hrs ago NEST Protocol: Old Oracle 0x9c3c7bcf8993a58410016e29882c78b552d5c9b40.1 Ether
0xea81dd0ca416d2b03b41b58458f61fcbc6e7c4f3bff0046906e6a86cc9a72292102313412020-06-09 11:51:50686 days 15 hrs ago NEST Protocol: Old Oracle 0x7388183a4097a0a85443d100192b5bf076ded2ca10 Ether
0xea81dd0ca416d2b03b41b58458f61fcbc6e7c4f3bff0046906e6a86cc9a72292102313412020-06-09 11:51:50686 days 15 hrs ago NEST Protocol: Old Oracle  Contract Creation0 Ether
0x42f4dbc980f3cc216d86cf37a6c42f72ce73e9016dea73e084d15c35b5ee7325102313302020-06-09 11:49:27686 days 15 hrs ago NEST Protocol: Old Oracle 0x9c3c7bcf8993a58410016e29882c78b552d5c9b40.1 Ether
0x42f4dbc980f3cc216d86cf37a6c42f72ce73e9016dea73e084d15c35b5ee7325102313302020-06-09 11:49:27686 days 15 hrs ago NEST Protocol: Old Oracle 0x39d08c96cafda4eed3b5e5d3374a97185420d03210 Ether
0x42f4dbc980f3cc216d86cf37a6c42f72ce73e9016dea73e084d15c35b5ee7325102313302020-06-09 11:49:27686 days 15 hrs ago NEST Protocol: Old Oracle  Contract Creation0 Ether
0xb6e9535944106bd356cc69cf181f9bdb7503152034e46fc1f728f08302c41610102313172020-06-09 11:46:12686 days 15 hrs ago NEST Protocol: Old Oracle 0x9c3c7bcf8993a58410016e29882c78b552d5c9b40.1 Ether
0xb6e9535944106bd356cc69cf181f9bdb7503152034e46fc1f728f08302c41610102313172020-06-09 11:46:12686 days 15 hrs ago NEST Protocol: Old Oracle 0x0eff408d103f46dd8222c0dab17b00e0f372b9ff10 Ether
0xb6e9535944106bd356cc69cf181f9bdb7503152034e46fc1f728f08302c41610102313172020-06-09 11:46:12686 days 15 hrs ago NEST Protocol: Old Oracle  Contract Creation0 Ether
0x81201446cc0884486f684b44d70aa2fca94c2520b9e2b735c73b5d0656967259102313052020-06-09 11:44:15686 days 15 hrs ago NEST Protocol: Old Oracle 0x9c3c7bcf8993a58410016e29882c78b552d5c9b40.1 Ether
0x81201446cc0884486f684b44d70aa2fca94c2520b9e2b735c73b5d0656967259102313052020-06-09 11:44:15686 days 15 hrs ago NEST Protocol: Old Oracle 0x52e58bfd8b7cabd60f26127ea62783738be156c310 Ether
0x81201446cc0884486f684b44d70aa2fca94c2520b9e2b735c73b5d0656967259102313052020-06-09 11:44:15686 days 15 hrs ago NEST Protocol: Old Oracle  Contract Creation0 Ether
0x3acd1b540e6930c30ec61e44cfa0cf5ae45e6819b0c944f2b18b811af7fb3db5102313052020-06-09 11:44:15686 days 15 hrs ago NEST Protocol: Old Oracle 0x9c3c7bcf8993a58410016e29882c78b552d5c9b40.1 Ether
0x3acd1b540e6930c30ec61e44cfa0cf5ae45e6819b0c944f2b18b811af7fb3db5102313052020-06-09 11:44:15686 days 15 hrs ago NEST Protocol: Old Oracle 0x33b1e4b756988737c2af0b8097e564a066e4752110 Ether
0x3acd1b540e6930c30ec61e44cfa0cf5ae45e6819b0c944f2b18b811af7fb3db5102313052020-06-09 11:44:15686 days 15 hrs ago NEST Protocol: Old Oracle  Contract Creation0 Ether
0xae67c067a37d0d250cf912fe0fbc7ce57056eaac084150ff309a7d64701f2137102312942020-06-09 11:41:30686 days 15 hrs ago NEST Protocol: Old Oracle 0x9c3c7bcf8993a58410016e29882c78b552d5c9b40.1 Ether
0xae67c067a37d0d250cf912fe0fbc7ce57056eaac084150ff309a7d64701f2137102312942020-06-09 11:41:30686 days 15 hrs ago NEST Protocol: Old Oracle 0xe0cba0f0c9cadfb3a0dec17bd43d02231ada719d10 Ether
0xae67c067a37d0d250cf912fe0fbc7ce57056eaac084150ff309a7d64701f2137102312942020-06-09 11:41:30686 days 15 hrs ago NEST Protocol: Old Oracle  Contract Creation0 Ether
0x5ed84022c559bed54da856cd7ec469d8d4befdd2f08b2ebf10b46d8b9351cf33102312832020-06-09 11:38:06686 days 15 hrs ago NEST Protocol: Old Oracle 0x9c3c7bcf8993a58410016e29882c78b552d5c9b40.1 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
NEST_3_OfferFactory

Compiler Version
v0.5.12+commit.7709ece9

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-04-25
*/

pragma solidity ^0.5.12;

/**
 * @title Quotation data contract
 * @dev Verification of quotation contract
 */
contract NEST_3_OfferData {

    mapping (address => bool) addressMapping;       //  Deployed quote contracts
    NEST_2_Mapping mappingContract;                 //  Mapping contract
    
    /**
    * @dev Initialization method
    * @param map Mapping contract address
    */
    constructor(address map) public{
        mappingContract = NEST_2_Mapping(map);                                                      
    }
    
    /**
    * @dev Initialization method
    * @param map Mapping contract address
    */
    function changeMapping(address map) public onlyOwner {
        mappingContract = NEST_2_Mapping(map);                                                    
    }
    
    /**
    * @dev Initialization method
    * @param contractAddress Address of quotation contract
    * @return existence of quotation contract
    */
    function checkContract(address contractAddress) public view returns (bool){
        require(contractAddress != address(0x0));
        return addressMapping[contractAddress];
    }
    
    /**
    * @dev Add quote contract address
    * @param contractAddress Address of quotation contract
    */
    function addContractAddress(address contractAddress) public {
        require(address(mappingContract.checkAddress("offerFactory")) == msg.sender);
        addressMapping[contractAddress] = true;
    }
    
    modifier onlyOwner(){
        require(mappingContract.checkOwners(msg.sender) == true);
        _;
    }
}

/**
 * @title Quotation factory
 * @dev Quotation mining
 */
contract NEST_3_OfferFactory {
    using SafeMath for uint256;
    using address_make_payable for address;
    mapping(address => bool) tokenAllow;                //  Insured mining token
    NEST_2_Mapping mappingContract;                     //  Mapping contract
    NEST_3_OfferData dataContract;                      //  Data contract
    NEST_2_OfferPrice offerPrice;                       //  Price contract
    NEST_3_OrePoolLogic orePoolLogic;                   //  Mining contract
    NEST_NodeAssignment NNcontract;                     //  NestNode contract
    ERC20 nestToken;                                    //  nestToken
    address abonusAddress;                              //  Dividend pool
    address coderAddress;                               //  Developer address
    uint256 miningETH = 10;                             //  Quotation mining service charge mining proportion, 10 thousandths
    uint256 tranEth = 2;                                //  Service charge proportion of the bill of lading, 2 ‰
    uint256 blockLimit = 25;                            //  Block interval upper limit
    uint256 tranAddition = 2;                           //  Transaction bonus
    uint256 coderAmount = 5;                            //  Developer ratio
    uint256 NNAmount = 15;                              //  Guardian node proportion
    uint256 otherAmount = 80;                           //  Distributable proportion
    uint256 leastEth = 1 ether;                         //  Minimum offer eth
    uint256 offerSpan = 1 ether;                        //  Quotation eth span
    
    //  log Personal asset contract
    event offerTokenContractAddress(address contractAddress);    
    //  log Quotation contract, token address, ETH quantity, erc20 quantity     
    event offerContractAddress(address contractAddress, address tokenAddress, uint256 ethAmount, uint256 erc20Amount); 
    //  log Transaction, transaction initiator, transaction token address, transaction token quantity, purchase token address, purchase token quantity, traded quotation contract address, traded user address  
    event offerTran(address tranSender, address tranToken, uint256 tranAmount,address otherToken, uint256 otherAmount, address tradedContract, address tradedOwner);        
    
    /**
    * @dev Initialization method
    * @param map Mapping contract address
    */
    constructor (address map) public {
        mappingContract = NEST_2_Mapping(map);                                                      
        offerPrice = NEST_2_OfferPrice(address(mappingContract.checkAddress("offerPrice")));        
        orePoolLogic = NEST_3_OrePoolLogic(address(mappingContract.checkAddress("miningCalculation")));
        abonusAddress = mappingContract.checkAddress("abonus");
        nestToken = ERC20(mappingContract.checkAddress("nest"));                                        
        NNcontract = NEST_NodeAssignment(address(mappingContract.checkAddress("nodeAssignment")));      
        coderAddress = mappingContract.checkAddress("coder");
        dataContract = NEST_3_OfferData(address(mappingContract.checkAddress("offerData")));
    }
    
    /**
    * @dev Change mapping contract
    * @param map Mapping contract address
    */
    function changeMapping(address map) public onlyOwner {
        mappingContract = NEST_2_Mapping(map);                                                          
        offerPrice = NEST_2_OfferPrice(address(mappingContract.checkAddress("offerPrice")));            
        orePoolLogic = NEST_3_OrePoolLogic(address(mappingContract.checkAddress("miningCalculation")));
        abonusAddress = mappingContract.checkAddress("abonus");
        nestToken = ERC20(mappingContract.checkAddress("nest"));                                         
        NNcontract = NEST_NodeAssignment(address(mappingContract.checkAddress("nodeAssignment")));      
        coderAddress = mappingContract.checkAddress("coder");
        dataContract = NEST_3_OfferData(address(mappingContract.checkAddress("offerData")));
    }
    
    /**
    * @dev Quotation mining
    * @param ethAmount ETH amount
    * @param erc20Amount erc20 amount
    * @param erc20Address erc20Token address
    */
    function offer(uint256 ethAmount, uint256 erc20Amount, address erc20Address) public payable {
        require(address(msg.sender) == address(tx.origin));
        uint256 ethMining = ethAmount.mul(miningETH).div(1000);
        require(msg.value == ethAmount.add(ethMining));
        require(tokenAllow[erc20Address]);
        createOffer(ethAmount,erc20Amount,erc20Address,ethMining);
        orePoolLogic.oreDrawing.value(ethMining)(erc20Address);
    }
    
    /**
    * @dev Generate quote
    * @param ethAmount ETH amount
    * @param erc20Amount erc20 amount
    * @param erc20Address erc20Token address
    * @param mining Mining Commission
    */
    function createOffer(uint256 ethAmount, uint256 erc20Amount, address erc20Address, uint256 mining) private {
        require(ethAmount >= leastEth);
        require(ethAmount % offerSpan == 0);
        require(erc20Amount % (ethAmount.div(offerSpan)) == 0);
        ERC20 token = ERC20(erc20Address);
        require(token.balanceOf(address(msg.sender)) >= erc20Amount);
        require(token.allowance(address(msg.sender), address(this)) >= erc20Amount);
        NEST_3_OfferContract newContract = new NEST_3_OfferContract(ethAmount,erc20Amount,erc20Address,mining,address(mappingContract));
        dataContract.addContractAddress(address(newContract));
        emit offerContractAddress(address(newContract), address(erc20Address), ethAmount, erc20Amount);
        token.transferFrom(address(msg.sender), address(newContract), erc20Amount);
        newContract.offerAssets.value(ethAmount)();
        offerPrice.addPrice(ethAmount,erc20Amount,erc20Address);
    }
    
    /**
    * @dev Take out quoted assets
    * @param contractAddress Address of quotation contract
    */
    function turnOut(address contractAddress) public {
        require(address(msg.sender) == address(tx.origin));
        require(dataContract.checkContract(contractAddress));
        NEST_3_OfferContract offerContract = NEST_3_OfferContract(contractAddress);
        offerContract.turnOut();
        uint256 miningEth = offerContract.checkServiceCharge();
        uint256 blockNum = offerContract.checkBlockNum();
        address tokenAddress = offerContract.checkTokenAddress();
        if (miningEth > 0) {
            uint256 miningAmount = orePoolLogic.mining(miningEth, blockNum, address(this),tokenAddress);
            uint256 coder = miningAmount.mul(coderAmount).div(100);
            uint256 NN = miningAmount.mul(NNAmount).div(100);
            uint256 other = miningAmount.mul(otherAmount).div(100);
            nestToken.transfer(address(tx.origin), other);
            require(nestToken.approve(address(NNcontract), NN));
            NNcontract.bookKeeping(NN);                                               
            nestToken.transfer(coderAddress, coder);
        }
    }
    
    /**
    * @dev Transfer erc20 to buy eth
    * @param ethAmount Offer ETH amount
    * @param tokenAmount Offer erc20 amount
    * @param contractAddress Address of quotation contract
    * @param tranEthAmount ETH amount of transaction
    * @param tranTokenAmount erc20 amount of transaction
    * @param tranTokenAddress erc20Token address
    */
    function ethTran(uint256 ethAmount, uint256 tokenAmount, address contractAddress, uint256 tranEthAmount, uint256 tranTokenAmount, address tranTokenAddress) public payable {
        require(address(msg.sender) == address(tx.origin));
        require(dataContract.checkContract(contractAddress));
        require(ethAmount >= tranEthAmount.mul(tranAddition));
        uint256 serviceCharge = tranEthAmount.mul(tranEth).div(1000);
        require(msg.value == ethAmount.add(tranEthAmount).add(serviceCharge));
        require(tranEthAmount % offerSpan == 0);
        createOffer(ethAmount,tokenAmount,tranTokenAddress,0);
        NEST_3_OfferContract offerContract = NEST_3_OfferContract(contractAddress);
        offerContract.changeOfferEth.value(tranEthAmount)(tranTokenAmount, tranTokenAddress);
        offerPrice.changePrice(tranEthAmount,tranTokenAmount,tranTokenAddress,offerContract.checkBlockNum());
        emit offerTran(address(tx.origin), address(0x0), tranEthAmount,address(tranTokenAddress),tranTokenAmount,contractAddress,offerContract.checkOwner());
        repayEth(abonusAddress,serviceCharge);
    }
    
    /**
    * @dev Transfer eth to buy erc20
    * @param ethAmount Offer ETH amount
    * @param tokenAmount Offer erc20 amount
    * @param contractAddress Address of quotation contract
    * @param tranEthAmount ETH amount of transaction
    * @param tranTokenAmount erc20 amount of transaction
    * @param tranTokenAddress erc20Token address
    */
    function ercTran(uint256 ethAmount, uint256 tokenAmount, address contractAddress, uint256 tranEthAmount, uint256 tranTokenAmount, address tranTokenAddress) public payable {
        require(address(msg.sender) == address(tx.origin));
        require(dataContract.checkContract(contractAddress));
        require(ethAmount >= tranEthAmount.mul(tranAddition));
        uint256 serviceCharge = tranEthAmount.mul(tranEth).div(1000);
        require(msg.value == ethAmount.add(serviceCharge));
        require(tranEthAmount % offerSpan == 0);
        createOffer(ethAmount,tokenAmount,tranTokenAddress,0);
        NEST_3_OfferContract offerContract = NEST_3_OfferContract(contractAddress);
        ERC20 token = ERC20(tranTokenAddress);
        require(token.balanceOf(address(msg.sender)) >= tranTokenAmount);
        require(token.allowance(address(msg.sender), address(this)) >= tranTokenAmount);
        token.transferFrom(address(msg.sender), address(offerContract), tranTokenAmount);
        offerContract.changeOfferErc(tranEthAmount,tranTokenAmount, tranTokenAddress);
        offerPrice.changePrice(tranEthAmount,tranTokenAmount,tranTokenAddress,offerContract.checkBlockNum());
        emit offerTran(address(tx.origin),address(tranTokenAddress),tranTokenAmount, address(0x0), tranEthAmount,contractAddress,offerContract.checkOwner());
        repayEth(abonusAddress,serviceCharge);
    }
    
    function repayEth(address accountAddress, uint256 asset) private {
        address payable addr = accountAddress.make_payable();
        addr.transfer(asset);
    }

    //  View block interval upper limit
    function checkBlockLimit() public view returns(uint256) {
        return blockLimit;
    }

    //  View quotation handling fee
    function checkMiningETH() public view returns (uint256) {
        return miningETH;
    }

    //  View transaction charges
    function checkTranEth() public view returns (uint256) {
        return tranEth;
    }

    //  View whether token allows mining
    function checkTokenAllow(address token) public view returns(bool) {
        return tokenAllow[token];
    }

    //  View transaction bonus
    function checkTranAddition() public view returns(uint256) {
        return tranAddition;
    }

    //  View development allocation proportion
    function checkCoderAmount() public view returns(uint256) {
        return coderAmount;
    }

    //  View the allocation proportion of guardian nodes
    function checkNNAmount() public view returns(uint256) {
        return NNAmount;
    }

    //  View user assignable proportion
    function checkOtherAmount() public view returns(uint256) {
        return otherAmount;
    }

    //  View minimum quote eth
    function checkleastEth() public view returns(uint256) {
        return leastEth;
    }

    //  View quote eth span
    function checkOfferSpan() public view returns(uint256) {
        return offerSpan;
    }

    function changeMiningETH(uint256 num) public onlyOwner {
        miningETH = num;
    }

    function changeTranEth(uint256 num) public onlyOwner {
        tranEth = num;
    }

    function changeBlockLimit(uint256 num) public onlyOwner {
        blockLimit = num;
    }

    function changeTokenAllow(address token, bool allow) public onlyOwner {
        tokenAllow[token] = allow;
    }

    function changeTranAddition(uint256 num) public onlyOwner {
        require(num > 0);
        tranAddition = num;
    }

    function changeInitialRatio(uint256 coderNum, uint256 NNNum, uint256 otherNum) public onlyOwner {
        require(coderNum > 0 && coderNum <= 5);
        require(NNNum > 0 && coderNum <= 15);
        require(coderNum.add(NNNum).add(otherNum) == 100);
        coderAmount = coderNum;
        NNAmount = NNNum;
        otherAmount = otherNum;
    }

    function changeLeastEth(uint256 num) public onlyOwner {
        require(num > 0);
        leastEth = num;
    }

    function changeOfferSpan(uint256 num) public onlyOwner {
        require(num > 0);
        offerSpan = num;
    }

    modifier onlyOwner(){
        require(mappingContract.checkOwners(msg.sender) == true);
        _;
    }
}


/**
 * @title Quotation contract
 */
contract NEST_3_OfferContract {
    using SafeMath for uint256;
    using address_make_payable for address;
    address owner;                              //  Owner
    uint256 ethAmount;                          //  ETH amount
    uint256 tokenAmount;                        //  Token amount
    address tokenAddress;                       //  Token address
    uint256 dealEthAmount;                      //  Transaction eth quantity
    uint256 dealTokenAmount;                    //  Transaction token quantity
    uint256 blockNum;                           //  This quotation block
    uint256 serviceCharge;                      //  Service Charge
    bool hadReceive = false;                    //  Received
    NEST_2_Mapping mappingContract;             //  Mapping contract
    NEST_3_OfferFactory offerFactory;           //  Quotation factory
    
    /**
    * @dev initialization
    * @param _ethAmount Offer ETH amount
    * @param _tokenAmount Offer erc20 amount
    * @param _tokenAddress Token address
    * @param miningEth Service Charge
    * @param map Mapping contract
    */
    constructor (uint256 _ethAmount, uint256 _tokenAmount, address _tokenAddress, uint256 miningEth,address map) public {
        mappingContract = NEST_2_Mapping(address(map));
        offerFactory = NEST_3_OfferFactory(address(mappingContract.checkAddress("offerFactory")));
        require(msg.sender == address(offerFactory));
        owner = address(tx.origin);
        ethAmount = _ethAmount;
        tokenAmount = _tokenAmount;
        tokenAddress = _tokenAddress;
        dealEthAmount = _ethAmount;
        dealTokenAmount = _tokenAmount;
        serviceCharge = miningEth;
        blockNum = block.number;
    }
    
    function offerAssets() public payable onlyFactory {
        require(ERC20(tokenAddress).balanceOf(address(this)) == tokenAmount);
    }
    
    function changeOfferEth(uint256 _tokenAmount, address _tokenAddress) public payable onlyFactory {
       require(checkContractState() == 0);
       require(dealEthAmount >= msg.value);
       require(dealTokenAmount >= _tokenAmount);
       require(_tokenAddress == tokenAddress);
       require(_tokenAmount == dealTokenAmount.mul(msg.value).div(dealEthAmount));
       ERC20(tokenAddress).transfer(address(tx.origin), _tokenAmount);
       dealEthAmount = dealEthAmount.sub(msg.value);
       dealTokenAmount = dealTokenAmount.sub(_tokenAmount);
    }
    
    function changeOfferErc(uint256 _ethAmount, uint256 _tokenAmount, address _tokenAddress) public onlyFactory {
       require(checkContractState() == 0);
       require(dealEthAmount >= _ethAmount);
       require(dealTokenAmount >= _tokenAmount);
       require(_tokenAddress == tokenAddress);
       require(_tokenAmount == dealTokenAmount.mul(_ethAmount).div(dealEthAmount));
       repayEth(address(tx.origin), _ethAmount);
       dealEthAmount = dealEthAmount.sub(_ethAmount);
       dealTokenAmount = dealTokenAmount.sub(_tokenAmount);
    }
   
    function repayEth(address accountAddress, uint256 asset) private {
        address payable addr = accountAddress.make_payable();
        addr.transfer(asset);
    }

    function turnOut() public onlyFactory {
        require(address(tx.origin) == owner);
        require(checkContractState() == 1);
        require(hadReceive == false);
        uint256 ethAssets;
        uint256 tokenAssets;
        (ethAssets, tokenAssets,) = checkAssets();
        repayEth(owner, ethAssets);
        ERC20(address(tokenAddress)).transfer(owner, tokenAssets);
        hadReceive = true;
    }
    
    function checkContractState() public view returns (uint256) {
        if (block.number.sub(blockNum) > offerFactory.checkBlockLimit()) {
            return 1;
        }
        return 0;
    }

    function checkDealAmount() public view returns(uint256 leftEth, uint256 leftErc20, address erc20Address) {
        return (dealEthAmount, dealTokenAmount, tokenAddress);
    }

    function checkPrice() public view returns(uint256 _ethAmount, uint256 _tokenAmount, address _tokenAddress) {
        return (ethAmount, tokenAmount, tokenAddress);
    }

    function checkAssets() public view returns(uint256 _ethAmount, uint256 _tokenAmount, address _tokenAddress) {
        return (address(this).balance, ERC20(address(tokenAddress)).balanceOf(address(this)), address(tokenAddress));
    }

    function checkTokenAddress() public view returns(address){
        return tokenAddress;
    }

    function checkOwner() public view returns(address) {
        return owner;
    }

    function checkBlockNum() public view returns (uint256) {
        return blockNum;
    }

    function checkServiceCharge() public view returns(uint256) {
        return serviceCharge;
    }

    function checkHadReceive() public view returns(bool) {
        return hadReceive;
    }
    
    modifier onlyFactory(){
        require(msg.sender == address(offerFactory));
        _;
    }
}


/**
 * @title Price contract
 */
contract NEST_2_OfferPrice{
    using SafeMath for uint256;
    using address_make_payable for address;
    NEST_2_Mapping mappingContract;                                 //  Mapping contract
    NEST_3_OfferFactory offerFactory;                               //  Quotation factory contract
    struct Price {                                                  //  Price structure
        uint256 ethAmount;                                          //  ETH amount
        uint256 erc20Amount;                                        //  erc20 amount
        uint256 blockNum;                                           //  Last quotation block number, current price block
    }
    struct addressPrice {                                           //  Token price information structure
        mapping(uint256 => Price) tokenPrice;                       //  Token price, Block number = > price
        Price latestPrice;                                          //  Latest price
    }
    mapping(address => addressPrice) tokenInfo;                     //  Token price information
    uint256 priceCost = 0.01 ether;                                 //  Price charge
    uint256 priceCostUser = 2;                                      //  Price expense user proportion
    uint256 priceCostAbonus = 8;                                    //  Proportion of price expense dividend pool
    mapping(uint256 => mapping(address => address)) blockAddress;   //  Last person of block quotation
    address abonusAddress;                                          //  Dividend pool
    
    //  Real time price toekn, ETH quantity, erc20 quantity
    event nowTokenPrice(address a, uint256 b, uint256 c);

    /**
    * @dev Initialization method
    * @param map Mapping contract address
    */
    constructor (address map) public {
        mappingContract = NEST_2_Mapping(address(map));
        offerFactory = NEST_3_OfferFactory(address(mappingContract.checkAddress("offerFactory")));
        abonusAddress = address(mappingContract.checkAddress("abonus"));
    }
    
    /**
    * @dev Initialization method
    * @param map Mapping contract address
    */
    function changeMapping(address map) public onlyOwner {
        mappingContract = NEST_2_Mapping(map);                                                      
        offerFactory = NEST_3_OfferFactory(address(mappingContract.checkAddress("offerFactory")));
        abonusAddress = address(mappingContract.checkAddress("abonus"));
    }
    
    /**
    * @dev Increase price
    * @param _ethAmount ETH amount
    * @param _tokenAmount Token amount
    * @param _tokenAddress Token address
    */
    function addPrice(uint256 _ethAmount, uint256 _tokenAmount, address _tokenAddress) public onlyFactory {
        uint256 blockLimit = offerFactory.checkBlockLimit();                                        
        uint256 middleBlock = block.number.sub(blockLimit);                                         
        
        uint256 priceBlock = tokenInfo[_tokenAddress].latestPrice.blockNum;                         
        while(priceBlock >= middleBlock || tokenInfo[_tokenAddress].tokenPrice[priceBlock].ethAmount == 0){                         
            priceBlock = tokenInfo[_tokenAddress].tokenPrice[priceBlock].blockNum;
            if (priceBlock == 0) {
                break;
            }
        }
        tokenInfo[_tokenAddress].latestPrice.ethAmount = tokenInfo[_tokenAddress].tokenPrice[priceBlock].ethAmount;
        tokenInfo[_tokenAddress].latestPrice.erc20Amount = tokenInfo[_tokenAddress].tokenPrice[priceBlock].erc20Amount;
        tokenInfo[_tokenAddress].tokenPrice[block.number].ethAmount = tokenInfo[_tokenAddress].tokenPrice[block.number].ethAmount.add(_ethAmount);                  //  增加eth数
        tokenInfo[_tokenAddress].tokenPrice[block.number].erc20Amount = tokenInfo[_tokenAddress].tokenPrice[block.number].erc20Amount.add(_tokenAmount);            //  增加ercrc20数
        if (tokenInfo[_tokenAddress].latestPrice.blockNum != block.number) {
            tokenInfo[_tokenAddress].tokenPrice[block.number].blockNum = tokenInfo[_tokenAddress].latestPrice.blockNum;                                                 //  记录上一次报价区块号
            tokenInfo[_tokenAddress].latestPrice.blockNum = block.number;                                                                                               //  记录本次报价区块号
        }

        blockAddress[block.number][_tokenAddress] = address(tx.origin);
        
        emit nowTokenPrice(_tokenAddress,tokenInfo[_tokenAddress].latestPrice.ethAmount, tokenInfo[_tokenAddress].latestPrice.erc20Amount);
    }
    
    /**
    * @dev Update price
    * @param _tokenAddress Token address
    * @return ethAmount ETH amount
    * @return erc20Amount Token amount
    * @return token Token address
    */
    function updateAndCheckPriceNow(address _tokenAddress) public payable returns(uint256 ethAmount, uint256 erc20Amount, address token) {
        if (msg.sender != tx.origin && msg.sender != address(offerFactory)) {
            require(msg.value == priceCost);
        }
        uint256 blockLimit = offerFactory.checkBlockLimit();                                       
        uint256 middleBlock = block.number.sub(blockLimit);                                   
        
        uint256 priceBlock = tokenInfo[_tokenAddress].latestPrice.blockNum;                     
        while(priceBlock >= middleBlock || tokenInfo[_tokenAddress].tokenPrice[priceBlock].ethAmount == 0){                         
            priceBlock = tokenInfo[_tokenAddress].tokenPrice[priceBlock].blockNum;
            if (priceBlock == 0) {
                break;
            }
        }
        tokenInfo[_tokenAddress].latestPrice.ethAmount = tokenInfo[_tokenAddress].tokenPrice[priceBlock].ethAmount;
        tokenInfo[_tokenAddress].latestPrice.erc20Amount = tokenInfo[_tokenAddress].tokenPrice[priceBlock].erc20Amount;
        if (msg.value > 0) {
            repayEth(abonusAddress, msg.value.mul(priceCostAbonus).div(10));
            repayEth(blockAddress[priceBlock][_tokenAddress], msg.value.mul(priceCostUser).div(10));
        }
        return (tokenInfo[_tokenAddress].latestPrice.ethAmount,tokenInfo[_tokenAddress].latestPrice.erc20Amount, _tokenAddress);
    }
    
    function repayEth(address accountAddress, uint256 asset) private {
        address payable addr = accountAddress.make_payable();
        addr.transfer(asset);
    }
    
    /**
    * @dev Change price
    * @param _ethAmount ETH amount
    * @param _tokenAmount Token amount
    * @param _tokenAddress Token address
    * @param blockNum Block number
    */
    function changePrice(uint256 _ethAmount, uint256 _tokenAmount, address _tokenAddress, uint256 blockNum) public onlyFactory {
        tokenInfo[_tokenAddress].tokenPrice[blockNum].ethAmount = tokenInfo[_tokenAddress].tokenPrice[blockNum].ethAmount.sub(_ethAmount);
        tokenInfo[_tokenAddress].tokenPrice[blockNum].erc20Amount = tokenInfo[_tokenAddress].tokenPrice[blockNum].erc20Amount.sub(_tokenAmount);
    }
    
    function checkPriceForBlock(address tokenAddress, uint256 blockNum) public view returns (uint256 ethAmount, uint256 erc20Amount, uint256 frontBlock) {
        require(msg.sender == tx.origin);
        return (tokenInfo[tokenAddress].tokenPrice[blockNum].ethAmount, tokenInfo[tokenAddress].tokenPrice[blockNum].erc20Amount,tokenInfo[tokenAddress].tokenPrice[blockNum].blockNum);
    }    

    function checkPriceNow(address tokenAddress) public view returns (uint256 ethAmount, uint256 erc20Amount,uint256 frontBlock) {
        require(msg.sender == tx.origin);
        return (tokenInfo[tokenAddress].latestPrice.ethAmount,tokenInfo[tokenAddress].latestPrice.erc20Amount,tokenInfo[tokenAddress].latestPrice.blockNum);
    }

    function checkPriceHistoricalAverage(address tokenAddress, uint256 blockNum) public view returns (uint256) {
        require(msg.sender == tx.origin);
        uint256 blockLimit = offerFactory.checkBlockLimit();                                       
        uint256 middleBlock = block.number.sub(blockLimit);                                         
        uint256 priceBlock = tokenInfo[tokenAddress].latestPrice.blockNum;                         
        while(priceBlock >= middleBlock){                         
            priceBlock = tokenInfo[tokenAddress].tokenPrice[priceBlock].blockNum;
            if (priceBlock == 0) {
                break;
            }
        }
        uint256 frontBlock = priceBlock;
        uint256 price = 0;
        uint256 priceTimes = 0;
        while(frontBlock >= blockNum){   
            uint256 erc20Amount = tokenInfo[tokenAddress].tokenPrice[frontBlock].erc20Amount;
            uint256 ethAmount = tokenInfo[tokenAddress].tokenPrice[frontBlock].ethAmount;
            price = price.add(erc20Amount.mul(1 ether).div(ethAmount));
            priceTimes = priceTimes.add(1);
            frontBlock = tokenInfo[tokenAddress].tokenPrice[frontBlock].blockNum;
            if (frontBlock == 0) {
                break;
            }
        }
        return price.div(priceTimes);
    }
    
    function checkPriceForBlockPay(address tokenAddress, uint256 blockNum) public payable returns (uint256 ethAmount, uint256 erc20Amount, uint256 frontBlock) {
        require(msg.value == priceCost);
        require(tokenInfo[tokenAddress].tokenPrice[blockNum].ethAmount != 0);
        repayEth(abonusAddress, msg.value.mul(priceCostAbonus).div(10));
        repayEth(blockAddress[blockNum][tokenAddress], msg.value.mul(priceCostUser).div(10));
        return (tokenInfo[tokenAddress].tokenPrice[blockNum].ethAmount, tokenInfo[tokenAddress].tokenPrice[blockNum].erc20Amount,tokenInfo[tokenAddress].tokenPrice[blockNum].blockNum);
    }
    
    function checkPriceHistoricalAveragePay(address tokenAddress, uint256 blockNum) public payable returns (uint256) {
        require(msg.value == priceCost);
        uint256 blockLimit = offerFactory.checkBlockLimit();                                        
        uint256 middleBlock = block.number.sub(blockLimit);                                         
        uint256 priceBlock = tokenInfo[tokenAddress].latestPrice.blockNum;                          
        while(priceBlock >= middleBlock){                         
            priceBlock = tokenInfo[tokenAddress].tokenPrice[priceBlock].blockNum;
            if (priceBlock == 0) {
                break;
            }
        }
        repayEth(abonusAddress, msg.value.mul(priceCostAbonus).div(10));
        repayEth(blockAddress[priceBlock][tokenAddress], msg.value.mul(priceCostUser).div(10));
        uint256 frontBlock = priceBlock;
        uint256 price = 0;
        uint256 priceTimes = 0;
        while(frontBlock >= blockNum){   
            uint256 erc20Amount = tokenInfo[tokenAddress].tokenPrice[frontBlock].erc20Amount;
            uint256 ethAmount = tokenInfo[tokenAddress].tokenPrice[frontBlock].ethAmount;
            price = price.add(erc20Amount.mul(1 ether).div(ethAmount));
            priceTimes = priceTimes.add(1);
            frontBlock = tokenInfo[tokenAddress].tokenPrice[frontBlock].blockNum;
            if (frontBlock == 0) {
                break;
            }
        }
        return price.div(priceTimes);
    }

    
    function checkLatestBlock(address token) public view returns(uint256) {
        return tokenInfo[token].latestPrice.blockNum;
    }
    
    function changePriceCost(uint256 amount) public onlyOwner {
        require(amount > 0);
        priceCost = amount;
    }
     
    function checkPriceCost() public view returns(uint256) {
        return priceCost;
    }
    
    function changePriceCostProportion(uint256 user, uint256 abonus) public onlyOwner {
        require(user.add(abonus) == 10);
        priceCostUser = user;
        priceCostAbonus = abonus;
    }
    
    function checkPriceCostProportion() public view returns(uint256 user, uint256 abonus) {
        return (priceCostUser, priceCostAbonus);
    }
    
    modifier onlyFactory(){
        require(msg.sender == address(mappingContract.checkAddress("offerFactory")));
        _;
    }
    
    modifier onlyOwner(){
        require(mappingContract.checkOwners(msg.sender) == true);
        _;
    }
}

contract NEST_NodeAssignment {
    function bookKeeping(uint256 amount) public;
}

contract NEST_3_OrePoolLogic {
    function oreDrawing(address token) public payable;
    function mining(uint256 amount, uint256 blockNum, address target, address token) public returns(uint256);
}

contract NEST_2_Mapping {
    function checkAddress(string memory name) public view returns (address contractAddress);
    function checkOwners(address man) public view returns (bool);
}

library address_make_payable {
   function make_payable(address x) internal pure returns (address payable) {
      return address(uint160(x));
   }
}

contract ERC20 {
    function totalSupply() public view returns (uint supply);
    function balanceOf( address who ) public view returns (uint value);
    function allowance( address owner, address spender ) public view returns (uint _allowance);

    function transfer( address to, uint256 value) external;
    function transferFrom( address from, address to, uint value) public;
    function approve( address spender, uint value ) public returns (bool ok);

    event Transfer( address indexed from, address indexed to, uint value);
    event Approval( address indexed owner, address indexed spender, uint value);
}

/**
 * @title SafeMath
 * @dev Math operations with safety checks that revert on error
 */
library SafeMath {
    int256 constant private INT256_MIN = -2**255;

    /**
    * @dev Multiplies two unsigned integers, reverts on overflow.
    */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b);

        return c;
    }

    /**
    * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.
    */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
    * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).
    */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a);
        uint256 c = a - b;

        return c;
    }

    /**
    * @dev Adds two unsigned integers, reverts on overflow.
    */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a);

        return c;
    }

    /**
    * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),
    * reverts when dividing by zero.
    */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0);
        return a % b;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"map","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"contractAddress","type":"address"},{"indexed":false,"internalType":"address","name":"tokenAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"ethAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"erc20Amount","type":"uint256"}],"name":"offerContractAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"contractAddress","type":"address"}],"name":"offerTokenContractAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"tranSender","type":"address"},{"indexed":false,"internalType":"address","name":"tranToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"tranAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"otherToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"otherAmount","type":"uint256"},{"indexed":false,"internalType":"address","name":"tradedContract","type":"address"},{"indexed":false,"internalType":"address","name":"tradedOwner","type":"address"}],"name":"offerTran","type":"event"},{"constant":false,"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"changeBlockLimit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"coderNum","type":"uint256"},{"internalType":"uint256","name":"NNNum","type":"uint256"},{"internalType":"uint256","name":"otherNum","type":"uint256"}],"name":"changeInitialRatio","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"changeLeastEth","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"map","type":"address"}],"name":"changeMapping","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"changeMiningETH","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"changeOfferSpan","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bool","name":"allow","type":"bool"}],"name":"changeTokenAllow","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"changeTranAddition","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"num","type":"uint256"}],"name":"changeTranEth","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"checkBlockLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"checkCoderAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"checkMiningETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"checkNNAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"checkOfferSpan","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"checkOtherAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"checkTokenAllow","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"checkTranAddition","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"checkTranEth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"checkleastEth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"ethAmount","type":"uint256"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"tranEthAmount","type":"uint256"},{"internalType":"uint256","name":"tranTokenAmount","type":"uint256"},{"internalType":"address","name":"tranTokenAddress","type":"address"}],"name":"ercTran","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"ethAmount","type":"uint256"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"uint256","name":"tranEthAmount","type":"uint256"},{"internalType":"uint256","name":"tranTokenAmount","type":"uint256"},{"internalType":"address","name":"tranTokenAddress","type":"address"}],"name":"ethTran","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"ethAmount","type":"uint256"},{"internalType":"uint256","name":"erc20Amount","type":"uint256"},{"internalType":"address","name":"erc20Address","type":"address"}],"name":"offer","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"turnOut","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

6080604052600a6009556002600a556019600b556002600c556005600d55600f600e556050600f55670de0b6b3a7640000601055670de0b6b3a76400006011553480156200004c57600080fd5b506040516200347038038062003470833981810160405260208110156200007257600080fd5b5051600180546001600160a01b0319166001600160a01b038084169190911791829055604080517f8fe77e86000000000000000000000000000000000000000000000000000000008152602060048201819052600a60248301527f6f66666572507269636500000000000000000000000000000000000000000000604483015291519390921692638fe77e86926064808201939291829003018186803b1580156200011c57600080fd5b505afa15801562000131573d6000803e3d6000fd5b505050506040513d60208110156200014857600080fd5b5051600380546001600160a01b0319166001600160a01b03928316179055600154604080517f8fe77e86000000000000000000000000000000000000000000000000000000008152602060048201819052601160248301527f6d696e696e6743616c63756c6174696f6e000000000000000000000000000000604483015291519290931692638fe77e869260648083019392829003018186803b158015620001ef57600080fd5b505afa15801562000204573d6000803e3d6000fd5b505050506040513d60208110156200021b57600080fd5b5051600480546001600160a01b0319166001600160a01b03928316178155600154604080517f8fe77e860000000000000000000000000000000000000000000000000000000081526020938101849052600660248201527f61626f6e75730000000000000000000000000000000000000000000000000000604482015290519190931692638fe77e86926064808301939192829003018186803b158015620002c257600080fd5b505afa158015620002d7573d6000803e3d6000fd5b505050506040513d6020811015620002ee57600080fd5b5051600780546001600160a01b0319166001600160a01b03928316179055600154604080517f8fe77e860000000000000000000000000000000000000000000000000000000081526020600480830182905260248301527f6e65737400000000000000000000000000000000000000000000000000000000604483015291519290931692638fe77e869260648083019392829003018186803b1580156200039457600080fd5b505afa158015620003a9573d6000803e3d6000fd5b505050506040513d6020811015620003c057600080fd5b5051600680546001600160a01b0319166001600160a01b03928316179055600154604080517f8fe77e86000000000000000000000000000000000000000000000000000000008152602060048201819052600e60248301527f6e6f646541737369676e6d656e74000000000000000000000000000000000000604483015291519290931692638fe77e869260648083019392829003018186803b1580156200046757600080fd5b505afa1580156200047c573d6000803e3d6000fd5b505050506040513d60208110156200049357600080fd5b5051600580546001600160a01b0319166001600160a01b03928316178155600154604080517f8fe77e8600000000000000000000000000000000000000000000000000000000815260206004820181905260248201949094527f636f646572000000000000000000000000000000000000000000000000000000604482015290519190931692638fe77e86926064808301939192829003018186803b1580156200053c57600080fd5b505afa15801562000551573d6000803e3d6000fd5b505050506040513d60208110156200056857600080fd5b5051600880546001600160a01b0319166001600160a01b03928316179055600154604080517f8fe77e86000000000000000000000000000000000000000000000000000000008152602060048201819052600960248301527f6f66666572446174610000000000000000000000000000000000000000000000604483015291519290931692638fe77e869260648083019392829003018186803b1580156200060f57600080fd5b505afa15801562000624573d6000803e3d6000fd5b505050506040513d60208110156200063b57600080fd5b5051600280546001600160a01b0319166001600160a01b0390921691909117905550612e03806200066d6000396000f3fe6080604052600436106200015e5760003560e01c80639b54359611620000c7578063da5e882b1162000079578063da5e882b1462000464578063e5d69e3f146200047c578063e9ec551d14620004aa578063f0bbe1ba14620004e1578063f6a4932f146200050f578063faee70221462000544576200015e565b80639b5435961462000358578063a781e7f81462000370578063b3dad73614620003a7578063b86f255814620003d5578063c27237881462000403578063cbc7ef09146200044c576200015e565b80634139c74c11620001215780634139c74c146200025f57806352a8e51114620002a857806360a8c98f14620002d657806379ac269114620003105780637a3d77ff14620003285780638d7092e61462000340576200015e565b80630716d2071462000163578063187f3d9814620001a457806326a203cb14620001ce5780632a9300f014620001fc57806334e66f1e1462000247575b600080fd5b3480156200017057600080fd5b50620001a2600480360360408110156200018957600080fd5b506001600160a01b03813516906020013515156200055c565b005b348015620001b157600080fd5b50620001bc62000610565b60408051918252519081900360200190f35b348015620001db57600080fd5b50620001a260048036036020811015620001f457600080fd5b503562000616565b3480156200020957600080fd5b5062000233600480360360208110156200022257600080fd5b50356001600160a01b0316620006a4565b604080519115158252519081900360200190f35b3480156200025457600080fd5b50620001bc620006c2565b620001a2600480360360c08110156200027757600080fd5b508035906020810135906001600160a01b03604082013581169160608101359160808201359160a0013516620006c8565b348015620002b557600080fd5b50620001a260048036036020811015620002ce57600080fd5b503562000beb565b348015620002e357600080fd5b50620001a260048036036060811015620002fc57600080fd5b508035906020810135906040013562000c79565b3480156200031d57600080fd5b50620001bc62000d79565b3480156200033557600080fd5b50620001bc62000d7f565b3480156200034d57600080fd5b50620001bc62000d85565b3480156200036557600080fd5b50620001bc62000d8b565b3480156200037d57600080fd5b50620001a2600480360360208110156200039657600080fd5b50356001600160a01b031662000d91565b348015620003b457600080fd5b50620001a260048036036020811015620003cd57600080fd5b5035620012cc565b348015620003e257600080fd5b50620001a260048036036020811015620003fb57600080fd5b50356200135a565b620001a2600480360360c08110156200041b57600080fd5b508035906020810135906001600160a01b03604082013581169160608101359160808201359160a0013516620013f6565b3480156200045957600080fd5b50620001bc62001789565b3480156200047157600080fd5b50620001bc6200178f565b3480156200048957600080fd5b50620001a260048036036020811015620004a257600080fd5b503562001795565b348015620004b757600080fd5b50620001a260048036036020811015620004d057600080fd5b50356001600160a01b031662001831565b348015620004ee57600080fd5b50620001a2600480360360208110156200050757600080fd5b503562001d5d565b620001a2600480360360608110156200052757600080fd5b50803590602081013590604001356001600160a01b031662001df9565b3480156200055157600080fd5b50620001bc62001ee3565b6001546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b158015620005a857600080fd5b505afa158015620005bd573d6000803e3d6000fd5b505050506040513d6020811015620005d457600080fd5b50511515600114620005e557600080fd5b6001600160a01b03919091166000908152602081905260409020805460ff1916911515919091179055565b600c5490565b6001546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b1580156200066257600080fd5b505afa15801562000677573d6000803e3d6000fd5b505050506040513d60208110156200068e57600080fd5b505115156001146200069f57600080fd5b600a55565b6001600160a01b031660009081526020819052604090205460ff1690565b600a5490565b333214620006d557600080fd5b600254604080516335ec491560e21b81526001600160a01b0387811660048301529151919092169163d7b12454916024808301926020929190829003018186803b1580156200072357600080fd5b505afa15801562000738573d6000803e3d6000fd5b505050506040513d60208110156200074f57600080fd5b50516200075b57600080fd5b600c546200077190849063ffffffff62001ee916565b8610156200077e57600080fd5b6000620007ab6103e86200079e600a548762001ee990919063ffffffff16565b9063ffffffff62001f1d16565b9050620007bf878263ffffffff62001f4116565b3414620007cb57600080fd5b6011548481620007d757fe5b0615620007e357600080fd5b620007f2878784600062001f54565b604080516370a0823160e01b815233600482015290518691849186916001600160a01b038416916370a0823191602480820192602092909190829003018186803b1580156200084057600080fd5b505afa15801562000855573d6000803e3d6000fd5b505050506040513d60208110156200086c57600080fd5b505110156200087a57600080fd5b60408051636eb1769f60e11b8152336004820152306024820152905186916001600160a01b0384169163dd62ed3e91604480820192602092909190829003018186803b158015620008ca57600080fd5b505afa158015620008df573d6000803e3d6000fd5b505050506040513d6020811015620008f657600080fd5b505110156200090457600080fd5b604080516323b872dd60e01b81523360048201526001600160a01b038481166024830152604482018890529151918316916323b872dd9160648082019260009290919082900301818387803b1580156200095d57600080fd5b505af115801562000972573d6000803e3d6000fd5b5050604080516355ae99b360e11b8152600481018a9052602481018990526001600160a01b0388811660448301529151918616935063ab5d3366925060648082019260009290919082900301818387803b158015620009d057600080fd5b505af1158015620009e5573d6000803e3d6000fd5b50505050600360009054906101000a90046001600160a01b03166001600160a01b0316635d4d3bf7878787866001600160a01b0316637aae3c6d6040518163ffffffff1660e01b815260040160206040518083038186803b15801562000a4a57600080fd5b505afa15801562000a5f573d6000803e3d6000fd5b505050506040513d602081101562000a7657600080fd5b5051604080516001600160e01b031960e088901b168152600481019590955260248501939093526001600160a01b039091166044840152606483015251608480830192600092919082900301818387803b15801562000ad457600080fd5b505af115801562000ae9573d6000803e3d6000fd5b505050507f94863d1ccc5859b0296648c08f2f0df6fcef54806943ec24fd1809c5fbd867b032858760008a8c886001600160a01b031663cdbce03d6040518163ffffffff1660e01b815260040160206040518083038186803b15801562000b4f57600080fd5b505afa15801562000b64573d6000803e3d6000fd5b505050506040513d602081101562000b7b57600080fd5b5051604080516001600160a01b03988916815296881660208801528681019590955292861660608601526080850191909152841660a08401529290921660c082015290519081900360e00190a160075462000be0906001600160a01b0316846200232a565b505050505050505050565b6001546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b15801562000c3757600080fd5b505afa15801562000c4c573d6000803e3d6000fd5b505050506040513d602081101562000c6357600080fd5b5051151560011462000c7457600080fd5b600b55565b6001546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b15801562000cc557600080fd5b505afa15801562000cda573d6000803e3d6000fd5b505050506040513d602081101562000cf157600080fd5b5051151560011462000d0257600080fd5b60008311801562000d14575060058311155b62000d1e57600080fd5b60008211801562000d305750600f8311155b62000d3a57600080fd5b62000d5e8162000d51858563ffffffff62001f4116565b9063ffffffff62001f4116565b60641462000d6b57600080fd5b600d92909255600e55600f55565b600e5490565b600d5490565b60115490565b600f5490565b6001546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b15801562000ddd57600080fd5b505afa15801562000df2573d6000803e3d6000fd5b505050506040513d602081101562000e0957600080fd5b5051151560011462000e1a57600080fd5b600180546001600160a01b0319166001600160a01b038381169190911791829055604080516347f3bf4360e11b8152602060048201819052600a6024830152696f66666572507269636560b01b604483015291519390921692638fe77e86926064808201939291829003018186803b15801562000e9657600080fd5b505afa15801562000eab573d6000803e3d6000fd5b505050506040513d602081101562000ec257600080fd5b5051600380546001600160a01b0319166001600160a01b03928316179055600154604080516347f3bf4360e11b8152602060048201819052601160248301527036b4b734b733a1b0b631bab630ba34b7b760791b604483015291519290931692638fe77e869260648083019392829003018186803b15801562000f4457600080fd5b505afa15801562000f59573d6000803e3d6000fd5b505050506040513d602081101562000f7057600080fd5b5051600480546001600160a01b0319166001600160a01b03928316178155600154604080516347f3bf4360e11b81526020938101849052600660248201526561626f6e757360d01b604482015290519190931692638fe77e86926064808301939192829003018186803b15801562000fe757600080fd5b505afa15801562000ffc573d6000803e3d6000fd5b505050506040513d60208110156200101357600080fd5b5051600780546001600160a01b0319166001600160a01b03928316179055600154604080516347f3bf4360e11b8152602060048083018290526024830152631b995cdd60e21b604483015291519290931692638fe77e869260648083019392829003018186803b1580156200108757600080fd5b505afa1580156200109c573d6000803e3d6000fd5b505050506040513d6020811015620010b357600080fd5b5051600680546001600160a01b0319166001600160a01b03928316179055600154604080516347f3bf4360e11b8152602060048201819052600e60248301526d1b9bd919505cdcda59db9b595b9d60921b604483015291519290931692638fe77e869260648083019392829003018186803b1580156200113257600080fd5b505afa15801562001147573d6000803e3d6000fd5b505050506040513d60208110156200115e57600080fd5b5051600580546001600160a01b0319166001600160a01b03928316178155600154604080516347f3bf4360e11b815260206004820181905260248201949094526431b7b232b960d91b604482015290519190931692638fe77e86926064808301939192829003018186803b158015620011d657600080fd5b505afa158015620011eb573d6000803e3d6000fd5b505050506040513d60208110156200120257600080fd5b5051600880546001600160a01b0319166001600160a01b03928316179055600154604080516347f3bf4360e11b815260206004820181905260096024830152686f666665724461746160b81b604483015291519290931692638fe77e869260648083019392829003018186803b1580156200127c57600080fd5b505afa15801562001291573d6000803e3d6000fd5b505050506040513d6020811015620012a857600080fd5b5051600280546001600160a01b0319166001600160a01b0390921691909117905550565b6001546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b1580156200131857600080fd5b505afa1580156200132d573d6000803e3d6000fd5b505050506040513d60208110156200134457600080fd5b505115156001146200135557600080fd5b600955565b6001546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b158015620013a657600080fd5b505afa158015620013bb573d6000803e3d6000fd5b505050506040513d6020811015620013d257600080fd5b50511515600114620013e357600080fd5b60008111620013f157600080fd5b600c55565b3332146200140357600080fd5b600254604080516335ec491560e21b81526001600160a01b0387811660048301529151919092169163d7b12454916024808301926020929190829003018186803b1580156200145157600080fd5b505afa15801562001466573d6000803e3d6000fd5b505050506040513d60208110156200147d57600080fd5b50516200148957600080fd5b600c546200149f90849063ffffffff62001ee916565b861015620014ac57600080fd5b6000620014cc6103e86200079e600a548762001ee990919063ffffffff16565b9050620014e58162000d51898763ffffffff62001f4116565b3414620014f157600080fd5b6011548481620014fd57fe5b06156200150957600080fd5b62001518878784600062001f54565b60408051637239b53360e11b8152600481018590526001600160a01b0384811660248301529151879283169163e4736a6691889160448082019260009290919082900301818588803b1580156200156e57600080fd5b505af115801562001583573d6000803e3d6000fd5b5050505050600360009054906101000a90046001600160a01b03166001600160a01b0316635d4d3bf7868686856001600160a01b0316637aae3c6d6040518163ffffffff1660e01b815260040160206040518083038186803b158015620015e957600080fd5b505afa158015620015fe573d6000803e3d6000fd5b505050506040513d60208110156200161557600080fd5b5051604080516001600160e01b031960e088901b168152600481019590955260248501939093526001600160a01b039091166044840152606483015251608480830192600092919082900301818387803b1580156200167357600080fd5b505af115801562001688573d6000803e3d6000fd5b505050507f94863d1ccc5859b0296648c08f2f0df6fcef54806943ec24fd1809c5fbd867b03260008786888b876001600160a01b031663cdbce03d6040518163ffffffff1660e01b815260040160206040518083038186803b158015620016ee57600080fd5b505afa15801562001703573d6000803e3d6000fd5b505050506040513d60208110156200171a57600080fd5b5051604080516001600160a01b03988916815296881660208801528681019590955292861660608601526080850191909152841660a08401529290921660c082015290519081900360e00190a16007546200177f906001600160a01b0316836200232a565b5050505050505050565b600b5490565b60095490565b6001546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b158015620017e157600080fd5b505afa158015620017f6573d6000803e3d6000fd5b505050506040513d60208110156200180d57600080fd5b505115156001146200181e57600080fd5b600081116200182c57600080fd5b601055565b3332146200183e57600080fd5b600254604080516335ec491560e21b81526001600160a01b0384811660048301529151919092169163d7b12454916024808301926020929190829003018186803b1580156200188c57600080fd5b505afa158015620018a1573d6000803e3d6000fd5b505050506040513d6020811015620018b857600080fd5b5051620018c457600080fd5b6000819050806001600160a01b03166328a8ef1f6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200190557600080fd5b505af11580156200191a573d6000803e3d6000fd5b505050506000816001600160a01b031663b4f58a766040518163ffffffff1660e01b815260040160206040518083038186803b1580156200195a57600080fd5b505afa1580156200196f573d6000803e3d6000fd5b505050506040513d60208110156200198657600080fd5b505160408051637aae3c6d60e01b815290519192506000916001600160a01b03851691637aae3c6d916004808301926020929190829003018186803b158015620019cf57600080fd5b505afa158015620019e4573d6000803e3d6000fd5b505050506040513d6020811015620019fb57600080fd5b50516040805163027860a760e11b815290519192506000916001600160a01b038616916304f0c14e916004808301926020929190829003018186803b15801562001a4457600080fd5b505afa15801562001a59573d6000803e3d6000fd5b505050506040513d602081101562001a7057600080fd5b50519050821562001d56576004805460408051635e54b15760e01b8152928301869052602483018590523060448401526001600160a01b03848116606485015290516000939190921691635e54b1579160848082019260209290919082900301818787803b15801562001ae257600080fd5b505af115801562001af7573d6000803e3d6000fd5b505050506040513d602081101562001b0e57600080fd5b5051600d5490915060009062001b34906064906200079e90859063ffffffff62001ee916565b9050600062001b5560646200079e600e548662001ee990919063ffffffff16565b9050600062001b7660646200079e600f548762001ee990919063ffffffff16565b6006546040805163a9059cbb60e01b81523260048201526024810184905290519293506001600160a01b039091169163a9059cbb9160448082019260009290919082900301818387803b15801562001bcd57600080fd5b505af115801562001be2573d6000803e3d6000fd5b50506006546005546040805163095ea7b360e01b81526001600160a01b03928316600482015260248101889052905191909216935063095ea7b3925060448083019260209291908290030181600087803b15801562001c4057600080fd5b505af115801562001c55573d6000803e3d6000fd5b505050506040513d602081101562001c6c57600080fd5b505162001c7857600080fd5b60055460408051634062602560e01b81526004810185905290516001600160a01b039092169163406260259160248082019260009290919082900301818387803b15801562001cc657600080fd5b505af115801562001cdb573d6000803e3d6000fd5b50506006546008546040805163a9059cbb60e01b81526001600160a01b03928316600482015260248101899052905191909216935063a9059cbb9250604480830192600092919082900301818387803b15801562001d3857600080fd5b505af115801562001d4d573d6000803e3d6000fd5b50505050505050505b5050505050565b6001546040805163a3bf06f160e01b815233600482015290516001600160a01b039092169163a3bf06f191602480820192602092909190829003018186803b15801562001da957600080fd5b505afa15801562001dbe573d6000803e3d6000fd5b505050506040513d602081101562001dd557600080fd5b5051151560011462001de657600080fd5b6000811162001df457600080fd5b601155565b33321462001e0657600080fd5b600062001e266103e86200079e6009548762001ee990919063ffffffff16565b905062001e3a848263ffffffff62001f4116565b341462001e4657600080fd5b6001600160a01b03821660009081526020819052604090205460ff1662001e6c57600080fd5b62001e7a8484848462001f54565b6004805460408051631a2f46d160e31b81526001600160a01b03868116948201949094529051929091169163d17a3688918491602480830192600092919082900301818588803b15801562001ece57600080fd5b505af115801562000be0573d6000803e3d6000fd5b60105490565b60008262001efa5750600062001f17565b8282028284828162001f0857fe5b041462001f1457600080fd5b90505b92915050565b600080821162001f2c57600080fd5b600082848162001f3857fe5b04949350505050565b60008282018381101562001f1457600080fd5b60105484101562001f6457600080fd5b601154848162001f7057fe5b061562001f7c57600080fd5b60115462001f9290859063ffffffff62001f1d16565b838162001f9b57fe5b061562001fa757600080fd5b604080516370a0823160e01b81523360048201529051839185916001600160a01b038416916370a08231916024808301926020929190829003018186803b15801562001ff257600080fd5b505afa15801562002007573d6000803e3d6000fd5b505050506040513d60208110156200201e57600080fd5b505110156200202c57600080fd5b60408051636eb1769f60e11b8152336004820152306024820152905185916001600160a01b0384169163dd62ed3e91604480820192602092909190829003018186803b1580156200207c57600080fd5b505afa15801562002091573d6000803e3d6000fd5b505050506040513d6020811015620020a857600080fd5b50511015620020b657600080fd5b60015460405160009187918791879187916001600160a01b031690620020dc9062002383565b94855260208501939093526001600160a01b03918216604080860191909152606085019190915291166080830152519081900360a001906000f08015801562002129573d6000803e3d6000fd5b506002546040805163b11ce2db60e01b81526001600160a01b038085166004830152915193945091169163b11ce2db9160248082019260009290919082900301818387803b1580156200217b57600080fd5b505af115801562002190573d6000803e3d6000fd5b5050604080516001600160a01b038086168252881660208201528082018a90526060810189905290517fccacfd869caa3e2e845afe470f00dcb777e77639814c6c96bb320b69885e63ce9350908190036080019150a1604080516323b872dd60e01b81523360048201526001600160a01b038381166024830152604482018890529151918416916323b872dd9160648082019260009290919082900301818387803b1580156200223f57600080fd5b505af115801562002254573d6000803e3d6000fd5b50505050806001600160a01b03166308ad57b5876040518263ffffffff1660e01b81526004016000604051808303818588803b1580156200229457600080fd5b505af1158015620022a9573d6000803e3d6000fd5b5050600354604080516336af3c8160e01b8152600481018c9052602481018b90526001600160a01b038a8116604483015291519190921694506336af3c8193506064808301935060009282900301818387803b1580156200230957600080fd5b505af11580156200231e573d6000803e3d6000fd5b50505050505050505050565b600062002340836001600160a01b031662002380565b6040519091506001600160a01b0382169083156108fc029084906000818181858888f193505050501580156200237a573d6000803e3d6000fd5b50505050565b90565b610a3d80620023928339019056fe60806040526008805460ff1916905534801561001a57600080fd5b50604051610a3d380380610a3d833981810160405260a081101561003d57600080fd5b508051602080830151604080850151606086015160809096015160088054610100600160a81b0319166101006001600160a01b038085168202929092179283905585517f8fe77e8600000000000000000000000000000000000000000000000000000000815260048101899052600c60248201527f6f66666572466163746f7279000000000000000000000000000000000000000060448201529551989996989497939592041692638fe77e8692606480840193919291829003018186803b15801561010857600080fd5b505afa15801561011c573d6000803e3d6000fd5b505050506040513d602081101561013257600080fd5b5051600980546001600160a01b0319166001600160a01b03928316179081905516331461015e57600080fd5b50600080546001600160a01b0319908116321790915560018590556002849055600380546001600160a01b0394909416939091169290921790915560049290925560055560075543600655610885806101b86000396000f3fe6080604052600436106100c25760003560e01c80637aae3c6d1161007f578063b4f58a7611610059578063b4f58a76146101f8578063b6bc03541461020d578063cdbce03d14610236578063e4736a661461024b576100c2565b80637aae3c6d1461018f5780638fc3047d146101a4578063ab5d3366146101b9576100c2565b806304f0c14e146100c757806308ad57b5146100f857806313e24862146101025780631b1bddc91461012957806328a8ef1f1461016557806371aa8fd91461017a575b600080fd5b3480156100d357600080fd5b506100dc610277565b604080516001600160a01b039092168252519081900360200190f35b610100610287565b005b34801561010e57600080fd5b50610117610324565b60408051918252519081900360200190f35b34801561013557600080fd5b5061013e6103bd565b6040805193845260208401929092526001600160a01b031682820152519081900360600190f35b34801561017157600080fd5b506101006103d4565b34801561018657600080fd5b5061013e6104cc565b34801561019b57600080fd5b50610117610567565b3480156101b057600080fd5b5061013e61056d565b3480156101c557600080fd5b50610100600480360360608110156101dc57600080fd5b50803590602081013590604001356001600160a01b0316610584565b34801561020457600080fd5b50610117610652565b34801561021957600080fd5b50610222610658565b604080519115158252519081900360200190f35b34801561024257600080fd5b506100dc610661565b6101006004803603604081101561026157600080fd5b50803590602001356001600160a01b0316610670565b6003546001600160a01b03165b90565b6009546001600160a01b0316331461029e57600080fd5b600254600354604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156102ec57600080fd5b505afa158015610300573d6000803e3d6000fd5b505050506040513d602081101561031657600080fd5b50511461032257600080fd5b565b6009546040805163cbc7ef0960e01b815290516000926001600160a01b03169163cbc7ef09916004808301926020929190829003018186803b15801561036957600080fd5b505afa15801561037d573d6000803e3d6000fd5b505050506040513d602081101561039357600080fd5b50516006546103a990439063ffffffff61079316565b11156103b757506001610284565b50600090565b6004546005546003546001600160a01b0316909192565b6009546001600160a01b031633146103eb57600080fd5b6000546001600160a01b0316321461040257600080fd5b61040a610324565b60011461041657600080fd5b60085460ff161561042657600080fd5b6000806104316104cc565b50600054919350915061044d906001600160a01b0316836107ad565b600354600080546040805163a9059cbb60e01b81526001600160a01b039283166004820152602481018690529051919093169263a9059cbb92604480830193919282900301818387803b1580156104a357600080fd5b505af11580156104b7573d6000803e3d6000fd5b50506008805460ff1916600117905550505050565b600354604080516370a0823160e01b815230600482018190529151600093849384939031926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561052357600080fd5b505afa158015610537573d6000803e3d6000fd5b505050506040513d602081101561054d57600080fd5b505160035491945092506001600160a01b03169050909192565b60065490565b6001546002546003546001600160a01b0316909192565b6009546001600160a01b0316331461059b57600080fd5b6105a3610324565b156105ad57600080fd5b8260045410156105bc57600080fd5b8160055410156105cb57600080fd5b6003546001600160a01b038281169116146105e557600080fd5b61060c6004546106008560055461080090919063ffffffff16565b9063ffffffff61082e16565b821461061757600080fd5b61062132846107ad565b600454610634908463ffffffff61079316565b60045560055461064a908363ffffffff61079316565b600555505050565b60075490565b60085460ff1690565b6000546001600160a01b031690565b6009546001600160a01b0316331461068757600080fd5b61068f610324565b1561069957600080fd5b3460045410156106a857600080fd5b8160055410156106b757600080fd5b6003546001600160a01b038281169116146106d157600080fd5b6106ec6004546106003460055461080090919063ffffffff16565b82146106f757600080fd5b6003546040805163a9059cbb60e01b81523260048201526024810185905290516001600160a01b039092169163a9059cbb9160448082019260009290919082900301818387803b15801561074a57600080fd5b505af115801561075e573d6000803e3d6000fd5b5050600454610776925090503463ffffffff61079316565b60045560055461078c908363ffffffff61079316565b6005555050565b6000828211156107a257600080fd5b508082035b92915050565b60006107c1836001600160a01b0316610284565b6040519091506001600160a01b0382169083156108fc029084906000818181858888f193505050501580156107fa573d6000803e3d6000fd5b50505050565b60008261080f575060006107a7565b8282028284828161081c57fe5b041461082757600080fd5b9392505050565b600080821161083c57600080fd5b600082848161084757fe5b0494935050505056fea265627a7a72315820e719dda423fe630c15cf154847937c97a7ab25d1571dd1ab39fa7e7762e398fb64736f6c634300050c0032a265627a7a72315820309f645fe0b005a8a312fef5b74188b55d08b69832686b02c84d6b864a41da0a64736f6c634300050c00320000000000000000000000005e7db2ffc5b2c7c47103e4f21c702bc402603fbf

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

0000000000000000000000005e7db2ffc5b2c7c47103e4f21c702bc402603fbf

-----Decoded View---------------
Arg [0] : map (address): 0x5e7db2ffc5b2c7c47103e4f21c702bc402603fbf

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000005e7db2ffc5b2c7c47103e4f21c702bc402603fbf


Deployed ByteCode Sourcemap

1691:13325:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14047:114;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14047:114:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;14047:114:0;;;;;;;;;;:::i;:::-;;12952:96;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12952:96:0;;;:::i;:::-;;;;;;;;;;;;;;;;13855:85;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13855:85:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13855:85:0;;:::i;12803:109::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12803:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12803:109:0;-1:-1:-1;;;;;12803:109:0;;:::i;:::-;;;;;;;;;;;;;;;;;;12666:87;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12666:87:0;;;:::i;10760:1408::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;10760:1408:0;;;;;;;;-1:-1:-1;;;;;10760:1408:0;;;;;;;;;;;;;;;;;;;;;;:::i;13948:91::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13948:91:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13948:91:0;;:::i;14299:353::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14299:353:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14299:353:0;;;;;;;;;;;;:::i;13264:88::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13264:88:0;;;:::i;13104:94::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13104:94:0;;;:::i;13660:90::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13660:90:0;;;:::i;13401:94::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13401:94:0;;;:::i;5004:813::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5004:813:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5004:813:0;-1:-1:-1;;;;;5004:813:0;;:::i;13758:89::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13758:89:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13758:89:0;;:::i;14169:122::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14169:122:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14169:122:0;;:::i;9255:1130::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;9255:1130:0;;;;;;;;-1:-1:-1;;;;;9255:1130:0;;;;;;;;;;;;;;;;;;;;;;:::i;12396:92::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12396:92:0;;;:::i;12533:91::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12533:91:0;;;:::i;14660:114::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14660:114:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14660:114:0;;:::i;7773:1107::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7773:1107:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7773:1107:0;-1:-1:-1;;;;;7773:1107:0;;:::i;14782:116::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14782:116:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14782:116:0;;:::i;5995:460::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5995:460:0;;;;;;;;;;;-1:-1:-1;;;;;5995:460:0;;:::i;13535:88::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13535:88:0;;;:::i;14047:114::-;14945:15;;:39;;;-1:-1:-1;;;14945:39:0;;14973:10;14945:39;;;;;;-1:-1:-1;;;;;14945:15:0;;;;:27;;:39;;;;;;;;;;;;;;;:15;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;14945:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14945:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14945:39:0;:47;;14988:4;14945:47;14937:56;;;;;;-1:-1:-1;;;;;14128:17:0;;;;:10;:17;;;;;;;;;;:25;;-1:-1:-1;;14128:25:0;;;;;;;;;;14047:114::o;12952:96::-;13028:12;;12952:96;:::o;13855:85::-;14945:15;;:39;;;-1:-1:-1;;;14945:39:0;;14973:10;14945:39;;;;;;-1:-1:-1;;;;;14945:15:0;;;;:27;;:39;;;;;;;;;;;;;;;:15;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;14945:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14945:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14945:39:0;:47;;14988:4;14945:47;14937:56;;;;;;13919:7;:13;13855:85::o;12803:109::-;-1:-1:-1;;;;;12887:17:0;12863:4;12887:17;;;;;;;;;;;;;;12803:109::o;12666:87::-;12738:7;;12666:87;:::o;10760:1408::-;10958:10;10981:9;10950:41;10942:50;;;;;;11011:12;;:43;;;-1:-1:-1;;;11011:43:0;;-1:-1:-1;;;;;11011:43:0;;;;;;;;;:12;;;;;:26;;:43;;;;;;;;;;;;;;:12;:43;;;5:2:-1;;;;30:1;27;20:12;5:2;11011:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11011:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11011:43:0;11003:52;;;;;;11105:12;;11087:31;;:13;;:31;:17;:31;:::i;:::-;11074:9;:44;;11066:53;;;;;;11130:21;11154:36;11185:4;11154:26;11172:7;;11154:13;:17;;:26;;;;:::i;:::-;:30;:36;:30;:36;:::i;:::-;11130:60;-1:-1:-1;11222:28:0;:9;11130:60;11222:28;:13;:28;:::i;:::-;11209:9;:41;11201:50;;;;;;11286:9;;11270:13;:25;;;;;;:30;11262:39;;;;;;11312:53;11324:9;11334:11;11346:16;11363:1;11312:11;:53::i;:::-;11517:36;;;-1:-1:-1;;;11517:36:0;;11541:10;11517:36;;;;;;11434:15;;11481:16;;11557:15;;-1:-1:-1;;;;;11517:15:0;;;;;:36;;;;;;;;;;;;;;;:15;:36;;;5:2:-1;;;;30:1;27;20:12;5:2;11517:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11517:36:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11517:36:0;:55;;11509:64;;;;;;11592:51;;;-1:-1:-1;;;11592:51:0;;11616:10;11592:51;;;;11637:4;11592:51;;;;;;11647:15;;-1:-1:-1;;;;;11592:15:0;;;;;:51;;;;;;;;;;;;;;;:15;:51;;;5:2:-1;;;;30:1;27;20:12;5:2;11592:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11592:51:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11592:51:0;:70;;11584:79;;;;;;11674:80;;;-1:-1:-1;;;11674:80:0;;11701:10;11674:80;;;;-1:-1:-1;;;;;11674:80:0;;;;;;;;;;;;;;;:18;;;;;;:80;;;;;-1:-1:-1;;11674:80:0;;;;;;;;-1:-1:-1;11674:18:0;:80;;;5:2:-1;;;;30:1;27;20:12;5:2;11674:80:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;11765:77:0;;;-1:-1:-1;;;11765:77:0;;;;;;;;;;;;;;-1:-1:-1;;;;;11765:77:0;;;;;;;;;:28;;;;-1:-1:-1;11765:28:0;;-1:-1:-1;11765:77:0;;;;;-1:-1:-1;;11765:77:0;;;;;;;;-1:-1:-1;11765:28:0;:77;;;5:2:-1;;;;30:1;27;20:12;5:2;11765:77:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11765:77:0;;;;11853:10;;;;;;;;;-1:-1:-1;;;;;11853:10:0;-1:-1:-1;;;;;11853:22:0;;11876:13;11890:15;11906:16;11923:13;-1:-1:-1;;;;;11923:27:0;;:29;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11923:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11923:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11923:29:0;11853:100;;;-1:-1:-1;;;;;;11853:100:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11853:100:0;;;;;;;;;;;;;;;;;-1:-1:-1;;11853:100:0;;;;;;;-1:-1:-1;11853:100:0;;;;5:2:-1;;;;30:1;27;20:12;5:2;11853:100:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11853:100:0;;;;11969:143;11987:9;12006:16;12024:15;12049:3;12055:13;12069:15;12085:13;-1:-1:-1;;;;;12085:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12085:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12085:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12085:26:0;11969:143;;;-1:-1:-1;;;;;11969:143:0;;;;;;;;12085:26;11969:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12132:13;;12123:37;;-1:-1:-1;;;;;12132:13:0;12146;12123:8;:37::i;:::-;10760:1408;;;;;;;;;:::o;13948:91::-;14945:15;;:39;;;-1:-1:-1;;;14945:39:0;;14973:10;14945:39;;;;;;-1:-1:-1;;;;;14945:15:0;;;;:27;;:39;;;;;;;;;;;;;;;:15;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;14945:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14945:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14945:39:0;:47;;14988:4;14945:47;14937:56;;;;;;14015:10;:16;13948:91::o;14299:353::-;14945:15;;:39;;;-1:-1:-1;;;14945:39:0;;14973:10;14945:39;;;;;;-1:-1:-1;;;;;14945:15:0;;;;:27;;:39;;;;;;;;;;;;;;;:15;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;14945:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14945:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14945:39:0;:47;;14988:4;14945:47;14937:56;;;;;;14425:1;14414:8;:12;:29;;;;;14442:1;14430:8;:13;;14414:29;14406:38;;;;;;14471:1;14463:5;:9;:27;;;;;14488:2;14476:8;:14;;14463:27;14455:36;;;;;;14510:33;14534:8;14510:19;:8;14523:5;14510:19;:12;:19;:::i;:::-;:23;:33;:23;:33;:::i;:::-;14547:3;14510:40;14502:49;;;;;;14562:11;:22;;;;14595:8;:16;14622:11;:22;14299:353::o;13264:88::-;13336:8;;13264:88;:::o;13104:94::-;13179:11;;13104:94;:::o;13660:90::-;13733:9;;13660:90;:::o;13401:94::-;13476:11;;13401:94;:::o;5004:813::-;14945:15;;:39;;;-1:-1:-1;;;14945:39:0;;14973:10;14945:39;;;;;;-1:-1:-1;;;;;14945:15:0;;;;:27;;:39;;;;;;;;;;;;;;;:15;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;14945:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14945:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14945:39:0;:47;;14988:4;14945:47;14937:56;;;;;;5068:15;:37;;-1:-1:-1;;;;;;5068:37:0;-1:-1:-1;;;;;5068:37:0;;;;;;;;;;;5213:42;;;-1:-1:-1;;;5213:42:0;;;;;;;;;;;;;;-1:-1:-1;;;5213:42:0;;;;;;:15;;;;;:28;;:42;;;;;;;;;;;;:15;:42;;;5:2:-1;;;;30:1;27;20:12;5:2;5213:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5213:42:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5213:42:0;5174:10;:83;;-1:-1:-1;;;;;;5174:83:0;-1:-1:-1;;;;;5174:83:0;;;;;;-1:-1:-1;5323:15:0;:49;;;-1:-1:-1;;;5323:49:0;;5213:42;5323:49;;;;;;;;;;;-1:-1:-1;;;5323:49:0;;;;;;:15;;;;;:28;;:49;;;;;5213:42;5323:49;;;;;:15;:49;;;5:2:-1;;;;30:1;27;20:12;5:2;5323:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5323:49:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5323:49:0;5280:12;:94;;-1:-1:-1;;;;;;5280:94:0;-1:-1:-1;;;;;5280:94:0;;;;;;-1:-1:-1;5401:15:0;:38;;;-1:-1:-1;;;5401:38:0;;5323:49;5401:38;;;;;;;;;;;-1:-1:-1;;;5401:38:0;;;;;;:15;;;;;:28;;:38;;;;;5323:49;;5401:38;;;;;:15;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;5401:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5401:38:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5401:38:0;5385:13;:54;;-1:-1:-1;;;;;;5385:54:0;-1:-1:-1;;;;;5385:54:0;;;;;;-1:-1:-1;5468:15:0;:36;;;-1:-1:-1;;;5468:36:0;;5401:38;5468:36;;;;;;;;;;;-1:-1:-1;;;5468:36:0;;;;;;:15;;;;;:28;;:36;;;;;5401:38;5468:36;;;;;:15;:36;;;5:2:-1;;;;30:1;27;20:12;5:2;5468:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5468:36:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5468:36:0;5450:9;:55;;-1:-1:-1;;;;;;5450:55:0;-1:-1:-1;;;;;5450:55:0;;;;;;-1:-1:-1;5598:15:0;:46;;;-1:-1:-1;;;5598:46:0;;5468:36;5598:46;;;;;;;;;;;-1:-1:-1;;;5598:46:0;;;;;;:15;;;;;:28;;:46;;;;;5468:36;5598:46;;;;;:15;:46;;;5:2:-1;;;;30:1;27;20:12;5:2;5598:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5598:46:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5598:46:0;5557:10;:89;;-1:-1:-1;;;;;;5557:89:0;-1:-1:-1;;;;;5557:89:0;;;;;;-1:-1:-1;5678:15:0;:37;;;-1:-1:-1;;;5678:37:0;;5598:46;5678:37;;;;;;;;;;;;;-1:-1:-1;;;5678:37:0;;;;;;:15;;;;;:28;;:37;;;;;5598:46;;5678:37;;;;;:15;:37;;;5:2:-1;;;;30:1;27;20:12;5:2;5678:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5678:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5678:37:0;5663:12;:52;;-1:-1:-1;;;;;;5663:52:0;-1:-1:-1;;;;;5663:52:0;;;;;;-1:-1:-1;5766:15:0;:41;;;-1:-1:-1;;;5766:41:0;;5678:37;5766:41;;;;;;;;;;;-1:-1:-1;;;5766:41:0;;;;;;:15;;;;;:28;;:41;;;;;5678:37;5766:41;;;;;:15;:41;;;5:2:-1;;;;30:1;27;20:12;5:2;5766:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5766:41:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5766:41:0;5726:12;:83;;-1:-1:-1;;;;;;5726:83:0;-1:-1:-1;;;;;5726:83:0;;;;;;;;;-1:-1:-1;5004:813:0:o;13758:89::-;14945:15;;:39;;;-1:-1:-1;;;14945:39:0;;14973:10;14945:39;;;;;;-1:-1:-1;;;;;14945:15:0;;;;:27;;:39;;;;;;;;;;;;;;;:15;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;14945:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14945:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14945:39:0;:47;;14988:4;14945:47;14937:56;;;;;;13824:9;:15;13758:89::o;14169:122::-;14945:15;;:39;;;-1:-1:-1;;;14945:39:0;;14973:10;14945:39;;;;;;-1:-1:-1;;;;;14945:15:0;;;;:27;;:39;;;;;;;;;;;;;;;:15;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;14945:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14945:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14945:39:0;:47;;14988:4;14945:47;14937:56;;;;;;14252:1;14246:3;:7;14238:16;;;;;;14265:12;:18;14169:122::o;9255:1130::-;9453:10;9476:9;9445:41;9437:50;;;;;;9506:12;;:43;;;-1:-1:-1;;;9506:43:0;;-1:-1:-1;;;;;9506:43:0;;;;;;;;;:12;;;;;:26;;:43;;;;;;;;;;;;;;:12;:43;;;5:2:-1;;;;30:1;27;20:12;5:2;9506:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9506:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9506:43:0;9498:52;;;;;;9600:12;;9582:31;;:13;;:31;:17;:31;:::i;:::-;9569:9;:44;;9561:53;;;;;;9625:21;9649:36;9680:4;9649:26;9667:7;;9649:13;:17;;:26;;;;:::i;:36::-;9625:60;-1:-1:-1;9717:47:0;9625:60;9717:28;:9;9731:13;9717:28;:13;:28;:::i;:47::-;9704:9;:60;9696:69;;;;;;9800:9;;9784:13;:25;;;;;;:30;9776:39;;;;;;9826:53;9838:9;9848:11;9860:16;9877:1;9826:11;:53::i;:::-;9975:84;;;-1:-1:-1;;;9975:84:0;;;;;;;;-1:-1:-1;;;;;9975:84:0;;;;;;;;;9948:15;;9975:28;;;;;10010:13;;9975:84;;;;;9890:34;;9975:84;;;;;;;;10010:13;9975:28;:84;;;5:2:-1;;;;30:1;27;20:12;5:2;9975:84:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9975:84:0;;;;;10070:10;;;;;;;;;-1:-1:-1;;;;;10070:10:0;-1:-1:-1;;;;;10070:22:0;;10093:13;10107:15;10123:16;10140:13;-1:-1:-1;;;;;10140:27:0;;:29;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10140:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10140:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10140:29:0;10070:100;;;-1:-1:-1;;;;;;10070:100:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10070:100:0;;;;;;;;;;;;;;;;;-1:-1:-1;;10070:100:0;;;;;;;-1:-1:-1;10070:100:0;;;;5:2:-1;;;;30:1;27;20:12;5:2;10070:100:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10070:100:0;;;;10186:143;10204:9;10224:3;10230:13;10252:16;10270:15;10286;10302:13;-1:-1:-1;;;;;10302:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10302:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10302:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10302:26:0;10186:143;;;-1:-1:-1;;;;;10186:143:0;;;;;;;;10302:26;10186:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10349:13;;10340:37;;-1:-1:-1;;;;;10349:13:0;10363;10340:8;:37::i;:::-;9255:1130;;;;;;;;:::o;12396:92::-;12470:10;;12396:92;:::o;12533:91::-;12607:9;;12533:91;:::o;14660:114::-;14945:15;;:39;;;-1:-1:-1;;;14945:39:0;;14973:10;14945:39;;;;;;-1:-1:-1;;;;;14945:15:0;;;;:27;;:39;;;;;;;;;;;;;;;:15;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;14945:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14945:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14945:39:0;:47;;14988:4;14945:47;14937:56;;;;;;14739:1;14733:3;:7;14725:16;;;;;;14752:8;:14;14660:114::o;7773:1107::-;7849:10;7872:9;7841:41;7833:50;;;;;;7902:12;;:43;;;-1:-1:-1;;;7902:43:0;;-1:-1:-1;;;;;7902:43:0;;;;;;;;;:12;;;;;:26;;:43;;;;;;;;;;;;;;:12;:43;;;5:2:-1;;;;30:1;27;20:12;5:2;7902:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7902:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7902:43:0;7894:52;;;;;;7957:34;8015:15;7957:74;;8042:13;-1:-1:-1;;;;;8042:21:0;;:23;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8042:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8042:23:0;;;;8076:17;8096:13;-1:-1:-1;;;;;8096:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8096:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8096:34:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8096:34:0;8160:29;;;-1:-1:-1;;;8160:29:0;;;;8096:34;;-1:-1:-1;8141:16:0;;-1:-1:-1;;;;;8160:27:0;;;;;:29;;;;;8096:34;;8160:29;;;;;;;:27;:29;;;5:2:-1;;;;30:1;27;20:12;5:2;8160:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8160:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8160:29:0;8223:33;;;-1:-1:-1;;;8223:33:0;;;;8160:29;;-1:-1:-1;8200:20:0;;-1:-1:-1;;;;;8223:31:0;;;;;:33;;;;;8160:29;;8223:33;;;;;;;:31;:33;;;5:2:-1;;;;30:1;27;20:12;5:2;8223:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8223:33:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8223:33:0;;-1:-1:-1;8271:13:0;;8267:606;;8324:12;;;:68;;;-1:-1:-1;;;8324:68:0;;;;;;;;;;;;;;8373:4;8324:68;;;;-1:-1:-1;;;;;8324:68:0;;;;;;;;;8301:20;;8324:12;;;;;:19;;:68;;;;;;;;;;;;;;;8301:20;8324:12;:68;;;5:2:-1;;;;30:1;27;20:12;5:2;8324:68:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8324:68:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8324:68:0;8440:11;;8324:68;;-1:-1:-1;8407:13:0;;8423:38;;8457:3;;8423:29;;8324:68;;8423:29;:16;:29;:::i;:38::-;8407:54;;8476:10;8489:35;8520:3;8489:26;8506:8;;8489:12;:16;;:26;;;;:::i;:35::-;8476:48;;8539:13;8555:38;8589:3;8555:29;8572:11;;8555:12;:16;;:29;;;;:::i;:38::-;8608:9;;:45;;;-1:-1:-1;;;8608:45:0;;8635:9;8608:45;;;;;;;;;;;;8539:54;;-1:-1:-1;;;;;;8608:9:0;;;;:18;;:45;;;;;:9;;:45;;;;;;;;:9;;:45;;;5:2:-1;;;;30:1;27;20:12;5:2;8608:45:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;8676:9:0;;8702:10;;8676:42;;;-1:-1:-1;;;8676:42:0;;-1:-1:-1;;;;;8702:10:0;;;8676:42;;;;;;;;;;;;:9;;;;;-1:-1:-1;8676:17:0;;-1:-1:-1;8676:42:0;;;;;;;;;;;;;;:9;;:42;;;5:2:-1;;;;30:1;27;20:12;5:2;8676:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8676:42:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8676:42:0;8668:51;;;;;;8734:10;;:26;;;-1:-1:-1;;;8734:26:0;;;;;;;;;;-1:-1:-1;;;;;8734:10:0;;;;:22;;:26;;;;;:10;;:26;;;;;;;;:10;;:26;;;5:2:-1;;;;30:1;27;20:12;5:2;8734:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;8822:9:0;;8841:12;;8822:39;;;-1:-1:-1;;;8822:39:0;;-1:-1:-1;;;;;8841:12:0;;;8822:39;;;;;;;;;;;;:9;;;;;-1:-1:-1;8822:18:0;;-1:-1:-1;8822:39:0;;;;;:9;;:39;;;;;;;:9;;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;8822:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8822:39:0;;;;8267:606;;;;;7773:1107;;;;;:::o;14782:116::-;14945:15;;:39;;;-1:-1:-1;;;14945:39:0;;14973:10;14945:39;;;;;;-1:-1:-1;;;;;14945:15:0;;;;:27;;:39;;;;;;;;;;;;;;;:15;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;14945:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14945:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14945:39:0;:47;;14988:4;14945:47;14937:56;;;;;;14862:1;14856:3;:7;14848:16;;;;;;14875:9;:15;14782:116::o;5995:460::-;6114:10;6137:9;6106:41;6098:50;;;;;;6159:17;6179:34;6208:4;6179:24;6193:9;;6179;:13;;:24;;;;:::i;:34::-;6159:54;-1:-1:-1;6245:24:0;:9;6159:54;6245:24;:13;:24;:::i;:::-;6232:9;:37;6224:46;;;;;;-1:-1:-1;;;;;6289:24:0;;:10;:24;;;;;;;;;;;;;6281:33;;;;;;6325:57;6337:9;6347:11;6359:12;6372:9;6325:11;:57::i;:::-;6393:12;;;:54;;;-1:-1:-1;;;6393:54:0;;-1:-1:-1;;;;;6393:54:0;;;;;;;;;;;;:12;;;;;:23;;6423:9;;6393:54;;;;;:12;;:54;;;;;;;6423:9;6393:12;:54;;;5:2:-1;;;;30:1;27;20:12;5:2;6393:54:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;13535:88:0;13607:8;;13535:88;:::o;34278:433::-;34336:7;34580:6;34576:47;;-1:-1:-1;34610:1:0;34603:8;;34576:47;34647:5;;;34651:1;34647;:5;:1;34671:5;;;;;:10;34663:19;;;;;;34702:1;-1:-1:-1;34278:433:0;;;;;:::o;34844:303::-;34902:7;35001:1;34997;:5;34989:14;;;;;;35014:9;35030:1;35026;:5;;;;;;;34844:303;-1:-1:-1;;;;34844:303:0:o;35519:150::-;35577:7;35609:5;;;35633:6;;;;35625:15;;;;;6670:979;6809:8;;6796:9;:21;;6788:30;;;;;;6849:9;;6837;:21;;;;;;:26;6829:35;;;;;;6912:9;;6898:24;;:9;;:24;:13;:24;:::i;:::-;6883:11;:40;;;;;;:45;6875:54;;;;;;6992:36;;;-1:-1:-1;;;6992:36:0;;7016:10;6992:36;;;;;;6960:12;;7032:11;;-1:-1:-1;;;;;6992:15:0;;;;;:36;;;;;;;;;;;;;;:15;:36;;;5:2:-1;;;;30:1;27;20:12;5:2;6992:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6992:36:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6992:36:0;:51;;6984:60;;;;;;7063:51;;;-1:-1:-1;;;7063:51:0;;7087:10;7063:51;;;;7108:4;7063:51;;;;;;7118:11;;-1:-1:-1;;;;;7063:15:0;;;;;:51;;;;;;;;;;;;;;;:15;:51;;;5:2:-1;;;;30:1;27;20:12;5:2;7063:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7063:51:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7063:51:0;:66;;7055:75;;;;;;7251:15;;7176:92;;7141:32;;7201:9;;7211:11;;7223:12;;7236:6;;-1:-1:-1;;;;;7251:15:0;;7176:92;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;7176:92:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7176:92:0;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;7279:12:0;;:53;;;-1:-1:-1;;;7279:53:0;;-1:-1:-1;;;;;7279:53:0;;;;;;;;;7141:127;;-1:-1:-1;7279:12:0;;;:31;;:53;;;;;:12;;:53;;;;;;;;:12;;:53;;;5:2:-1;;;;30:1;27;20:12;5:2;7279:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;7348:89:0;;;-1:-1:-1;;;;;7348:89:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7348:89:0;;;;;;;-1:-1:-1;7348:89:0;7448:74;;;-1:-1:-1;;;7448:74:0;;7475:10;7448:74;;;;-1:-1:-1;;;;;7448:74:0;;;;;;;;;;;;;;;:18;;;;;;:74;;;;;-1:-1:-1;;7448:74:0;;;;;;;;-1:-1:-1;7448:18:0;:74;;;5:2:-1;;;;30:1;27;20:12;5:2;7448:74:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7448:74:0;;;;7533:11;-1:-1:-1;;;;;7533:23:0;;7563:9;7533:42;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7533:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;7586:10:0;;:55;;;-1:-1:-1;;;7586:55:0;;;;;;;;;;;;;;-1:-1:-1;;;;;7586:55:0;;;;;;;;;:10;;;;;-1:-1:-1;7586:19:0;;-1:-1:-1;7586:55:0;;;;;-1:-1:-1;7586:10:0;;:55;;;;;:10;;:55;;;5:2:-1;;;;30:1;27;20:12;5:2;7586:55:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7586:55:0;;;;6670:979;;;;;;:::o;12180:167::-;12256:20;12279:29;:14;-1:-1:-1;;;;;12279:27:0;;:29::i;:::-;12319:20;;12256:52;;-1:-1:-1;;;;;;12319:13:0;;;:20;;;;;12333:5;;12319:20;;;;12333:5;12319:13;:20;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12319:20:0;12180:167;;;:::o;33268:115::-;33373:1;33268:115::o;1691:13325::-;;;;;;;;:::o

Swarm Source

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

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.