ETH Price: $3,024.83 (+3.19%)
Gas: 1 Gwei

Contract

0x0f2cd12497781Ac6497fBd5F653ee49f6EF65860
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
0x2f1e482052f0c9f8dc99c3247a25cb461f5c594309cef1970f1fba796c313d25 Unstake(pending)2024-07-07 6:14:5640 hrs ago1720332896IN
0x0f2cd124...f6EF65860
0 ETH(Pending)(Pending)
0x3c34b421d820d56c0f791c51786fcc156dfa5c3c25d8dd3f84eef3f7be39bf9a Unstake(pending)2024-07-07 1:36:2845 hrs ago1720316188IN
0x0f2cd124...f6EF65860
0 ETH(Pending)(Pending)
Unstake202005632024-06-29 23:16:118 days ago1719702971IN
0x0f2cd124...f6EF65860
0 ETH0.000126171.21
Unstake196564702024-04-14 21:30:5985 days ago1713130259IN
0x0f2cd124...f6EF65860
0 ETH0.001050029.33740303
Unstake188506682023-12-23 19:42:59198 days ago1703360579IN
0x0f2cd124...f6EF65860
0 ETH0.0023597420.98407542
Unstake178547342023-08-06 8:29:47337 days ago1691310587IN
0x0f2cd124...f6EF65860
0 ETH0.0014545312.53192329
Unstake178547082023-08-06 8:24:35337 days ago1691310275IN
0x0f2cd124...f6EF65860
0 ETH0.0018587813.47280871
Unstake178546942023-08-06 8:21:47337 days ago1691310107IN
0x0f2cd124...f6EF65860
0 ETH0.0018028813.53865935
Harvest178546772023-08-06 8:18:23337 days ago1691309903IN
0x0f2cd124...f6EF65860
0 ETH0.0011109513.50227194
Unstake177662032023-07-24 23:20:35349 days ago1690240835IN
0x0f2cd124...f6EF65860
0 ETH0.0028113525
Unstake175970822023-07-01 5:17:47373 days ago1688188667IN
0x0f2cd124...f6EF65860
0 ETH0.0018856416.76813001
Unstake172888122023-05-18 20:28:59417 days ago1684441739IN
0x0f2cd124...f6EF65860
0 ETH0.0054846848.7727355
Unstake169984792023-04-07 18:47:47458 days ago1680893267IN
0x0f2cd124...f6EF65860
0 ETH0.0025242222.44672722
Stake169373932023-03-30 3:29:35466 days ago1680146975IN
0x0f2cd124...f6EF65860
0 ETH0.0035618329.67134127
Unstake169291722023-03-28 23:44:35467 days ago1680047075IN
0x0f2cd124...f6EF65860
0 ETH0.0032025424.04927688
Unstake166264252023-02-14 10:35:11510 days ago1676370911IN
0x0f2cd124...f6EF65860
0 ETH0.001782915.85456764
Stake166174602023-02-13 4:30:23511 days ago1676262623IN
0x0f2cd124...f6EF65860
0 ETH0.0020855617.37346696
Unstake166173342023-02-13 4:04:59511 days ago1676261099IN
0x0f2cd124...f6EF65860
0 ETH0.0022767616.50237255
Stake166088652023-02-11 23:41:11512 days ago1676158871IN
0x0f2cd124...f6EF65860
0 ETH0.0019415116.17346698
Stake166062462023-02-11 14:54:35513 days ago1676127275IN
0x0f2cd124...f6EF65860
0 ETH0.0019998916.65980725
Unstake166055392023-02-11 12:32:47513 days ago1676118767IN
0x0f2cd124...f6EF65860
0 ETH0.0020875915.67660685
Unstake166054502023-02-11 12:14:47513 days ago1676117687IN
0x0f2cd124...f6EF65860
0 ETH0.0019824214.88690275
Stake165991742023-02-10 15:12:23514 days ago1676041943IN
0x0f2cd124...f6EF65860
0 ETH0.0053444744.52135332
Unstake165961712023-02-10 5:09:11514 days ago1676005751IN
0x0f2cd124...f6EF65860
0 ETH0.0025968618.8224664
Stake165931292023-02-09 18:57:35515 days ago1675969055IN
0x0f2cd124...f6EF65860
0 ETH0.00457338.09475032
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CardKeeper

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-03-13
*/

/**
 *Submitted for verification at Etherscan.io on 2020-10-18
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.6.0;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
contract Context {
    // Empty internal constructor, to prevent people from mistakenly deploying
    // an instance of this contract, which should be used via inheritance.
    constructor () internal { }
    // solhint-disable-previous-line no-empty-blocks

    function _msgSender() internal view returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(isOwner(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Returns true if the caller is the current owner.
     */
    function isOwner() public view returns (bool) {
        return _msgSender() == _owner;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     */
    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}


/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

interface RMU {
    function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _amount, bytes calldata _data) external;
    function safeBatchTransferFrom(address _from, address _to, uint256[] calldata _ids, uint256[] calldata _amounts, bytes calldata _data) external;
    function setApprovalForAll(address _operator, bool _approved) external;
    function isApprovedForAll(address _owner, address _operator) external view returns (bool isOperator);
    function balanceOf(address _owner, uint256 _id) external view returns (uint256);
    function mintBatch(address user, uint256[] calldata ids, uint256[] calldata amounts) external;
    function burn(
        address _account,
        uint256 _id,
        uint256 _amount
    ) external;
}

interface Toshicash {
    function totalSupply() external view returns (uint256);
    function totalClaimed() external view returns (uint256);
    function addClaimed(uint256 _amount) external;
    function setClaimed(uint256 _amount) external;
    function transfer(address receiver, uint numTokens) external returns (bool);
    function transferFrom(address owner, address buyer, uint numTokens) external returns (bool);
    function balanceOf(address owner) external view returns (uint256);
    function mint(address _to, uint256 _amount) external;
    function burn(address _account, uint256 value) external;
}


/**
 *  This contract was forked from Rope's VendingMachine contract:
 *  https://etherscan.io/address/0x4c842514fb55323acc51aa575ec4b7d1be1e0694#code
 *
 *  All code attribution goes to Rope and the Rope development team:
 *  https://rope.lol
 */

