S Price: $0.067544 (-3.17%)
Gas: 55 Gwei

Contract

0x1051c2925273b8d325333b22F2708E77659626B6

Overview

S Balance

Sonic LogoSonic LogoSonic Logo0 S

S Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Update426668042025-08-12 14:53:55167 days ago1755010435IN
0x1051c292...7659626B6
0 S0.0054869852.72141063
Update426590532025-08-12 13:45:03167 days ago1755006303IN
0x1051c292...7659626B6
0 S0.0068206365.53576342
Update426493932025-08-12 12:27:30167 days ago1755001650IN
0x1051c292...7659626B6
0 S0.0054865852.71762783
Update426419362025-08-12 11:14:06167 days ago1754997246IN
0x1051c292...7659626B6
0 S0.005447652.34306666
Update426345392025-08-12 10:02:59167 days ago1754992979IN
0x1051c292...7659626B6
0 S0.0055744653.56199772
Update426252262025-08-12 8:29:02167 days ago1754987342IN
0x1051c292...7659626B6
0 S0.0053816651.70949049
Update426135802025-08-12 6:21:27167 days ago1754979687IN
0x1051c292...7659626B6
0 S0.0054641352.50185998
Update426062352025-08-12 5:03:57167 days ago1754975037IN
0x1051c292...7659626B6
0 S0.0054243852.11991512
Update425988462025-08-12 3:15:58167 days ago1754968558IN
0x1051c292...7659626B6
0 S0.0056300754.09636763
Update425915342025-08-12 1:38:08167 days ago1754962688IN
0x1051c292...7659626B6
0 S0.0053644951.54448888
Update425842392025-08-12 0:18:43167 days ago1754957923IN
0x1051c292...7659626B6
0 S0.0062792960.33437123
Update425733212025-08-11 22:21:56167 days ago1754950916IN
0x1051c292...7659626B6
0 S0.0053667251.56592
Update425661052025-08-11 21:13:39167 days ago1754946819IN
0x1051c292...7659626B6
0 S0.0054037551.92173333
Update425572992025-08-11 19:44:37167 days ago1754941477IN
0x1051c292...7659626B6
0 S0.0053138951.05830171
Update425467462025-08-11 18:01:31167 days ago1754935291IN
0x1051c292...7659626B6
0 S0.0064961462.41787183
Update425385872025-08-11 16:41:08167 days ago1754930468IN
0x1051c292...7659626B6
0 S0.0092870289.23396513
Update425313202025-08-11 15:35:35168 days ago1754926535IN
0x1051c292...7659626B6
0 S0.0068951266.2515093
Update425220972025-08-11 14:12:09168 days ago1754921529IN
0x1051c292...7659626B6
0 S0.0060820758.43935274
Update425142822025-08-11 13:08:42168 days ago1754917722IN
0x1051c292...7659626B6
0 S0.0054110551.99192522
Update424992432025-08-11 10:56:16168 days ago1754909776IN
0x1051c292...7659626B6
0 S0.0055869453.68187345
Update424917692025-08-11 9:41:02168 days ago1754905262IN
0x1051c292...7659626B6
0 S0.0056468254.257267
Update424845352025-08-11 8:29:15168 days ago1754900955IN
0x1051c292...7659626B6
0 S0.0056246154.04387333
Update424773132025-08-11 7:18:53168 days ago1754896733IN
0x1051c292...7659626B6
0 S0.0061062458.671584
Update424673602025-08-11 5:25:23168 days ago1754889923IN
0x1051c292...7659626B6
0 S0.0057268755.02641964
Update424601522025-08-11 4:06:00168 days ago1754885160IN
0x1051c292...7659626B6
0 S0.0058160955.88373389
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Cross-Chain Transactions
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x29d1AA89...65bC9381d
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
ChainlinkPriceCache

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU AGPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at SonicScan.org on 2025-04-15
*/

// SPDX-License-Identifier: AGPL-3.0
pragma solidity ^0.8.24;

/**
 * @title IChainlinkCache
 * @notice Interface for the ChainlinkCache contract
 * @dev Defines methods for retrieving historical oracle data
 */
interface IChainlinkPriceCache {
    /**
     * @notice Get historical price array
     * @param lookback Number of answers to retrieve from current position
     * @return Array of historical prices
     */
    function getHistoricalPrice(uint256 lookback) external view returns (uint256[] memory);

    /**
     * @notice Get historical price array between specified snapshot IDs
     * @param start The starting snapshot ID (inclusive)
     * @param end The ending snapshot ID (inclusive)
     * @return Array of historical prices
     */
    function getHistoricalPriceRange(uint256 start, uint256 end) external view returns (uint256[] memory);

    /**
     * @notice Get historical timestamps
     * @param lookback Number of answers to retrieve from current position
     * @return Array of historical timestamps
     */
    function getHistoricalTimestamp(uint256 lookback) external view returns (uint256[] memory);

    /**
     * @notice Get historical timestamps
     * @param start The starting snapshot ID (inclusive)
     * @param end The ending snapshot ID (inclusive)
     * @return Array of historical timestamps
     */
    function getHistoricalTimestampRange(uint256 start, uint256 end) external view returns (uint256[] memory);

    /**
     * @notice update the cache
     */
    function update() external;
}

/**
 * @title IAggregatorInterface
 * @notice Interface for Chainlink oracle aggregators
 */
interface IAggregatorInterface {
    function latestAnswer() external view returns (int256);
    function latestTimestamp() external view returns (uint256);
    function latestRound() external view returns (uint256);
    function getAnswer(uint256 roundId) external view returns (int256);
    function getTimestamp(uint256 roundId) external view returns (uint256);

    event AnswerUpdated(int256 indexed current, uint256 indexed roundId, uint256 updatedAt);
    event NewRound(uint256 indexed roundId, address indexed startedBy, uint256 startedAt);
}

/**
 * @title ChainlinkPriceCache
 * @notice Contract for caching Chainlink price data and timestamps in easy to access array
 */
