false
false
0
Contract Address Details
contract

0xe5CFCEd407570269D1D3DF2b2588F03b7b480956

Sponsored: ERAM, a pioneering Central Bank Blockchain. The First Banking Regulatory Blockchain, Licensed by the Central Bank.

ERAM, Central Bank Digital Currency (CBDC) (STABLE COIN)

Overview

ERAM Balance

0 ERAM

ERAM Value

$0.00

Token Holdings

Fetching tokens...

More Info

Private Name Tags

Last Balance Update

Blocks Validated

Sponsored

Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
Contract name:
StakingPoolFactory




Optimization enabled
true
Compiler version
v0.8.13+commit.abaa5c0e




Optimization runs
5000
EVM Version
default




Verified at
2024-07-20T06:16:56.948620Z

Constructor Arguments

0x0000000000000000000000008df97eab2651e87a8a4080008ddabf6824c9f672

Arg [0] (address) : 0x8df97eab2651e87a8a4080008ddabf6824c9f672

              

contracts/Staking/StakingPoolFactory.sol

Sol2uml
new
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

import "./StakingPool.sol";

contract StakingPoolFactory {
    /// The address supposed to get the protocol fee
    address public feeTo;

    /// address that can set the address
    address public feeToSetter;

    ///  mapping from Token => Pool address
    mapping(address => address) public getPool;
    address[] public allPools;

    event PoolCreated(address indexed token, address pool, uint256 timeStamp);

    constructor(address _feeToSetter) {
        feeToSetter = _feeToSetter;
    }

    function allPoolsLength() external view returns (uint256) {
        return allPools.length;
    }

    function createPool(address stoken, address rtoken)
        external
        returns (address)
    {
        require(stoken != address(0), "ZERO_ADDRESS");
        require(getPool[stoken] == address(0), "PAIR_EXISTS");

        StakingPool _pool = new StakingPool(stoken, rtoken);

        getPool[stoken] = address(_pool);
        allPools.push(address(_pool));
        emit PoolCreated(stoken, address(_pool), block.timestamp);
        return address(_pool);
    }

    function setFeeTo(address _feeTo) external {
        require(msg.sender == feeToSetter, "FORBIDDEN");
        feeTo = _feeTo;
    }

    function setFeeToSetter(address _feeToSetter) external {
        require(msg.sender == feeToSetter, "FORBIDDEN");
        feeToSetter = _feeToSetter;
    }
}
        

contracts/Other/interfaces/IERC20.sol

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

interface IERC20 {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);
}
          

contracts/Staking/StakingPool.sol

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

import "../Other/interfaces/IERC20.sol";

// - Rewards user for staking their tokens
// - User can withdraw and deposit
// - Earns token while withdrawing

/// rewards are calculated with reward rate and time period staked for

contract StakingPool {
    // tokens intialized
    IERC20 public rewardsToken;
    IERC20 public stakingToken;

    // 100 wei per second , calculated for per anum
    uint256 public rewardRate = 100;

    uint256 public lastUpdateTime;
    uint256 public rewardPerTokenStored;

    // mapping for the rewards for an address
    mapping(address => uint256) public rewards;

    // mapping for the rewards per token paid
    mapping(address => uint256) public rewardsPerTokenPaid;

    // mapping for staked amount by an address
    mapping(address => uint256) public staked;

    // total supply for the staked token in the contract
    uint256 public _totalSupply;

    constructor(address _stakingToken, address _rewardsToken) {
        stakingToken = IERC20(_stakingToken);
        rewardsToken = IERC20(_rewardsToken);
    }

    /// @dev - to calculate the amount of rewards per token staked at current instance
    /// @return uint - the amount of rewardspertoken
    function rewardPerToken() public view returns (uint256) {
        if (_totalSupply == 0) {
            return rewardPerTokenStored;
        }
        return
            rewardPerTokenStored +
            (((block.timestamp - lastUpdateTime) * rewardRate * 1e18) /
                _totalSupply);
    }

    /// @dev - to calculate the earned rewards for the token staked
    /// @param account - for which it is to be calculated
    /// @return uint -  amount of earned rewards
    function earned(address account) public view returns (uint256) {
        /// amount will be the earned amount according to the staked + the rewards the user earned earlier
        return
            ((staked[account] *
                (rewardPerToken() - rewardsPerTokenPaid[account])) / 1e18) +
            rewards[account];
    }

    /// modifier that will calculate the amount every time the user calls , and update them in the rewards array
    modifier updateReward(address account) {
        rewardPerTokenStored = rewardPerToken();
        lastUpdateTime = block.timestamp;

        /// updating the total rewards owned by the user
        rewards[account] = earned(account);
        /// updatig per token reward amount in the mapping
        rewardsPerTokenPaid[account] = rewardPerTokenStored;
        _;
    }

    /// @dev to stake some amount of token
    /// @param _amount -  amount to be staked
    function stake(uint256 _amount, address user) external updateReward(user) {
        _totalSupply += _amount;
        staked[user] += _amount;

        ///  need approval
        stakingToken.transferFrom(user, address(this), _amount);
    }

    /// @dev to withdraw the staked amount
    /// @param _amount - amount to be withdrawn
    function withdraw(uint256 _amount, address user)
        external
        updateReward(user)
    {
        _totalSupply -= _amount;
        staked[user] -= _amount;
        stakingToken.transfer(user, _amount);
    }

    /// @dev to withdraw the reward token
    function reedemReward(address user) external updateReward(msg.sender) {
        uint256 reward = rewards[user];
        rewards[user] = 0;
        rewardsToken.transfer(user, reward);
    }
}
          

