S Price: $0.447506 (-0.79%)

Contract

0xA0074F24bb70FdDe2c2E1d27dA10AD0FAc741823

Overview

S Balance

Sonic LogoSonic LogoSonic Logo0 S

S Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

Please try again later

Parent Transaction Hash Block From To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
UniV3PositionReader

Compiler Version
v0.8.28+commit.7893614a

Optimization Enabled:
Yes with 200 runs

Other Settings:
cancun EvmVersion, None license
/**
 *Submitted for verification at SonicScan.org on 2025-03-06
*/

// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.8.1;

interface ArbSys {
    /**
     * @notice Get Arbitrum block number (distinct from L1 block number; Arbitrum genesis block has block number 0)
     * @return block number as int
     */
    function arbBlockNumber() external view returns (uint256);
}

interface Nfpm {
    function positions(
        uint256 tokenId
    )
        external
        view
        returns (
            uint96 nonce,
            address operator,
            address token0,
            address token1,
            uint24 fee,
            int24 tickLower,
            int24 tickUpper,
            uint128 liquidity,
            uint256 feeGrowthInside0LastX128,
            uint256 feeGrowthInside1LastX128,
            uint128 tokensOwed0,
            uint128 tokensOwed1
        );

    function factory() external view returns (address);

    function ownerOf(uint256 tokenId) external view returns (address owner);
}

interface AlgebraNfpm {
    function positions(
        uint256 tokenId
    )
        external
        view
        returns (
            uint96 nonce,
            address operator,
            address token0,
            address token1,
            int24 tickLower,
            int24 tickUpper,
            uint128 liquidity,
            uint256 feeGrowthInside0LastX128,
            uint256 feeGrowthInside1LastX128,
            uint128 tokensOwed0,
            uint128 tokensOwed1
        );

    function factory() external view returns (address);

    function ownerOf(uint256 tokenId) external view returns (address owner);
}

interface RamsesNfpm {
    function positions(
        uint256 tokenId
    )
        external
        view
        returns (
            address token0,
            address token1,
            int24 tickSpacing,
            int24 tickLower,
            int24 tickUpper,
            uint128 liquidity,
            uint256 feeGrowthInside0LastX128,
            uint256 feeGrowthInside1LastX128,
            uint128 tokensOwed0,
            uint128 tokensOwed1
        );

    function ownerOf(uint256 tokenId) external view returns (address owner);
}

interface ShadowNfpm {
    function positions(
        uint256 tokenId
    )
        external
        view
        returns (
            address token0,
            address token1,
            int24 tickSpacing,
            int24 tickLower,
            int24 tickUpper,
            uint128 liquidity,
            uint256 feeGrowthInside0LastX128,
            uint256 feeGrowthInside1LastX128,
            uint128 tokensOwed0,
            uint128 tokensOwed1
        );

    function ownerOf(uint256 tokenId) external view returns (address owner);
}

interface AlgebraPool {
    function globalState()
        external
        view
        returns (
            uint160 price,
            int24 tick,
            uint256 fee,
            uint256 timepointIndex,
            uint256 communityFeeToken0,
            uint256 communityFeeToken1,
            bool unlocked
        );
}

interface AlgebraPool2 {
    function globalState()
        external
        view
        returns (
            uint160 price,
            int24 tick,
            uint256 feeZto,
            uint256 feeOtz,
            uint256 timepointIndex,
            uint256 communityFeeToken0,
            uint256 communityFeeToken1,
            bool unlocked
        );
}

interface Factory {
    function getPool(
        address token0,
        address token1,
        uint24 fee
    ) external view returns (address);

    function poolByPair(
        address tokenA,
        address tokenB
    ) external view returns (address pool);
}

interface ThrusterFactory {
    function factory() external view returns (address);
}