contract CardKeeper is Ownable {
    using SafeMath for uint256;

    struct CardSet {
        uint256[] cardIds;
        uint256 toshicashPerDayPerCard;
    }

    RMU public ropeMaker;
    Toshicash public toshicash;

    uint256[] public cardSetList;
    uint256 public highestCardId;
    mapping (uint256 => CardSet) public cardSets;
    mapping (uint256 => uint256) public cardToSetMap;

    mapping (address => mapping(uint256 => uint256)) public userCards;
    mapping (address => uint256) public userLastUpdate;
    
    mapping(uint256 => mapping(address => UserInfoERC1155)) public userInfoERC1155;
    mapping(uint256 => uint256) public eRC1155MultiplierIds;
    mapping(address => ERC1155MultiplierUserInfo) public userMultiplier;

    event Stake(address indexed user, uint256[] cardIds,  uint256[] amounts);
    event Unstake(address indexed user, uint256[] cardIds,  uint256[] amounts);
    event Harvest(address indexed user, uint256 amount);
    

        struct UserInfoERC1155 {
        uint256 amountInPool;
        
        /*
         *  At any point in time, the amount of ToshiCoin earned by a user waiting to be claimed is:
         *
         *    Pending claim = (user.amountInPool * pool.coinsEarnedPerToken) - user.coinsReceivedToDate
         *
         *  Whenever a user deposits or withdraws tokens to a pool, the following occurs:
         *   1. The pool's `coinsEarnedPerToken` is rebalanced to account for the new shares in the pool.
         *   2. The `lastRewardBlock` is updated to the latest block.
         *   3. The user receives the pending claim sent to their address.
         *   4. The user's `amountInPool` and `coinsReceivedToDate` get updated for this pool.
         */
    }
        struct ERC1155Multiplier {
        uint256 id;
        uint256 percentBoost;
       
    }
    struct ERC1155MultiplierUserInfo {
        uint256 multiplier;
        uint256 total;
       
    }

    ERC1155Multiplier[] public eRC1155Multiplier;


    constructor(RMU _ropeMakerAddr, Toshicash _toshicashAddr) public {
        ropeMaker = _ropeMakerAddr;
        toshicash = _toshicashAddr;

    }

    // Utility function to check if a value is inside an array
    function _isInArray(uint256 _value, uint256[] memory _array) internal pure returns(bool) {
        uint256 length = _array.length;
        for (uint256 i = 0; i < length; ++i) {
            if (_array[i] == _value) {
                return true;
            }
        }

        return false;
    }

    // Index of the value in the return array is the cardId, value is whether card is staked or not
    function getCardsStakedOfAddress(address _user) public view returns(uint256[] memory) {
        uint256[] memory cardsStaked = new uint256[](highestCardId + 1);

        for (uint256 i = 0; i < highestCardId + 1; ++i) {
            cardsStaked[i] = userCards[_user][i];
        }

        return cardsStaked;
    }

    // Returns the list of cardIds which are part of a set
    function getCardIdListOfSet(uint256 _setId) external view returns(uint256[] memory) {
        return cardSets[_setId].cardIds;
    }


    function addCardSet(uint256 _setId, uint256[] memory _cardIds, uint256 _toshicashPerDayPerCard) public onlyOwner {
       

        uint256 length = _cardIds.length;
        for (uint256 i = 0; i < length; ++i) {
            uint256 cardId = _cardIds[i];

            if (cardId > highestCardId) {
                highestCardId = cardId;
            }

            // Check all cards to assign arent already part of another set
            require(cardToSetMap[cardId] == 0, "Card already assigned to a set");

            // Assign to set
            cardToSetMap[cardId] = _setId;
        }

        if (_isInArray(_setId, cardSetList) == false) {
            cardSetList.push(_setId);
        }

        cardSets[_setId] = CardSet({
            cardIds: _cardIds,
            toshicashPerDayPerCard: _toshicashPerDayPerCard
        });
    }



    // Returns the total toshicash pending for a given address
    // Can include the bonus from toshicashBooster or not
    function totalPendingToshicashOfAddress(address _user, bool _includeToshicashBooster) public view returns (uint256) {
        uint256 totalToshicashPerDay = 0;

        uint256 length = cardSetList.length;
        for (uint256 i = 0; i < length; ++i) {
            uint256 setId = cardSetList[i];
            CardSet storage set = cardSets[setId];

            uint256 cardLength = set.cardIds.length;

            uint256 setToshicashPerDay = 0;
            for (uint256 j = 0; j < cardLength; ++j) {


                setToshicashPerDay = setToshicashPerDay.add(set.toshicashPerDayPerCard.mul(userCards[_user][set.cardIds[j]]));
            }


            totalToshicashPerDay = totalToshicashPerDay.add(setToshicashPerDay);
        }

        // Apply toshicashBooster bonus
        if (_includeToshicashBooster) {
            uint256 toAdd = 0;
            totalToshicashPerDay = totalToshicashPerDay.add(toAdd);
        }

        uint256 lastUpdate = userLastUpdate[_user];
        uint256 blockTime = block.timestamp;
        return blockTime.sub(lastUpdate).mul(totalToshicashPerDay.div(86400));
    }


    //////////////////////////////
    //////////////////////////////
    //////////////////////////////

    // Set manually the highestCardId, in case there has been a mistake while adding a set
    // (This value is used to know the range in which iterate to get the list of staked cards for an address)
    function setHighestCardId(uint256 _highestId) public onlyOwner {
        require(_highestId > 0);
        highestCardId = _highestId;
    }




    // Set the toshicashPerDayPerCard value for a list of sets
    function setToshicashRateOfSets(uint256[] memory _setIds, uint256[] memory _toshicashPerDayPerCard) public onlyOwner {
        require(_setIds.length == _toshicashPerDayPerCard.length, "_setId and _toshicashPerDayPerCard have different length");

        for (uint256 i = 0; i < _setIds.length; ++i) {
            require(cardSets[_setIds[i]].cardIds.length > 0, "Set is empty");
            cardSets[_setIds[i]].toshicashPerDayPerCard = _toshicashPerDayPerCard[i];
        }
    }


    function harvest() public {
        ERC1155MultiplierUserInfo storage multiplier = userMultiplier[msg.sender];
        uint256 pendingToshicash = totalPendingToshicashOfAddress(msg.sender, true);
        userLastUpdate[msg.sender] = block.timestamp;
        pendingToshicash = pendingToshicash.add( pendingToshicash.mul(multiplier.multiplier).div( 100));
        if (pendingToshicash > 0) {
            toshicash.mint(msg.sender, pendingToshicash);
        }

        emit Harvest(msg.sender, pendingToshicash);
    }

    function stake(uint256[] memory _cardIds, uint256[] memory _cardAmounts) public {
        require(_cardIds.length > 0, "_cardIds array empty");

        harvest();

        for (uint256 i = 0; i < _cardIds.length; ++i) {

            require(cardToSetMap[_cardIds[i]] != 0, "Card is not part of any set");
        }

        
        ropeMaker.mintBatch(address(this), _cardIds, _cardAmounts);

        for (uint256 i = 0; i < _cardIds.length; ++i) {
            userCards[msg.sender][_cardIds[i]] = userCards[msg.sender][_cardIds[i]].add(_cardAmounts[i]);
            ropeMaker.burn(msg.sender, _cardIds[i], _cardAmounts[i]);
        }

        emit Stake(msg.sender, _cardIds, _cardAmounts);
    }


    function unstake(uint256[] memory _cardIds, uint256[] memory _cardAmounts) public {
        require(_cardIds.length > 0, "_cardIds array empty");

        harvest();

        for (uint256 i = 0; i < _cardIds.length; ++i) {
            require(userCards[msg.sender][_cardIds[i]] >= _cardAmounts[i], "Card not staked");
            userCards[msg.sender][_cardIds[i]] = userCards[msg.sender][_cardIds[i]].sub(_cardAmounts[i]);
            ropeMaker.burn(address(this), _cardIds[i], _cardAmounts[i]);
        }

        
        ropeMaker.mintBatch(msg.sender, _cardIds, _cardAmounts);
        

        emit Unstake(msg.sender, _cardIds, _cardAmounts);
    }

    // Withdraw without rewards
    function emergencyUnstake(uint256[] memory _cardIds, uint256[] memory _cardAmounts) public {
        userLastUpdate[msg.sender] = block.timestamp;

        uint256 length = _cardIds.length;
        for (uint256 i = 0; i < length; ++i) {
            uint256 cardId = _cardIds[i];

            require(userCards[msg.sender][cardId] >= _cardAmounts[i], "Card not staked");
            userCards[msg.sender][cardId] = userCards[msg.sender][cardId].sub(_cardAmounts[i]);
        }

        ropeMaker.safeBatchTransferFrom(address(this), msg.sender, _cardIds, _cardAmounts, "");
    }

    function userMultiplierValue(address user) public view returns (uint256) {

        return userMultiplier[msg.sender].multiplier;
    }
    
    function userERC155StakedTotal(address user) public view returns (uint256) {

        return userMultiplier[msg.sender].total;
    }
    function addERC1155Multiplier(uint256 _id, uint256 _percentBoost) public onlyOwner {
        require(
            eRC1155MultiplierIds[_id] == 0,
            "ToshiCashFarm: Cannot add duplicate Toshimon ERC1155"
        );

        eRC1155Multiplier.push(
            ERC1155Multiplier({
                id:_id,
                percentBoost: _percentBoost
            })
        );

        eRC1155MultiplierIds[_id] = 1;
    }
      /**
     * @dev Deposit tokens into a pool and claim pending reward.
     */
    function depositERC1155(uint256 poolId, uint256 quantity) public {

        ERC1155Multiplier storage erc1155 = eRC1155Multiplier[poolId];
        UserInfoERC1155 storage user = userInfoERC1155[poolId][msg.sender];
        ERC1155MultiplierUserInfo storage multiplier = userMultiplier[msg.sender];
         uint256[] memory cardid = new uint256[](1);
         uint256[] memory cardamount = new uint256[](1);
        cardid[0] = erc1155.id;
        cardamount[0] = quantity;

         
        harvest();
        
        ropeMaker.burn(msg.sender, erc1155.id, quantity);


        
        ropeMaker.mintBatch(address(this), cardid, cardamount);
        
        
        user.amountInPool = user.amountInPool.add(quantity);
        multiplier.multiplier = multiplier.multiplier.add(erc1155.percentBoost.mul(quantity));
        multiplier.total = multiplier.total.add(erc1155.percentBoost.mul(quantity));
        if(multiplier.multiplier > 100){
            multiplier.multiplier = 100;
        }

    }
      /**
     * @dev Deposit tokens into a pool and claim pending reward.
     */
    function withdrawERC1155(uint256 poolId, uint256 quantity) public {

        ERC1155Multiplier storage erc1155 = eRC1155Multiplier[poolId];
        UserInfoERC1155 storage user = userInfoERC1155[poolId][msg.sender];
        ERC1155MultiplierUserInfo storage multiplier = userMultiplier[msg.sender];
        
        
        require(
            user.amountInPool >= quantity,
            "ToshiCoinFarm: User does not have enough NFTS to withdraw from this pool"
        );
        harvest();
        
        user.amountInPool = user.amountInPool.sub(quantity);
        
        
        multiplier.total = multiplier.total.sub(erc1155.percentBoost.mul(quantity));
        multiplier.multiplier = multiplier.total.mul(quantity);
        if(multiplier.multiplier > 100){
            multiplier.multiplier = 100;
        }
        
        ropeMaker.burn(address(this), erc1155.id, quantity);
         uint256[] memory cardid = new uint256[](1);
         uint256[] memory cardamount = new uint256[](1);
        cardid[0] = erc1155.id;
        cardamount[0] = quantity;

        
        ropeMaker.mintBatch(msg.sender, cardid, cardamount);
        


    }



    /////////
    /////////
    /////////

    /**
     * @notice Handle the receipt of a single ERC1155 token type
     * @dev An ERC1155-compliant smart contract MUST call this function on the token recipient contract, at the end of a `safeTransferFrom` after the balance has been updated
     * This function MAY throw to revert and reject the transfer
     * Return of other amount than the magic value MUST result in the transaction being reverted
     * Note: The token contract address is always the message sender
     * @param _operator  The address which called the `safeTransferFrom` function
     * @param _from      The address which previously owned the token
     * @param _id        The id of the token being transferred
     * @param _amount    The amount of tokens being transferred
     * @param _data      Additional data with no specified format
     * @return           `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))`
     */
    function onERC1155Received(address _operator, address _from, uint256 _id, uint256 _amount, bytes calldata _data) external returns(bytes4) {
        return 0xf23a6e61;
    }

    /**
     * @notice Handle the receipt of multiple ERC1155 token types
     * @dev An ERC1155-compliant smart contract MUST call this function on the token recipient contract, at the end of a `safeBatchTransferFrom` after the balances have been updated
     * This function MAY throw to revert and reject the transfer
     * Return of other amount than the magic value WILL result in the transaction being reverted
     * Note: The token contract address is always the message sender
     * @param _operator  The address which called the `safeBatchTransferFrom` function
     * @param _from      The address which previously owned the token
     * @param _ids       An array containing ids of each token being transferred
     * @param _amounts   An array containing amounts of each token being transferred
     * @param _data      Additional data with no specified format
     * @return           `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))`
     */
    function onERC1155BatchReceived(address _operator, address _from, uint256[] calldata _ids, uint256[] calldata _amounts, bytes calldata _data) external returns(bytes4) {
        return 0xbc197c81;
    }

    /**
     * @notice Indicates whether a contract implements the `ERC1155TokenReceiver` functions and so can accept ERC1155 token types.
     * @param  interfaceID The ERC-165 interface ID that is queried for support.s
     * @dev This function MUST return true if it implements the ERC1155TokenReceiver interface and ERC-165 interface.
     *      This function MUST NOT consume more than 5,000 gas.
     * @return Wheter ERC-165 or ERC1155TokenReceiver interfaces are supported.
     */
    function supportsInterface(bytes4 interfaceID) external view returns (bool) {
        return  interfaceID == 0x01ffc9a7 ||    // ERC-165 support (i.e. `bytes4(keccak256('supportsInterface(bytes4)'))`).
        interfaceID == 0x4e2312e0;      // ERC-1155 `ERC1155TokenReceiver` support (i.e. `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)")) ^ bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))`).
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract RMU","name":"_ropeMakerAddr","type":"address"},{"internalType":"contract Toshicash","name":"_toshicashAddr","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Harvest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"cardIds","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Stake","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"cardIds","type":"uint256[]"},{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Unstake","type":"event"},{"inputs":[{"internalType":"uint256","name":"_setId","type":"uint256"},{"internalType":"uint256[]","name":"_cardIds","type":"uint256[]"},{"internalType":"uint256","name":"_toshicashPerDayPerCard","type":"uint256"}],"name":"addCardSet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_percentBoost","type":"uint256"}],"name":"addERC1155Multiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"cardSetList","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"cardSets","outputs":[{"internalType":"uint256","name":"toshicashPerDayPerCard","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"cardToSetMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"poolId","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"depositERC1155","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"eRC1155Multiplier","outputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"percentBoost","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"eRC1155MultiplierIds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_cardIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_cardAmounts","type":"uint256[]"}],"name":"emergencyUnstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_setId","type":"uint256"}],"name":"getCardIdListOfSet","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getCardsStakedOfAddress","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"harvest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"highestCardId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256[]","name":"_ids","type":"uint256[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ropeMaker","outputs":[{"internalType":"contract RMU","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_highestId","type":"uint256"}],"name":"setHighestCardId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_setIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_toshicashPerDayPerCard","type":"uint256[]"}],"name":"setToshicashRateOfSets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_cardIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_cardAmounts","type":"uint256[]"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toshicash","outputs":[{"internalType":"contract Toshicash","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"bool","name":"_includeToshicashBooster","type":"bool"}],"name":"totalPendingToshicashOfAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_cardIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_cardAmounts","type":"uint256[]"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"userCards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"userERC155StakedTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"userInfoERC1155","outputs":[{"internalType":"uint256","name":"amountInPool","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userLastUpdate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userMultiplier","outputs":[{"internalType":"uint256","name":"multiplier","type":"uint256"},{"internalType":"uint256","name":"total","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"userMultiplierValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"poolId","type":"uint256"},{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"withdrawERC1155","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506040516200409638038062004096833981810160405260408110156200003757600080fd5b8101908080519060200190929190805190602001909291905050506000620000646200018c60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505062000194565b600033905090565b613ef280620001a46000396000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c80638da5cb5b1161011a578063bc197c81116100ad578063eb6494611161007c578063eb64946114610f7e578063ed48193e14610fc0578063f23a6e611461108c578063f2fde38b1461118c578063f8d9be68146111d057610206565b8063bc197c8114610be2578063ddcf489314610d78578063e683ad4414610dd0578063ea6e491e14610f1c57610206565b8063b1a03b6b116100e9578063b1a03b6b146108a9578063b1adb08314610908578063b48067db14610a54578063b4f7901914610a9657610206565b80638da5cb5b146106c75780638f32d59b146106fb5780639c28cd211461071b578063aa31f0531461075d57610206565b80634641257d1161019d5780635f0b3a8d1161016c5780635f0b3a8d14610555578063631667dd1461058d5780636585fe98146105d6578063715018a61461063a57806383fff1ab1461064457610206565b80634641257d1461047957806346716e62146104835780634eb84bff146104c55780635be56ac7146104fd57610206565b80632935b2a8116101d95780632935b2a81461039d5780633cfb3f73146103d5578063419920921461042d57806341d83e7a1461044b57610206565b806301ffc9a71461020b5780630ad6e8f71461026e578063172b6b62146102a257806327a1cdab14610304575b600080fd5b6102566004803603602081101561022157600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050611204565b60405180821515815260200191505060405180910390f35b610276611266565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102ee600480360360408110156102b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061128c565b6040518082815260200191505060405180910390f35b6103466004803603602081101561031a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112b1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561038957808201518184015260208101905061036e565b505050509050019250505060405180910390f35b6103d3600480360360408110156103b357600080fd5b810190808035906020019092919080359060200190929190505050611390565b005b610417600480360360208110156103eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117b4565b6040518082815260200191505060405180910390f35b6104356117cc565b6040518082815260200191505060405180910390f35b6104776004803603602081101561046157600080fd5b81019080803590602001909291905050506117d2565b005b610481611863565b005b6104af6004803603602081101561049957600080fd5b8101908080359060200190929190505050611a3e565b6040518082815260200191505060405180910390f35b6104fb600480360360408110156104db57600080fd5b810190808035906020019092919080359060200190929190505050611a5c565b005b61053f6004803603602081101561051357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ec7565b6040518082815260200191505060405180910390f35b61058b6004803603604081101561056b57600080fd5b810190808035906020019092919080359060200190929190505050611f13565b005b6105b9600480360360208110156105a357600080fd5b810190808035906020019092919050505061206c565b604051808381526020018281526020019250505060405180910390f35b610624600480360360408110156105ec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061209d565b6040518082815260200191505060405180910390f35b610642612277565b005b6106706004803603602081101561065a57600080fd5b81019080803590602001909291905050506123af565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106b3578082015181840152602081019050610698565b505050509050019250505060405180910390f35b6106cf61241d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610703612446565b60405180821515815260200191505060405180910390f35b6107476004803603602081101561073157600080fd5b81019080803590602001909291905050506124a4565b6040518082815260200191505060405180910390f35b6108a76004803603604081101561077357600080fd5b810190808035906020019064010000000081111561079057600080fd5b8201836020820111156107a257600080fd5b803590602001918460208302840111640100000000831117156107c457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561082457600080fd5b82018360208201111561083657600080fd5b8035906020019184602083028401116401000000008311171561085857600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506124bc565b005b6108eb600480360360208110156108bf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612845565b604051808381526020018281526020019250505060405180910390f35b610a526004803603604081101561091e57600080fd5b810190808035906020019064010000000081111561093b57600080fd5b82018360208201111561094d57600080fd5b8035906020019184602083028401116401000000008311171561096f57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156109cf57600080fd5b8201836020820111156109e157600080fd5b80359060200191846020830284011164010000000083111715610a0357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050612869565b005b610a8060048036036020811015610a6a57600080fd5b8101908080359060200190929190505050612dc6565b6040518082815260200191505060405180910390f35b610be060048036036040811015610aac57600080fd5b8101908080359060200190640100000000811115610ac957600080fd5b820183602082011115610adb57600080fd5b80359060200191846020830284011164010000000083111715610afd57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610b5d57600080fd5b820183602082011115610b6f57600080fd5b80359060200191846020830284011164010000000083111715610b9157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050612de7565b005b610d43600480360360a0811015610bf857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610c5557600080fd5b820183602082011115610c6757600080fd5b80359060200191846020830284011164010000000083111715610c8957600080fd5b909192939192939080359060200190640100000000811115610caa57600080fd5b820183602082011115610cbc57600080fd5b80359060200191846020830284011164010000000083111715610cde57600080fd5b909192939192939080359060200190640100000000811115610cff57600080fd5b820183602082011115610d1157600080fd5b80359060200191846001830284011164010000000083111715610d3357600080fd5b9091929391929390505050612fba565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b610dba60048036036020811015610d8e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612fd2565b6040518082815260200191505060405180910390f35b610f1a60048036036040811015610de657600080fd5b8101908080359060200190640100000000811115610e0357600080fd5b820183602082011115610e1557600080fd5b80359060200191846020830284011164010000000083111715610e3757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610e9757600080fd5b820183602082011115610ea957600080fd5b80359060200191846020830284011164010000000083111715610ecb57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929050505061301e565b005b610f6860048036036040811015610f3257600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613544565b6040518082815260200191505060405180910390f35b610faa60048036036020811015610f9457600080fd5b810190808035906020019092919050505061356f565b6040518082815260200191505060405180910390f35b61108a60048036036060811015610fd657600080fd5b810190808035906020019092919080359060200190640100000000811115610ffd57600080fd5b82018360208201111561100f57600080fd5b8035906020019184602083028401116401000000008311171561103157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190505050613587565b005b611157600480360360a08110156110a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561111357600080fd5b82018360208201111561112557600080fd5b8035906020019184600183028401116401000000008311171561114757600080fd5b90919293919293905050506137d2565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b6111ce600480360360208110156111a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506137e8565b005b6111d861386e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061125f5750634e2312e060e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6007602052816000526040600020602052806000526040600020600091509150505481565b60608060016004540167ffffffffffffffff811180156112d057600080fd5b506040519080825280602002602001820160405280156112ff5781602001602082028036833780820191505090505b50905060005b60016004540181101561138657600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008281526020019081526020016000205482828151811061136f57fe5b602002602001018181525050806001019050611305565b5080915050919050565b6000600c838154811061139f57fe5b9060005260206000209060020201905060006009600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506060600167ffffffffffffffff8111801561146057600080fd5b5060405190808252806020026020018201604052801561148f5781602001602082028036833780820191505090505b5090506060600167ffffffffffffffff811180156114ac57600080fd5b506040519080825280602002602001820160405280156114db5781602001602082028036833780820191505090505b5090508460000154826000815181106114f057fe5b602002602001018181525050858160008151811061150a57fe5b60200260200101818152505061151e611863565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f5298aca338760000154896040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019350505050600060405180830381600087803b1580156115bd57600080fd5b505af11580156115d1573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d81d0a153084846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561168857808201518184015260208101905061166d565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156116ca5780820151818401526020810190506116af565b5050505090500195505050505050600060405180830381600087803b1580156116f257600080fd5b505af1158015611706573d6000803e3d6000fd5b5050505061172186856000015461389490919063ffffffff16565b846000018190555061175661174387876001015461391c90919063ffffffff16565b846000015461389490919063ffffffff16565b836000018190555061178b61177887876001015461391c90919063ffffffff16565b846001015461389490919063ffffffff16565b83600101819055506064836000015411156117ab57606483600001819055505b50505050505050565b60086020528060005260406000206000915090505481565b60045481565b6117da612446565b61184c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000811161185957600080fd5b8060048190555050565b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060006118b333600161209d565b905042600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611935611926606461191885600001548561391c90919063ffffffff16565b6139a290919063ffffffff16565b8261389490919063ffffffff16565b905060008111156119ec57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1933836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156119d357600080fd5b505af11580156119e7573d6000803e3d6000fd5b505050505b3373ffffffffffffffffffffffffffffffffffffffff167fc9695243a805adb74c91f28311176c65b417e842d5699893cef56d18bfa48cba826040518082815260200191505060405180910390a25050565b60056020528060005260406000206000915090508060010154905081565b6000600c8381548110611a6b57fe5b9060005260206000209060020201905060006009600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508382600001541015611b6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526048815260200180613e3d6048913960600191505060405180910390fd5b611b77611863565b611b8e8483600001546139ec90919063ffffffff16565b8260000181905550611bc3611bb085856001015461391c90919063ffffffff16565b82600101546139ec90919063ffffffff16565b8160010181905550611be284826001015461391c90919063ffffffff16565b8160000181905550606481600001541115611c0257606481600001819055505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f5298aca308560000154876040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019350505050600060405180830381600087803b158015611ca157600080fd5b505af1158015611cb5573d6000803e3d6000fd5b505050506060600167ffffffffffffffff81118015611cd357600080fd5b50604051908082528060200260200182016040528015611d025781602001602082028036833780820191505090505b5090506060600167ffffffffffffffff81118015611d1f57600080fd5b50604051908082528060200260200182016040528015611d4e5781602001602082028036833780820191505090505b509050846000015482600081518110611d6357fe5b6020026020010181815250508581600081518110611d7d57fe5b602002602001018181525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d81d0a153384846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015611e3c578082015181840152602081019050611e21565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015611e7e578082015181840152602081019050611e63565b5050505090500195505050505050600060405180830381600087803b158015611ea657600080fd5b505af1158015611eba573d6000803e3d6000fd5b5050505050505050505050565b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050919050565b611f1b612446565b611f8d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600a60008481526020019081526020016000205414611ff9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526034815260200180613dc26034913960400191505060405180910390fd5b600c6040518060400160405280848152602001838152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550506001600a6000848152602001908152602001600020819055505050565b600c818154811061207957fe5b90600052602060002090600202016000915090508060000154908060010154905082565b600080600090506000600380549050905060005b818110156121c8576000600382815481106120c857fe5b9060005260206000200154905060006005600083815260200190815260200160002090506000816000018054905090506000805b828110156121a357612196612187600760008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087600001858154811061215a57fe5b9060005260206000200154815260200190815260200160002054866001015461391c90919063ffffffff16565b8361389490919063ffffffff16565b91508060010190506120fc565b506121b7818861389490919063ffffffff16565b9650505050508060010190506120b1565b5083156121e85760006121e4818461389490919063ffffffff16565b9250505b6000600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600042905061226b61224a62015180866139a290919063ffffffff16565b61225d84846139ec90919063ffffffff16565b61391c90919063ffffffff16565b94505050505092915050565b61227f612446565b6122f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60606005600083815260200190815260200160002060000180548060200260200160405190810160405280929190818152602001828054801561241157602002820191906000526020600020905b8154815260200190600101908083116123fd575b50505050509050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612488613a36565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b60066020528060005260406000206000915090505481565b42600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008251905060005b818110156126d857600084828151811061251f57fe5b6020026020010151905083828151811061253557fe5b6020026020010151600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020541015612602576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f43617264206e6f74207374616b6564000000000000000000000000000000000081525060200191505060405180910390fd5b61267884838151811061261157fe5b6020026020010151600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020546139ec90919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000208190555050806001019050612509565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb2c2d6303386866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845286818151815260200191508051906020019060200280838360005b838110156127ad578082015181840152602081019050612792565b50505050905001848103835285818151815260200191508051906020019060200280838360005b838110156127ef5780820151818401526020810190506127d4565b50505050905001848103825260008152602001602001975050505050505050600060405180830381600087803b15801561282857600080fd5b505af115801561283c573d6000803e3d6000fd5b50505050505050565b600b6020528060005260406000206000915090508060000154908060010154905082565b60008251116128e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5f6361726449647320617272617920656d70747900000000000000000000000081525060200191505060405180910390fd5b6128e8611863565b60005b8251811015612bb45781818151811061290057fe5b6020026020010151600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085848151811061295557fe5b602002602001015181526020019081526020016000205410156129e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f43617264206e6f74207374616b6564000000000000000000000000000000000081525060200191505060405180910390fd5b612a698282815181106129ef57fe5b6020026020010151600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868581518110612a4457fe5b60200260200101518152602001908152602001600020546139ec90919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858481518110612ab657fe5b6020026020010151815260200190815260200160002081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f5298aca30858481518110612b1b57fe5b6020026020010151858581518110612b2f57fe5b60200260200101516040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019350505050600060405180830381600087803b158015612b9157600080fd5b505af1158015612ba5573d6000803e3d6000fd5b505050508060010190506128eb565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d81d0a153384846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015612c68578082015181840152602081019050612c4d565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015612caa578082015181840152602081019050612c8f565b5050505090500195505050505050600060405180830381600087803b158015612cd257600080fd5b505af1158015612ce6573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff167f5cca7afe5a35c97edc51b2536c4f4ba51412a440d622a712593a8063e2fc28598383604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015612d6b578082015181840152602081019050612d50565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015612dad578082015181840152602081019050612d92565b5050505090500194505050505060405180910390a25050565b60038181548110612dd357fe5b906000526020600020016000915090505481565b612def612446565b612e61576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8051825114612ebb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180613e856038913960400191505060405180910390fd5b60005b8251811015612fb557600060056000858481518110612ed957fe5b602002602001015181526020019081526020016000206000018054905011612f69576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f53657420697320656d707479000000000000000000000000000000000000000081525060200191505060405180910390fd5b818181518110612f7557fe5b602002602001015160056000858481518110612f8d57fe5b6020026020010151815260200190815260200160002060010181905550806001019050612ebe565b505050565b600063bc197c8160e01b905098975050505050505050565b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b6000825111613095576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5f6361726449647320617272617920656d70747900000000000000000000000081525060200191505060405180910390fd5b61309d611863565b60005b8251811015613151576000600660008584815181106130bb57fe5b60200260200101518152602001908152602001600020541415613146576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f43617264206973206e6f742070617274206f6620616e7920736574000000000081525060200191505060405180910390fd5b8060010190506130a0565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d81d0a153084846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156132055780820151818401526020810190506131ea565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561324757808201518184015260208101905061322c565b5050505090500195505050505050600060405180830381600087803b15801561326f57600080fd5b505af1158015613283573d6000803e3d6000fd5b5050505060005b82518110156134675761331c8282815181106132a257fe5b6020026020010151600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008685815181106132f757fe5b602002602001015181526020019081526020016000205461389490919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085848151811061336957fe5b6020026020010151815260200190815260200160002081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f5298aca338584815181106133ce57fe5b60200260200101518585815181106133e257fe5b60200260200101516040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019350505050600060405180830381600087803b15801561344457600080fd5b505af1158015613458573d6000803e3d6000fd5b5050505080600101905061328a565b503373ffffffffffffffffffffffffffffffffffffffff167f1c4fe6d0791be96830cfd51a7862e28509381800aadaf1591c1fd27c836910f38383604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156134e95780820151818401526020810190506134ce565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561352b578082015181840152602081019050613510565b5050505090500194505050505060405180910390a25050565b6009602052816000526040600020602052806000526040600020600091509150508060000154905081565b600a6020528060005260406000206000915090505481565b61358f612446565b613601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008251905060005b818110156136e957600084828151811061362057fe5b6020026020010151905060045481111561363c57806004819055505b60006006600083815260200190815260200160002054146136c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4361726420616c72656164792061737369676e656420746f206120736574000081525060200191505060405180910390fd5b8560066000838152602001908152602001600020819055505080600101905061360a565b506000151561374885600380548060200260200160405190810160405280929190818152602001828054801561373e57602002820191906000526020600020905b81548152602001906001019080831161372a575b5050505050613a3e565b1515141561377a5760038490806001815401808255809150506001900390600052602060002001600090919091909150555b6040518060400160405280848152602001838152506005600086815260200190815260200160002060008201518160000190805190602001906137be929190613d57565b506020820151816001015590505050505050565b600063f23a6e6160e01b90509695505050505050565b6137f0612446565b613862576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61386b81613a8e565b50565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080828401905083811015613912576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008083141561392f576000905061399c565b600082840290508284828161394057fe5b0414613997576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613e1c6021913960400191505060405180910390fd5b809150505b92915050565b60006139e483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613bd1565b905092915050565b6000613a2e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613c97565b905092915050565b600033905090565b6000808251905060005b81811015613a815784848281518110613a5d57fe5b60200260200101511415613a7657600192505050613a88565b806001019050613a48565b5060009150505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613b14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613df66026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008083118290613c7d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613c42578082015181840152602081019050613c27565b50505050905090810190601f168015613c6f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581613c8957fe5b049050809150509392505050565b6000838311158290613d44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613d09578082015181840152602081019050613cee565b50505050905090810190601f168015613d365780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b828054828255906000526020600020908101928215613d93579160200282015b82811115613d92578251825591602001919060010190613d77565b5b509050613da09190613da4565b5090565b5b80821115613dbd576000816000905550600101613da5565b509056fe546f736869436173684661726d3a2043616e6e6f7420616464206475706c696361746520546f7368696d6f6e20455243313135354f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f736869436f696e4661726d3a205573657220646f6573206e6f74206861766520656e6f756768204e46545320746f2077697468647261772066726f6d207468697320706f6f6c5f736574496420616e64205f746f7368696361736850657244617950657243617264206861766520646966666572656e74206c656e677468a26469706673582212203e058f95e356a12c22794a8275a099c204bf416992cb27f1c2c86fddc33ce27764736f6c634300060c0033000000000000000000000000d2d2a84f0eb587f70e181a0c4b252c2c053f80cb000000000000000000000000b6e0b9edc711c89b9259e5ff04af48255c500ead

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102065760003560e01c80638da5cb5b1161011a578063bc197c81116100ad578063eb6494611161007c578063eb64946114610f7e578063ed48193e14610fc0578063f23a6e611461108c578063f2fde38b1461118c578063f8d9be68146111d057610206565b8063bc197c8114610be2578063ddcf489314610d78578063e683ad4414610dd0578063ea6e491e14610f1c57610206565b8063b1a03b6b116100e9578063b1a03b6b146108a9578063b1adb08314610908578063b48067db14610a54578063b4f7901914610a9657610206565b80638da5cb5b146106c75780638f32d59b146106fb5780639c28cd211461071b578063aa31f0531461075d57610206565b80634641257d1161019d5780635f0b3a8d1161016c5780635f0b3a8d14610555578063631667dd1461058d5780636585fe98146105d6578063715018a61461063a57806383fff1ab1461064457610206565b80634641257d1461047957806346716e62146104835780634eb84bff146104c55780635be56ac7146104fd57610206565b80632935b2a8116101d95780632935b2a81461039d5780633cfb3f73146103d5578063419920921461042d57806341d83e7a1461044b57610206565b806301ffc9a71461020b5780630ad6e8f71461026e578063172b6b62146102a257806327a1cdab14610304575b600080fd5b6102566004803603602081101561022157600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050611204565b60405180821515815260200191505060405180910390f35b610276611266565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102ee600480360360408110156102b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061128c565b6040518082815260200191505060405180910390f35b6103466004803603602081101561031a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112b1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561038957808201518184015260208101905061036e565b505050509050019250505060405180910390f35b6103d3600480360360408110156103b357600080fd5b810190808035906020019092919080359060200190929190505050611390565b005b610417600480360360208110156103eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117b4565b6040518082815260200191505060405180910390f35b6104356117cc565b6040518082815260200191505060405180910390f35b6104776004803603602081101561046157600080fd5b81019080803590602001909291905050506117d2565b005b610481611863565b005b6104af6004803603602081101561049957600080fd5b8101908080359060200190929190505050611a3e565b6040518082815260200191505060405180910390f35b6104fb600480360360408110156104db57600080fd5b810190808035906020019092919080359060200190929190505050611a5c565b005b61053f6004803603602081101561051357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ec7565b6040518082815260200191505060405180910390f35b61058b6004803603604081101561056b57600080fd5b810190808035906020019092919080359060200190929190505050611f13565b005b6105b9600480360360208110156105a357600080fd5b810190808035906020019092919050505061206c565b604051808381526020018281526020019250505060405180910390f35b610624600480360360408110156105ec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061209d565b6040518082815260200191505060405180910390f35b610642612277565b005b6106706004803603602081101561065a57600080fd5b81019080803590602001909291905050506123af565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106b3578082015181840152602081019050610698565b505050509050019250505060405180910390f35b6106cf61241d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610703612446565b60405180821515815260200191505060405180910390f35b6107476004803603602081101561073157600080fd5b81019080803590602001909291905050506124a4565b6040518082815260200191505060405180910390f35b6108a76004803603604081101561077357600080fd5b810190808035906020019064010000000081111561079057600080fd5b8201836020820111156107a257600080fd5b803590602001918460208302840111640100000000831117156107c457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192908035906020019064010000000081111561082457600080fd5b82018360208201111561083657600080fd5b8035906020019184602083028401116401000000008311171561085857600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506124bc565b005b6108eb600480360360208110156108bf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612845565b604051808381526020018281526020019250505060405180910390f35b610a526004803603604081101561091e57600080fd5b810190808035906020019064010000000081111561093b57600080fd5b82018360208201111561094d57600080fd5b8035906020019184602083028401116401000000008311171561096f57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156109cf57600080fd5b8201836020820111156109e157600080fd5b80359060200191846020830284011164010000000083111715610a0357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050612869565b005b610a8060048036036020811015610a6a57600080fd5b8101908080359060200190929190505050612dc6565b6040518082815260200191505060405180910390f35b610be060048036036040811015610aac57600080fd5b8101908080359060200190640100000000811115610ac957600080fd5b820183602082011115610adb57600080fd5b80359060200191846020830284011164010000000083111715610afd57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610b5d57600080fd5b820183602082011115610b6f57600080fd5b80359060200191846020830284011164010000000083111715610b9157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050612de7565b005b610d43600480360360a0811015610bf857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190640100000000811115610c5557600080fd5b820183602082011115610c6757600080fd5b80359060200191846020830284011164010000000083111715610c8957600080fd5b909192939192939080359060200190640100000000811115610caa57600080fd5b820183602082011115610cbc57600080fd5b80359060200191846020830284011164010000000083111715610cde57600080fd5b909192939192939080359060200190640100000000811115610cff57600080fd5b820183602082011115610d1157600080fd5b80359060200191846001830284011164010000000083111715610d3357600080fd5b9091929391929390505050612fba565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b610dba60048036036020811015610d8e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612fd2565b6040518082815260200191505060405180910390f35b610f1a60048036036040811015610de657600080fd5b8101908080359060200190640100000000811115610e0357600080fd5b820183602082011115610e1557600080fd5b80359060200191846020830284011164010000000083111715610e3757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610e9757600080fd5b820183602082011115610ea957600080fd5b80359060200191846020830284011164010000000083111715610ecb57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929050505061301e565b005b610f6860048036036040811015610f3257600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613544565b6040518082815260200191505060405180910390f35b610faa60048036036020811015610f9457600080fd5b810190808035906020019092919050505061356f565b6040518082815260200191505060405180910390f35b61108a60048036036060811015610fd657600080fd5b810190808035906020019092919080359060200190640100000000811115610ffd57600080fd5b82018360208201111561100f57600080fd5b8035906020019184602083028401116401000000008311171561103157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190929190505050613587565b005b611157600480360360a08110156110a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561111357600080fd5b82018360208201111561112557600080fd5b8035906020019184600183028401116401000000008311171561114757600080fd5b90919293919293905050506137d2565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b6111ce600480360360208110156111a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506137e8565b005b6111d861386e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061125f5750634e2312e060e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6007602052816000526040600020602052806000526040600020600091509150505481565b60608060016004540167ffffffffffffffff811180156112d057600080fd5b506040519080825280602002602001820160405280156112ff5781602001602082028036833780820191505090505b50905060005b60016004540181101561138657600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008281526020019081526020016000205482828151811061136f57fe5b602002602001018181525050806001019050611305565b5080915050919050565b6000600c838154811061139f57fe5b9060005260206000209060020201905060006009600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506060600167ffffffffffffffff8111801561146057600080fd5b5060405190808252806020026020018201604052801561148f5781602001602082028036833780820191505090505b5090506060600167ffffffffffffffff811180156114ac57600080fd5b506040519080825280602002602001820160405280156114db5781602001602082028036833780820191505090505b5090508460000154826000815181106114f057fe5b602002602001018181525050858160008151811061150a57fe5b60200260200101818152505061151e611863565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f5298aca338760000154896040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019350505050600060405180830381600087803b1580156115bd57600080fd5b505af11580156115d1573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d81d0a153084846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561168857808201518184015260208101905061166d565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156116ca5780820151818401526020810190506116af565b5050505090500195505050505050600060405180830381600087803b1580156116f257600080fd5b505af1158015611706573d6000803e3d6000fd5b5050505061172186856000015461389490919063ffffffff16565b846000018190555061175661174387876001015461391c90919063ffffffff16565b846000015461389490919063ffffffff16565b836000018190555061178b61177887876001015461391c90919063ffffffff16565b846001015461389490919063ffffffff16565b83600101819055506064836000015411156117ab57606483600001819055505b50505050505050565b60086020528060005260406000206000915090505481565b60045481565b6117da612446565b61184c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000811161185957600080fd5b8060048190555050565b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060006118b333600161209d565b905042600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611935611926606461191885600001548561391c90919063ffffffff16565b6139a290919063ffffffff16565b8261389490919063ffffffff16565b905060008111156119ec57600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1933836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156119d357600080fd5b505af11580156119e7573d6000803e3d6000fd5b505050505b3373ffffffffffffffffffffffffffffffffffffffff167fc9695243a805adb74c91f28311176c65b417e842d5699893cef56d18bfa48cba826040518082815260200191505060405180910390a25050565b60056020528060005260406000206000915090508060010154905081565b6000600c8381548110611a6b57fe5b9060005260206000209060020201905060006009600085815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508382600001541015611b6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526048815260200180613e3d6048913960600191505060405180910390fd5b611b77611863565b611b8e8483600001546139ec90919063ffffffff16565b8260000181905550611bc3611bb085856001015461391c90919063ffffffff16565b82600101546139ec90919063ffffffff16565b8160010181905550611be284826001015461391c90919063ffffffff16565b8160000181905550606481600001541115611c0257606481600001819055505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f5298aca308560000154876040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019350505050600060405180830381600087803b158015611ca157600080fd5b505af1158015611cb5573d6000803e3d6000fd5b505050506060600167ffffffffffffffff81118015611cd357600080fd5b50604051908082528060200260200182016040528015611d025781602001602082028036833780820191505090505b5090506060600167ffffffffffffffff81118015611d1f57600080fd5b50604051908082528060200260200182016040528015611d4e5781602001602082028036833780820191505090505b509050846000015482600081518110611d6357fe5b6020026020010181815250508581600081518110611d7d57fe5b602002602001018181525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d81d0a153384846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015611e3c578082015181840152602081019050611e21565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015611e7e578082015181840152602081019050611e63565b5050505090500195505050505050600060405180830381600087803b158015611ea657600080fd5b505af1158015611eba573d6000803e3d6000fd5b5050505050505050505050565b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050919050565b611f1b612446565b611f8d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600a60008481526020019081526020016000205414611ff9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526034815260200180613dc26034913960400191505060405180910390fd5b600c6040518060400160405280848152602001838152509080600181540180825580915050600190039060005260206000209060020201600090919091909150600082015181600001556020820151816001015550506001600a6000848152602001908152602001600020819055505050565b600c818154811061207957fe5b90600052602060002090600202016000915090508060000154908060010154905082565b600080600090506000600380549050905060005b818110156121c8576000600382815481106120c857fe5b9060005260206000200154905060006005600083815260200190815260200160002090506000816000018054905090506000805b828110156121a357612196612187600760008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087600001858154811061215a57fe5b9060005260206000200154815260200190815260200160002054866001015461391c90919063ffffffff16565b8361389490919063ffffffff16565b91508060010190506120fc565b506121b7818861389490919063ffffffff16565b9650505050508060010190506120b1565b5083156121e85760006121e4818461389490919063ffffffff16565b9250505b6000600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600042905061226b61224a62015180866139a290919063ffffffff16565b61225d84846139ec90919063ffffffff16565b61391c90919063ffffffff16565b94505050505092915050565b61227f612446565b6122f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60606005600083815260200190815260200160002060000180548060200260200160405190810160405280929190818152602001828054801561241157602002820191906000526020600020905b8154815260200190600101908083116123fd575b50505050509050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612488613a36565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b60066020528060005260406000206000915090505481565b42600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008251905060005b818110156126d857600084828151811061251f57fe5b6020026020010151905083828151811061253557fe5b6020026020010151600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020541015612602576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f43617264206e6f74207374616b6564000000000000000000000000000000000081525060200191505060405180910390fd5b61267884838151811061261157fe5b6020026020010151600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020546139ec90919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000208190555050806001019050612509565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632eb2c2d6303386866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845286818151815260200191508051906020019060200280838360005b838110156127ad578082015181840152602081019050612792565b50505050905001848103835285818151815260200191508051906020019060200280838360005b838110156127ef5780820151818401526020810190506127d4565b50505050905001848103825260008152602001602001975050505050505050600060405180830381600087803b15801561282857600080fd5b505af115801561283c573d6000803e3d6000fd5b50505050505050565b600b6020528060005260406000206000915090508060000154908060010154905082565b60008251116128e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5f6361726449647320617272617920656d70747900000000000000000000000081525060200191505060405180910390fd5b6128e8611863565b60005b8251811015612bb45781818151811061290057fe5b6020026020010151600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085848151811061295557fe5b602002602001015181526020019081526020016000205410156129e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f43617264206e6f74207374616b6564000000000000000000000000000000000081525060200191505060405180910390fd5b612a698282815181106129ef57fe5b6020026020010151600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868581518110612a4457fe5b60200260200101518152602001908152602001600020546139ec90919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858481518110612ab657fe5b6020026020010151815260200190815260200160002081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f5298aca30858481518110612b1b57fe5b6020026020010151858581518110612b2f57fe5b60200260200101516040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019350505050600060405180830381600087803b158015612b9157600080fd5b505af1158015612ba5573d6000803e3d6000fd5b505050508060010190506128eb565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d81d0a153384846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015612c68578082015181840152602081019050612c4d565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015612caa578082015181840152602081019050612c8f565b5050505090500195505050505050600060405180830381600087803b158015612cd257600080fd5b505af1158015612ce6573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff167f5cca7afe5a35c97edc51b2536c4f4ba51412a440d622a712593a8063e2fc28598383604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015612d6b578082015181840152602081019050612d50565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015612dad578082015181840152602081019050612d92565b5050505090500194505050505060405180910390a25050565b60038181548110612dd357fe5b906000526020600020016000915090505481565b612def612446565b612e61576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8051825114612ebb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180613e856038913960400191505060405180910390fd5b60005b8251811015612fb557600060056000858481518110612ed957fe5b602002602001015181526020019081526020016000206000018054905011612f69576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f53657420697320656d707479000000000000000000000000000000000000000081525060200191505060405180910390fd5b818181518110612f7557fe5b602002602001015160056000858481518110612f8d57fe5b6020026020010151815260200190815260200160002060010181905550806001019050612ebe565b505050565b600063bc197c8160e01b905098975050505050505050565b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b6000825111613095576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f5f6361726449647320617272617920656d70747900000000000000000000000081525060200191505060405180910390fd5b61309d611863565b60005b8251811015613151576000600660008584815181106130bb57fe5b60200260200101518152602001908152602001600020541415613146576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f43617264206973206e6f742070617274206f6620616e7920736574000000000081525060200191505060405180910390fd5b8060010190506130a0565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d81d0a153084846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156132055780820151818401526020810190506131ea565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561324757808201518184015260208101905061322c565b5050505090500195505050505050600060405180830381600087803b15801561326f57600080fd5b505af1158015613283573d6000803e3d6000fd5b5050505060005b82518110156134675761331c8282815181106132a257fe5b6020026020010151600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008685815181106132f757fe5b602002602001015181526020019081526020016000205461389490919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085848151811061336957fe5b6020026020010151815260200190815260200160002081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f5298aca338584815181106133ce57fe5b60200260200101518585815181106133e257fe5b60200260200101516040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019350505050600060405180830381600087803b15801561344457600080fd5b505af1158015613458573d6000803e3d6000fd5b5050505080600101905061328a565b503373ffffffffffffffffffffffffffffffffffffffff167f1c4fe6d0791be96830cfd51a7862e28509381800aadaf1591c1fd27c836910f38383604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156134e95780820151818401526020810190506134ce565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561352b578082015181840152602081019050613510565b5050505090500194505050505060405180910390a25050565b6009602052816000526040600020602052806000526040600020600091509150508060000154905081565b600a6020528060005260406000206000915090505481565b61358f612446565b613601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008251905060005b818110156136e957600084828151811061362057fe5b6020026020010151905060045481111561363c57806004819055505b60006006600083815260200190815260200160002054146136c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4361726420616c72656164792061737369676e656420746f206120736574000081525060200191505060405180910390fd5b8560066000838152602001908152602001600020819055505080600101905061360a565b506000151561374885600380548060200260200160405190810160405280929190818152602001828054801561373e57602002820191906000526020600020905b81548152602001906001019080831161372a575b5050505050613a3e565b1515141561377a5760038490806001815401808255809150506001900390600052602060002001600090919091909150555b6040518060400160405280848152602001838152506005600086815260200190815260200160002060008201518160000190805190602001906137be929190613d57565b506020820151816001015590505050505050565b600063f23a6e6160e01b90509695505050505050565b6137f0612446565b613862576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61386b81613a8e565b50565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080828401905083811015613912576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008083141561392f576000905061399c565b600082840290508284828161394057fe5b0414613997576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613e1c6021913960400191505060405180910390fd5b809150505b92915050565b60006139e483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613bd1565b905092915050565b6000613a2e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613c97565b905092915050565b600033905090565b6000808251905060005b81811015613a815784848281518110613a5d57fe5b60200260200101511415613a7657600192505050613a88565b806001019050613a48565b5060009150505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613b14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613df66026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008083118290613c7d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613c42578082015181840152602081019050613c27565b50505050905090810190601f168015613c6f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581613c8957fe5b049050809150509392505050565b6000838311158290613d44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015613d09578082015181840152602081019050613cee565b50505050905090810190601f168015613d365780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b828054828255906000526020600020908101928215613d93579160200282015b82811115613d92578251825591602001919060010190613d77565b5b509050613da09190613da4565b5090565b5b80821115613dbd576000816000905550600101613da5565b509056fe546f736869436173684661726d3a2043616e6e6f7420616464206475706c696361746520546f7368696d6f6e20455243313135354f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f736869436f696e4661726d3a205573657220646f6573206e6f74206861766520656e6f756768204e46545320746f2077697468647261772066726f6d207468697320706f6f6c5f736574496420616e64205f746f7368696361736850657244617950657243617264206861766520646966666572656e74206c656e677468a26469706673582212203e058f95e356a12c22794a8275a099c204bf416992cb27f1c2c86fddc33ce27764736f6c634300060c0033

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

000000000000000000000000d2d2a84f0eb587f70e181a0c4b252c2c053f80cb000000000000000000000000b6e0b9edc711c89b9259e5ff04af48255c500ead

-----Decoded View---------------
Arg [0] : _ropeMakerAddr (address): 0xd2d2a84f0eB587F70E181A0C4B252c2c053f80cB
Arg [1] : _toshicashAddr (address): 0xb6E0b9eDc711c89B9259E5ff04AF48255C500Ead

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000d2d2a84f0eb587f70e181a0c4b252c2c053f80cb
Arg [1] : 000000000000000000000000b6e0b9edc711c89b9259e5ff04af48255c500ead


Deployed Bytecode Sourcemap

10641:15496:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25664:470;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10814:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11054:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13324:322;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20442:1030;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11126:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10911:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16326:142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17044:527;;;:::i;:::-;;10946:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21564:1189;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19767:135;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19908:442;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12632:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;14863:1140;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2932:140;;;:::i;:::-;;13714:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2121:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2487:94;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10997:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19019:590;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11336:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;18307:671;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10876:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16546:488;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24955:203;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;19617:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17579:718;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11189:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11274:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13858:870;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23762:174;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;3227:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10841:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;25664:470;25734:4;25774:10;25759:25;;:11;:25;;;;:142;;;;25891:10;25876:25;;:11;:25;;;;25759:142;25751:150;;25664:470;;;:::o;10814:20::-;;;;;;;;;;;;;:::o;11054:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13324:322::-;13392:16;13421:28;13482:1;13466:13;;:17;13452:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13421:63;;13502:9;13497:111;13537:1;13521:13;;:17;13517:1;:21;13497:111;;;13577:9;:16;13587:5;13577:16;;;;;;;;;;;;;;;:19;13594:1;13577:19;;;;;;;;;;;;13560:11;13572:1;13560:14;;;;;;;;;;;;;:36;;;;;13540:3;;;;;13497:111;;;;13627:11;13620:18;;;13324:322;;;:::o;20442:1030::-;20520:33;20556:17;20574:6;20556:25;;;;;;;;;;;;;;;;;;20520:61;;20592:28;20623:15;:23;20639:6;20623:23;;;;;;;;;;;:35;20647:10;20623:35;;;;;;;;;;;;;;;20592:66;;20669:44;20716:14;:26;20731:10;20716:26;;;;;;;;;;;;;;;20669:73;;20754:23;20794:1;20780:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20754:42;;20808:27;20852:1;20838:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20808:46;;20877:7;:10;;;20865:6;20872:1;20865:9;;;;;;;;;;;;;:22;;;;;20914:8;20898:10;20909:1;20898:13;;;;;;;;;;;;;:24;;;;;20946:9;:7;:9::i;:::-;20976;;;;;;;;;;;:14;;;20991:10;21003:7;:10;;;21015:8;20976:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21049:9;;;;;;;;;;;:19;;;21077:4;21084:6;21092:10;21049:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21154:31;21176:8;21154:4;:17;;;:21;;:31;;;;:::i;:::-;21134:4;:17;;:51;;;;21220:61;21246:34;21271:8;21246:7;:20;;;:24;;:34;;;;:::i;:::-;21220:10;:21;;;:25;;:61;;;;:::i;:::-;21196:10;:21;;:85;;;;21311:56;21332:34;21357:8;21332:7;:20;;;:24;;:34;;;;:::i;:::-;21311:10;:16;;;:20;;:56;;;;:::i;:::-;21292:10;:16;;:75;;;;21405:3;21381:10;:21;;;:27;21378:85;;;21448:3;21424:10;:21;;:27;;;;21378:85;20442:1030;;;;;;;:::o;11126:50::-;;;;;;;;;;;;;;;;;:::o;10911:28::-;;;;:::o;16326:142::-;2333:9;:7;:9::i;:::-;2325:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16421:1:::1;16408:10;:14;16400:23;;;::::0;::::1;;16450:10;16434:13;:26;;;;16326:142:::0;:::o;17044:527::-;17081:44;17128:14;:26;17143:10;17128:26;;;;;;;;;;;;;;;17081:73;;17165:24;17192:48;17223:10;17235:4;17192:30;:48::i;:::-;17165:75;;17280:15;17251:14;:26;17266:10;17251:26;;;;;;;;;;;;;;;:44;;;;17325:76;17347:53;17396:3;17347:43;17368:10;:21;;;17347:16;:20;;:43;;;;:::i;:::-;:47;;:53;;;;:::i;:::-;17325:16;:20;;:76;;;;:::i;:::-;17306:95;;17435:1;17416:16;:20;17412:97;;;17453:9;;;;;;;;;;;:14;;;17468:10;17480:16;17453:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17412:97;17534:10;17526:37;;;17546:16;17526:37;;;;;;;;;;;;;;;;;;17044:527;;:::o;10946:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;21564:1189::-;21643:33;21679:17;21697:6;21679:25;;;;;;;;;;;;;;;;;;21643:61;;21715:28;21746:15;:23;21762:6;21746:23;;;;;;;;;;;:35;21770:10;21746:35;;;;;;;;;;;;;;;21715:66;;21792:44;21839:14;:26;21854:10;21839:26;;;;;;;;;;;;;;;21792:73;;21939:8;21918:4;:17;;;:29;;21896:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22058:9;:7;:9::i;:::-;22108:31;22130:8;22108:4;:17;;;:21;;:31;;;;:::i;:::-;22088:4;:17;;:51;;;;22189:56;22210:34;22235:8;22210:7;:20;;;:24;;:34;;;;:::i;:::-;22189:10;:16;;;:20;;:56;;;;:::i;:::-;22170:10;:16;;:75;;;;22280:30;22301:8;22280:10;:16;;;:20;;:30;;;;:::i;:::-;22256:10;:21;;:54;;;;22348:3;22324:10;:21;;;:27;22321:85;;;22391:3;22367:10;:21;;:27;;;;22321:85;22426:9;;;;;;;;;;;:14;;;22449:4;22456:7;:10;;;22468:8;22426:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22489:23;22529:1;22515:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22489:42;;22543:27;22587:1;22573:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22543:46;;22612:7;:10;;;22600:6;22607:1;22600:9;;;;;;;;;;;;;:22;;;;;22649:8;22633:10;22644:1;22633:13;;;;;;;;;;;;;:24;;;;;22680:9;;;;;;;;;;;:19;;;22700:10;22712:6;22720:10;22680:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21564:1189;;;;;;;:::o;19767:135::-;19833:7;19862:14;:26;19877:10;19862:26;;;;;;;;;;;;;;;:32;;;19855:39;;19767:135;;;:::o;19908:442::-;2333:9;:7;:9::i;:::-;2325:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20053:1:::1;20024:20;:25;20045:3;20024:25;;;;;;;;;;;;:30;20002:132;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20147:17;20184:105;;;;;;;;20224:3;20184:105;;;;20260:13;20184:105;;::::0;20147:153:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20341:1;20313:20;:25;20334:3;20313:25;;;;;;;;;;;:29;;;;19908:442:::0;;:::o;12632:44::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14863:1140::-;14970:7;14990:28;15021:1;14990:32;;15035:14;15052:11;:18;;;;15035:35;;15086:9;15081:538;15105:6;15101:1;:10;15081:538;;;15133:13;15149:11;15161:1;15149:14;;;;;;;;;;;;;;;;15133:30;;15178:19;15200:8;:15;15209:5;15200:15;;;;;;;;;;;15178:37;;15232:18;15253:3;:11;;:18;;;;15232:39;;15288:26;15338:9;15333:189;15357:10;15353:1;:14;15333:189;;;15418:88;15441:64;15472:9;:16;15482:5;15472:16;;;;;;;;;;;;;;;:32;15489:3;:11;;15501:1;15489:14;;;;;;;;;;;;;;;;15472:32;;;;;;;;;;;;15441:3;:26;;;:30;;:64;;;;:::i;:::-;15418:18;:22;;:88;;;;:::i;:::-;15397:109;;15369:3;;;;;15333:189;;;;15563:44;15588:18;15563:20;:24;;:44;;;;:::i;:::-;15540:67;;15081:538;;;;15113:3;;;;;15081:538;;;;15676:24;15672:143;;;15717:13;15772:31;15797:5;15772:20;:24;;:31;;;;:::i;:::-;15749:54;;15672:143;;15827:18;15848:14;:21;15863:5;15848:21;;;;;;;;;;;;;;;;15827:42;;15880:17;15900:15;15880:35;;15933:62;15963:31;15988:5;15963:20;:24;;:31;;;;:::i;:::-;15933:25;15947:10;15933:9;:13;;:25;;;;:::i;:::-;:29;;:62;;;;:::i;:::-;15926:69;;;;;;14863:1140;;;;:::o;2932:140::-;2333:9;:7;:9::i;:::-;2325:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3031:1:::1;2994:40;;3015:6;::::0;::::1;;;;;;;;2994:40;;;;;;;;;;;;3062:1;3045:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2932:140::o:0;13714:134::-;13780:16;13816:8;:16;13825:6;13816:16;;;;;;;;;;;:24;;13809:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13714:134;;;:::o;2121:79::-;2159:7;2186:6;;;;;;;;;;;2179:13;;2121:79;:::o;2487:94::-;2527:4;2567:6;;;;;;;;;;;2551:22;;:12;:10;:12::i;:::-;:22;;;2544:29;;2487:94;:::o;10997:48::-;;;;;;;;;;;;;;;;;:::o;19019:590::-;19150:15;19121:14;:26;19136:10;19121:26;;;;;;;;;;;;;;;:44;;;;19178:14;19195:8;:15;19178:32;;19226:9;19221:282;19245:6;19241:1;:10;19221:282;;;19273:14;19290:8;19299:1;19290:11;;;;;;;;;;;;;;19273:28;;19359:12;19372:1;19359:15;;;;;;;;;;;;;;19326:9;:21;19336:10;19326:21;;;;;;;;;;;;;;;:29;19348:6;19326:29;;;;;;;;;;;;:48;;19318:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19441:50;19475:12;19488:1;19475:15;;;;;;;;;;;;;;19441:9;:21;19451:10;19441:21;;;;;;;;;;;;;;;:29;19463:6;19441:29;;;;;;;;;;;;:33;;:50;;;;:::i;:::-;19409:9;:21;19419:10;19409:21;;;;;;;;;;;;;;;:29;19431:6;19409:29;;;;;;;;;;;:82;;;;19221:282;19253:3;;;;;19221:282;;;;19515:9;;;;;;;;;;;:31;;;19555:4;19562:10;19574:8;19584:12;19515:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19019:590;;;:::o;11336:67::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;18307:671::-;18426:1;18408:8;:15;:19;18400:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18465:9;:7;:9::i;:::-;18492;18487:335;18511:8;:15;18507:1;:19;18487:335;;;18594:12;18607:1;18594:15;;;;;;;;;;;;;;18556:9;:21;18566:10;18556:21;;;;;;;;;;;;;;;:34;18578:8;18587:1;18578:11;;;;;;;;;;;;;;18556:34;;;;;;;;;;;;:53;;18548:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18681:55;18720:12;18733:1;18720:15;;;;;;;;;;;;;;18681:9;:21;18691:10;18681:21;;;;;;;;;;;;;;;:34;18703:8;18712:1;18703:11;;;;;;;;;;;;;;18681:34;;;;;;;;;;;;:38;;:55;;;;:::i;:::-;18644:9;:21;18654:10;18644:21;;;;;;;;;;;;;;;:34;18666:8;18675:1;18666:11;;;;;;;;;;;;;;18644:34;;;;;;;;;;;:92;;;;18751:9;;;;;;;;;;;:14;;;18774:4;18781:8;18790:1;18781:11;;;;;;;;;;;;;;18794:12;18807:1;18794:15;;;;;;;;;;;;;;18751:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18528:3;;;;;18487:335;;;;18844:9;;;;;;;;;;;:19;;;18864:10;18876:8;18886:12;18844:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18935:10;18927:43;;;18947:8;18957:12;18927:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18307:671;;:::o;10876:28::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16546:488::-;2333:9;:7;:9::i;:::-;2325:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16700:23:::1;:30;16682:7;:14;:48;16674:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16809:9;16804:223;16828:7;:14;16824:1;:18;16804:223;;;16910:1;16872:8;:20;16881:7;16889:1;16881:10;;;;;;;;;;;;;;16872:20;;;;;;;;;;;:28;;:35;;;;:39;16864:64;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;16989:23;17013:1;16989:26;;;;;;;;;;;;;;16943:8;:20;16952:7;16960:1;16952:10;;;;;;;;;;;;;;16943:20;;;;;;;;;;;:43;;:72;;;;16844:3;;;;;16804:223;;;;16546:488:::0;;:::o;24955:203::-;25114:6;25140:10;25133:17;;;;24955:203;;;;;;;;;;:::o;19617:138::-;19681:7;19710:14;:26;19725:10;19710:26;;;;;;;;;;;;;;;:37;;;19703:44;;19617:138;;;:::o;17579:718::-;17696:1;17678:8;:15;:19;17670:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17735:9;:7;:9::i;:::-;17762;17757:145;17781:8;:15;17777:1;:19;17757:145;;;17857:1;17828:12;:25;17841:8;17850:1;17841:11;;;;;;;;;;;;;;17828:25;;;;;;;;;;;;:30;;17820:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17798:3;;;;;17757:145;;;;17924:9;;;;;;;;;;;:19;;;17952:4;17959:8;17969:12;17924:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18000:9;17995:236;18019:8;:15;18015:1;:19;17995:236;;;18093:55;18132:12;18145:1;18132:15;;;;;;;;;;;;;;18093:9;:21;18103:10;18093:21;;;;;;;;;;;;;;;:34;18115:8;18124:1;18115:11;;;;;;;;;;;;;;18093:34;;;;;;;;;;;;:38;;:55;;;;:::i;:::-;18056:9;:21;18066:10;18056:21;;;;;;;;;;;;;;;:34;18078:8;18087:1;18078:11;;;;;;;;;;;;;;18056:34;;;;;;;;;;;:92;;;;18163:9;;;;;;;;;;;:14;;;18178:10;18190:8;18199:1;18190:11;;;;;;;;;;;;;;18203:12;18216:1;18203:15;;;;;;;;;;;;;;18163:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18036:3;;;;;17995:236;;;;18254:10;18248:41;;;18266:8;18276:12;18248:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17579:718;;:::o;11189:78::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11274:55::-;;;;;;;;;;;;;;;;;:::o;13858:870::-;2333:9;:7;:9::i;:::-;2325:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13993:14:::1;14010:8;:15;13993:32;;14041:9;14036:430;14060:6;14056:1;:10;14036:430;;;14088:14;14105:8;14114:1;14105:11;;;;;;;;;;;;;;14088:28;;14146:13;;14137:6;:22;14133:85;;;14196:6;14180:13;:22;;;;14133:85;14342:1;14318:12;:20;14331:6;14318:20;;;;;;;;;;;;:25;14310:68;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;14448:6;14425:12;:20;14438:6;14425:20;;;;;;;;;;;:29;;;;14036:430;14068:3;;;;;14036:430;;;;14517:5;14482:40;;:31;14493:6;14501:11;14482:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:10;:31::i;:::-;:40;;;14478:97;;;14539:11;14556:6;14539:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14478:97;14606:114;;;;;;;;14638:8;14606:114;;;;14685:23;14606:114;;::::0;14587:8:::1;:16;14596:6;14587:16;;;;;;;;;;;:133;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2390:1;13858:870:::0;;;:::o;23762:174::-;23892:6;23918:10;23911:17;;;;23762:174;;;;;;;;:::o;3227:109::-;2333:9;:7;:9::i;:::-;2325:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3300:28:::1;3319:8;3300:18;:28::i;:::-;3227:109:::0;:::o;10841:26::-;;;;;;;;;;;;;:::o;4520:181::-;4578:7;4598:9;4614:1;4610;:5;4598:17;;4639:1;4634;:6;;4626:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4692:1;4685:8;;;4520:181;;;;:::o;5874:471::-;5932:7;6182:1;6177;:6;6173:47;;;6207:1;6200:8;;;;6173:47;6232:9;6248:1;6244;:5;6232:17;;6277:1;6272;6268;:5;;;;;;:10;6260:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6336:1;6329:8;;;5874:471;;;;;:::o;6821:132::-;6879:7;6906:39;6910:1;6913;6906:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;6899:46;;6821:132;;;;:::o;4984:136::-;5042:7;5069:43;5073:1;5076;5069:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;5062:50;;4984:136;;;;:::o;912:98::-;957:15;992:10;985:17;;912:98;:::o;12908:307::-;12991:4;13008:14;13025:6;:13;13008:30;;13054:9;13049:134;13073:6;13069:1;:10;13049:134;;;13118:6;13105;13112:1;13105:9;;;;;;;;;;;;;;:19;13101:71;;;13152:4;13145:11;;;;;;13101:71;13081:3;;;;;13049:134;;;;13202:5;13195:12;;;12908:307;;;;;:::o;3442:229::-;3536:1;3516:22;;:8;:22;;;;3508:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3626:8;3597:38;;3618:6;;;;;;;;;;3597:38;;;;;;;;;;;;3655:8;3646:6;;:17;;;;;;;;;;;;;;;;;;3442:229;:::o;7449:278::-;7535:7;7567:1;7563;:5;7570:12;7555:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7594:9;7610:1;7606;:5;;;;;;7594:17;;7718:1;7711:8;;;7449:278;;;;;:::o;5423:192::-;5509:7;5542:1;5537;:6;;5545:12;5529:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5569:9;5585:1;5581;:5;5569:17;;5606:1;5599:8;;;5423:192;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

ipfs://3e058f95e356a12c22794a8275a099c204bf416992cb27f1c2c86fddc33ce277

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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.