contract ChainlinkPriceCache is IChainlinkPriceCache {

    // oracle addresses:
    // mainnet
    // ETH/USD contract address 0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419
    // USDC/ETH contract address 0x986b5E1e1755e3C2440e960477f25201B0a8bbD4
    // arbitrum
    // ETH/USD contract address 0x639Fe6ab55C921f74e7fac1ee960C0B6293ba612
    // base
    // ETH/USD contract address 0x71041dddad3595F9CEd3DcCFBe3D1F4b0a16Bb70
    // USDC/USD contract address 0x7e860098F58bBFC8648a4311b374B1D669a2bc6B

    IAggregatorInterface public immutable oracle;

    // delay in seconds until the next update can be made
    uint256 public immutable delay;

    // last updated snapshot ID
    uint256 public latestSnapshotId;

    // description
    string public description;

    // storage for oracle data snapshots
    mapping (uint256 => uint256) public timestamps;
    mapping (uint256 => uint256)  public prices;


    error WaitForDelay();
    error InvalidRange();
    error NoDataAvailable();

    event Updated(uint256 indexed timestamp, uint256 price);

    /**
     * @notice Initializes the contract with an oracle and historical data
     * @param _description Description of cache
     * @param _oracle Chainlink oracle address
     * @param _delay Minimum delay in seconds between updates
     * @param _roundIds Array of Chainlink round IDs to populate initial history
     */
    constructor(string memory _description, address _oracle, uint256 _delay, uint256[] memory _roundIds) {
        oracle = IAggregatorInterface(_oracle);
        delay = _delay;
        description = _description;
        
        uint256 roundIdsLength = _roundIds.length;
        
        if (roundIdsLength == 0) {
            latestSnapshotId = 0;
            return;
        }
        
        latestSnapshotId = roundIdsLength - 1;

        for (uint256 i = 0; i < roundIdsLength; ++i) {
            timestamps[i] = oracle.getTimestamp(_roundIds[i]);
            prices[i] = uint256(oracle.getAnswer(_roundIds[i]));
        }
    }

    /// @inheritdoc IChainlinkPriceCache
    function update() external {
        uint256 lastTimestamp = timestamps[latestSnapshotId];

        uint256 latestTimestamp = oracle.latestTimestamp();
        uint256 latestPrice = uint256(oracle.latestAnswer());

        if ((lastTimestamp + delay) > latestTimestamp) {
            revert WaitForDelay();
        }

        ++latestSnapshotId;

        timestamps[latestSnapshotId] = latestTimestamp;
        prices[latestSnapshotId] = latestPrice;

        emit Updated(latestTimestamp, latestPrice);
    }


    /// @inheritdoc IChainlinkPriceCache
    function getHistoricalPrice(uint256 lookback) external view returns (uint256[] memory) {
        if (latestSnapshotId == 0 && prices[0] == 0) {
            revert NoDataAvailable();
        }
        
        // Check if lookback exceeds available history
        if (lookback > latestSnapshotId + 1) {
            revert NoDataAvailable();
        }
        
        uint256[] memory result = new uint256[](lookback);
        
        for (uint256 i = 0; i < lookback; i++) {
            uint256 snapshotId = latestSnapshotId - i;
            result[i] = prices[snapshotId];
        }
        
        return result;
    }

    /// @inheritdoc IChainlinkPriceCache
    function getHistoricalTimestamp(uint256 lookback) external view returns (uint256[] memory) {
        if (latestSnapshotId == 0 && timestamps[0] == 0) {
            revert NoDataAvailable();
        }

        // Check if lookback exceeds available history
        if (lookback > latestSnapshotId + 1) {
            revert NoDataAvailable();
        }

        uint256[] memory result = new uint256[](lookback);

        for (uint256 i = 0; i < lookback; i++) {
            uint256 snapshotId = latestSnapshotId - i;
            result[i] = timestamps[snapshotId];
        }

        return result;
    }

    /// @inheritdoc IChainlinkPriceCache
    function getHistoricalPriceRange(uint256 start, uint256 end) external view returns (uint256[] memory) {
        if (end < start || end > latestSnapshotId) {
            revert InvalidRange();
        }
        
        if (latestSnapshotId == 0 && timestamps[0] == 0) {
            revert NoDataAvailable();
        }
        
        uint256 size = end - start + 1;
        uint256[] memory result = new uint256[](size);
        
        for (uint256 i = 0; i < size; i++) {
            result[i] = prices[start + i];
        }
        
        return result;
    }

    /// @inheritdoc IChainlinkPriceCache
    function getHistoricalTimestampRange(uint256 start, uint256 end) external view returns (uint256[] memory) {
        if (end < start || end > latestSnapshotId) {
            revert InvalidRange();
        }

        if (latestSnapshotId == 0 && timestamps[0] == 0) {
            revert NoDataAvailable();
        }

        uint256 size = end - start + 1;
        uint256[] memory result = new uint256[](size);

        for (uint256 i = 0; i < size; i++) {
            result[i] = timestamps[start + i];
        }

        return result;
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"string","name":"_description","type":"string"},{"internalType":"address","name":"_oracle","type":"address"},{"internalType":"uint256","name":"_delay","type":"uint256"},{"internalType":"uint256[]","name":"_roundIds","type":"uint256[]"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidRange","type":"error"},{"inputs":[],"name":"NoDataAvailable","type":"error"},{"inputs":[],"name":"WaitForDelay","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"}],"name":"Updated","type":"event"},{"inputs":[],"name":"delay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"description","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"lookback","type":"uint256"}],"name":"getHistoricalPrice","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"}],"name":"getHistoricalPriceRange","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"lookback","type":"uint256"}],"name":"getHistoricalTimestamp","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"}],"name":"getHistoricalTimestampRange","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestSnapshotId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oracle","outputs":[{"internalType":"contract IAggregatorInterface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"prices","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"timestamps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"update","outputs":[],"stateMutability":"nonpayable","type":"function"}]

0x60c060405234801561000f575f80fd5b50604051610fc1380380610fc183398101604081905261002e9161029c565b6001600160a01b03831660805260a0829052600161004c85826103f6565b5080515f81900361006057505f80556101b5565b61006b6001826104b0565b5f9081555b818110156101b2576080516001600160a01b031663b633620c84838151811061009b5761009b6104d5565b60200260200101516040518263ffffffff1660e01b81526004016100c191815260200190565b602060405180830381865afa1580156100dc573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061010091906104e9565b5f8281526002602052604090205560805183516001600160a01b039091169063b5ab58dc90859084908110610137576101376104d5565b60200260200101516040518263ffffffff1660e01b815260040161015d91815260200190565b602060405180830381865afa158015610178573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061019c91906104e9565b5f82815260036020526040902055600101610070565b50505b50505050610500565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156101fa576101fa6101be565b604052919050565b80516001600160a01b0381168114610218575f80fd5b919050565b5f82601f83011261022c575f80fd5b81516001600160401b03811115610245576102456101be565b8060051b610255602082016101d2565b91825260208185018101929081019086841115610270575f80fd5b6020860192505b83831015610292578251825260209283019290910190610277565b9695505050505050565b5f805f80608085870312156102af575f80fd5b84516001600160401b038111156102c4575f80fd5b8501601f810187136102d4575f80fd5b80516001600160401b038111156102ed576102ed6101be565b610300601f8201601f19166020016101d2565b818152886020838501011115610314575f80fd5b8160208401602083015e5f6020838301015280965050505061033860208601610202565b6040860151606087015191945092506001600160401b0381111561035a575f80fd5b6103668782880161021d565b91505092959194509250565b600181811c9082168061038657607f821691505b6020821081036103a457634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156103f157805f5260205f20601f840160051c810160208510156103cf5750805b601f840160051c820191505b818110156103ee575f81556001016103db565b50505b505050565b81516001600160401b0381111561040f5761040f6101be565b6104238161041d8454610372565b846103aa565b6020601f821160018114610455575f831561043e5750848201515b5f19600385901b1c1916600184901b1784556103ee565b5f84815260208120601f198516915b828110156104845787850151825560209485019460019092019101610464565b50848210156104a157868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b818103818111156104cf57634e487b7160e01b5f52601160045260245ffd5b92915050565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156104f9575f80fd5b5051919050565b60805160a051610a8c6105355f395f818160d8015261071501525f81816101350152818161060c015261068f0152610a8c5ff3fe608060405234801561000f575f80fd5b50600436106100a6575f3560e01c80638bc33af31161006e5780638bc33af31461016f5780639e52c4981461018e578063a2e62045146101a1578063bc31c1c1146101ab578063c6f47486146101ca578063e484cf32146101dd575f80fd5b806301027d14146100aa5780636a42b8f8146100d35780637284e416146101085780637c94c2e91461011d5780637dc0d1d014610130575b5f80fd5b6100bd6100b83660046108df565b6101e5565b6040516100ca91906108f6565b60405180910390f35b6100fa7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016100ca565b610110610308565b6040516100ca9190610938565b6100bd61012b36600461096d565b610394565b6101577f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100ca565b6100fa61017d3660046108df565b60026020525f908152604090205481565b6100bd61019c36600461096d565b6104c9565b6101a96105f3565b005b6100fa6101b93660046108df565b60036020525f908152604090205481565b6100bd6101d83660046108df565b6107c3565b6100fa5f5481565b60605f545f14801561021e57505f805260026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b54155b1561023c57604051633bcb0ced60e11b815260040160405180910390fd5b5f546102499060016109a1565b82111561026957604051633bcb0ced60e11b815260040160405180910390fd5b5f8267ffffffffffffffff811115610283576102836109b4565b6040519080825280602002602001820160405280156102ac578160200160208202803683370190505b5090505f5b83811015610301575f815f546102c791906109c8565b905060025f8281526020019081526020015f20548383815181106102ed576102ed6109db565b6020908102919091010152506001016102b1565b5092915050565b60018054610315906109ef565b80601f0160208091040260200160405190810160405280929190818152602001828054610341906109ef565b801561038c5780601f106103635761010080835404028352916020019161038c565b820191905f5260205f20905b81548152906001019060200180831161036f57829003601f168201915b505050505081565b6060828210806103a457505f5482115b156103c25760405163561ce9bb60e01b815260040160405180910390fd5b5f541580156103f857505f805260026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b54155b1561041657604051633bcb0ced60e11b815260040160405180910390fd5b5f61042184846109c8565b61042c9060016109a1565b90505f8167ffffffffffffffff811115610448576104486109b4565b604051908082528060200260200182016040528015610471578160200160208202803683370190505b5090505f5b828110156104be5760025f61048b83896109a1565b81526020019081526020015f20548282815181106104ab576104ab6109db565b6020908102919091010152600101610476565b509150505b92915050565b6060828210806104d957505f5482115b156104f75760405163561ce9bb60e01b815260040160405180910390fd5b5f5415801561052d57505f805260026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b54155b1561054b57604051633bcb0ced60e11b815260040160405180910390fd5b5f61055684846109c8565b6105619060016109a1565b90505f8167ffffffffffffffff81111561057d5761057d6109b4565b6040519080825280602002602001820160405280156105a6578160200160208202803683370190505b5090505f5b828110156104be5760035f6105c083896109a1565b81526020019081526020015f20548282815181106105e0576105e06109db565b60209081029190910101526001016105ab565b5f60025f805481526020019081526020015f205490505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638205bf6a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610666573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061068a9190610a27565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106e9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061070d9190610a27565b90508161073a7f0000000000000000000000000000000000000000000000000000000000000000856109a1565b111561075857604051628e4b9d60e51b815260040160405180910390fd5b5f80815461076590610a3e565b909155505f80548152600260209081526040808320859055825483526003825291829020839055905182815283917fd78a0cb8bb633d06981248b816e7bd33c2a35a6089241d099fa519e361cab902910160405180910390a2505050565b60605f545f1480156107fc57505f805260036020527f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff54155b1561081a57604051633bcb0ced60e11b815260040160405180910390fd5b5f546108279060016109a1565b82111561084757604051633bcb0ced60e11b815260040160405180910390fd5b5f8267ffffffffffffffff811115610861576108616109b4565b60405190808252806020026020018201604052801561088a578160200160208202803683370190505b5090505f5b83811015610301575f815f546108a591906109c8565b905060035f8281526020019081526020015f20548383815181106108cb576108cb6109db565b60209081029190910101525060010161088f565b5f602082840312156108ef575f80fd5b5035919050565b602080825282518282018190525f918401906040840190835b8181101561092d57835183526020938401939092019160010161090f565b509095945050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f806040838503121561097e575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b808201808211156104c3576104c361098d565b634e487b7160e01b5f52604160045260245ffd5b818103818111156104c3576104c361098d565b634e487b7160e01b5f52603260045260245ffd5b600181811c90821680610a0357607f821691505b602082108103610a2157634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215610a37575f80fd5b5051919050565b5f60018201610a4f57610a4f61098d565b506001019056fea26469706673582212207125ddd3a565ec34a95cff2642357059b2203da3c9e3ecb584f983aef348d3b264736f6c634300081a00330000000000000000000000000000000000000000000000000000000000000080000000000000000000000000c76dfb89ff298145b417d221b2c747d84952e01d0000000000000000000000000000000000000000000000000000000000000e1000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000005532f55534400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a10000000000000000000000000000000000000000000000010000000000001f370000000000000000000000000000000000000000000000010000000000001f3c0000000000000000000000000000000000000000000000010000000000001f3e0000000000000000000000000000000000000000000000010000000000001f440000000000000000000000000000000000000000000000010000000000001f460000000000000000000000000000000000000000000000010000000000001f480000000000000000000000000000000000000000000000010000000000001f4d0000000000000000000000000000000000000000000000010000000000001f500000000000000000000000000000000000000000000000010000000000001f560000000000000000000000000000000000000000000000010000000000001f5a0000000000000000000000000000000000000000000000010000000000001f5b0000000000000000000000000000000000000000000000010000000000001f5e0000000000000000000000000000000000000000000000010000000000001f630000000000000000000000000000000000000000000000010000000000001f6d0000000000000000000000000000000000000000000000010000000000001f750000000000000000000000000000000000000000000000010000000000001f7c0000000000000000000000000000000000000000000000010000000000001f810000000000000000000000000000000000000000000000010000000000001f8d0000000000000000000000000000000000000000000000010000000000001f910000000000000000000000000000000000000000000000010000000000001f940000000000000000000000000000000000000000000000010000000000001f970000000000000000000000000000000000000000000000010000000000001f9d0000000000000000000000000000000000000000000000010000000000001f9f0000000000000000000000000000000000000000000000010000000000001fa20000000000000000000000000000000000000000000000010000000000001fa40000000000000000000000000000000000000000000000010000000000001fa70000000000000000000000000000000000000000000000010000000000001fad0000000000000000000000000000000000000000000000010000000000001fb10000000000000000000000000000000000000000000000010000000000001fb40000000000000000000000000000000000000000000000010000000000001fb70000000000000000000000000000000000000000000000010000000000001fbc0000000000000000000000000000000000000000000000010000000000001fbe0000000000000000000000000000000000000000000000010000000000001fc30000000000000000000000000000000000000000000000010000000000001fc60000000000000000000000000000000000000000000000010000000000001fcb0000000000000000000000000000000000000000000000010000000000001fcf0000000000000000000000000000000000000000000000010000000000001fd60000000000000000000000000000000000000000000000010000000000001fdd0000000000000000000000000000000000000000000000010000000000001fde0000000000000000000000000000000000000000000000010000000000001fe20000000000000000000000000000000000000000000000010000000000001fe70000000000000000000000000000000000000000000000010000000000001fea0000000000000000000000000000000000000000000000010000000000001ff00000000000000000000000000000000000000000000000010000000000001ff30000000000000000000000000000000000000000000000010000000000001ff80000000000000000000000000000000000000000000000010000000000001ffd0000000000000000000000000000000000000000000000010000000000002000000000000000000000000000000000000000000000000001000000000000200300000000000000000000000000000000000000000000000100000000000020050000000000000000000000000000000000000000000000010000000000002008000000000000000000000000000000000000000000000001000000000000200d000000000000000000000000000000000000000000000001000000000000201100000000000000000000000000000000000000000000000100000000000020140000000000000000000000000000000000000000000000010000000000002018000000000000000000000000000000000000000000000001000000000000201d0000000000000000000000000000000000000000000000010000000000002025000000000000000000000000000000000000000000000001000000000000202a000000000000000000000000000000000000000000000001000000000000202d0000000000000000000000000000000000000000000000010000000000002030000000000000000000000000000000000000000000000001000000000000203300000000000000000000000000000000000000000000000100000000000020360000000000000000000000000000000000000000000000010000000000002039000000000000000000000000000000000000000000000001000000000000203b000000000000000000000000000000000000000000000001000000000000203e000000000000000000000000000000000000000000000001000000000000204000000000000000000000000000000000000000000000000100000000000020440000000000000000000000000000000000000000000000010000000000002046000000000000000000000000000000000000000000000001000000000000204c0000000000000000000000000000000000000000000000010000000000002050000000000000000000000000000000000000000000000001000000000000205500000000000000000000000000000000000000000000000100000000000020560000000000000000000000000000000000000000000000010000000000002058000000000000000000000000000000000000000000000001000000000000206000000000000000000000000000000000000000000000000100000000000020640000000000000000000000000000000000000000000000010000000000002067000000000000000000000000000000000000000000000001000000000000206b000000000000000000000000000000000000000000000001000000000000207200000000000000000000000000000000000000000000000100000000000020770000000000000000000000000000000000000000000000010000000000002079000000000000000000000000000000000000000000000001000000000000207c000000000000000000000000000000000000000000000001000000000000207e00000000000000000000000000000000000000000000000100000000000020820000000000000000000000000000000000000000000000010000000000002083000000000000000000000000000000000000000000000001000000000000208a000000000000000000000000000000000000000000000001000000000000208e00000000000000000000000000000000000000000000000100000000000020920000000000000000000000000000000000000000000000010000000000002097000000000000000000000000000000000000000000000001000000000000209b000000000000000000000000000000000000000000000001000000000000209f00000000000000000000000000000000000000000000000100000000000020a600000000000000000000000000000000000000000000000100000000000020ad00000000000000000000000000000000000000000000000100000000000020b100000000000000000000000000000000000000000000000100000000000020b600000000000000000000000000000000000000000000000100000000000020b700000000000000000000000000000000000000000000000100000000000020bc00000000000000000000000000000000000000000000000100000000000020c600000000000000000000000000000000000000000000000100000000000020ce00000000000000000000000000000000000000000000000100000000000020d200000000000000000000000000000000000000000000000100000000000020d800000000000000000000000000000000000000000000000100000000000020d900000000000000000000000000000000000000000000000100000000000020de00000000000000000000000000000000000000000000000100000000000020e300000000000000000000000000000000000000000000000100000000000020e900000000000000000000000000000000000000000000000100000000000020ed00000000000000000000000000000000000000000000000100000000000020f200000000000000000000000000000000000000000000000100000000000020f600000000000000000000000000000000000000000000000100000000000020f800000000000000000000000000000000000000000000000100000000000020fa00000000000000000000000000000000000000000000000100000000000020ff00000000000000000000000000000000000000000000000100000000000021010000000000000000000000000000000000000000000000010000000000002107000000000000000000000000000000000000000000000001000000000000210b000000000000000000000000000000000000000000000001000000000000210f00000000000000000000000000000000000000000000000100000000000021140000000000000000000000000000000000000000000000010000000000002119000000000000000000000000000000000000000000000001000000000000211f00000000000000000000000000000000000000000000000100000000000021200000000000000000000000000000000000000000000000010000000000002126000000000000000000000000000000000000000000000001000000000000212c00000000000000000000000000000000000000000000000100000000000021300000000000000000000000000000000000000000000000010000000000002137000000000000000000000000000000000000000000000001000000000000213c000000000000000000000000000000000000000000000001000000000000214000000000000000000000000000000000000000000000000100000000000021430000000000000000000000000000000000000000000000010000000000002145000000000000000000000000000000000000000000000001000000000000214b00000000000000000000000000000000000000000000000100000000000021500000000000000000000000000000000000000000000000010000000000002155000000000000000000000000000000000000000000000001000000000000215c000000000000000000000000000000000000000000000001000000000000216200000000000000000000000000000000000000000000000100000000000021670000000000000000000000000000000000000000000000010000000000002173000000000000000000000000000000000000000000000001000000000000217a00000000000000000000000000000000000000000000000100000000000021800000000000000000000000000000000000000000000000010000000000002187000000000000000000000000000000000000000000000001000000000000218b000000000000000000000000000000000000000000000001000000000000218e0000000000000000000000000000000000000000000000010000000000002191000000000000000000000000000000000000000000000001000000000000219200000000000000000000000000000000000000000000000100000000000021940000000000000000000000000000000000000000000000010000000000002199000000000000000000000000000000000000000000000001000000000000219e00000000000000000000000000000000000000000000000100000000000021a300000000000000000000000000000000000000000000000100000000000021a900000000000000000000000000000000000000000000000100000000000021ae00000000000000000000000000000000000000000000000100000000000021b300000000000000000000000000000000000000000000000100000000000021b700000000000000000000000000000000000000000000000100000000000021bb00000000000000000000000000000000000000000000000100000000000021be00000000000000000000000000000000000000000000000100000000000021c200000000000000000000000000000000000000000000000100000000000021ce00000000000000000000000000000000000000000000000100000000000021d500000000000000000000000000000000000000000000000100000000000021da00000000000000000000000000000000000000000000000100000000000021de00000000000000000000000000000000000000000000000100000000000021e200000000000000000000000000000000000000000000000100000000000021e600000000000000000000000000000000000000000000000100000000000021ea00000000000000000000000000000000000000000000000100000000000021ed00000000000000000000000000000000000000000000000100000000000021f200000000000000000000000000000000000000000000000100000000000021f700000000000000000000000000000000000000000000000100000000000021fa00000000000000000000000000000000000000000000000100000000000021ff00000000000000000000000000000000000000000000000100000000000022040000000000000000000000000000000000000000000000010000000000002208000000000000000000000000000000000000000000000001000000000000220c000000000000000000000000000000000000000000000001000000000000221000000000000000000000000000000000000000000000000100000000000022190000000000000000000000000000000000000000000000010000000000002222000000000000000000000000000000000000000000000001000000000000222a000000000000000000000000000000000000000000000001000000000000223000000000000000000000000000000000000000000000000100000000000022330000000000000000000000000000000000000000000000010000000000002241000000000000000000000000000000000000000000000001000000000000224c0000000000000000000000000000000000000000000000010000000000002253000000000000000000000000000000000000000000000001000000000000225a000000000000000000000000000000000000000000000001000000000000226000000000000000000000000000000000000000000000000100000000000022640000000000000000000000000000000000000000000000010000000000002267000000000000000000000000000000000000000000000001000000000000226b000000000000000000000000000000000000000000000001000000000000226e00000000000000000000000000000000000000000000000100000000000022710000000000000000000000000000000000000000000000010000000000002275000000000000000000000000000000000000000000000001000000000000227c0000000000000000000000000000000000000000000000010000000000002284000000000000000000000000000000000000000000000001000000000000228d0000000000000000000000000000000000000000000000010000000000002295000000000000000000000000000000000000000000000001000000000000229a000000000000000000000000000000000000000000000001000000000000229f00000000000000000000000000000000000000000000000100000000000022a200000000000000000000000000000000000000000000000100000000000022a700000000000000000000000000000000000000000000000100000000000022ab00000000000000000000000000000000000000000000000100000000000022b100000000000000000000000000000000000000000000000100000000000022b400000000000000000000000000000000000000000000000100000000000022b800000000000000000000000000000000000000000000000100000000000022bc00000000000000000000000000000000000000000000000100000000000022c400000000000000000000000000000000000000000000000100000000000022c800000000000000000000000000000000000000000000000100000000000022cb00000000000000000000000000000000000000000000000100000000000022ce00000000000000000000000000000000000000000000000100000000000022d400000000000000000000000000000000000000000000000100000000000022da00000000000000000000000000000000000000000000000100000000000022dd00000000000000000000000000000000000000000000000100000000000022e400000000000000000000000000000000000000000000000100000000000022ec00000000000000000000000000000000000000000000000100000000000022f70000000000000000000000000000000000000000000000010000000000002302000000000000000000000000000000000000000000000001000000000000230e000000000000000000000000000000000000000000000001000000000000231b0000000000000000000000000000000000000000000000010000000000002323000000000000000000000000000000000000000000000001000000000000232b000000000000000000000000000000000000000000000001000000000000232e000000000000000000000000000000000000000000000001000000000000233200000000000000000000000000000000000000000000000100000000000023340000000000000000000000000000000000000000000000010000000000002337000000000000000000000000000000000000000000000001000000000000233a000000000000000000000000000000000000000000000001000000000000233b000000000000000000000000000000000000000000000001000000000000233d000000000000000000000000000000000000000000000001000000000000233f000000000000000000000000000000000000000000000001000000000000234000000000000000000000000000000000000000000000000100000000000023430000000000000000000000000000000000000000000000010000000000002347000000000000000000000000000000000000000000000001000000000000234a000000000000000000000000000000000000000000000001000000000000234f000000000000000000000000000000000000000000000001000000000000235200000000000000000000000000000000000000000000000100000000000023560000000000000000000000000000000000000000000000010000000000002359000000000000000000000000000000000000000000000001000000000000235e000000000000000000000000000000000000000000000001000000000000235f0000000000000000000000000000000000000000000000010000000000002362000000000000000000000000000000000000000000000001000000000000236400000000000000000000000000000000000000000000000100000000000023650000000000000000000000000000000000000000000000010000000000002368000000000000000000000000000000000000000000000001000000000000236b000000000000000000000000000000000000000000000001000000000000236e000000000000000000000000000000000000000000000001000000000000237200000000000000000000000000000000000000000000000100000000000023730000000000000000000000000000000000000000000000010000000000002378000000000000000000000000000000000000000000000001000000000000237d000000000000000000000000000000000000000000000001000000000000238300000000000000000000000000000000000000000000000100000000000023850000000000000000000000000000000000000000000000010000000000002389000000000000000000000000000000000000000000000001000000000000239700000000000000000000000000000000000000000000000100000000000023a500000000000000000000000000000000000000000000000100000000000023b000000000000000000000000000000000000000000000000100000000000023b700000000000000000000000000000000000000000000000100000000000023bf00000000000000000000000000000000000000000000000100000000000023ca00000000000000000000000000000000000000000000000100000000000023d600000000000000000000000000000000000000000000000100000000000023dc00000000000000000000000000000000000000000000000100000000000023e400000000000000000000000000000000000000000000000100000000000023f100000000000000000000000000000000000000000000000100000000000023fb00000000000000000000000000000000000000000000000100000000000024110000000000000000000000000000000000000000000000010000000000002423000000000000000000000000000000000000000000000001000000000000242f000000000000000000000000000000000000000000000001000000000000243c00000000000000000000000000000000000000000000000100000000000024480000000000000000000000000000000000000000000000010000000000002450000000000000000000000000000000000000000000000001000000000000245f00000000000000000000000000000000000000000000000100000000000024850000000000000000000000000000000000000000000000010000000000002498000000000000000000000000000000000000000000000001000000000000249f00000000000000000000000000000000000000000000000100000000000024a500000000000000000000000000000000000000000000000100000000000024af00000000000000000000000000000000000000000000000100000000000024ba00000000000000000000000000000000000000000000000100000000000024c300000000000000000000000000000000000000000000000100000000000024c800000000000000000000000000000000000000000000000100000000000024cc00000000000000000000000000000000000000000000000100000000000024d400000000000000000000000000000000000000000000000100000000000024d900000000000000000000000000000000000000000000000100000000000024db00000000000000000000000000000000000000000000000100000000000024e000000000000000000000000000000000000000000000000100000000000024e600000000000000000000000000000000000000000000000100000000000024ea00000000000000000000000000000000000000000000000100000000000024ec00000000000000000000000000000000000000000000000100000000000024f100000000000000000000000000000000000000000000000100000000000024f400000000000000000000000000000000000000000000000100000000000024fb00000000000000000000000000000000000000000000000100000000000024ff000000000000000000000000000000000000000000000001000000000000250b000000000000000000000000000000000000000000000001000000000000251300000000000000000000000000000000000000000000000100000000000025180000000000000000000000000000000000000000000000010000000000002520000000000000000000000000000000000000000000000001000000000000252e00000000000000000000000000000000000000000000000100000000000025330000000000000000000000000000000000000000000000010000000000002538000000000000000000000000000000000000000000000001000000000000253e0000000000000000000000000000000000000000000000010000000000002545000000000000000000000000000000000000000000000001000000000000254a0000000000000000000000000000000000000000000000010000000000002550000000000000000000000000000000000000000000000001000000000000255b00000000000000000000000000000000000000000000000100000000000025620000000000000000000000000000000000000000000000010000000000002569000000000000000000000000000000000000000000000001000000000000256e00000000000000000000000000000000000000000000000100000000000025720000000000000000000000000000000000000000000000010000000000002577000000000000000000000000000000000000000000000001000000000000257b00000000000000000000000000000000000000000000000100000000000025890000000000000000000000000000000000000000000000010000000000002591000000000000000000000000000000000000000000000001000000000000259900000000000000000000000000000000000000000000000100000000000025a200000000000000000000000000000000000000000000000100000000000025a500000000000000000000000000000000000000000000000100000000000025ae00000000000000000000000000000000000000000000000100000000000025ca00000000000000000000000000000000000000000000000100000000000025d900000000000000000000000000000000000000000000000100000000000025e400000000000000000000000000000000000000000000000100000000000025f100000000000000000000000000000000000000000000000100000000000025f800000000000000000000000000000000000000000000000100000000000025fc0000000000000000000000000000000000000000000000010000000000002605000000000000000000000000000000000000000000000001000000000000260a00000000000000000000000000000000000000000000000100000000000026110000000000000000000000000000000000000000000000010000000000002616000000000000000000000000000000000000000000000001000000000000261a000000000000000000000000000000000000000000000001000000000000261e000000000000000000000000000000000000000000000001000000000000262200000000000000000000000000000000000000000000000100000000000026250000000000000000000000000000000000000000000000010000000000002628000000000000000000000000000000000000000000000001000000000000262b0000000000000000000000000000000000000000000000010000000000002634000000000000000000000000000000000000000000000001000000000000263f00000000000000000000000000000000000000000000000100000000000026490000000000000000000000000000000000000000000000010000000000002656000000000000000000000000000000000000000000000001000000000000266000000000000000000000000000000000000000000000000100000000000026650000000000000000000000000000000000000000000000010000000000002669000000000000000000000000000000000000000000000001000000000000266b000000000000000000000000000000000000000000000001000000000000266d00000000000000000000000000000000000000000000000100000000000026720000000000000000000000000000000000000000000000010000000000002679000000000000000000000000000000000000000000000001000000000000267f000000000000000000000000000000000000000000000001000000000000268000000000000000000000000000000000000000000000000100000000000026830000000000000000000000000000000000000000000000010000000000002686000000000000000000000000000000000000000000000001000000000000268b00000000000000000000000000000000000000000000000100000000000026920000000000000000000000000000000000000000000000010000000000002697000000000000000000000000000000000000000000000001000000000000269e00000000000000000000000000000000000000000000000100000000000026a200000000000000000000000000000000000000000000000100000000000026ad00000000000000000000000000000000000000000000000100000000000026b300000000000000000000000000000000000000000000000100000000000026b800000000000000000000000000000000000000000000000100000000000026be00000000000000000000000000000000000000000000000100000000000026c300000000000000000000000000000000000000000000000100000000000026c700000000000000000000000000000000000000000000000100000000000026cb00000000000000000000000000000000000000000000000100000000000026cd00000000000000000000000000000000000000000000000100000000000026d000000000000000000000000000000000000000000000000100000000000026d400000000000000000000000000000000000000000000000100000000000026d700000000000000000000000000000000000000000000000100000000000026db00000000000000000000000000000000000000000000000100000000000026e400000000000000000000000000000000000000000000000100000000000026eb00000000000000000000000000000000000000000000000100000000000026ee00000000000000000000000000000000000000000000000100000000000026f500000000000000000000000000000000000000000000000100000000000026f800000000000000000000000000000000000000000000000100000000000026ff0000000000000000000000000000000000000000000000010000000000002705000000000000000000000000000000000000000000000001000000000000270d000000000000000000000000000000000000000000000001000000000000271700000000000000000000000000000000000000000000000100000000000027220000000000000000000000000000000000000000000000010000000000002727000000000000000000000000000000000000000000000001000000000000272b000000000000000000000000000000000000000000000001000000000000272c0000000000000000000000000000000000000000000000010000000000002730000000000000000000000000000000000000000000000001000000000000273300000000000000000000000000000000000000000000000100000000000027350000000000000000000000000000000000000000000000010000000000002739000000000000000000000000000000000000000000000001000000000000273a000000000000000000000000000000000000000000000001000000000000273d00000000000000000000000000000000000000000000000100000000000027400000000000000000000000000000000000000000000000010000000000002742000000000000000000000000000000000000000000000001000000000000274300000000000000000000000000000000000000000000000100000000000027450000000000000000000000000000000000000000000000010000000000002747000000000000000000000000000000000000000000000001000000000000274a000000000000000000000000000000000000000000000001000000000000274e0000000000000000000000000000000000000000000000010000000000002752000000000000000000000000000000000000000000000001000000000000275400000000000000000000000000000000000000000000000100000000000027550000000000000000000000000000000000000000000000010000000000002759000000000000000000000000000000000000000000000001000000000000275c0000000000000000000000000000000000000000000000010000000000002765000000000000000000000000000000000000000000000001000000000000276c00000000000000000000000000000000000000000000000100000000000027700000000000000000000000000000000000000000000000010000000000002775000000000000000000000000000000000000000000000001000000000000277b000000000000000000000000000000000000000000000001000000000000277d0000000000000000000000000000000000000000000000010000000000002787000000000000000000000000000000000000000000000001000000000000278a000000000000000000000000000000000000000000000001000000000000278c000000000000000000000000000000000000000000000001000000000000278e00000000000000000000000000000000000000000000000100000000000027930000000000000000000000000000000000000000000000010000000000002797000000000000000000000000000000000000000000000001000000000000279a00000000000000000000000000000000000000000000000100000000000027a000000000000000000000000000000000000000000000000100000000000027a800000000000000000000000000000000000000000000000100000000000027ad00000000000000000000000000000000000000000000000100000000000027b100000000000000000000000000000000000000000000000100000000000027b500000000000000000000000000000000000000000000000100000000000027b800000000000000000000000000000000000000000000000100000000000027bb00000000000000000000000000000000000000000000000100000000000027bf00000000000000000000000000000000000000000000000100000000000027c100000000000000000000000000000000000000000000000100000000000027c500000000000000000000000000000000000000000000000100000000000027cb00000000000000000000000000000000000000000000000100000000000027d100000000000000000000000000000000000000000000000100000000000027d400000000000000000000000000000000000000000000000100000000000027d800000000000000000000000000000000000000000000000100000000000027db00000000000000000000000000000000000000000000000100000000000027dc00000000000000000000000000000000000000000000000100000000000027df00000000000000000000000000000000000000000000000100000000000027e300000000000000000000000000000000000000000000000100000000000027e700000000000000000000000000000000000000000000000100000000000027f000000000000000000000000000000000000000000000000100000000000027f400000000000000000000000000000000000000000000000100000000000027f6

Deployed Bytecode

0x608060405234801561000f575f80fd5b50600436106100a6575f3560e01c80638bc33af31161006e5780638bc33af31461016f5780639e52c4981461018e578063a2e62045146101a1578063bc31c1c1146101ab578063c6f47486146101ca578063e484cf32146101dd575f80fd5b806301027d14146100aa5780636a42b8f8146100d35780637284e416146101085780637c94c2e91461011d5780637dc0d1d014610130575b5f80fd5b6100bd6100b83660046108df565b6101e5565b6040516100ca91906108f6565b60405180910390f35b6100fa7f0000000000000000000000000000000000000000000000000000000000000e1081565b6040519081526020016100ca565b610110610308565b6040516100ca9190610938565b6100bd61012b36600461096d565b610394565b6101577f000000000000000000000000c76dfb89ff298145b417d221b2c747d84952e01d81565b6040516001600160a01b0390911681526020016100ca565b6100fa61017d3660046108df565b60026020525f908152604090205481565b6100bd61019c36600461096d565b6104c9565b6101a96105f3565b005b6100fa6101b93660046108df565b60036020525f908152604090205481565b6100bd6101d83660046108df565b6107c3565b6100fa5f5481565b60605f545f14801561021e57505f805260026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b54155b1561023c57604051633bcb0ced60e11b815260040160405180910390fd5b5f546102499060016109a1565b82111561026957604051633bcb0ced60e11b815260040160405180910390fd5b5f8267ffffffffffffffff811115610283576102836109b4565b6040519080825280602002602001820160405280156102ac578160200160208202803683370190505b5090505f5b83811015610301575f815f546102c791906109c8565b905060025f8281526020019081526020015f20548383815181106102ed576102ed6109db565b6020908102919091010152506001016102b1565b5092915050565b60018054610315906109ef565b80601f0160208091040260200160405190810160405280929190818152602001828054610341906109ef565b801561038c5780601f106103635761010080835404028352916020019161038c565b820191905f5260205f20905b81548152906001019060200180831161036f57829003601f168201915b505050505081565b6060828210806103a457505f5482115b156103c25760405163561ce9bb60e01b815260040160405180910390fd5b5f541580156103f857505f805260026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b54155b1561041657604051633bcb0ced60e11b815260040160405180910390fd5b5f61042184846109c8565b61042c9060016109a1565b90505f8167ffffffffffffffff811115610448576104486109b4565b604051908082528060200260200182016040528015610471578160200160208202803683370190505b5090505f5b828110156104be5760025f61048b83896109a1565b81526020019081526020015f20548282815181106104ab576104ab6109db565b6020908102919091010152600101610476565b509150505b92915050565b6060828210806104d957505f5482115b156104f75760405163561ce9bb60e01b815260040160405180910390fd5b5f5415801561052d57505f805260026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b54155b1561054b57604051633bcb0ced60e11b815260040160405180910390fd5b5f61055684846109c8565b6105619060016109a1565b90505f8167ffffffffffffffff81111561057d5761057d6109b4565b6040519080825280602002602001820160405280156105a6578160200160208202803683370190505b5090505f5b828110156104be5760035f6105c083896109a1565b81526020019081526020015f20548282815181106105e0576105e06109db565b60209081029190910101526001016105ab565b5f60025f805481526020019081526020015f205490505f7f000000000000000000000000c76dfb89ff298145b417d221b2c747d84952e01d6001600160a01b0316638205bf6a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610666573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061068a9190610a27565b90505f7f000000000000000000000000c76dfb89ff298145b417d221b2c747d84952e01d6001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106e9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061070d9190610a27565b90508161073a7f0000000000000000000000000000000000000000000000000000000000000e10856109a1565b111561075857604051628e4b9d60e51b815260040160405180910390fd5b5f80815461076590610a3e565b909155505f80548152600260209081526040808320859055825483526003825291829020839055905182815283917fd78a0cb8bb633d06981248b816e7bd33c2a35a6089241d099fa519e361cab902910160405180910390a2505050565b60605f545f1480156107fc57505f805260036020527f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff54155b1561081a57604051633bcb0ced60e11b815260040160405180910390fd5b5f546108279060016109a1565b82111561084757604051633bcb0ced60e11b815260040160405180910390fd5b5f8267ffffffffffffffff811115610861576108616109b4565b60405190808252806020026020018201604052801561088a578160200160208202803683370190505b5090505f5b83811015610301575f815f546108a591906109c8565b905060035f8281526020019081526020015f20548383815181106108cb576108cb6109db565b60209081029190910101525060010161088f565b5f602082840312156108ef575f80fd5b5035919050565b602080825282518282018190525f918401906040840190835b8181101561092d57835183526020938401939092019160010161090f565b509095945050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f806040838503121561097e575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b808201808211156104c3576104c361098d565b634e487b7160e01b5f52604160045260245ffd5b818103818111156104c3576104c361098d565b634e487b7160e01b5f52603260045260245ffd5b600181811c90821680610a0357607f821691505b602082108103610a2157634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215610a37575f80fd5b5051919050565b5f60018201610a4f57610a4f61098d565b506001019056fea26469706673582212207125ddd3a565ec34a95cff2642357059b2203da3c9e3ecb584f983aef348d3b264736f6c634300081a0033

Deployed Bytecode Sourcemap

2385:5267:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5786:621;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3015:30;;;;;;;;1007:25:1;;;995:2;980:18;3015:30:0;861:177:1;3147:25:0;;;:::i;:::-;;;;;;;:::i;7090:559::-;;;;;;:::i;:::-;;:::i;2903:44::-;;;;;;;;-1:-1:-1;;;;;2008:32:1;;;1990:51;;1978:2;1963:18;2903:44:0;1817:230:1;3223:46:0;;;;;;:::i;:::-;;;;;;;;;;;;;;6457:583;;;;;;:::i;:::-;;:::i;4518:525::-;;;:::i;:::-;;3276:43;;;;;;:::i;:::-;;;;;;;;;;;;;;5095:641;;;;;;:::i;:::-;;:::i;3087:31::-;;;;;;5786:621;5859:16;5892;;5912:1;5892:21;:43;;;;-1:-1:-1;5917:13:0;;;:10;:13;;;;:18;5892:43;5888:100;;;5959:17;;-1:-1:-1;;;5959:17:0;;;;;;;;;;;5888:100;6071:16;;:20;;6090:1;6071:20;:::i;:::-;6060:8;:31;6056:88;;;6115:17;;-1:-1:-1;;;6115:17:0;;;;;;;;;;;6056:88;6156:23;6196:8;6182:23;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6182:23:0;;6156:49;;6223:9;6218:156;6242:8;6238:1;:12;6218:156;;;6272:18;6312:1;6293:16;;:20;;;;:::i;:::-;6272:41;;6340:10;:22;6351:10;6340:22;;;;;;;;;;;;6328:6;6335:1;6328:9;;;;;;;;:::i;:::-;;;;;;;;;;:34;-1:-1:-1;6252:3:0;;6218:156;;;-1:-1:-1;6393:6:0;5786:621;-1:-1:-1;;5786:621:0:o;3147:25::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7090:559::-;7178:16;7217:5;7211:3;:11;:37;;;;7232:16;;7226:3;:22;7211:37;7207:91;;;7272:14;;-1:-1:-1;;;7272:14:0;;;;;;;;;;;7207:91;7314:16;;:21;:43;;;;-1:-1:-1;7339:13:0;;;:10;:13;;;;:18;7314:43;7310:100;;;7381:17;;-1:-1:-1;;;7381:17:0;;;;;;;;;;;7310:100;7422:12;7437:11;7443:5;7437:3;:11;:::i;:::-;:15;;7451:1;7437:15;:::i;:::-;7422:30;;7463:23;7503:4;7489:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7489:19:0;;7463:45;;7526:9;7521:95;7545:4;7541:1;:8;7521:95;;;7583:10;:21;7594:9;7602:1;7594:5;:9;:::i;:::-;7583:21;;;;;;;;;;;;7571:6;7578:1;7571:9;;;;;;;;:::i;:::-;;;;;;;;;;:33;7551:3;;7521:95;;;-1:-1:-1;7635:6:0;-1:-1:-1;;7090:559:0;;;;;:::o;6457:583::-;6541:16;6580:5;6574:3;:11;:37;;;;6595:16;;6589:3;:22;6574:37;6570:91;;;6635:14;;-1:-1:-1;;;6635:14:0;;;;;;;;;;;6570:91;6685:16;;:21;:43;;;;-1:-1:-1;6710:13:0;;;:10;:13;;;;:18;6685:43;6681:100;;;6752:17;;-1:-1:-1;;;6752:17:0;;;;;;;;;;;6681:100;6801:12;6816:11;6822:5;6816:3;:11;:::i;:::-;:15;;6830:1;6816:15;:::i;:::-;6801:30;;6842:23;6882:4;6868:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6868:19:0;;6842:45;;6913:9;6908:91;6932:4;6928:1;:8;6908:91;;;6970:6;:17;6977:9;6985:1;6977:5;:9;:::i;:::-;6970:17;;;;;;;;;;;;6958:6;6965:1;6958:9;;;;;;;;:::i;:::-;;;;;;;;;;:29;6938:3;;6908:91;;4518:525;4556:21;4580:10;:28;4591:16;;4580:28;;;;;;;;;;;;4556:52;;4621:23;4647:6;-1:-1:-1;;;;;4647:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4621:50;;4682:19;4712:6;-1:-1:-1;;;;;4712:19:0;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4682:52;-1:-1:-1;4777:15:0;4752:21;4768:5;4752:13;:21;:::i;:::-;4751:41;4747:95;;;4816:14;;-1:-1:-1;;;4816:14:0;;;;;;;;;;;4747:95;4856:16;;4854:18;;;;;:::i;:::-;;;;-1:-1:-1;4885:28:0;4896:16;;4885:28;;:10;:28;;;;;;;;:46;;;4949:16;;4942:24;;:6;:24;;;;;;:38;;;4998:37;;1007:25:1;;;4885:46:0;;4998:37;;980:18:1;4998:37:0;;;;;;;4545:498;;;4518:525::o;5095:641::-;5164:16;5197;;5217:1;5197:21;:39;;;;-1:-1:-1;5222:9:0;;;:6;:9;;;;:14;5197:39;5193:96;;;5260:17;;-1:-1:-1;;;5260:17:0;;;;;;;;;;;5193:96;5380:16;;:20;;5399:1;5380:20;:::i;:::-;5369:8;:31;5365:88;;;5424:17;;-1:-1:-1;;;5424:17:0;;;;;;;;;;;5365:88;5473:23;5513:8;5499:23;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5499:23:0;;5473:49;;5548:9;5543:152;5567:8;5563:1;:12;5543:152;;;5597:18;5637:1;5618:16;;:20;;;;:::i;:::-;5597:41;;5665:6;:18;5672:10;5665:18;;;;;;;;;;;;5653:6;5660:1;5653:9;;;;;;;;:::i;:::-;;;;;;;;;;:30;-1:-1:-1;5577:3:0;;5543:152;;14:226:1;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;187:23:1;;14:226;-1:-1:-1;14:226:1:o;245:611::-;435:2;447:21;;;517:13;;420:18;;;539:22;;;387:4;;618:15;;;592:2;577:18;;;387:4;661:169;675:6;672:1;669:13;661:169;;;736:13;;724:26;;779:2;805:15;;;;770:12;;;;697:1;690:9;661:169;;;-1:-1:-1;847:3:1;;245:611;-1:-1:-1;;;;;245:611:1:o;1043:418::-;1192:2;1181:9;1174:21;1155:4;1224:6;1218:13;1267:6;1262:2;1251:9;1247:18;1240:34;1326:6;1321:2;1313:6;1309:15;1304:2;1293:9;1289:18;1283:50;1382:1;1377:2;1368:6;1357:9;1353:22;1349:31;1342:42;1452:2;1445;1441:7;1436:2;1428:6;1424:15;1420:29;1409:9;1405:45;1401:54;1393:62;;;1043:418;;;;:::o;1466:346::-;1534:6;1542;1595:2;1583:9;1574:7;1570:23;1566:32;1563:52;;;1611:1;1608;1601:12;1563:52;-1:-1:-1;;1656:23:1;;;1776:2;1761:18;;;1748:32;;-1:-1:-1;1466:346:1:o;2052:127::-;2113:10;2108:3;2104:20;2101:1;2094:31;2144:4;2141:1;2134:15;2168:4;2165:1;2158:15;2184:125;2249:9;;;2270:10;;;2267:36;;;2283:18;;:::i;2314:127::-;2375:10;2370:3;2366:20;2363:1;2356:31;2406:4;2403:1;2396:15;2430:4;2427:1;2420:15;2446:128;2513:9;;;2534:11;;;2531:37;;;2548:18;;:::i;2579:127::-;2640:10;2635:3;2631:20;2628:1;2621:31;2671:4;2668:1;2661:15;2695:4;2692:1;2685:15;2711:380;2790:1;2786:12;;;;2833;;;2854:61;;2908:4;2900:6;2896:17;2886:27;;2854:61;2961:2;2953:6;2950:14;2930:18;2927:38;2924:161;;3007:10;3002:3;2998:20;2995:1;2988:31;3042:4;3039:1;3032:15;3070:4;3067:1;3060:15;2924:161;;2711:380;;;:::o;3096:184::-;3166:6;3219:2;3207:9;3198:7;3194:23;3190:32;3187:52;;;3235:1;3232;3225:12;3187:52;-1:-1:-1;3258:16:1;;3096:184;-1:-1:-1;3096:184:1:o;3473:135::-;3512:3;3533:17;;;3530:43;;3553:18;;:::i;:::-;-1:-1:-1;3600:1:1;3589:13;;3473:135::o

Swarm Source

ipfs://7125ddd3a565ec34a95cff2642357059b2203da3c9e3ecb584f983aef348d3b2

Block Transaction Gas Used Reward
view all blocks ##produced##

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
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.