contract UniV3PositionReader {
    struct UniV3Position {
        address token0;
        address token1;
        uint24 fee;
        int24 tickSpacing;
        int24 tickLower;
        int24 tickUpper;
        uint128 liquidity;
        uint256 feeGrowthInside0LastX128;
        uint256 feeGrowthInside1LastX128;
        uint128 tokensOwed0;
        uint128 tokensOwed1;
        address factory;
        address pool;
        bool burned;
        bool success;
        address owner;
    }

    function getPositions(
        address[] calldata nfpms,
        uint256[] calldata tokenIds
    )
        public
        view
        returns (UniV3Position[] memory positions, uint256 blockNumber)
    {
        if (block.chainid == 42161) {
            blockNumber = ArbSys(address(100)).arbBlockNumber();
        } else {
            blockNumber = block.number;
        }
        positions = new UniV3Position[](nfpms.length);
        for (uint256 i = 0; i < nfpms.length; i++) {
            positions[i] = getPosition(nfpms[i], tokenIds[i]);
        }
    }

    function _getPositionAlgebraInternal(
        AlgebraNfpm nfpm,
        uint256 tokenId
    ) external view returns (UniV3Position memory position) {
        try nfpm.positions(tokenId) returns (
            uint96,
            address,
            address token0,
            address token1,
            int24 tickLower,
            int24 tickUpper,
            uint128 liquidity,
            uint256 feeGrowthInside0LastX128,
            uint256 feeGrowthInside1LastX128,
            uint128 tokensOwed0,
            uint128 tokensOwed1
        ) {
            position.token0 = token0;
            position.token1 = token1;
            position.tickLower = tickLower;
            position.tickUpper = tickUpper;
            position.liquidity = liquidity;
            position.feeGrowthInside0LastX128 = feeGrowthInside0LastX128;
            position.feeGrowthInside1LastX128 = feeGrowthInside1LastX128;
            position.tokensOwed0 = tokensOwed0;
            position.tokensOwed1 = tokensOwed1;
        } catch {
            position.burned = true;
            position.success = true;
            return position;
        }
        position.factory = nfpm.factory();
        position.owner = nfpm.ownerOf(tokenId);
        position.pool = Factory(position.factory).poolByPair(
            position.token0,
            position.token1
        );
        try this._getPoolFeeAlgebra(position.pool) returns (uint24 fee) {
            position.fee = uint24(fee);
            position.success = true;
        } catch {}
        try this._getPoolFeeAlgebra2(position.pool) returns (uint24 fee) {
            position.fee = uint24(fee);
            position.success = true;
        } catch {}
    }

    function _getPoolFeeAlgebra(address pool) external view returns (uint24) {
        (, , uint256 fee, , , , ) = AlgebraPool(pool).globalState();
        return uint24(fee);
    }

    function _getPoolFeeAlgebra2(address pool) external view returns (uint24) {
        (, , uint256 fee, , , , , ) = AlgebraPool2(pool).globalState();
        return uint24(fee);
    }

    function _getPositionInternal(
        Nfpm nfpm,
        uint256 tokenId
    ) external view returns (UniV3Position memory position) {
        try nfpm.positions(tokenId) returns (
            uint96,
            address,
            address token0,
            address token1,
            uint24 fee,
            int24 tickLower,
            int24 tickUpper,
            uint128 liquidity,
            uint256 feeGrowthInside0LastX128,
            uint256 feeGrowthInside1LastX128,
            uint128 tokensOwed0,
            uint128 tokensOwed1
        ) {
            position.token0 = token0;
            position.token1 = token1;
            position.fee = fee;
            position.tickLower = tickLower;
            position.tickUpper = tickUpper;
            position.liquidity = liquidity;
            position.feeGrowthInside0LastX128 = feeGrowthInside0LastX128;
            position.feeGrowthInside1LastX128 = feeGrowthInside1LastX128;
            position.tokensOwed0 = tokensOwed0;
            position.tokensOwed1 = tokensOwed1;
        } catch {
            position.burned = true;
            position.success = true;
            return position;
        }
        position.factory = nfpm.factory();
        position.owner = nfpm.ownerOf(tokenId);
        try
            this._getPoolUniV3(
                position.factory,
                position.token0,
                position.token1,
                position.fee
            )
        returns (address pool) {
            position.pool = pool;
            position.success = true;
        } catch {}
        try
            this._getPoolThruster(
                position.factory,
                position.token0,
                position.token1,
                position.fee
            )
        returns (address pool) {
            position.pool = pool;
            position.success = true;
        } catch {}
    }

    function _getPoolUniV3(
        address factory,
        address token0,
        address token1,
        uint24 fee
    ) external view returns (address) {
        return Factory(factory).getPool(token0, token1, fee);
    }

    function _getPoolThruster(
        address thrusterF,
        address token0,
        address token1,
        uint24 fee
    ) external view returns (address) {
        address factory = ThrusterFactory(thrusterF).factory();
        return Factory(factory).getPool(token0, token1, fee);
    }

    function _getPositionShadowInternal(
        ShadowNfpm nfpm,
        uint256 tokenId
    ) external view returns (UniV3Position memory position) {
        try nfpm.positions(tokenId) returns (
            address token0,
            address token1,
            int24 tickSpacing,
            int24 tickLower,
            int24 tickUpper,
            uint128 liquidity,
            uint256 feeGrowthInside0LastX128,
            uint256 feeGrowthInside1LastX128,
            uint128 tokensOwed0,
            uint128 tokensOwed1
        ) {
            position.token0 = token0;
            position.token1 = token1;
            position.tickSpacing = tickSpacing;
            position.tickLower = tickLower;
            position.tickUpper = tickUpper;
            position.liquidity = liquidity;
            position.feeGrowthInside0LastX128 = feeGrowthInside0LastX128;
            position.feeGrowthInside1LastX128 = feeGrowthInside1LastX128;
            position.tokensOwed0 = tokensOwed0;
            position.tokensOwed1 = tokensOwed1;
        } catch {
            position.burned = true;
            position.success = true;
            return position;
        }
        position.owner = nfpm.ownerOf(tokenId);
    }

    function _getPositionRamsesInternal(
        RamsesNfpm nfpm,
        uint256 tokenId
    ) external view returns (UniV3Position memory position) {
        try nfpm.positions(tokenId) returns (
            address token0,
            address token1,
            int24 tickSpacing,
            int24 tickLower,
            int24 tickUpper,
            uint128 liquidity,
            uint256 feeGrowthInside0LastX128,
            uint256 feeGrowthInside1LastX128,
            uint128 tokensOwed0,
            uint128 tokensOwed1
        ) {
            position.token0 = token0;
            position.token1 = token1;
            position.tickSpacing = tickSpacing;
            position.tickLower = tickLower;
            position.tickUpper = tickUpper;
            position.liquidity = liquidity;
            position.feeGrowthInside0LastX128 = feeGrowthInside0LastX128;
            position.feeGrowthInside1LastX128 = feeGrowthInside1LastX128;
            position.tokensOwed0 = tokensOwed0;
            position.tokensOwed1 = tokensOwed1;
        } catch {
            position.burned = true;
            position.success = true;
            return position;
        }
        position.owner = nfpm.ownerOf(tokenId);
    }

    function getPosition(
        address nfpm,
        uint256 tokenId
    ) public view returns (UniV3Position memory position) {
        try this._getPositionInternal(Nfpm(nfpm), tokenId) returns (
            UniV3Position memory pos
        ) {
            position = pos;
        } catch {}
        try
            this._getPositionAlgebraInternal(AlgebraNfpm(nfpm), tokenId)
        returns (UniV3Position memory pos) {
            position = pos;
        } catch {}
        try this._getPositionRamsesInternal(RamsesNfpm(nfpm), tokenId) returns (
            UniV3Position memory pos
        ) {
            position = pos;
        } catch {}
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"_getPoolFeeAlgebra","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"_getPoolFeeAlgebra2","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"thrusterF","type":"address"},{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"}],"name":"_getPoolThruster","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"factory","type":"address"},{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"}],"name":"_getPoolUniV3","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract AlgebraNfpm","name":"nfpm","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"_getPositionAlgebraInternal","outputs":[{"components":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"feeGrowthInside0LastX128","type":"uint256"},{"internalType":"uint256","name":"feeGrowthInside1LastX128","type":"uint256"},{"internalType":"uint128","name":"tokensOwed0","type":"uint128"},{"internalType":"uint128","name":"tokensOwed1","type":"uint128"},{"internalType":"address","name":"factory","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"bool","name":"burned","type":"bool"},{"internalType":"bool","name":"success","type":"bool"},{"internalType":"address","name":"owner","type":"address"}],"internalType":"struct UniV3PositionReader.UniV3Position","name":"position","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract Nfpm","name":"nfpm","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"_getPositionInternal","outputs":[{"components":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"feeGrowthInside0LastX128","type":"uint256"},{"internalType":"uint256","name":"feeGrowthInside1LastX128","type":"uint256"},{"internalType":"uint128","name":"tokensOwed0","type":"uint128"},{"internalType":"uint128","name":"tokensOwed1","type":"uint128"},{"internalType":"address","name":"factory","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"bool","name":"burned","type":"bool"},{"internalType":"bool","name":"success","type":"bool"},{"internalType":"address","name":"owner","type":"address"}],"internalType":"struct UniV3PositionReader.UniV3Position","name":"position","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract RamsesNfpm","name":"nfpm","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"_getPositionRamsesInternal","outputs":[{"components":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"feeGrowthInside0LastX128","type":"uint256"},{"internalType":"uint256","name":"feeGrowthInside1LastX128","type":"uint256"},{"internalType":"uint128","name":"tokensOwed0","type":"uint128"},{"internalType":"uint128","name":"tokensOwed1","type":"uint128"},{"internalType":"address","name":"factory","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"bool","name":"burned","type":"bool"},{"internalType":"bool","name":"success","type":"bool"},{"internalType":"address","name":"owner","type":"address"}],"internalType":"struct UniV3PositionReader.UniV3Position","name":"position","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ShadowNfpm","name":"nfpm","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"_getPositionShadowInternal","outputs":[{"components":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"feeGrowthInside0LastX128","type":"uint256"},{"internalType":"uint256","name":"feeGrowthInside1LastX128","type":"uint256"},{"internalType":"uint128","name":"tokensOwed0","type":"uint128"},{"internalType":"uint128","name":"tokensOwed1","type":"uint128"},{"internalType":"address","name":"factory","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"bool","name":"burned","type":"bool"},{"internalType":"bool","name":"success","type":"bool"},{"internalType":"address","name":"owner","type":"address"}],"internalType":"struct UniV3PositionReader.UniV3Position","name":"position","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"nfpm","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getPosition","outputs":[{"components":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"feeGrowthInside0LastX128","type":"uint256"},{"internalType":"uint256","name":"feeGrowthInside1LastX128","type":"uint256"},{"internalType":"uint128","name":"tokensOwed0","type":"uint128"},{"internalType":"uint128","name":"tokensOwed1","type":"uint128"},{"internalType":"address","name":"factory","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"bool","name":"burned","type":"bool"},{"internalType":"bool","name":"success","type":"bool"},{"internalType":"address","name":"owner","type":"address"}],"internalType":"struct UniV3PositionReader.UniV3Position","name":"position","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"nfpms","type":"address[]"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"getPositions","outputs":[{"components":[{"internalType":"address","name":"token0","type":"address"},{"internalType":"address","name":"token1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"uint256","name":"feeGrowthInside0LastX128","type":"uint256"},{"internalType":"uint256","name":"feeGrowthInside1LastX128","type":"uint256"},{"internalType":"uint128","name":"tokensOwed0","type":"uint128"},{"internalType":"uint128","name":"tokensOwed1","type":"uint128"},{"internalType":"address","name":"factory","type":"address"},{"internalType":"address","name":"pool","type":"address"},{"internalType":"bool","name":"burned","type":"bool"},{"internalType":"bool","name":"success","type":"bool"},{"internalType":"address","name":"owner","type":"address"}],"internalType":"struct UniV3PositionReader.UniV3Position[]","name":"positions","type":"tuple[]"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"stateMutability":"view","type":"function"}]

6080604052348015600e575f5ffd5b506117ae8061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061009b575f3560e01c80638f92c0de116100635780638f92c0de1461013a578063b0d442f414610127578063bd820d2e14610161578063be4f8d7714610174578063d04ba8aa14610187575f5ffd5b80633adbb5af1461009f57806350ce27b5146100c8578063629a33e7146100e95780637029b3e7146100fc5780638681e45714610127575b5f5ffd5b6100b26100ad366004610edf565b61019a565b6040516100bf9190611079565b60405180910390f35b6100db6100d63660046110d0565b6102f9565b6040516100bf92919061113c565b6100b26100f7366004610edf565b610446565b61010f61010a3660046111a4565b610764565b6040516001600160a01b0390911681526020016100bf565b6100b2610135366004610edf565b61084f565b61014d6101483660046111fd565b6109a4565b60405162ffffff90911681526020016100bf565b6100b261016f366004610edf565b610a16565b61014d6101823660046111fd565b610d4e565b61010f6101953660046111a4565b610dbe565b6101a2610e45565b60405163629a33e760e01b81526001600160a01b038416600482015260248101839052309063629a33e79060440161020060405180830381865afa92505050801561020a575060408051601f3d908101601f19168201909252610207918101906112b3565b60015b156102125790505b604051635ec1069760e11b81526001600160a01b038416600482015260248101839052309063bd820d2e9060440161020060405180830381865afa92505050801561027a575060408051601f3d908101601f19168201909252610277918101906112b3565b60015b156102825790505b604051638681e45760e01b81526001600160a01b0384166004820152602481018390523090638681e4579060440161020060405180830381865afa9250505080156102ea575060408051601f3d908101601f191682019092526102e7918101906112b3565b60015b156102f3575b90505b92915050565b60605f4661a4b10361036d5760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610342573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061036691906113e0565b9050610370565b50435b8467ffffffffffffffff81111561038957610389611218565b6040519080825280602002602001820160405280156103c257816020015b6103af610e45565b8152602001906001900390816103a75790505b5091505f5b8581101561043c576104178787838181106103e4576103e46113f7565b90506020020160208101906103f991906111fd565b86868481811061040b5761040b6113f7565b9050602002013561019a565b838281518110610429576104296113f7565b60209081029190910101526001016103c7565b5094509492505050565b61044e610e45565b60405163133f757160e31b8152600481018390526001600160a01b038416906399fbab889060240161018060405180830381865afa9250505080156104b0575060408051601f3d908101601f191682019092526104ad91810190611426565b60015b6104c95760016101a082018190526101c08201526102f3565b6001600160a01b03998a168d529790981660208c015262ffffff90951660408b0152600293840b60808b01529190920b60a08901526001600160801b0391821660c089015260e0880152610100870191909152918216610120860152166101408401525050826001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561056a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061058e91906114f9565b6001600160a01b039081166101608301526040516331a9108f60e11b81526004810184905290841690636352211e90602401602060405180830381865afa1580156105db573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105ff91906114f9565b6001600160a01b039081166101e0830152610160820151825160208401516040808601519051636825d45560e11b815293851660048501529184166024840152909216604482015262ffffff9091166064820152309063d04ba8aa90608401602060405180830381865afa925050508015610697575060408051601f3d908101601f19168201909252610694918101906114f9565b60015b156106b4576001600160a01b031661018082015260016101c08201525b610160810151815160208301516040808501519051637029b3e760e01b81526001600160a01b03948516600482015292841660248401529216604482015262ffffff90911660648201523090637029b3e790608401602060405180830381865afa925050508015610742575060408051601f3d908101601f1916820190925261073f918101906114f9565b60015b156102f3576001600160a01b031661018082015260016101c082015292915050565b5f5f856001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107a2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107c691906114f9565b604051630b4c774160e11b81526001600160a01b038781166004830152868116602483015262ffffff8616604483015291925090821690631698ee8290606401602060405180830381865afa158015610821573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061084591906114f9565b9695505050505050565b610857610e45565b60405163133f757160e31b8152600481018390526001600160a01b038416906399fbab889060240161014060405180830381865afa9250505080156108b9575060408051601f3d908101601f191682019092526108b691810190611514565b60015b6108d25760016101a082018190526101c08201526102f3565b6001600160a01b03998a168b5297891660208b0152600296870b60608b015294860b60808a01529290940b60a08801526001600160801b0390811660c088015260e08701939093526101008601528116610120850152166101408301526040516331a9108f60e11b81526004810184905290841690636352211e90602401602060405180830381865afa15801561096b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061098f91906114f9565b6001600160a01b03166101e082015292915050565b5f5f826001600160a01b031663e76c01e46040518163ffffffff1660e01b815260040161010060405180830381865afa1580156109e3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a0791906115c0565b50939998505050505050505050565b610a1e610e45565b60405163133f757160e31b8152600481018390526001600160a01b038416906399fbab889060240161016060405180830381865afa925050508015610a80575060408051601f3d908101601f19168201909252610a7d91810190611634565b60015b610a995760016101a082018190526101c08201526102f3565b6001600160a01b039889168c529690971660208b0152600294850b60808b01529290930b60a08901526001600160801b0390811660c089015260e0880192909252610100870152918216610120860152166101408401525050826001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b2e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b5291906114f9565b6001600160a01b039081166101608301526040516331a9108f60e11b81526004810184905290841690636352211e90602401602060405180830381865afa158015610b9f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bc391906114f9565b6001600160a01b039081166101e08301526101608201518251602084015160405163d9a641e160e01b815291841660048301528316602482015291169063d9a641e190604401602060405180830381865afa158015610c24573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c4891906114f9565b6001600160a01b0316610180820181905260405163be4f8d7760e01b81526004810191909152309063be4f8d7790602401602060405180830381865afa925050508015610cb2575060408051601f3d908101601f19168201909252610caf918101906116f4565b60015b15610cca5762ffffff16604082015260016101c08201525b6101808101516040516347c9606f60e11b81526001600160a01b0390911660048201523090638f92c0de90602401602060405180830381865afa925050508015610d31575060408051601f3d908101601f19168201909252610d2e918101906116f4565b60015b156102f35762ffffff16604082015260016101c082015292915050565b5f5f826001600160a01b031663e76c01e46040518163ffffffff1660e01b815260040160e060405180830381865afa158015610d8c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610db0919061170f565b509298975050505050505050565b604051630b4c774160e11b81526001600160a01b038481166004830152838116602483015262ffffff831660448301525f9190861690631698ee8290606401602060405180830381865afa158015610e18573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e3c91906114f9565b95945050505050565b60408051610200810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e081019190915290565b6001600160a01b0381168114610edc575f5ffd5b50565b5f5f60408385031215610ef0575f5ffd5b8235610efb81610ec8565b946020939093013593505050565b80516001600160a01b031682526020810151610f3060208401826001600160a01b03169052565b506040810151610f47604084018262ffffff169052565b506060810151610f5c606084018260020b9052565b506080810151610f71608084018260020b9052565b5060a0810151610f8660a084018260020b9052565b5060c0810151610fa160c08401826001600160801b03169052565b5060e081015160e0830152610100810151610100830152610120810151610fd46101208401826001600160801b03169052565b50610140810151610ff16101408401826001600160801b03169052565b5061016081015161100e6101608401826001600160a01b03169052565b5061018081015161102b6101808401826001600160a01b03169052565b506101a08101516110416101a084018215159052565b506101c08101516110576101c084018215159052565b506101e08101516110746101e08401826001600160a01b03169052565b505050565b61020081016102f38284610f09565b5f5f83601f840112611098575f5ffd5b50813567ffffffffffffffff8111156110af575f5ffd5b6020830191508360208260051b85010111156110c9575f5ffd5b9250929050565b5f5f5f5f604085870312156110e3575f5ffd5b843567ffffffffffffffff8111156110f9575f5ffd5b61110587828801611088565b909550935050602085013567ffffffffffffffff811115611124575f5ffd5b61113087828801611088565b95989497509550505050565b604080825283519082018190525f9060208501906060840190835b818110156111815761116a838551610f09565b602093909301926102009290920191600101611157565b5050602093909301939093525092915050565b62ffffff81168114610edc575f5ffd5b5f5f5f5f608085870312156111b7575f5ffd5b84356111c281610ec8565b935060208501356111d281610ec8565b925060408501356111e281610ec8565b915060608501356111f281611194565b939692955090935050565b5f6020828403121561120d575f5ffd5b81356102f081610ec8565b634e487b7160e01b5f52604160045260245ffd5b604051610200810167ffffffffffffffff8111828210171561125c57634e487b7160e01b5f52604160045260245ffd5b60405290565b805161126d81610ec8565b919050565b805161126d81611194565b8051600281900b811461126d575f5ffd5b80516001600160801b038116811461126d575f5ffd5b8051801515811461126d575f5ffd5b5f6102008284031280156112c5575f5ffd5b506112ce61122c565b6112d783611262565b81526112e560208401611262565b60208201526112f660408401611272565b60408201526113076060840161127d565b60608201526113186080840161127d565b608082015261132960a0840161127d565b60a082015261133a60c0840161128e565b60c082015260e083810151908201526101008084015190820152611361610120840161128e565b610120820152611374610140840161128e565b6101408201526113876101608401611262565b61016082015261139a6101808401611262565b6101808201526113ad6101a084016112a4565b6101a08201526113c06101c084016112a4565b6101c08201526113d36101e08401611262565b6101e08201529392505050565b5f602082840312156113f0575f5ffd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b80516bffffffffffffffffffffffff8116811461126d575f5ffd5b5f5f5f5f5f5f5f5f5f5f5f5f6101808d8f031215611442575f5ffd5b61144b8d61140b565b9b5060208d015161145b81610ec8565b60408e0151909b5061146c81610ec8565b60608e0151909a5061147d81610ec8565b60808e015190995061148e81611194565b975061149c60a08e0161127d565b96506114aa60c08e0161127d565b95506114b860e08e0161128e565b6101008e01516101208f0151919650945092506114d86101408e0161128e565b91506114e76101608e0161128e565b90509295989b509295989b509295989b565b5f60208284031215611509575f5ffd5b81516102f081610ec8565b5f5f5f5f5f5f5f5f5f5f6101408b8d03121561152e575f5ffd5b8a5161153981610ec8565b60208c0151909a5061154a81610ec8565b985061155860408c0161127d565b975061156660608c0161127d565b965061157460808c0161127d565b955061158260a08c0161128e565b60c08c015160e08d0151919650945092506115a06101008c0161128e565b91506115af6101208c0161128e565b90509295989b9194979a5092959850565b5f5f5f5f5f5f5f5f610100898b0312156115d8575f5ffd5b88516115e381610ec8565b97506115f160208a0161127d565b60408a015160608b015160808c015160a08d015160c08e0151949b5092995090975095509350915061162560e08a016112a4565b90509295985092959890939650565b5f5f5f5f5f5f5f5f5f5f5f6101608c8e03121561164f575f5ffd5b6116588c61140b565b9a5060208c015161166881610ec8565b60408d0151909a5061167981610ec8565b60608d015190995061168a81610ec8565b975061169860808d0161127d565b96506116a660a08d0161127d565b95506116b460c08d0161128e565b60e08d01516101008e0151919650945092506116d36101208d0161128e565b91506116e26101408d0161128e565b90509295989b509295989b9093969950565b5f60208284031215611704575f5ffd5b81516102f081611194565b5f5f5f5f5f5f5f60e0888a031215611725575f5ffd5b875161173081610ec8565b965061173e6020890161127d565b604089015160608a015160808b015160a08c015193995091975095509350915061176a60c089016112a4565b90509295989194975092955056fea2646970667358221220f711eba0835ed229d48796307928be657c397e405a5c692d0ac5376c5ffa898864736f6c634300081c0033

Deployed Bytecode

0x608060405234801561000f575f5ffd5b506004361061009b575f3560e01c80638f92c0de116100635780638f92c0de1461013a578063b0d442f414610127578063bd820d2e14610161578063be4f8d7714610174578063d04ba8aa14610187575f5ffd5b80633adbb5af1461009f57806350ce27b5146100c8578063629a33e7146100e95780637029b3e7146100fc5780638681e45714610127575b5f5ffd5b6100b26100ad366004610edf565b61019a565b6040516100bf9190611079565b60405180910390f35b6100db6100d63660046110d0565b6102f9565b6040516100bf92919061113c565b6100b26100f7366004610edf565b610446565b61010f61010a3660046111a4565b610764565b6040516001600160a01b0390911681526020016100bf565b6100b2610135366004610edf565b61084f565b61014d6101483660046111fd565b6109a4565b60405162ffffff90911681526020016100bf565b6100b261016f366004610edf565b610a16565b61014d6101823660046111fd565b610d4e565b61010f6101953660046111a4565b610dbe565b6101a2610e45565b60405163629a33e760e01b81526001600160a01b038416600482015260248101839052309063629a33e79060440161020060405180830381865afa92505050801561020a575060408051601f3d908101601f19168201909252610207918101906112b3565b60015b156102125790505b604051635ec1069760e11b81526001600160a01b038416600482015260248101839052309063bd820d2e9060440161020060405180830381865afa92505050801561027a575060408051601f3d908101601f19168201909252610277918101906112b3565b60015b156102825790505b604051638681e45760e01b81526001600160a01b0384166004820152602481018390523090638681e4579060440161020060405180830381865afa9250505080156102ea575060408051601f3d908101601f191682019092526102e7918101906112b3565b60015b156102f3575b90505b92915050565b60605f4661a4b10361036d5760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610342573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061036691906113e0565b9050610370565b50435b8467ffffffffffffffff81111561038957610389611218565b6040519080825280602002602001820160405280156103c257816020015b6103af610e45565b8152602001906001900390816103a75790505b5091505f5b8581101561043c576104178787838181106103e4576103e46113f7565b90506020020160208101906103f991906111fd565b86868481811061040b5761040b6113f7565b9050602002013561019a565b838281518110610429576104296113f7565b60209081029190910101526001016103c7565b5094509492505050565b61044e610e45565b60405163133f757160e31b8152600481018390526001600160a01b038416906399fbab889060240161018060405180830381865afa9250505080156104b0575060408051601f3d908101601f191682019092526104ad91810190611426565b60015b6104c95760016101a082018190526101c08201526102f3565b6001600160a01b03998a168d529790981660208c015262ffffff90951660408b0152600293840b60808b01529190920b60a08901526001600160801b0391821660c089015260e0880152610100870191909152918216610120860152166101408401525050826001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561056a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061058e91906114f9565b6001600160a01b039081166101608301526040516331a9108f60e11b81526004810184905290841690636352211e90602401602060405180830381865afa1580156105db573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105ff91906114f9565b6001600160a01b039081166101e0830152610160820151825160208401516040808601519051636825d45560e11b815293851660048501529184166024840152909216604482015262ffffff9091166064820152309063d04ba8aa90608401602060405180830381865afa925050508015610697575060408051601f3d908101601f19168201909252610694918101906114f9565b60015b156106b4576001600160a01b031661018082015260016101c08201525b610160810151815160208301516040808501519051637029b3e760e01b81526001600160a01b03948516600482015292841660248401529216604482015262ffffff90911660648201523090637029b3e790608401602060405180830381865afa925050508015610742575060408051601f3d908101601f1916820190925261073f918101906114f9565b60015b156102f3576001600160a01b031661018082015260016101c082015292915050565b5f5f856001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107a2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107c691906114f9565b604051630b4c774160e11b81526001600160a01b038781166004830152868116602483015262ffffff8616604483015291925090821690631698ee8290606401602060405180830381865afa158015610821573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061084591906114f9565b9695505050505050565b610857610e45565b60405163133f757160e31b8152600481018390526001600160a01b038416906399fbab889060240161014060405180830381865afa9250505080156108b9575060408051601f3d908101601f191682019092526108b691810190611514565b60015b6108d25760016101a082018190526101c08201526102f3565b6001600160a01b03998a168b5297891660208b0152600296870b60608b015294860b60808a01529290940b60a08801526001600160801b0390811660c088015260e08701939093526101008601528116610120850152166101408301526040516331a9108f60e11b81526004810184905290841690636352211e90602401602060405180830381865afa15801561096b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061098f91906114f9565b6001600160a01b03166101e082015292915050565b5f5f826001600160a01b031663e76c01e46040518163ffffffff1660e01b815260040161010060405180830381865afa1580156109e3573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a0791906115c0565b50939998505050505050505050565b610a1e610e45565b60405163133f757160e31b8152600481018390526001600160a01b038416906399fbab889060240161016060405180830381865afa925050508015610a80575060408051601f3d908101601f19168201909252610a7d91810190611634565b60015b610a995760016101a082018190526101c08201526102f3565b6001600160a01b039889168c529690971660208b0152600294850b60808b01529290930b60a08901526001600160801b0390811660c089015260e0880192909252610100870152918216610120860152166101408401525050826001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b2e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b5291906114f9565b6001600160a01b039081166101608301526040516331a9108f60e11b81526004810184905290841690636352211e90602401602060405180830381865afa158015610b9f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bc391906114f9565b6001600160a01b039081166101e08301526101608201518251602084015160405163d9a641e160e01b815291841660048301528316602482015291169063d9a641e190604401602060405180830381865afa158015610c24573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c4891906114f9565b6001600160a01b0316610180820181905260405163be4f8d7760e01b81526004810191909152309063be4f8d7790602401602060405180830381865afa925050508015610cb2575060408051601f3d908101601f19168201909252610caf918101906116f4565b60015b15610cca5762ffffff16604082015260016101c08201525b6101808101516040516347c9606f60e11b81526001600160a01b0390911660048201523090638f92c0de90602401602060405180830381865afa925050508015610d31575060408051601f3d908101601f19168201909252610d2e918101906116f4565b60015b156102f35762ffffff16604082015260016101c082015292915050565b5f5f826001600160a01b031663e76c01e46040518163ffffffff1660e01b815260040160e060405180830381865afa158015610d8c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610db0919061170f565b509298975050505050505050565b604051630b4c774160e11b81526001600160a01b038481166004830152838116602483015262ffffff831660448301525f9190861690631698ee8290606401602060405180830381865afa158015610e18573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e3c91906114f9565b95945050505050565b60408051610200810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e081019190915290565b6001600160a01b0381168114610edc575f5ffd5b50565b5f5f60408385031215610ef0575f5ffd5b8235610efb81610ec8565b946020939093013593505050565b80516001600160a01b031682526020810151610f3060208401826001600160a01b03169052565b506040810151610f47604084018262ffffff169052565b506060810151610f5c606084018260020b9052565b506080810151610f71608084018260020b9052565b5060a0810151610f8660a084018260020b9052565b5060c0810151610fa160c08401826001600160801b03169052565b5060e081015160e0830152610100810151610100830152610120810151610fd46101208401826001600160801b03169052565b50610140810151610ff16101408401826001600160801b03169052565b5061016081015161100e6101608401826001600160a01b03169052565b5061018081015161102b6101808401826001600160a01b03169052565b506101a08101516110416101a084018215159052565b506101c08101516110576101c084018215159052565b506101e08101516110746101e08401826001600160a01b03169052565b505050565b61020081016102f38284610f09565b5f5f83601f840112611098575f5ffd5b50813567ffffffffffffffff8111156110af575f5ffd5b6020830191508360208260051b85010111156110c9575f5ffd5b9250929050565b5f5f5f5f604085870312156110e3575f5ffd5b843567ffffffffffffffff8111156110f9575f5ffd5b61110587828801611088565b909550935050602085013567ffffffffffffffff811115611124575f5ffd5b61113087828801611088565b95989497509550505050565b604080825283519082018190525f9060208501906060840190835b818110156111815761116a838551610f09565b602093909301926102009290920191600101611157565b5050602093909301939093525092915050565b62ffffff81168114610edc575f5ffd5b5f5f5f5f608085870312156111b7575f5ffd5b84356111c281610ec8565b935060208501356111d281610ec8565b925060408501356111e281610ec8565b915060608501356111f281611194565b939692955090935050565b5f6020828403121561120d575f5ffd5b81356102f081610ec8565b634e487b7160e01b5f52604160045260245ffd5b604051610200810167ffffffffffffffff8111828210171561125c57634e487b7160e01b5f52604160045260245ffd5b60405290565b805161126d81610ec8565b919050565b805161126d81611194565b8051600281900b811461126d575f5ffd5b80516001600160801b038116811461126d575f5ffd5b8051801515811461126d575f5ffd5b5f6102008284031280156112c5575f5ffd5b506112ce61122c565b6112d783611262565b81526112e560208401611262565b60208201526112f660408401611272565b60408201526113076060840161127d565b60608201526113186080840161127d565b608082015261132960a0840161127d565b60a082015261133a60c0840161128e565b60c082015260e083810151908201526101008084015190820152611361610120840161128e565b610120820152611374610140840161128e565b6101408201526113876101608401611262565b61016082015261139a6101808401611262565b6101808201526113ad6101a084016112a4565b6101a08201526113c06101c084016112a4565b6101c08201526113d36101e08401611262565b6101e08201529392505050565b5f602082840312156113f0575f5ffd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b80516bffffffffffffffffffffffff8116811461126d575f5ffd5b5f5f5f5f5f5f5f5f5f5f5f5f6101808d8f031215611442575f5ffd5b61144b8d61140b565b9b5060208d015161145b81610ec8565b60408e0151909b5061146c81610ec8565b60608e0151909a5061147d81610ec8565b60808e015190995061148e81611194565b975061149c60a08e0161127d565b96506114aa60c08e0161127d565b95506114b860e08e0161128e565b6101008e01516101208f0151919650945092506114d86101408e0161128e565b91506114e76101608e0161128e565b90509295989b509295989b509295989b565b5f60208284031215611509575f5ffd5b81516102f081610ec8565b5f5f5f5f5f5f5f5f5f5f6101408b8d03121561152e575f5ffd5b8a5161153981610ec8565b60208c0151909a5061154a81610ec8565b985061155860408c0161127d565b975061156660608c0161127d565b965061157460808c0161127d565b955061158260a08c0161128e565b60c08c015160e08d0151919650945092506115a06101008c0161128e565b91506115af6101208c0161128e565b90509295989b9194979a5092959850565b5f5f5f5f5f5f5f5f610100898b0312156115d8575f5ffd5b88516115e381610ec8565b97506115f160208a0161127d565b60408a015160608b015160808c015160a08d015160c08e0151949b5092995090975095509350915061162560e08a016112a4565b90509295985092959890939650565b5f5f5f5f5f5f5f5f5f5f5f6101608c8e03121561164f575f5ffd5b6116588c61140b565b9a5060208c015161166881610ec8565b60408d0151909a5061167981610ec8565b60608d015190995061168a81610ec8565b975061169860808d0161127d565b96506116a660a08d0161127d565b95506116b460c08d0161128e565b60e08d01516101008e0151919650945092506116d36101208d0161128e565b91506116e26101408d0161128e565b90509295989b509295989b9093969950565b5f60208284031215611704575f5ffd5b81516102f081611194565b5f5f5f5f5f5f5f60e0888a031215611725575f5ffd5b875161173081610ec8565b965061173e6020890161127d565b604089015160608a015160808b015160a08c015193995091975095509350915061176a60c089016112a4565b90509295989194975092955056fea2646970667358221220f711eba0835ed229d48796307928be657c397e405a5c692d0ac5376c5ffa898864736f6c634300081c0033

Deployed Bytecode Sourcemap

3900:8938:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12164:671;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4416:578;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;7135:1951::-;;;;;;:::i;:::-;;:::i;9332:300::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;6301:32:1;;;6283:51;;6271:2;6256:18;9332:300:0;6137:203:1;10902:1254:0;;;;;;:::i;:::-;;:::i;6943:184::-;;;;;;:::i;:::-;;:::i;:::-;;;7161:8:1;7149:21;;;7131:40;;7119:2;7104:18;6943:184:0;6987:190:1;5002:1745:0;;;;;;:::i;:::-;;:::i;6755:180::-;;;;;;:::i;:::-;;:::i;9094:230::-;;;;;;:::i;:::-;;:::i;12164:671::-;12262:29;;:::i;:::-;12308:46;;-1:-1:-1;;;12308:46:0;;-1:-1:-1;;;;;8165:32:1;;12308:46:0;;;8147:51:1;8214:18;;;8207:34;;;12308:4:0;;:25;;8120:18:1;;12308:46:0;;;;;;;;;;;;;;;;;;-1:-1:-1;12308:46:0;;;;;;;;-1:-1:-1;;12308:46:0;;;;;;;;;;;;:::i;:::-;;;12304:160;;;12440:3;-1:-1:-1;12304:160:0;12491:60;;-1:-1:-1;;;12491:60:0;;-1:-1:-1;;;;;8165:32:1;;12491:60:0;;;8147:51:1;8214:18;;;8207:34;;;12491:4:0;;:32;;8120:18:1;;12491:60:0;;;;;;;;;;;;;;;;;;-1:-1:-1;12491:60:0;;;;;;;;-1:-1:-1;;12491:60:0;;;;;;;;;;;;:::i;:::-;;;12474:172;;;12622:3;-1:-1:-1;12474:172:0;12660:58;;-1:-1:-1;;;12660:58:0;;-1:-1:-1;;;;;8165:32:1;;12660:58:0;;;8147:51:1;8214:18;;;8207:34;;;12660:4:0;;:31;;8120:18:1;;12660:58:0;;;;;;;;;;;;;;;;;;-1:-1:-1;12660:58:0;;;;;;;;-1:-1:-1;;12660:58:0;;;;;;;;;;;;:::i;:::-;;;12656:172;;;;12804:3;-1:-1:-1;12656:172:0;12164:671;;;;:::o;4416:578::-;4566:32;4600:19;4641:13;4658:5;4641:22;4637:165;;4709:3;-1:-1:-1;;;;;4694:35:0;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4680:51;;4637:165;;;-1:-1:-1;4778:12:0;4637:165;4844:5;4824:33;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;4812:45:0;-1:-1:-1;4873:9:0;4868:119;4888:16;;;4868:119;;;4941:34;4953:5;;4959:1;4953:8;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;4963;;4972:1;4963:11;;;;;;;:::i;:::-;;;;;;;4941;:34::i;:::-;4926:9;4936:1;4926:12;;;;;;;;:::i;:::-;;;;;;;;;;:49;4906:3;;4868:119;;;;4416:578;;;;;;;:::o;7135:1951::-;7241:29;;:::i;:::-;7287:23;;-1:-1:-1;;;7287:23:0;;;;;12305:25:1;;;-1:-1:-1;;;;;7287:14:0;;;;;12278:18:1;;7287:23:0;;;;;;;;;;;;;;;;;;-1:-1:-1;7287:23:0;;;;;;;;-1:-1:-1;;7287:23:0;;;;;;;;;;;;:::i;:::-;;;7283:1058;;8257:4;8239:15;;;:22;;;8276:16;;;:23;8314:15;;7283:1058;-1:-1:-1;;;;;7726:24:0;;;;;7765;;;;:15;;;:24;7804:18;;;;:12;;;:18;7837:30;;;;:18;;;:30;7882;;;;:18;;;:30;-1:-1:-1;;;;;7927:30:0;;;:18;;;:30;7972:33;;;:60;8047:33;;;:60;;;;8122:34;;;:20;;;:34;8171;:20;;;:34;-1:-1:-1;;8370:4:0;-1:-1:-1;;;;;8370:12:0;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8351:33:0;;;:16;;;:33;8412:21;;-1:-1:-1;;;8412:21:0;;;;;12305:25:1;;;8412:12:0;;;;;;12278:18:1;;8412:21:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8395:38:0;;;:14;;;:38;8498:16;;;;8533:15;;8567;;;;8601:12;;;;;8461:167;;-1:-1:-1;;;8461:167:0;;14448:32:1;;;8461:167:0;;;14430:51:1;14517:32;;;14497:18;;;14490:60;14586:32;;;14566:18;;;14559:60;14667:8;14655:21;;;14635:18;;;14628:49;8461:4:0;;:18;;14402:19:1;;8461:167:0;;;;;;;;;;;;;;;;;;-1:-1:-1;8461:167:0;;;;;;;;-1:-1:-1;;8461:167:0;;;;;;;;;;;;:::i;:::-;;;8444:311;;;-1:-1:-1;;;;;8676:20:0;:13;;;:20;8730:4;8711:16;;;:23;8444:311;8822:16;;;;8857:15;;8891;;;;8925:12;;;;;8782:170;;-1:-1:-1;;;8782:170:0;;-1:-1:-1;;;;;14448:32:1;;;8782:170:0;;;14430:51:1;14517:32;;;14497:18;;;14490:60;14586:32;;14566:18;;;14559:60;14667:8;14655:21;;;14635:18;;;14628:49;8782:4:0;;:21;;14402:19:1;;8782:170:0;;;;;;;;;;;;;;;;;;-1:-1:-1;8782:170:0;;;;;;;;-1:-1:-1;;8782:170:0;;;;;;;;;;;;:::i;:::-;;;8765:314;;;-1:-1:-1;;;;;9000:20:0;:13;;;:20;9054:4;9035:16;;;:23;7135:1951;;;;:::o;9332:300::-;9487:7;9507:15;9541:9;-1:-1:-1;;;;;9525:34:0;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9579:45;;-1:-1:-1;;;9579:45:0;;-1:-1:-1;;;;;14906:32:1;;;9579:45:0;;;14888:51:1;14975:32;;;14955:18;;;14948:60;15056:8;15044:21;;15024:18;;;15017:49;9507:54:0;;-1:-1:-1;9579:24:0;;;;;;14861:18:1;;9579:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9572:52;9332:300;-1:-1:-1;;;;;;9332:300:0:o;10902:1254::-;11020:29;;:::i;:::-;11066:23;;-1:-1:-1;;;11066:23:0;;;;;12305:25:1;;;-1:-1:-1;;;;;11066:14:0;;;;;12278:18:1;;11066:23:0;;;;;;;;;;;;;;;;;;-1:-1:-1;11066:23:0;;;;;;;;-1:-1:-1;;11066:23:0;;;;;;;;;;;;:::i;:::-;;;11062:1038;;12016:4;11998:15;;;:22;;;12035:16;;;:23;12073:15;;11062:1038;-1:-1:-1;;;;;11469:24:0;;;;;11508;;;:15;;;:24;11547:34;;;;:20;;;:34;11596:30;;;:18;;;:30;11641;;;;:18;;;:30;-1:-1:-1;;;;;11686:30:0;;;:18;;;:30;11731:33;;;:60;;;;11806:33;;;:60;11881:34;;:20;;;:34;11930;:20;;;:34;12127:21;;-1:-1:-1;;;12127:21:0;;;;;12305:25:1;;;12127:12:0;;;;;;12278:18:1;;12127:21:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12110:38:0;:14;;;:38;10902:1254;;;;:::o;6943:184::-;7009:6;7033:11;7071:4;-1:-1:-1;;;;;7058:30:0;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7028:62:0;;6943:184;-1:-1:-1;;;;;;;;;6943:184:0:o;5002:1745::-;5122:29;;:::i;:::-;5168:23;;-1:-1:-1;;;5168:23:0;;;;;12305:25:1;;;-1:-1:-1;;;;;5168:14:0;;;;;12278:18:1;;5168:23:0;;;;;;;;;;;;;;;;;;-1:-1:-1;5168:23:0;;;;;;;;-1:-1:-1;;5168:23:0;;;;;;;;;;;;:::i;:::-;;;5164:1000;;6080:4;6062:15;;;:22;;;6099:16;;;:23;6137:15;;5164:1000;-1:-1:-1;;;;;5582:24:0;;;;;5621;;;;:15;;;:24;5660:30;;;;:18;;;:30;5705;;;;:18;;;:30;-1:-1:-1;;;;;5750:30:0;;;:18;;;:30;5795:33;;;:60;;;;5870:33;;;:60;5945:34;;;:20;;;:34;5994;:20;;;:34;-1:-1:-1;;6193:4:0;-1:-1:-1;;;;;6193:12:0;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;6174:33:0;;;:16;;;:33;6235:21;;-1:-1:-1;;;6235:21:0;;;;;12305:25:1;;;6235:12:0;;;;;;12278:18:1;;6235:21:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;6218:38:0;;;:14;;;:38;6291:16;;;;6334:15;;6364;;;;6283:107;;-1:-1:-1;;;6283:107:0;;18636:32:1;;;6283:107:0;;;18618:51:1;18705:32;;18685:18;;;18678:60;6283:36:0;;;;;18591:18:1;;6283:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;6267:123:0;:13;;;:123;;;6405:38;;-1:-1:-1;;;6405:38:0;;;;;6283:51:1;;;;6405:4:0;;:23;;6256:18:1;;6405:38:0;;;;;;;;;;;;;;;;;;-1:-1:-1;6405:38:0;;;;;;;;-1:-1:-1;;6405:38:0;;;;;;;;;;;;:::i;:::-;;;6401:164;;;6480:26;;:12;;;:26;6540:4;6521:16;;;:23;6401:164;6604:13;;;;6579:39;;-1:-1:-1;;;6579:39:0;;-1:-1:-1;;;;;6301:32:1;;;6579:39:0;;;6283:51:1;6579:4:0;;:24;;6256:18:1;;6579:39:0;;;;;;;;;;;;;;;;;;-1:-1:-1;6579:39:0;;;;;;;;-1:-1:-1;;6579:39:0;;;;;;;;;;;;:::i;:::-;;;6575:165;;;6655:26;;:12;;;:26;6715:4;6696:16;;;:23;5002:1745;;;;:::o;6755:180::-;6820:6;6844:11;6879:4;-1:-1:-1;;;;;6867:29:0;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;6839:59:0;;6755:180;-1:-1:-1;;;;;;;;6755:180:0:o;9094:230::-;9271:45;;-1:-1:-1;;;9271:45:0;;-1:-1:-1;;;;;14906:32:1;;;9271:45:0;;;14888:51:1;14975:32;;;14955:18;;;14948:60;15056:8;15044:21;;15024:18;;;15017:49;9244:7:0;;9271:24;;;;;;14861:18:1;;9271:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9264:52;9094:230;-1:-1:-1;;;;;9094:230:0:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:131:1:-;-1:-1:-1;;;;;89:31:1;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:367::-;218:6;226;279:2;267:9;258:7;254:23;250:32;247:52;;;295:1;292;285:12;247:52;334:9;321:23;353:31;378:5;353:31;:::i;:::-;403:5;481:2;466:18;;;;453:32;;-1:-1:-1;;;150:367:1:o;1044:1712::-;1130:12;;-1:-1:-1;;;;;588:31:1;576:44;;1194:4;1187:5;1183:16;1177:23;1209:48;1251:4;1246:3;1242:14;1228:12;-1:-1:-1;;;;;588:31:1;576:44;;522:104;1209:48;;1305:4;1298:5;1294:16;1288:23;1320:49;1363:4;1358:3;1354:14;1338;707:8;696:20;684:33;;631:92;1320:49;;1417:4;1410:5;1406:16;1400:23;1432:48;1474:4;1469:3;1465:14;1449;803:1;792:20;780:33;;728:91;1432:48;;1528:4;1521:5;1517:16;1511:23;1543:48;1585:4;1580:3;1576:14;1560;803:1;792:20;780:33;;728:91;1543:48;;1639:4;1632:5;1628:16;1622:23;1654:48;1696:4;1691:3;1687:14;1671;803:1;792:20;780:33;;728:91;1654:48;;1750:4;1743:5;1739:16;1733:23;1765:50;1809:4;1804:3;1800:14;1784;-1:-1:-1;;;;;890:46:1;878:59;;824:119;1765:50;;1864:4;1857:5;1853:16;1847:23;1840:4;1835:3;1831:14;1824:47;1922:6;1915:5;1911:18;1905:25;1896:6;1891:3;1887:16;1880:51;1979:6;1972:5;1968:18;1962:25;1996:52;2040:6;2035:3;2031:16;2015:14;-1:-1:-1;;;;;890:46:1;878:59;;824:119;1996:52;;2096:6;2089:5;2085:18;2079:25;2113:52;2157:6;2152:3;2148:16;2132:14;-1:-1:-1;;;;;890:46:1;878:59;;824:119;2113:52;;2213:6;2206:5;2202:18;2196:25;2230:52;2274:6;2269:3;2265:16;2249:14;-1:-1:-1;;;;;588:31:1;576:44;;522:104;2230:52;;2330:6;2323:5;2319:18;2313:25;2347:52;2391:6;2386:3;2382:16;2366:14;-1:-1:-1;;;;;588:31:1;576:44;;522:104;2347:52;;2448:6;2441:5;2437:18;2431:25;2465:50;2507:6;2502:3;2498:16;2481:15;1018:13;1011:21;999:34;;948:91;2465:50;;2564:6;2557:5;2553:18;2547:25;2581:50;2623:6;2618:3;2614:16;2597:15;1018:13;1011:21;999:34;;948:91;2581:50;;2680:6;2673:5;2669:18;2663:25;2697:53;2742:6;2737:3;2733:16;2716:15;-1:-1:-1;;;;;588:31:1;576:44;;522:104;2697:53;;1044:1712;;:::o;2761:263::-;2955:3;2940:19;;2968:50;2944:9;3000:6;2968:50;:::i;3029:367::-;3092:8;3102:6;3156:3;3149:4;3141:6;3137:17;3133:27;3123:55;;3174:1;3171;3164:12;3123:55;-1:-1:-1;3197:20:1;;3240:18;3229:30;;3226:50;;;3272:1;3269;3262:12;3226:50;3309:4;3301:6;3297:17;3285:29;;3369:3;3362:4;3352:6;3349:1;3345:14;3337:6;3333:27;3329:38;3326:47;3323:67;;;3386:1;3383;3376:12;3323:67;3029:367;;;;;:::o;3401:768::-;3523:6;3531;3539;3547;3600:2;3588:9;3579:7;3575:23;3571:32;3568:52;;;3616:1;3613;3606:12;3568:52;3656:9;3643:23;3689:18;3681:6;3678:30;3675:50;;;3721:1;3718;3711:12;3675:50;3760:70;3822:7;3813:6;3802:9;3798:22;3760:70;:::i;:::-;3849:8;;-1:-1:-1;3734:96:1;-1:-1:-1;;3937:2:1;3922:18;;3909:32;3966:18;3953:32;;3950:52;;;3998:1;3995;3988:12;3950:52;4037:72;4101:7;4090:8;4079:9;4075:24;4037:72;:::i;:::-;3401:768;;;;-1:-1:-1;4128:8:1;-1:-1:-1;;;;3401:768:1:o;4174:777::-;4452:2;4464:21;;;4534:13;;4437:18;;;4556:22;;;4404:4;;4647;4635:17;;;4609:2;4594:18;;;4404:4;4680:200;4694:6;4691:1;4688:13;4680:200;;;4743:51;4790:3;4781:6;4775:13;4743:51;:::i;:::-;4865:4;4853:17;;;;;4823:6;4814:16;;;;;4716:1;4709:9;4680:200;;;-1:-1:-1;;4931:4:1;4916:20;;;;4909:36;;;;-1:-1:-1;4897:3:1;4174:777;-1:-1:-1;;4174:777:1:o;5339:119::-;5424:8;5417:5;5413:20;5406:5;5403:31;5393:59;;5448:1;5445;5438:12;5463:669;5548:6;5556;5564;5572;5625:3;5613:9;5604:7;5600:23;5596:33;5593:53;;;5642:1;5639;5632:12;5593:53;5681:9;5668:23;5700:31;5725:5;5700:31;:::i;:::-;5750:5;-1:-1:-1;5807:2:1;5792:18;;5779:32;5820:33;5779:32;5820:33;:::i;:::-;5872:7;-1:-1:-1;5931:2:1;5916:18;;5903:32;5944:33;5903:32;5944:33;:::i;:::-;5996:7;-1:-1:-1;6055:2:1;6040:18;;6027:32;6068;6027;6068;:::i;:::-;5463:669;;;;-1:-1:-1;5463:669:1;;-1:-1:-1;;5463:669:1:o;6735:247::-;6794:6;6847:2;6835:9;6826:7;6822:23;6818:32;6815:52;;;6863:1;6860;6853:12;6815:52;6902:9;6889:23;6921:31;6946:5;6921:31;:::i;8252:127::-;8313:10;8308:3;8304:20;8301:1;8294:31;8344:4;8341:1;8334:15;8368:4;8365:1;8358:15;8384:344;8451:2;8445:9;8493:3;8481:16;;8527:18;8512:34;;8548:22;;;8509:62;8506:185;;;8613:10;8608:3;8604:20;8601:1;8594:31;8648:4;8645:1;8638:15;8676:4;8673:1;8666:15;8506:185;8707:2;8700:22;8384:344;:::o;8733:138::-;8812:13;;8834:31;8812:13;8834:31;:::i;:::-;8733:138;;;:::o;8876:136::-;8954:13;;8976:30;8954:13;8976:30;:::i;9017:164::-;9094:13;;9147:1;9136:20;;;9126:31;;9116:59;;9171:1;9168;9161:12;9186:192;9265:13;;-1:-1:-1;;;;;9307:46:1;;9297:57;;9287:85;;9368:1;9365;9358:12;9383:164;9459:13;;9508;;9501:21;9491:32;;9481:60;;9537:1;9534;9527:12;9552:1641;9652:6;9712:3;9700:9;9691:7;9687:23;9683:33;9728:2;9725:22;;;9743:1;9740;9733:12;9725:22;-1:-1:-1;9785:17:1;;:::i;:::-;9825:40;9855:9;9825:40;:::i;:::-;9818:5;9811:55;9898:49;9943:2;9932:9;9928:18;9898:49;:::i;:::-;9893:2;9886:5;9882:14;9875:73;9980:48;10024:2;10013:9;10009:18;9980:48;:::i;:::-;9975:2;9968:5;9964:14;9957:72;10061:47;10104:2;10093:9;10089:18;10061:47;:::i;:::-;10056:2;10049:5;10045:14;10038:71;10142:48;10185:3;10174:9;10170:19;10142:48;:::i;:::-;10136:3;10129:5;10125:15;10118:73;10224:48;10267:3;10256:9;10252:19;10224:48;:::i;:::-;10218:3;10211:5;10207:15;10200:73;10306:50;10351:3;10340:9;10336:19;10306:50;:::i;:::-;10300:3;10289:15;;10282:75;10423:3;10408:19;;;10402:26;10444:15;;;10437:32;10535:3;10520:19;;;10514:26;10556:15;;;10549:32;10614:50;10659:3;10644:19;;10614:50;:::i;:::-;10608:3;10601:5;10597:15;10590:75;10698:50;10743:3;10732:9;10728:19;10698:50;:::i;:::-;10692:3;10685:5;10681:15;10674:75;10782:50;10827:3;10816:9;10812:19;10782:50;:::i;:::-;10776:3;10769:5;10765:15;10758:75;10866:50;10911:3;10900:9;10896:19;10866:50;:::i;:::-;10860:3;10853:5;10849:15;10842:75;10950:47;10992:3;10981:9;10977:19;10950:47;:::i;:::-;10944:3;10937:5;10933:15;10926:72;11031:47;11073:3;11062:9;11058:19;11031:47;:::i;:::-;11025:3;11018:5;11014:15;11007:72;11112:50;11157:3;11146:9;11142:19;11112:50;:::i;:::-;11106:3;11095:15;;11088:75;11099:5;9552:1641;-1:-1:-1;;;9552:1641:1:o;11792:230::-;11862:6;11915:2;11903:9;11894:7;11890:23;11886:32;11883:52;;;11931:1;11928;11921:12;11883:52;-1:-1:-1;11976:16:1;;11792:230;-1:-1:-1;11792:230:1:o;12027:127::-;12088:10;12083:3;12079:20;12076:1;12069:31;12119:4;12116:1;12109:15;12143:4;12140:1;12133:15;12341:183;12419:13;;12472:26;12461:38;;12451:49;;12441:77;;12514:1;12511;12504:12;12529:1411;12692:6;12700;12708;12716;12724;12732;12740;12748;12756;12764;12772:7;12781;12835:3;12823:9;12814:7;12810:23;12806:33;12803:53;;;12852:1;12849;12842:12;12803:53;12875:39;12904:9;12875:39;:::i;:::-;12865:49;;12957:2;12946:9;12942:18;12936:25;12970:31;12995:5;12970:31;:::i;:::-;13070:2;13055:18;;13049:25;13020:5;;-1:-1:-1;13083:33:1;13049:25;13083:33;:::i;:::-;13187:2;13172:18;;13166:25;13135:7;;-1:-1:-1;13200:33:1;13166:25;13200:33;:::i;:::-;13325:3;13310:19;;13304:26;13252:7;;-1:-1:-1;13339:32:1;13304:26;13339:32;:::i;:::-;13390:7;-1:-1:-1;13416:48:1;13459:3;13444:19;;13416:48;:::i;:::-;13406:58;;13483:48;13526:3;13515:9;13511:19;13483:48;:::i;:::-;13473:58;;13550:50;13595:3;13584:9;13580:19;13550:50;:::i;:::-;13666:3;13651:19;;13645:26;13763:3;13748:19;;13742:26;13540:60;;-1:-1:-1;13645:26:1;-1:-1:-1;13742:26:1;-1:-1:-1;13814:50:1;13859:3;13844:19;;13814:50;:::i;:::-;13803:61;;13884:50;13929:3;13918:9;13914:19;13884:50;:::i;:::-;13873:61;;12529:1411;;;;;;;;;;;;;;:::o;13945:251::-;14015:6;14068:2;14056:9;14047:7;14043:23;14039:32;14036:52;;;14084:1;14081;14074:12;14036:52;14116:9;14110:16;14135:31;14160:5;14135:31;:::i;15077:1116::-;15222:6;15230;15238;15246;15254;15262;15270;15278;15286;15294;15347:3;15335:9;15326:7;15322:23;15318:33;15315:53;;;15364:1;15361;15354:12;15315:53;15396:9;15390:16;15415:31;15440:5;15415:31;:::i;:::-;15515:2;15500:18;;15494:25;15465:5;;-1:-1:-1;15528:33:1;15494:25;15528:33;:::i;:::-;15580:7;-1:-1:-1;15606:47:1;15649:2;15634:18;;15606:47;:::i;:::-;15596:57;;15672:47;15715:2;15704:9;15700:18;15672:47;:::i;:::-;15662:57;;15738:48;15781:3;15770:9;15766:19;15738:48;:::i;:::-;15728:58;;15805:50;15850:3;15839:9;15835:19;15805:50;:::i;:::-;15921:3;15906:19;;15900:26;16018:3;16003:19;;15997:26;15795:60;;-1:-1:-1;15900:26:1;-1:-1:-1;15997:26:1;-1:-1:-1;16068:50:1;16113:3;16098:19;;16068:50;:::i;:::-;16058:60;;16137:50;16182:3;16171:9;16167:19;16137:50;:::i;:::-;16127:60;;15077:1116;;;;;;;;;;;;;:::o;16198:981::-;16326:6;16334;16342;16350;16358;16366;16374;16382;16435:3;16423:9;16414:7;16410:23;16406:33;16403:53;;;16452:1;16449;16442:12;16403:53;16484:9;16478:16;16503:31;16528:5;16503:31;:::i;:::-;16553:5;-1:-1:-1;16577:47:1;16620:2;16605:18;;16577:47;:::i;:::-;16690:2;16675:18;;16669:25;16786:2;16771:18;;16765:25;16882:3;16867:19;;16861:26;16979:3;16964:19;;16958:26;17076:3;17061:19;;17055:26;16567:57;;-1:-1:-1;16669:25:1;;-1:-1:-1;16765:25:1;;-1:-1:-1;16861:26:1;-1:-1:-1;16958:26:1;-1:-1:-1;17055:26:1;-1:-1:-1;17126:47:1;17168:3;17153:19;;17126:47;:::i;:::-;17116:57;;16198:981;;;;;;;;;;;:::o;17184:1255::-;17339:6;17347;17355;17363;17371;17379;17387;17395;17403;17411;17419:7;17473:3;17461:9;17452:7;17448:23;17444:33;17441:53;;;17490:1;17487;17480:12;17441:53;17513:39;17542:9;17513:39;:::i;:::-;17503:49;;17595:2;17584:9;17580:18;17574:25;17608:31;17633:5;17608:31;:::i;:::-;17708:2;17693:18;;17687:25;17658:5;;-1:-1:-1;17721:33:1;17687:25;17721:33;:::i;:::-;17825:2;17810:18;;17804:25;17773:7;;-1:-1:-1;17838:33:1;17804:25;17838:33;:::i;:::-;17890:7;-1:-1:-1;17916:48:1;17959:3;17944:19;;17916:48;:::i;:::-;17906:58;;17983:48;18026:3;18015:9;18011:19;17983:48;:::i;:::-;17973:58;;18050:50;18095:3;18084:9;18080:19;18050:50;:::i;:::-;18166:3;18151:19;;18145:26;18263:3;18248:19;;18242:26;18040:60;;-1:-1:-1;18145:26:1;-1:-1:-1;18242:26:1;-1:-1:-1;18313:50:1;18358:3;18343:19;;18313:50;:::i;:::-;18303:60;;18383:50;18428:3;18417:9;18413:19;18383:50;:::i;:::-;18372:61;;17184:1255;;;;;;;;;;;;;;:::o;18749:249::-;18818:6;18871:2;18859:9;18850:7;18846:23;18842:32;18839:52;;;18887:1;18884;18877:12;18839:52;18919:9;18913:16;18938:30;18962:5;18938:30;:::i;19003:867::-;19122:6;19130;19138;19146;19154;19162;19170;19223:3;19211:9;19202:7;19198:23;19194:33;19191:53;;;19240:1;19237;19230:12;19191:53;19272:9;19266:16;19291:31;19316:5;19291:31;:::i;:::-;19341:5;-1:-1:-1;19365:47:1;19408:2;19393:18;;19365:47;:::i;:::-;19478:2;19463:18;;19457:25;19574:2;19559:18;;19553:25;19670:3;19655:19;;19649:26;19767:3;19752:19;;19746:26;19355:57;;-1:-1:-1;19457:25:1;;-1:-1:-1;19553:25:1;-1:-1:-1;19649:26:1;-1:-1:-1;19746:26:1;-1:-1:-1;19817:47:1;19859:3;19844:19;;19817:47;:::i;:::-;19807:57;;19003:867;;;;;;;;;;:::o

Swarm Source

ipfs://f711eba0835ed229d48796307928be657c397e405a5c692d0ac5376c5ffa8988

Block Transaction 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

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.