Compiler Settings

{"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata","devdoc","userdoc","storageLayout","evm.gasEstimates"],"":["ast"]}},"optimizer":{"runs":5000,"enabled":true},"metadata":{"useLiteralContent":true},"libraries":{}}
              

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"address","name":"_feeToSetter","internalType":"address"}]},{"type":"event","name":"PoolCreated","inputs":[{"type":"address","name":"token","internalType":"address","indexed":true},{"type":"address","name":"pool","internalType":"address","indexed":false},{"type":"uint256","name":"timeStamp","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"allPools","inputs":[{"type":"uint256","name":"","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"allPoolsLength","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"createPool","inputs":[{"type":"address","name":"stoken","internalType":"address"},{"type":"address","name":"rtoken","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"feeTo","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"feeToSetter","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"getPool","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setFeeTo","inputs":[{"type":"address","name":"_feeTo","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setFeeToSetter","inputs":[{"type":"address","name":"_feeToSetter","internalType":"address"}]}]
              

Contract Creation Code

0x608060405234801561001057600080fd5b50604051610f92380380610f9283398101604081905261002f91610054565b600180546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b610eff806100936000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063bbe4f6db1161005b578063bbe4f6db1461011f578063e343361514610155578063efde4e6414610168578063f46901ed1461017957600080fd5b8063017e7e581461008d578063094b7415146100d757806341d1de97146100f7578063a2e74af61461010a575b600080fd5b6000546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6001546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6100ad610105366004610595565b61018c565b61011d6101183660046105d7565b6101c3565b005b6100ad61012d3660046105d7565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6100ad6101633660046105f9565b610290565b6003546040519081526020016100ce565b61011d6101873660046105d7565b6104c0565b6003818154811061019c57600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60015473ffffffffffffffffffffffffffffffffffffffff163314610249576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f464f5242494444454e000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600073ffffffffffffffffffffffffffffffffffffffff831661030f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152606401610240565b73ffffffffffffffffffffffffffffffffffffffff838116600090815260026020526040902054161561039e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f504149525f4558495354530000000000000000000000000000000000000000006044820152606401610240565b600083836040516103ae90610588565b73ffffffffffffffffffffffffffffffffffffffff928316815291166020820152604001604051809103906000f0801580156103ee573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff858116600081815260026020908152604080832080549587167fffffffffffffffffffffffff000000000000000000000000000000000000000096871681179091556003805460018101825594527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b9093018054909516831790945583519182524290820152929350917ff8a0462f666b427ea753848be7e91f9ce413975906f6f39950be296ca9a4d524910160405180910390a29392505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610541576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f464f5242494444454e00000000000000000000000000000000000000000000006044820152606401610240565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61089d8061062d83390190565b6000602082840312156105a757600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146105d257600080fd5b919050565b6000602082840312156105e957600080fd5b6105f2826105ae565b9392505050565b6000806040838503121561060c57600080fd5b610615836105ae565b9150610623602084016105ae565b9050925092905056fe6080604052606460025534801561001557600080fd5b5060405161089d38038061089d83398101604081905261003491610081565b600180546001600160a01b039384166001600160a01b031991821617909155600080549290931691161790556100b4565b80516001600160a01b038116811461007c57600080fd5b919050565b6000806040838503121561009457600080fd5b61009d83610065565b91506100ab60208401610065565b90509250929050565b6107da806100c36000396000f3fe608060405234801561001057600080fd5b50600436106100e85760003560e01c80637b0a47ee1161008c578063c8f33c9111610066578063c8f33c9114610205578063cd3daf9d1461020e578063d1af0c7d14610216578063df136d651461023657600080fd5b80637b0a47ee146101bc57806395d7885b146101c557806398807d84146101e557600080fd5b80633eaaf86b116100c85780633eaaf86b146101485780636447c5a21461015157806372f702f3146101645780637acb7757146101a957600080fd5b80628cc262146100ed578062f714ce146101135780630700037d14610128575b600080fd5b6101006100fb36600461065e565b61023f565b6040519081526020015b60405180910390f35b610126610121366004610680565b6102d6565b005b61010061013636600461065e565b60056020526000908152604090205481565b61010060085481565b61012661015f36600461065e565b61041f565b6001546101849073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010a565b6101266101b7366004610680565b6104cd565b61010060025481565b6101006101d336600461065e565b60066020526000908152604090205481565b6101006101f336600461065e565b60076020526000908152604090205481565b61010060035481565b6101006105d7565b6000546101849073ffffffffffffffffffffffffffffffffffffffff1681565b61010060045481565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600560209081526040808320546006909252822054670de0b6b3a7640000906102826105d7565b61028c91906106db565b73ffffffffffffffffffffffffffffffffffffffff85166000908152600760205260409020546102bc91906106f2565b6102c6919061072f565b6102d0919061076a565b92915050565b806102df6105d7565b600455426003556102ef8161023f565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600560209081526040808320939093556004546006909152918120919091556008805485929061033c9084906106db565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260076020526040812080548592906103769084906106db565b90915550506001546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690529091169063a9059cbb906044015b6020604051808303816000875af11580156103f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104199190610782565b50505050565b336104286105d7565b600455426003556104388161023f565b73ffffffffffffffffffffffffffffffffffffffff82811660009081526005602081815260408084209590955560048054600683528685205587851680855292909152848320805490849055925494517fa9059cbb000000000000000000000000000000000000000000000000000000008152908101919091526024810182905290929091169063a9059cbb906044016103d6565b806104d66105d7565b600455426003556104e68161023f565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600560209081526040808320939093556004546006909152918120919091556008805485929061053390849061076a565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600760205260408120805485929061056d90849061076a565b90915550506001546040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015230602483015260448201869052909116906323b872dd906064016103d6565b60006008546000036105ea575060045490565b6008546002546003546105fd90426106db565b61060791906106f2565b61061990670de0b6b3a76400006106f2565b610623919061072f565b600454610630919061076a565b905090565b803573ffffffffffffffffffffffffffffffffffffffff8116811461065957600080fd5b919050565b60006020828403121561067057600080fd5b61067982610635565b9392505050565b6000806040838503121561069357600080fd5b823591506106a360208401610635565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156106ed576106ed6106ac565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561072a5761072a6106ac565b500290565b600082610765577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000821982111561077d5761077d6106ac565b500190565b60006020828403121561079457600080fd5b8151801515811461067957600080fdfea26469706673582212205c05c89d4b8dce9a7ceb17efb88d1961264b99fe589c98996d5af2f1468d7da664736f6c634300080d0033a2646970667358221220bf69a4609a981d1d3ac270f5e28a2bee7ef273be525fe6bb78de5c22a1e7a5a064736f6c634300080d00330000000000000000000000008df97eab2651e87a8a4080008ddabf6824c9f672

Deployed ByteCode

0x608060405234801561001057600080fd5b50600436106100885760003560e01c8063bbe4f6db1161005b578063bbe4f6db1461011f578063e343361514610155578063efde4e6414610168578063f46901ed1461017957600080fd5b8063017e7e581461008d578063094b7415146100d757806341d1de97146100f7578063a2e74af61461010a575b600080fd5b6000546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6001546100ad9073ffffffffffffffffffffffffffffffffffffffff1681565b6100ad610105366004610595565b61018c565b61011d6101183660046105d7565b6101c3565b005b6100ad61012d3660046105d7565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6100ad6101633660046105f9565b610290565b6003546040519081526020016100ce565b61011d6101873660046105d7565b6104c0565b6003818154811061019c57600080fd5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60015473ffffffffffffffffffffffffffffffffffffffff163314610249576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f464f5242494444454e000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600073ffffffffffffffffffffffffffffffffffffffff831661030f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152606401610240565b73ffffffffffffffffffffffffffffffffffffffff838116600090815260026020526040902054161561039e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f504149525f4558495354530000000000000000000000000000000000000000006044820152606401610240565b600083836040516103ae90610588565b73ffffffffffffffffffffffffffffffffffffffff928316815291166020820152604001604051809103906000f0801580156103ee573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff858116600081815260026020908152604080832080549587167fffffffffffffffffffffffff000000000000000000000000000000000000000096871681179091556003805460018101825594527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b9093018054909516831790945583519182524290820152929350917ff8a0462f666b427ea753848be7e91f9ce413975906f6f39950be296ca9a4d524910160405180910390a29392505050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610541576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f464f5242494444454e00000000000000000000000000000000000000000000006044820152606401610240565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61089d8061062d83390190565b6000602082840312156105a757600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146105d257600080fd5b919050565b6000602082840312156105e957600080fd5b6105f2826105ae565b9392505050565b6000806040838503121561060c57600080fd5b610615836105ae565b9150610623602084016105ae565b9050925092905056fe6080604052606460025534801561001557600080fd5b5060405161089d38038061089d83398101604081905261003491610081565b600180546001600160a01b039384166001600160a01b031991821617909155600080549290931691161790556100b4565b80516001600160a01b038116811461007c57600080fd5b919050565b6000806040838503121561009457600080fd5b61009d83610065565b91506100ab60208401610065565b90509250929050565b6107da806100c36000396000f3fe608060405234801561001057600080fd5b50600436106100e85760003560e01c80637b0a47ee1161008c578063c8f33c9111610066578063c8f33c9114610205578063cd3daf9d1461020e578063d1af0c7d14610216578063df136d651461023657600080fd5b80637b0a47ee146101bc57806395d7885b146101c557806398807d84146101e557600080fd5b80633eaaf86b116100c85780633eaaf86b146101485780636447c5a21461015157806372f702f3146101645780637acb7757146101a957600080fd5b80628cc262146100ed578062f714ce146101135780630700037d14610128575b600080fd5b6101006100fb36600461065e565b61023f565b6040519081526020015b60405180910390f35b610126610121366004610680565b6102d6565b005b61010061013636600461065e565b60056020526000908152604090205481565b61010060085481565b61012661015f36600461065e565b61041f565b6001546101849073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010a565b6101266101b7366004610680565b6104cd565b61010060025481565b6101006101d336600461065e565b60066020526000908152604090205481565b6101006101f336600461065e565b60076020526000908152604090205481565b61010060035481565b6101006105d7565b6000546101849073ffffffffffffffffffffffffffffffffffffffff1681565b61010060045481565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600560209081526040808320546006909252822054670de0b6b3a7640000906102826105d7565b61028c91906106db565b73ffffffffffffffffffffffffffffffffffffffff85166000908152600760205260409020546102bc91906106f2565b6102c6919061072f565b6102d0919061076a565b92915050565b806102df6105d7565b600455426003556102ef8161023f565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600560209081526040808320939093556004546006909152918120919091556008805485929061033c9084906106db565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260076020526040812080548592906103769084906106db565b90915550506001546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018690529091169063a9059cbb906044015b6020604051808303816000875af11580156103f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104199190610782565b50505050565b336104286105d7565b600455426003556104388161023f565b73ffffffffffffffffffffffffffffffffffffffff82811660009081526005602081815260408084209590955560048054600683528685205587851680855292909152848320805490849055925494517fa9059cbb000000000000000000000000000000000000000000000000000000008152908101919091526024810182905290929091169063a9059cbb906044016103d6565b806104d66105d7565b600455426003556104e68161023f565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600560209081526040808320939093556004546006909152918120919091556008805485929061053390849061076a565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600760205260408120805485929061056d90849061076a565b90915550506001546040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015230602483015260448201869052909116906323b872dd906064016103d6565b60006008546000036105ea575060045490565b6008546002546003546105fd90426106db565b61060791906106f2565b61061990670de0b6b3a76400006106f2565b610623919061072f565b600454610630919061076a565b905090565b803573ffffffffffffffffffffffffffffffffffffffff8116811461065957600080fd5b919050565b60006020828403121561067057600080fd5b61067982610635565b9392505050565b6000806040838503121561069357600080fd5b823591506106a360208401610635565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156106ed576106ed6106ac565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561072a5761072a6106ac565b500290565b600082610765577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000821982111561077d5761077d6106ac565b500190565b60006020828403121561079457600080fd5b8151801515811461067957600080fdfea26469706673582212205c05c89d4b8dce9a7ceb17efb88d1961264b99fe589c98996d5af2f1468d7da664736f6c634300080d0033a2646970667358221220bf69a4609a981d1d3ac270f5e28a2bee7ef273be525fe6bb78de5c22a1e7a5a064736f6c634300080d0033